chore: re-initialize git repository for deployment

This commit is contained in:
yi
2026-06-10 14:01:56 +08:00
commit 7783e965fd
131 changed files with 14355 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
{% extends "admin/index.html" %}
{% load i18n %}
{% block bodyclass %}{{ block.super }} app-{{ app_label }}{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
{% for app in app_lib %}
| {% if app.is_current %} {{app.name}} {% else %}<a href="{{ app.app_url }}">{{ app.name }}</a> {% endif %}
{% endfor %}
</div>
{% endblock %}
{% endif %}
{% block sidebar %}{% endblock %}
+122
View File
@@ -0,0 +1,122 @@
{% load i18n admin_static %}<!DOCTYPE html>
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
<head>
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
<link rel="stylesheet" type="text/css" href="{% static "css/modern_ui.css" %}" />
{% block extrastyle %}{% endblock %}
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="{% block stylesheet_ie %}{% static "admin/css/ie.css" %}{% endblock %}" /><![endif]-->
{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
<script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
<script type="text/javascript">window.__admin_utc_offset__ = "{% filter escapejs %}{% now "Z" %}{% endfilter %}";</script>
{% block extrahead %}{% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
</head>
{% load i18n %}
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
<!-- Container -->
<div id="container">
{% if not is_popup %}
<!-- Header (Sidebar) -->
<div id="header">
<div class="brand-section">
<div class="brand-logo"></div>
<div class="brand-text">
<h1>智捷ERP</h1>
<span>SmartJet ERP</span>
</div>
</div>
<div class="sidebar-nav">
<a href="/admin/" class="nav-item active"><i>🏠</i> 控制面板</a>
<div class="nav-group-label">核心业务</div>
<a href="/admin/sale/saleorder/" class="nav-item"><i>📁</i> 销售管理 <span class="arrow">v</span></a>
<a href="/admin/purchase/purchaseorder/" class="nav-item"><i>🛒</i> 采购管理 <span class="arrow">v</span></a>
<a href="/admin/invent/inventory/" class="nav-item"><i>📦</i> 库存管理 <span class="arrow">v</span></a>
<div class="nav-group-label">组织人力</div>
<a href="/admin/organ/organization/" class="nav-item"><i>🏢</i> 组织架构</a>
<a href="/admin/basedata/employee/" class="nav-item"><i>👥</i> 员工档案</a>
<div class="nav-group-label">流程协同</div>
<a href="/admin/workflow/instance/" class="nav-item"><i>🛡️</i> 审批中心</a>
</div>
<div class="sidebar-footer">
<a href="/admin/syscfg/site/" class="nav-item"><i>⚙️</i> 设置</a>
<button type="button" id="sidebarCollapseBtn" class="nav-item nav-item-btn"><i></i> 收起菜单</button>
</div>
{% block usertools %}{% endblock %}
</div>
{% endif %}
<div id="main" {% if is_popup %}style="margin-left: 0; width: 100%;"{% endif %}>
{% if not is_popup %}
<div class="topbar">
<div class="topbar-left">
<button type="button" class="icon-btn" id="topbarMenuBtn" title="切换菜单"></button>
<div class="breadcrumb-new">首页 > <span>控制面板</span></div>
</div>
<div class="topbar-right">
<button type="button" class="icon-btn" id="topbarNotifyBtn" title="待办任务">🔔</button>
<div class="user-menu-wrap">
<button type="button" class="user-profile" id="userProfileToggle" title="用户菜单">
<div class="avatar" style="background: url('https://ui-avatars.com/api/?name={{ user.get_short_name|default:"管理员" }}&background=6366f1&color=fff') no-repeat center center; background-size: cover;"></div>
<div class="user-info">
<span class="user-name">{{ user.get_short_name|default:"管理员" }}</span>
<span class="user-role">系统管理员</span>
</div>
<span class="user-caret"></span>
</button>
<div class="user-dropdown" id="userDropdown">
<a href="{% url 'admin:password_change' %}">修改密码</a>
<a href="{% url 'admin:logout' %}">退出登录</a>
</div>
</div>
</div>
</div>
{% endif %}
{% block messages %}
{% if messages %}
<ul class="messagelist">{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message|capfirst }}</li>
{% endfor %}</ul>
{% endif %}
{% endblock messages %}
<!-- Content -->
<div id="content" class="{% block coltype %}colM{% endblock %}">
{% block pretitle %}{% endblock %}
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
{% block content %}
{% block object-tools %}{% endblock %}
{{ content }}
{% endblock %}
{% block sidebar %}{% endblock %}
<br class="clear" />
</div>
<!-- END Content -->
{% if not is_popup %}
{% block footer %}
<div id="footer">
<div style="text-align: center; padding: 10px;">
<a href="http://code.xinmi.cloud/" target="_blank" style="color: #666; text-decoration: none;">智捷ERP - 新觅源码库</a>
</div>
</div>
{% endblock %}
{% endif %}
</div>
</div>
<!-- END Container -->
<script type="text/javascript" src="{% static "js/modern_ui.js" %}"></script>
</body>
</html>
+148
View File
@@ -0,0 +1,148 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls admin_static admin_modify %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ media }}
{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
{% block coltype %}colM{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block content %}<div id="content-main">
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if show_workflow_line%}
<fieldset class="module aligned workflow">
<h2>{% trans "workflow approve" %}</h2>
<div style="padding:10px">
{% if can_restart %}
<a class="button" href="restart/{{workflow_instance.id}}" id="workflow_restart">{% trans "restart workflow" %}</a>
<p style="float:right;color:#666">{% trans "your apply has been denied,you can restart a new apply" %}</p>
{% else %}
<label class="control"><input type="radio" name="operation" value="1" checked> {% trans "agree" %}</label>
<label class="control"><input type="radio" name="operation" value="3"> {% trans "deny" %}</label>
<label class="control"><input type="radio" name="operation" value="4"> {% trans "terminate" %}</label>
<a class="button" href="approve/1" id="workflow_approve">{% trans "submit" %}</a>
{% endif %}
</div>
</fieldset>
{% endif %}
{% if errors %}
<p class="errornote">
{% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
</p>
{{ adminform.form.non_field_errors }}
{% endif %}
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
{% block after_field_sets %}{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
{% endblock %}
{% block after_related_objects %}{% endblock %}
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% block admin_change_form_document_ready %}
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('.add-another').click(function(e) {
e.preventDefault();
showAddAnotherPopup(this);
});
$('.related-lookup').click(function(e) {
e.preventDefault();
showRelatedObjectLookupPopup(this);
});
{% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
{% endif %}
{% if workflow_modal %}
{% if workflow_instance %}
workflow_modal = "{{ workflow_modal.code }}";
workflow_instance = "{{ workflow_instance.code }}";
$('tr.add-row').hide();
{% if can_edit %}
$('a.deletelink').hide();
$("#workflow_submit").hide();
$("input[name='_addanother']").hide();
$("input[name='_continue']").hide();
{% else %}
$('input,select,textarea').attr('disabled','true');
$('div.submit-row').hide();
$('.workflow input,.workflow select').removeAttr("disabled");
$("#workflow_submit").hide();
{% endif %}
{% endif %}
{% else %}
$("#workflow_submit").hide();
{% endif %}
{% if extra_buttons %}
{% for button in extra_buttons %}
$("<a href='{{button.href}}' class='button'>{{button.title}}</a>").insertAfter("#workflow_submit");
{% endfor %}
{% endif %}
{% if readonly %}
$('input,select,textarea').attr('disabled',true);
$('div.submit-row').hide();
$('tr.add-row').hide();
{% endif %}
try{
$("div.inline-group table tbody tr.form-row").removeClass('has_original');
$("div.inline-group table tbody tr.form-row td:first-child").find('p').hide();
}catch(e){
}
});
})(django.jQuery);
</script>
{% endblock %}
{# JavaScript for prepopulated fields #}
{% prepopulated_fields_js %}
</div>
</form></div>
{% endblock %}
+162
View File
@@ -0,0 +1,162 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_static %}
{% block content %}
<div id="content-main">
<!-- Row 1: Stats Cards -->
<div class="stats-grid">
<div class="stat-card">
<div class="stat-header">
<div class="stat-icon-bg" style="background: #eef2ff; color: #6366f1;"></div>
<span class="stat-info-icon"></span>
</div>
<div class="stat-label">销售总额</div>
<div class="stat-value">¥ 8,231,078</div>
<div class="stat-footer">
<span class="stat-trend trend-up">较上月 ▲ 12.6%</span>
<svg class="sparkline" viewBox="0 0 100 30"><path d="M0,25 Q15,5 30,20 T60,10 T100,25" fill="none" stroke="#6366f1" stroke-width="2"/></svg>
</div>
</div>
<div class="stat-card">
<div class="stat-header">
<div class="stat-icon-bg" style="background: #eff6ff; color: #3b82f6;">📋</div>
<span class="stat-info-icon"></span>
</div>
<div class="stat-label">待办审批</div>
<div class="stat-value">32</div>
<div class="stat-footer">
<span class="stat-trend trend-down" style="color: #ef4444;">较昨日 ▲ 8</span>
<svg class="sparkline" viewBox="0 0 100 30"><path d="M0,15 L20,25 L40,10 L60,20 L80,5 L100,15" fill="none" stroke="#3b82f6" stroke-width="2"/></svg>
</div>
</div>
<div class="stat-card">
<div class="stat-header">
<div class="stat-icon-bg" style="background: #fff7ed; color: #f97316;">📦</div>
<span class="stat-info-icon"></span>
</div>
<div class="stat-label">库存预警</div>
<div class="stat-value">18</div>
<div class="stat-footer">
<span class="stat-trend trend-down" style="color: #ef4444;">较昨日 ▲ 5</span>
<svg class="sparkline" viewBox="0 0 100 30"><path d="M0,25 L30,5 L70,25 L100,10" fill="none" stroke="#f97316" stroke-width="2"/></svg>
</div>
</div>
<div class="stat-card">
<div class="stat-header">
<div class="stat-icon-bg" style="background: #f0fdf4; color: #10b981;">🖥️</div>
<span class="stat-info-icon"></span>
</div>
<div class="stat-label">系统在线</div>
<div class="stat-value">98.6%</div>
<div class="stat-footer">
<span class="stat-trend trend-up">较昨日 ▲ 0.8%</span>
<svg class="sparkline" viewBox="0 0 100 30"><path d="M0,20 L25,15 L50,22 L75,10 L100,12" fill="none" stroke="#10b981" stroke-width="2"/></svg>
</div>
</div>
</div>
<!-- Row 2: Main Grid -->
<div class="dashboard-main-grid">
<!-- Operation Logs -->
<div class="module-card">
<div class="card-title">最近操作日志</div>
<div class="table-container">
<table>
<thead>
<tr>
<th>时间</th>
<th>操作人</th>
<th>模块</th>
<th>操作类型</th>
<th>操作内容</th>
<th>IP地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>2025-05-22 10:24:31</td>
<td>张伟</td>
<td>销售管理</td>
<td><span class="badge badge-new">新增</span></td>
<td>新增销售订单 SO-20250522-001</td>
<td>192.168.1.100</td>
</tr>
<tr>
<td>2025-05-22 10:18:44</td>
<td>李娜</td>
<td>采购管理</td>
<td><span class="badge badge-audit">审核</span></td>
<td>审核采购订单 PO-20250522-045</td>
<td>192.168.1.101</td>
</tr>
<tr>
<td>2025-05-22 09:56:12</td>
<td>王强</td>
<td>库存管理</td>
<td><span class="badge badge-update">更新</span></td>
<td>更新库存调拔单 TB-20250522-009</td>
<td>192.168.1.102</td>
</tr>
<tr>
<td>2025-05-22 09:41:07</td>
<td>张伟</td>
<td>审批中心</td>
<td><span class="badge badge-submit">提交</span></td>
<td>提交费用报销单 FB-20250522-008</td>
<td>192.168.1.100</td>
</tr>
</tbody>
</table>
</div>
<div style="padding: 20px 32px; border-top: 1px solid var(--slate-50); display: flex; justify-content: space-between; align-items: center; font-size: 12px; color: var(--slate-400);">
<span>共 120 条记录</span>
<div style="display: flex; gap: 8px;">
<span style="width: 24px; height: 24px; background: var(--primary); color: white; display: flex; align-items: center; justify-content: center; border-radius: 4px;">1</span>
<span style="width: 24px; height: 24px; display: flex; align-items: center; justify-content: center;">2</span>
<span style="width: 24px; height: 24px; display: flex; align-items: center; justify-content: center;">3</span>
</div>
</div>
</div>
<!-- Task Sidebar -->
<div class="module-card">
<div class="card-title">
待办任务
<a href="#" style="font-size: 12px; color: var(--primary); text-decoration: none;">更多 ></a>
</div>
<div class="task-list">
<div class="task-item">
<div class="task-icon" style="background: #3b82f6;">📄</div>
<div class="task-content">
<div class="task-name">费用报销单审批</div>
<div class="task-info">报销人:张伟</div>
<span class="priority-tag p-urgent">紧急</span>
</div>
<div class="task-time">10分钟前</div>
</div>
<div class="task-item">
<div class="task-icon" style="background: #f97316;">🛒</div>
<div class="task-content">
<div class="task-name">采购订单审批</div>
<div class="task-info">单号:PO-20250522-047</div>
<span class="priority-tag p-high"></span>
</div>
<div class="task-time">30分钟前</div>
</div>
<div class="task-item">
<div class="task-icon" style="background: #10b981;">💰</div>
<div class="task-content">
<div class="task-name">销售订单审批</div>
<div class="task-info">单号:SO-20250522-004</div>
<span class="priority-tag p-medium"></span>
</div>
<div class="task-time">1小时前</div>
</div>
</div>
<div class="view-all">
<a href="/admin/workflow/todolist/">查看全部待办 →</a>
</div>
</div>
</div>
</div>
{% endblock %}
@@ -0,0 +1,167 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls admin_static admin_modify %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ media }}
{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
{% block coltype %}colM{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block content %}<div id="content-main">
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if show_workflow_line%}
<fieldset class="module aligned workflow">
<h2>{% trans "workflow approve" %}</h2>
<div style="padding:10px">
{% if can_restart %}
<a class="button" href="restart/{{workflow_instance.id}}" id="workflow_restart">{% trans "restart workflow" %}</a>
<p style="float:right;color:#666">{% trans "your apply has been denied,you can restart a new apply" %}</p>
{% else %}
<label class="control"><input type="radio" name="operation" value="1" checked> {% trans "agree" %}</label>
<label class="control"><input type="radio" name="operation" value="3"> {% trans "deny" %}</label>
<label class="control"><input type="radio" name="operation" value="4"> {% trans "terminate" %}</label>
<a class="button" href="approve/1" id="workflow_submit">{% trans "submit" %}</a>
{% endif %}
</div>
</fieldset>
{% endif %}
{% if errors %}
<p class="errornote">
{% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
</p>
{{ adminform.form.non_field_errors }}
{% endif %}
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
{% block after_field_sets %}{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
{% endblock %}
{% block after_related_objects %}{% endblock %}
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% block admin_change_form_document_ready %}
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('.add-another').click(function(e) {
e.preventDefault();
showAddAnotherPopup(this);
});
$('.related-lookup').click(function(e) {
e.preventDefault();
showRelatedObjectLookupPopup(this);
});
{% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
{% endif %}
{% if workflow_modal %}
{% if workflow_instance %}
workflow_modal = "{{ workflow_modal.code }}";
workflow_instance = "{{ workflow_instance.code }}";
$('tr.add-row').hide();
$('input,select,textarea').attr('disabled','true');
$('div.submit-row').hide();
$('.workflow input,.workflow select').removeAttr("disabled");
$("#workflow_submit").hide();
{% endif %}
{% else %}
$("#workflow_submit").hide();
{% endif %}
{% if extra_buttons %}
{% for button in extra_buttons %}
$("<a href='{{button.href}}' class='button'>{{button.title}}</a>").insertAfter("#workflow_submit");
{% endfor %}
{% endif %}
{% if readonly %}
$('input,select,textarea').attr('disabled',true);
$('div.submit-row').hide();
$('tr.add-row').hide();
{% endif %}
});
})(django.jQuery);
</script>
{% endblock %}
{# JavaScript for prepopulated fields #}
{% prepopulated_fields_js %}
</div>
</form></div>
{% if detail %}
<h1 style="margin-top:15px">{% trans "InOut History" %}</h1>
<div class="module">
<table id="workflow-history">
<thead>
<tr>
<th scope="col">{% trans 'execute time' %}</th>
<th scope="col">{% trans 'plus or minus prop' %}</th>
<th scope="col">{% trans 'price' %}</th>
<th scope="col">{% trans 'count' %}</th>
<th scope="col">{% trans 'measure' %}</th>
<th scope="col">{% trans 'status' %}</th>
<th scope="col">{% trans 'source' %}</th>
</tr>
</thead>
<tbody>
{% for item in detail %}
<tr>
<th scope="row">{{ item.event_time|date:"DATETIME_FORMAT" }}</th>
<td class="col">{{ item.prop }}</td>
<td class="col">{{ item.price }}</td>
<td class="col">{{ item.cnt }}</td>
<td class="col">{{ item.measure }}</td>
<td class="col">{% if item.status %} {% trans 'EXECUTED'%} {% endif %}</td>
<td class="col">{{ item.source }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
{% endblock %}
@@ -0,0 +1,136 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls admin_static admin_modify %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ media }}
{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
{% block coltype %}colM{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block content %}<div id="content-main">
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if show_workflow_line%}
<fieldset class="module aligned workflow">
<h2>{% trans "workflow approve" %}</h2>
<div style="padding:10px">
{% if can_restart %}
<a class="button" href="restart/{{workflow_instance.id}}" id="workflow_restart">{% trans "restart workflow" %}</a>
<p style="float:right;color:#666">{% trans "your apply has been denied,you can restart a new apply" %}</p>
{% else %}
<label class="control"><input type="radio" name="operation" value="1" checked> {% trans "agree" %}</label>
<label class="control"><input type="radio" name="operation" value="3"> {% trans "deny" %}</label>
<label class="control"><input type="radio" name="operation" value="4"> {% trans "terminate" %}</label>
<a class="button" href="approve/1" id="workflow_submit">{% trans "submit" %}</a>
{% endif %}
</div>
</fieldset>
{% endif %}
{% if errors %}
<p class="errornote">
{% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
</p>
{{ adminform.form.non_field_errors }}
{% endif %}
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
{% block after_field_sets %}{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
{% endblock %}
{% block after_related_objects %}{% endblock %}
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% block admin_change_form_document_ready %}
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('.add-another').click(function(e) {
e.preventDefault();
showAddAnotherPopup(this);
});
$('.related-lookup').click(function(e) {
e.preventDefault();
showRelatedObjectLookupPopup(this);
});
$("div.inline-group tr").removeClass("has_original");
$("td.original p").hide();
{% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
{% endif %}
{% if workflow_modal %}
{% if workflow_instance %}
workflow_modal = "{{ workflow_modal.code }}";
workflow_instance = "{{ workflow_instance.code }}";
$('tr.add-row').hide();
$('input,select').attr('disabled','true');
$('div.submit-row').hide();
$('.workflow input,.workflow select').removeAttr("disabled");
$("#workflow_submit").hide();
{% endif %}
{% else %}
$("#workflow_submit").hide();
{% endif %}
{% if extra_buttons %}
{% for button in extra_buttons %}
$("<a href='{{button.href}}' class='button'>{{button.title}}</a>").insertAfter("#workflow_submit");
{% endfor %}
{% endif %}
{% if readonly %}
$('input,select').attr('disabled',true);
$('div.submit-row').hide();
$('tr.add-row').hide();
{% endif %}
});
})(django.jQuery);
</script>
{% endblock %}
{# JavaScript for prepopulated fields #}
{% prepopulated_fields_js %}
</div>
</form></div>
{% endblock %}
@@ -0,0 +1,27 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst|escape }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
&rsaquo; {% if action_name %}{{action_name}} {% else %} {% trans 'action' %}{% endif %}
</div>
{% endblock %}
{% block content %}
<p> {% trans 'Are your sure to execute the operations?' %} </p>
<form action="" method="post">{% csrf_token %}
<div>
<input type="hidden" name="post" value="yes" />
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
<input type="submit" value="{% trans "Yes, I'm sure" %}" />
<a href="#" onclick="window.history.back(); return false;" class="button cancel-link">{% trans "No, take me back" %}</a>
</div>
</form>
{% endblock %}
@@ -0,0 +1,137 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls admin_static admin_modify %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ media }}
{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
{% block coltype %}colM{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block content %}<div id="content-main">
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if show_workflow_line%}
<fieldset class="module aligned workflow">
<h2>{% trans "workflow approve" %}</h2>
<div style="padding:10px">
{% if can_restart %}
<a class="button" href="restart/{{workflow_instance.id}}" id="workflow_restart">{% trans "restart workflow" %}</a>
<p style="float:right;color:#666">{% trans "your apply has been denied,you can restart a new apply" %}</p>
{% else %}
<label class="control"><input type="radio" name="operation" value="1" checked> {% trans "agree" %}</label>
<label class="control"><input type="radio" name="operation" value="3"> {% trans "deny" %}</label>
<label class="control"><input type="radio" name="operation" value="4"> {% trans "terminate" %}</label>
<a class="button" href="approve/1" id="workflow_submit">{% trans "submit" %}</a>
{% endif %}
</div>
</fieldset>
{% endif %}
{% if errors %}
<p class="errornote">
{% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
</p>
{{ adminform.form.non_field_errors }}
{% endif %}
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
{% block after_field_sets %}{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
{% endblock %}
{% block after_related_objects %}{% endblock %}
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% block admin_change_form_document_ready %}
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('.add-another').click(function(e) {
e.preventDefault();
showAddAnotherPopup(this);
});
$('.related-lookup').click(function(e) {
e.preventDefault();
showRelatedObjectLookupPopup(this);
});
$("div.inline-group tr").removeClass("has_original");
$("td.original p").hide();
{% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
{% endif %}
{% if workflow_modal %}
{% if workflow_instance %}
workflow_modal = "{{ workflow_modal.code }}";
workflow_instance = "{{ workflow_instance.code }}";
$('tr.add-row').hide();
$('input,select,textarea').attr('disabled','true');
$('div.submit-row').hide();
$('.workflow input,.workflow select').removeAttr("disabled");
$("#workflow_submit").hide();
{% endif %}
{% else %}
$("#workflow_submit").hide();
{% endif %}
{% if extra_buttons %}
{% for button in extra_buttons %}
$("<a href='{{button.href}}' class='button'>{{button.title}}</a>").insertAfter("#workflow_submit");
{% endfor %}
{% endif %}
{% if readonly %}
$('input,select,textarea').attr('disabled',true);
$('div.submit-row').hide();
$('tr.add-row').hide();
{% endif %}
$('div.inline-group select').attr('disabled',true);
});
})(django.jQuery);
</script>
{% endblock %}
{# JavaScript for prepopulated fields #}
{% prepopulated_fields_js %}
</div>
</form></div>
{% endblock %}
@@ -0,0 +1,27 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst|escape }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
&rsaquo; {% trans 'action' %}
</div>
{% endblock %}
{% block content %}
<p> {% trans 'Are your sure to execute the check out operations?' %} </p>
<form action="" method="post">{% csrf_token %}
<div>
<input type="hidden" name="post" value="yes" />
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
<input type="submit" value="{% trans "Yes, I'm sure" %}" />
<a href="#" onclick="window.history.back(); return false;" class="button cancel-link">{% trans "No, take me back" %}</a>
</div>
</form>
{% endblock %}
+75
View File
@@ -0,0 +1,75 @@
{% extends "admin/login_base.html" %}
{% load i18n admin_static %}
{% block content %}
<div class="login-shell">
<div class="login-brand">
<div class="login-brand-inner">
<div class="login-brand-logo"></div>
<h1>智捷ERP</h1>
<p class="login-brand-tagline">SmartJet ERP</p>
<p class="login-brand-desc">高效管理 · 智能协同 · 企业互联</p>
<ul class="login-brand-features">
<li>销售 / 采购 / 库存一体化</li>
<li>组织架构与审批流程</li>
<li>数据驱动经营决策</li>
</ul>
</div>
</div>
<div class="login-panel">
<div class="login-card">
<div class="login-card-header">
<h2>欢迎登录</h2>
<p>请输入您的账号和密码</p>
</div>
{% if form.errors and not form.non_field_errors %}
<div class="login-error">
{% if form.errors.items|length == 1 %}请修正以下错误。{% else %}请修正以下错误。{% endif %}
</div>
{% endif %}
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<div class="login-error">{{ error }}</div>
{% endfor %}
{% endif %}
{% if user.is_authenticated %}
<div class="login-error">
您已以 {{ user.get_username }} 登录,但无权访问此页面。请使用其他账号登录。
</div>
{% endif %}
<form action="{{ app_path }}" method="post" id="login-form" class="login-form">
{% csrf_token %}
<div class="login-field">
<label for="id_username">用户名</label>
{{ form.username }}
</div>
<div class="login-field">
<label for="id_password">密码</label>
{{ form.password }}
<input type="hidden" name="next" value="{{ next }}" />
</div>
<button type="submit" class="login-submit">登 录</button>
</form>
<div class="login-demo">
<div class="login-demo-title">演示账号</div>
<div class="login-demo-row">
<span>用户名</span><code>xinmi_admin</code>
</div>
<div class="login-demo-row">
<span>&nbsp;&nbsp;&nbsp;</span><code>admin123456</code>
</div>
</div>
<div class="login-footer-link">
<a href="http://code.xinmi.cloud/" target="_blank" rel="noopener">智捷ERP · 新觅源码库</a>
</div>
</div>
</div>
</div>
{% endblock %}
+13
View File
@@ -0,0 +1,13 @@
{% load i18n admin_static %}<!DOCTYPE html>
<html lang="zh-hans">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}登录 | 智捷ERP{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% static "css/modern_ui.css" %}" />
{% block extrastyle %}{% endblock %}
</head>
<body class="login-page">
{% block content %}{% endblock %}
</body>
</html>
+82
View File
@@ -0,0 +1,82 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls %}
{% block extrastyle %}
<link rel="stylesheet" type="text/css" href="/static/css/maximus.css" />
{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ module_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
&rsaquo; {% trans 'History' %}
</div>
{% endblock %}
{% block content %}
<div id="content-main">
<div class="module">
{% if action_list %}
<table id="change-history">
<thead>
<tr>
<th scope="col">{% trans 'Date/time' %}</th>
<th scope="col">{% trans 'User' %}</th>
<th scope="col">{% trans 'Action' %}</th>
</tr>
</thead>
<tbody>
{% for action in action_list %}
<tr>
<th scope="row">{{ action.action_time|date:"DATETIME_FORMAT" }}</th>
<td>{{ action.user.get_username }}{% if action.user.get_full_name %} ({{ action.user.get_full_name }}){% endif %}</td>
<td>{{ action.change_message }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>{% trans "This object doesn't have a change history. It probably wasn't added via this admin site." %}</p>
{% endif %}
</div>
{% if history_list %}
<h1 style="margin-top:15px">{% trans "Workflow History" %}</h1>
<div class="module">
<table id="workflow-history">
<thead>
<tr>
<th scope="col">{% trans 'Date/time' %}</th>
<th scope="col">{% trans 'User' %}</th>
<th scope="col">{% trans 'node' %}</th>
<th scope="col">{% trans 'Action' %}</th>
<th scope="col">{% trans 'Workflow Memo' %}</th>
</tr>
</thead>
<tbody>
{% for history in history_list %}
<tr>
<th scope="row">{{ history.pro_time|date:"DATETIME_FORMAT" }}</th>
<td class="col">{{ history.user.get_username }}{% if history.user.get_full_name %} ({{ history.user.get_full_name }}){% endif %}</td>
<td class="col">{{ history.get_node_desc }}</td>
<td class="col">{{ history.get_action_desc }}</td>
<td>{{ history.get_memo_desc }}</td>
</tr>
{% endfor %}
{% if todo_list %}
{% for todo in todo_list %}
<tr>
<th scope="row">{% if todo.is_read %}{{ todo.read_time|date:"DATETIME_FORMAT" }}{% endif %}</th>
<td class="col">{{ todo.user.get_username }}{% if todo.user.get_full_name %} ({{ todo.user.get_full_name }}){% endif %}</td>
<td class="col">{{ todo.node.name }}</td>
<td class="col">{% if todo.is_read %} {% trans 'already read' %} {% else %} {% trans 'unread' %} {% endif %}</td>
<td></td>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
</div>
{% endif %}
</div>
{% endblock %}
@@ -0,0 +1,173 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls admin_static admin_modify %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ media }}
{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
{% block coltype %}colM{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block content %}<div id="content-main">
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if show_workflow_line%}
<fieldset class="module aligned workflow">
<h2>{% trans "workflow approve" %}</h2>
<div style="padding:10px">
{% if can_restart %}
<a class="button" href="restart/{{workflow_instance.id}}" id="workflow_restart">{% trans "restart workflow" %}</a>
<p style="float:right;color:#666">{% trans "your apply has been denied,you can restart a new apply" %}</p>
{% else %}
<label class="control"><input type="radio" name="operation" value="1" checked> {% trans "agree" %}</label>
<label class="control"><input type="radio" name="operation" value="3"> {% trans "deny" %}</label>
<label class="control"><input type="radio" name="operation" value="4"> {% trans "terminate" %}</label>
<a class="button" href="approve/1" id="workflow_approve">{% trans "submit" %}</a>
{% endif %}
</div>
</fieldset>
{% endif %}
{% if errors %}
<p class="errornote">
{% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
</p>
{{ adminform.form.non_field_errors }}
{% endif %}
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
{% block after_field_sets %}{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
{% endblock %}
{% block after_related_objects %}{% endblock %}
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% block admin_change_form_document_ready %}
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('.add-another').click(function(e) {
e.preventDefault();
showAddAnotherPopup(this);
});
$('.related-lookup').click(function(e) {
e.preventDefault();
showRelatedObjectLookupPopup(this);
});
{% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
{% endif %}
{% if workflow_modal %}
{% if workflow_instance %}
workflow_modal = "{{ workflow_modal.code }}";
workflow_instance = "{{ workflow_instance.code }}";
$('tr.add-row').hide();
{% if can_edit %}
$('a.deletelink').hide();
$("#workflow_submit").hide();
$("input[name='_addanother']").hide();
$("input[name='_continue']").hide();
{% else %}
$('input,select,textarea').attr('disabled','true');
$('div.submit-row').hide();
$('.workflow input,.workflow select').removeAttr("disabled");
$("#workflow_submit").hide();
{% endif %}
{% endif %}
{% else %}
$("#workflow_submit").hide();
{% endif %}
{% if extra_buttons %}
{% for button in extra_buttons %}
$("<a href='{{button.href}}' class='button'>{{button.title}}</a>").insertAfter("#workflow_submit");
{% endfor %}
{% endif %}
{% if readonly %}
$('input,select,textarea').attr('disabled',true);
$('div.submit-row').hide();
$('tr.add-row').hide();
{% endif %}
try{
$("div.inline-group table tbody tr.form-row").removeClass('has_original');
$("div.inline-group table tbody tr.form-row td:first-child").find('p').hide();
}catch(e){
}
});
$('#id_classification').bind('change',function(){
var c = $("select[name='classification'] option:selected").val();
//alert(c);
if(c=='R' || c=='Q'){
$("label[for='id_service']").removeClass('required');
$('#woitem_set-group').hide();
$('#woextravalue_set-group').hide();
$('div.field-service').hide();
$('div.field-detail').hide();
}else{
$('#woitem_set-group').show();
$('#woextravalue_set-group').show();
$('div.field-service').show();
if(c=='D'){
$("label[for='id_service']").removeClass('required');
$('div.field-detail').show();
}
if(c=='S'){
$('div.field-detail').hide();
$("label[for='id_service']").addClass('required');
}
}
});
$('#woextravalue_set-group').hide();
})(django.jQuery);
</script>
{% endblock %}
{# JavaScript for prepopulated fields #}
{% prepopulated_fields_js %}
</div>
</form></div>
{% endblock %}
+18
View File
@@ -0,0 +1,18 @@
{% load i18n admin_urls %}
<div class="submit-row">
{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />{% endif %}
<a href="start" class="button" id="workflow_submit">{% trans "submit" %}</a>
{% for button in extra_buttons %}
<a href="{{button.href}}" class="button">{{button.title}}</a>
{% endfor %}
{{extra_buttons}}
{% if show_delete_link %}
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
<p class="deletelink-box"><a href="{% add_preserved_filters delete_url %}" class="deletelink">{% trans "Delete" %}</a>
</p>
{% endif %}
{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" />{% endif %}
{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" />{% endif %}
{% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" />{% endif %}
</div>
@@ -0,0 +1,164 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls admin_static admin_modify %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
{{ media }}
{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
{% block coltype %}colM{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block content %}<div id="content-main">
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
<div>
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if show_workflow_line%}
<fieldset class="module aligned workflow">
<h2>{% trans "workflow approve" %}</h2>
<div style="padding:10px">
{% if can_restart %}
<a class="button" href="restart/{{workflow_instance.id}}" id="workflow_restart">{% trans "restart workflow" %}</a>
<p style="float:right;color:#666">{% trans "your apply has been denied,you can restart a new apply" %}</p>
{% else %}
<label class="control"><input type="radio" name="operation" value="1" checked> {% trans "agree" %}</label>
<label class="control"><input type="radio" name="operation" value="3"> {% trans "deny" %}</label>
<label class="control"><input type="radio" name="operation" value="4"> {% trans "terminate" %}</label>
<a class="button" href="approve/1" id="workflow_approve">{% trans "submit" %}</a>
{% endif %}
</div>
</fieldset>
{% endif %}
{% if errors %}
<p class="errornote">
{% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
</p>
{{ adminform.form.non_field_errors }}
{% endif %}
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
{% block after_field_sets %}{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
{% endblock %}
{% block after_related_objects %}{% endblock %}
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% block admin_change_form_document_ready %}
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('.add-another').click(function(e) {
e.preventDefault();
showAddAnotherPopup(this);
});
$('.related-lookup').click(function(e) {
e.preventDefault();
showRelatedObjectLookupPopup(this);
});
{% if adminform and add %}
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
{% endif %}
{% if workflow_modal %}
{% if workflow_instance %}
workflow_modal = "{{ workflow_modal.code }}";
workflow_instance = "{{ workflow_instance.code }}";
$('tr.add-row').hide();
$('input,select,textarea').attr('disabled','true');
$('div.submit-row').hide();
$('.workflow input,.workflow select').removeAttr("disabled");
$("#workflow_submit").hide();
{% endif %}
{% else %}
$("#workflow_submit").hide();
{% endif %}
{% if extra_buttons %}
{% for button in extra_buttons %}
$("<a href='{{button.href}}' class='button'>{{button.title}}</a>").insertAfter("#workflow_submit");
{% endfor %}
{% endif %}
{% if readonly %}
$('input,select,textarea').attr('disabled',true);
$('div.submit-row').hide();
$('tr.add-row').hide();
{% endif %}
try{
$("div.inline-group table tbody tr.form-row").removeClass('has_original');
$("div.inline-group table tbody tr.form-row td:first-child").find('p').hide();
}catch(e){
}
});
$("input[name='handler_type']").bind('click',function(){
v = $("input[name='handler_type']:checked").val();
if(v==1){
$('div.field-users').show();
$('div.field-positions').hide();
$('div.field-roles').hide();
}else if(v==2){
$('div.field-users').hide();
$('div.field-positions').show();
$('div.field-roles').hide();
}else if(v==3){
$('div.field-users').hide();
$('div.field-positions').hide();
$('div.field-roles').show();
}else if(v==4){
$('div.field-users').hide();
$('div.field-positions').hide();
$('div.field-roles').hide();
}
});
$('div.field-users').show();
$('div.field-positions').hide();
$('div.field-roles').hide();
})(django.jQuery);
</script>
{% endblock %}
{# JavaScript for prepopulated fields #}
{% prepopulated_fields_js %}
</div>
</form></div>
{% endblock %}
@@ -0,0 +1,67 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="/static/css/maximus.css" />{% endblock %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst|escape }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
&rsaquo; {% trans 'workflow approve' %}
</div>
{% endblock %}
{% block content %}
{% if operation == '4' %}
<p>{% trans "Are you sure to terminate the request?" %}</p>
{% elif operation == '3' %}
<p>{% trans "Are you sure to deny the request?" %}</p>
{% else %}
<p>{% blocktrans with escaped_object=object %}Are you sure you want to submit the {{ object_name }} "{{ escaped_object }}"? {% endblocktrans %}</p>
{% endif%}
<h3> {{ workflow_modal.code }} {{ workflow_modal.name }} </h3>
<form action="" method="post">{% csrf_token %}
{% if is_stop_node %}
<p> {% trans "current node is stop node,click the submit button to complete it" %} </p>
{% else %}
{% for node_user in node_users %}
{% if node_user.node == 'start'%}
<p class="next-node">{% trans "back to start node" %}</p>
{%else%}
<p class="next-node">{% trans "next node" %}{{ node_user.node.name }}</p>
{% endif%}
{% if next_node_description %}
<p class="tooltip">{% trans "attention" %}{{next_node_description}}</p>
{% endif %}
{% if node_has_users %}
<ul class="node-users">
{% for user in node_user.users %}
<li><input type="checkbox" name="{{checkbox_name}}" value="{{user.id}}" checked> {{user.last_name}}{{user.first_name}}</li>
{% endfor %}
</ul>
{% else %}
<p>{% trans "No user was configured to handle this node"%}</p>
{% endif %}
{% endfor%}
{% endif%}
{% if is_stop_node or node_has_users%}
<label style="display:block">{% trans "Workflow Memo" %}</label>
<textarea name="memo" rows="3" cols="80"></textarea>
<div class="workflow_approve_command">
<input type="hidden" name="post" value="yes" />
<input type="hidden" name="oper_type" value="{{operation}}" />
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
<input type="submit" value="{% trans "Yes, I'm sure" %}" />
<a href="#" onclick="window.history.back(); return false;" class="button cancel-link">{% trans "No, take me back" %}</a>
</div>
{% else %}
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
<a href="#" onclick="window.history.back(); return false;" class="button cancel-link">{% trans "No, take me back" %}</a>
{% endif %}
</form>
{% endblock %}
@@ -0,0 +1,46 @@
{% extends "admin/base_site.html" %}
{% load i18n admin_urls %}
{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst|escape }}</a>
&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
&rsaquo; {% trans 'submit' %}
</div>
{% endblock %}
{% block content %}
{% if has_workflow %}
<p>{% blocktrans with escaped_object=object %}Are you sure you want to submit the {{ object_name }} "{{ escaped_object }}"? {% endblocktrans %}</p>
<h3> {{ workflow_modal.code }} {{ workflow_modal.name }} </h3>
<form action="" method="post">{% csrf_token %}
{% if next_node %}
<p class="next-node">{% trans "next node" %}{{ next_node.name }}</p>
{% if has_next_user %}
<ul class="node-users">
{% for user in next_users %}
<li><input type="checkbox" name="{{checkbox_name}}" value="{{user.id}}" checked> {{user.last_name}}{{user.first_name}}</li>
{% endfor %}
</ul>
{% else %}
<p>{% trans "No user was configured to handle this node"%}</p>
{% endif %}
{% endif %}
<div>
<input type="hidden" name="post" value="yes" />
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
<input type="submit" value="{% trans "Yes, I'm sure" %}" />
<a href="#" onclick="window.history.back(); return false;" class="button cancel-link">{% trans "No, take me back" %}</a>
</div>
</form>
{% else %}
<p>{% trans "you needs to config a workflow model for this content type" %}</p>
<a href="#" onclick="window.history.back(); return false;" class="button cancel-link">{% trans "OK" %}</a>
{% endif %}
{% endblock %}