From 27d08b2283f88330cc3d282852898ba71c2cbb2b Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期六, 12 七月 2025 14:38:22 +0800 Subject: [PATCH] 三保工单流程弹窗布局 --- src/views/eam/equipment/modules/EamEquipmentModal.vue | 7 src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue | 647 ++++++------------ src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue | 784 +++++++++-------------- src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue | 495 ++++---------- src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue | 18 5 files changed, 695 insertions(+), 1,256 deletions(-) diff --git a/src/views/eam/equipment/modules/EamEquipmentModal.vue b/src/views/eam/equipment/modules/EamEquipmentModal.vue index 8df1c99..1f381e5 100644 --- a/src/views/eam/equipment/modules/EamEquipmentModal.vue +++ b/src/views/eam/equipment/modules/EamEquipmentModal.vue @@ -283,13 +283,6 @@ <a-tab-pane tab="淇濆吇鏍囧噯" :key="7"> </a-tab-pane> - - <a-tab-pane tab="宸ヨ壓鍙傛暟" :key="8"> - </a-tab-pane> - - <a-tab-pane tab="璁惧绮惧害" :key="9"> - - </a-tab-pane> </template> </a-tabs> </j-modal> diff --git a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue index fd0fd74..b546ca0 100644 --- a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue +++ b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue @@ -73,7 +73,8 @@ <!-- 琛ㄥ崟鍖哄煙 --> <eamSecondMaintenanceOrder-modal ref="modalForm" @ok="modalFormOk"/> - <second-maintenance-approval-modal ref="secondMaintenanceApprovalModal" :selectShenpiData="selectSecondMaintenanceData"/> + <second-maintenance-approval-modal ref="secondMaintenanceApprovalModal" + :selectShenpiData="selectSecondMaintenanceData"/> </a-card> </template> @@ -81,7 +82,8 @@ import EamSecondMaintenanceOrderModal from './modules/EamSecondMaintenanceOrderModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { deleteAction, getAction } from '@api/manage' - import SecondMaintenanceApprovalModal from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' + import SecondMaintenanceApprovalModal + from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect' export default { @@ -113,22 +115,26 @@ align: 'center', customRender: function(t, r, index) { return parseInt(index) + 1 - } + }, + fixed: 'left' }, { title: '缁熶竴缂栫爜', align: 'center', - dataIndex: 'equipmentCode' + dataIndex: 'equipmentCode', + fixed: 'left' }, { title: '璁惧鍚嶇О', align: 'center', - dataIndex: 'equipmentName' + dataIndex: 'equipmentName', + fixed: 'left' }, { title: '璁惧鍨嬪彿', align: 'center', - dataIndex: 'equipmentModel' + dataIndex: 'equipmentModel', + fixed: 'left' }, { title: '宸ュ崟鍙�', diff --git a/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue b/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue index c7f954c..cc77b6c 100644 --- a/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue +++ b/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue @@ -2,193 +2,91 @@ <a-card :bordered="false"> <!-- 鏌ヨ鍖哄煙 --> - <div - class="table-page-search-wrapper" - v-if="isDisplayOperation" - > - <a-form - layout="inline" - @keyup.enter.native="searchQuery" - > + <div class="table-page-search-wrapper" v-if="isDisplayOperation"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - <a-col - :xl="4" - :lg="7" - :md="8" - :sm="24" - > + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="缁熶竴缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/> + </a-form-item> + </a-col> + <a-col :xl="4" :lg="7" :md="8" :sm="24"> <a-form-item label="宸ュ崟鍙�"> - <a-input - placeholder="璇疯緭鍏ュ伐鍗曞彿" - v-model="queryParam.orderNum" - ></a-input> + <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-model="queryParam.orderNum"/> </a-form-item> </a-col> - <a-col - :xl="4" - :lg="7" - :md="8" - :sm="24" - > - <a-form-item label="璁惧缂栧彿"> - <lx-search-equipment-select - placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" - v-model="queryParam.equipmentId" - ></lx-search-equipment-select> - </a-form-item> - </a-col> - <a-col - :xl="6" - :lg="7" - :md="8" - :sm="24" - > + <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="璁″垝淇濆吇鏃ユ湡"> - <a-range-picker - v-model="queryParam.maintenanceDateRange" - @change="onMaintenanceDateChange" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - /> + <a-range-picker v-model="queryParam.maintenanceDateRange" @change="onMaintenanceDateChange" + value-format="YYYY-MM-DD"/> </a-form-item> </a-col> - <a-col - :xl="4" - :lg="7" - :md="8" - :sm="24" - > + <a-col :xl="4" :lg="7" :md="8" :sm="24"> <a-form-item label="淇濆吇鐘舵��"> - <j-dict-select-tag - placeholder="璇烽�夋嫨淇濆吇鐘舵��" - dict-code="second_maintenance_status" - v-model="queryParam.maintenanceStatus" - /> + <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" dict-code="second_maintenance_status" + v-model="queryParam.maintenanceStatus"/> </a-form-item> </a-col> - <a-col - :xl="4" - :lg="7" - :md="8" - :sm="24" - > - <span - style="float: left;overflow: hidden;" - class="table-page-search-submitButtons" - > - <a-button - type="primary" - @click="searchQuery" - icon="search" - >鏌ヨ</a-button> - <a-button - type="info" - @click="searchReset" - icon="reload" - style="margin-left: 8px" - >閲嶇疆</a-button> + <a-col :xl="4" :lg="7" :md="8" :sm="24"> + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> </span> </a-col> - </a-row> </a-form> </div> <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> - <div - class="table-operator" - v-if="isDisplayOperation" - > - <a-button - @click="handleAdd" - type="primary" - icon="plus" - >鏂板 + <div class="table-operator" v-if="isDisplayOperation"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板 </a-button> <a-dropdown v-if="selectedRowKeys.length > 0"> <a-menu slot="overlay"> - <a-menu-item - key="1" - @click="handlerBatchAbolish" - > - <a-icon type="delete" /> + <a-menu-item key="1" @click="handlerBatchAbolish"> + <a-icon type="delete"/> 浣滃簾 </a-menu-item> - <a-menu-item - key="2" - @click="handlerBatchCollect" - > - <a-icon type="form" /> + <a-menu-item key="2" @click="handlerBatchCollect"> + <a-icon type="form"/> 棰嗗彇 </a-menu-item> </a-menu> <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 - <a-icon type="down" /> + <a-icon type="down"/> </a-button> </a-dropdown> </div> <!-- table鍖哄煙-begin --> <div> - <div - class="ant-alert ant-alert-info" - style="margin-bottom: 16px;" - v-if="isDisplayOperation" - > - <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� - <a - style="margin-left: 24px" - @click="onClearSelected" - >娓呯┖</a> + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;" v-if="isDisplayOperation"> + <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ + selectedRowKeys.length }}</a>椤� + <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> </div> - <a-table - ref="table" - size="middle" - bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - class="j-table-force-nowrap" - :scroll="{x:'max-content'}" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - @change="handleTableChange" - > + <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource" + :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> - <span - slot="action" - slot-scope="text, record" - > + <span slot="action" slot-scope="text, record"> <template v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE'"> - <a - @click="handleEdit(record)" - >缂栬緫</a> + <a @click="handleEdit(record)">缂栬緫</a> - <a-divider - type="vertical" - /> + <a-divider type="vertical"/> - <a-popconfirm - title="纭畾棰嗗彇鍚�?" - @confirm="() => handlerCollect(record.id)" - > + <a-popconfirm title="纭畾棰嗗彇鍚�?" @confirm="() => handlerCollect(record.id)"> <a>棰嗗彇</a> </a-popconfirm> - <a-divider - type="vertical" - /> + <a-divider type="vertical"/> <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> + <a class="ant-dropdown-link">鏇村 <a-icon type="down"/></a> <a-menu slot="overlay"> <a-menu-item> - <a-popconfirm - title="纭畾浣滃簾鍚�?" - @confirm="() => handlerAbolish(record.id)" - > + <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handlerAbolish(record.id)"> <a>浣滃簾</a> </a-popconfirm> </a-menu-item> @@ -203,14 +101,8 @@ <a @click="handleDetail(record)">璇︽儏</a> </template> - <a-divider - v-if="record.maintenanceStatus === 'COMPLETE'" - type="vertical" - /> - <a - v-if="record.maintenanceStatus === 'COMPLETE'" - @click="handlePrint(record)" - >鎵撳嵃</a> + <a-divider v-if="record.maintenanceStatus === 'COMPLETE'" type="vertical"/> + <a v-if="record.maintenanceStatus === 'COMPLETE'" @click="handlePrint(record)">鎵撳嵃</a> </span> </a-table> @@ -218,239 +110,204 @@ <!-- table鍖哄煙-end --> <!-- 琛ㄥ崟鍖哄煙 --> - <eamThirdMaintenanceOrder-modal - ref="modalForm" - @ok="modalFormOk" - ></eamThirdMaintenanceOrder-modal> + <eamThirdMaintenanceOrder-modal ref="modalForm" @ok="modalFormOk"/> - <third-maintenance-approval-modal - ref="thirdMaintenanceApprovalModal" - :selectShenpiData="selectThirdMaintenanceData" - /> + <third-maintenance-approval-modal ref="thirdMaintenanceApprovalModal" + :selectShenpiData="selectThirdMaintenanceData"/> </a-card> </template> <script> -import '@/assets/less/TableExpand.less' -import EamThirdMaintenanceOrderModal from './modules/EamThirdMaintenanceOrderModal' -import { JeecgListMixin } from '@/mixins/JeecgListMixin' -import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' -import { deleteAction, getAction } from '@api/manage' -import ThirdMaintenanceApprovalModal from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue' + import EamThirdMaintenanceOrderModal from './modules/EamThirdMaintenanceOrderModal' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' + import { deleteAction, getAction } from '@api/manage' + import ThirdMaintenanceApprovalModal + from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue' -export default { - name: 'EamThirdMaintenanceOrderList', - mixins: [JeecgListMixin], - components: { - LxSearchEquipmentSelect, - EamThirdMaintenanceOrderModal, - ThirdMaintenanceApprovalModal - }, - props: { - isDisplayOperation: { - type: Boolean, - default: true - } - }, - data() { - return { - description: '璁惧涓夌骇淇濆吇绠$悊椤甸潰', - disableMixinCreated: true, - selectThirdMaintenanceData: {}, - // 琛ㄥご - columns: [ - { - title: '#', - dataIndex: '', - key: 'rowIndex', - width: 60, - align: 'center', - fixed: 'left', - customRender: function (t, r, index) { - return parseInt(index) + 1 - } - }, - { - title: '宸ュ崟鍙�', - align: 'center', - dataIndex: 'orderNum', - fixed: 'left', - width: 60 - }, - { - title: '璁惧缂栧彿', - align: 'center', - dataIndex: 'equipmentCode', - fixed: 'left', - width: 60 - }, - { - title: '璁惧鍚嶇О', - align: 'center', - dataIndex: 'equipmentName', - fixed: 'left', - width: 60 - }, - { - title: '鏍囧噯鍚嶇О', - align: 'center', - dataIndex: 'standardId_dictText' - }, - { - title: '璁″垝淇濆吇鏃ユ湡', - align: 'center', - dataIndex: 'maintenanceDate' - }, - { - title: '瀹為檯寮�濮嬫椂闂�', - align: 'center', - dataIndex: 'actualStartTime' - }, - { - title: '瀹為檯缁撴潫鏃堕棿', - align: 'center', - dataIndex: 'actualEndTime' - }, - { - title: '淇濆吇浜�', - align: 'center', - dataIndex: 'operator_dictText' - }, - { - title: '绮惧害妫�楠屼汉', - align: 'center', - dataIndex: 'precisionChecker_dictText' - }, - { - title: '绮惧害妫�楠屾椂闂�', - align: 'center', - dataIndex: 'precisionCheckTime' - }, - { - title: '淇濆吇鐘舵��', - align: 'center', - dataIndex: 'maintenanceStatus_dictText' - }, - { - title: '鍒涘缓鏂瑰紡', - align: 'center', - dataIndex: 'creationMethod_dictText' - }, - { - title: '鏈哄姩鍔炵‘璁�', - align: 'center', - dataIndex: 'confirmUser_dictText', - width: 60 - }, - { - title: '鏈哄姩鍔炵‘璁ゆ椂闂�', - align: 'center', - dataIndex: 'confirmTime', - width: 60 - }, - { - title: '鏈哄姩鍔炴剰瑙�', - align: 'center', - dataIndex: 'confirmComment', - width: 60 - }, - { - title: '纭棰嗗', - align: 'center', - dataIndex: 'confirmLeader_dictText', - width: 60 - }, - { - title: '棰嗗纭鏃堕棿', - align: 'center', - dataIndex: 'leaderConfirmTime', - width: 60 - }, - { - title: '棰嗗鎰忚', - align: 'center', - dataIndex: 'leaderConfirmComment', - width: 60 - }, - { - title: '澶囨敞', - align: 'center', - dataIndex: 'remark' - } - ], - url: { - list: '/eam/thirdMaintenanceOrder/list', - abolish: '/eam/thirdMaintenanceOrder/abolish', - abolishBatch: '/eam/thirdMaintenanceOrder/abolishBatch', - collect: '/eam/thirdMaintenanceOrder/collect', - collectBatch: '/eam/thirdMaintenanceOrder/collectBatch' + export default { + name: 'EamThirdMaintenanceOrderList', + mixins: [JeecgListMixin], + components: { + LxSearchEquipmentSelect, + EamThirdMaintenanceOrderModal, + ThirdMaintenanceApprovalModal + }, + props: { + isDisplayOperation: { + type: Boolean, + default: true } - } - }, - created() { - if (!this.isDisplayOperation) { - return - } - const operationColumn = { - title: '鎿嶄綔', - dataIndex: 'action', - align: 'center', - fixed: 'right', - width: 200, - scopedSlots: { customRender: 'action' } - } - this.columns = [...this.columns, operationColumn] - this.loadData(1) - }, - computed: {}, - methods: { - onMaintenanceDateChange: function (value, dateString) { - if (dateString && dateString.length === 2) { + }, + data() { + return { + description: '璁惧涓夌骇淇濆吇绠$悊椤甸潰', + disableMixinCreated: true, + selectThirdMaintenanceData: {}, + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + fixed: 'left', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'equipmentCode', + fixed: 'left' + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName', + fixed: 'left' + }, + { + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'equipmentModel', + fixed: 'left' + }, + { + title: '宸ュ崟鍙�', + align: 'center', + dataIndex: 'orderNum' + }, + { + title: '瑙勮寖鍚嶇О', + align: 'center', + dataIndex: 'standardId_dictText' + }, + { + title: '璁″垝淇濆吇鏃ユ湡', + align: 'center', + dataIndex: 'maintenanceDate' + }, + { + title: '瀹為檯寮�濮嬫椂闂�', + align: 'center', + dataIndex: 'actualStartTime' + }, + { + title: '瀹為檯缁撴潫鏃堕棿', + align: 'center', + dataIndex: 'actualEndTime' + }, + { + title: '淇濆吇浜�', + align: 'center', + dataIndex: 'operator_dictText' + }, + { + title: '绮惧害妫�楠屼汉', + align: 'center', + dataIndex: 'precisionChecker_dictText' + }, + { + title: '绮惧害妫�楠屾椂闂�', + align: 'center', + dataIndex: 'precisionCheckTime' + }, + { + title: '淇濆吇鐘舵��', + align: 'center', + dataIndex: 'maintenanceStatus_dictText' + }, + { + title: '鍒涘缓鏂瑰紡', + align: 'center', + dataIndex: 'creationMethod_dictText' + }, + { + title: '鏈哄姩鍔炵‘璁�', + align: 'center', + dataIndex: 'confirmUser_dictText' + }, + { + title: '鏈哄姩鍔炵‘璁ゆ椂闂�', + align: 'center', + dataIndex: 'confirmTime' + }, + { + title: '鏈哄姩鍔炴剰瑙�', + align: 'center', + dataIndex: 'confirmComment' + }, + { + title: '纭棰嗗', + align: 'center', + dataIndex: 'confirmLeader_dictText' + }, + { + title: '棰嗗纭鏃堕棿', + align: 'center', + dataIndex: 'leaderConfirmTime' + }, + { + title: '棰嗗鎰忚', + align: 'center', + dataIndex: 'leaderConfirmComment' + } + ], + url: { + list: '/eam/thirdMaintenanceOrder/list', + abolish: '/eam/thirdMaintenanceOrder/abolish', + abolishBatch: '/eam/thirdMaintenanceOrder/abolishBatch', + collect: '/eam/thirdMaintenanceOrder/collect', + collectBatch: '/eam/thirdMaintenanceOrder/collectBatch' + } + } + }, + created() { + if (!this.isDisplayOperation) { + return + } + const operationColumn = { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + fixed: 'right', + width: 200, + scopedSlots: { customRender: 'action' } + } + this.columns = [...this.columns, operationColumn] + this.loadData(1) + }, + computed: {}, + methods: { + onMaintenanceDateChange: function(dateString) { this.queryParam.maintenanceDateBegin = dateString[0] this.queryParam.maintenanceDateEnd = dateString[1] - } else { - this.queryParam.maintenanceDateBegin = undefined - this.queryParam.maintenanceDateEnd = undefined - } - }, - handlerAbolish(id) { - if (!this.url.abolish) { - this.$message.error('璇疯缃畊rl.abolish灞炴��!') - return - } - var that = this - deleteAction(that.url.abolish, { id: id }).then((res) => { - if (res.success) { - //閲嶆柊璁$畻鍒嗛〉闂 - that.reCalculatePage(1) - // that.$message.success(res.message); - that.$notification.success({ - message: '娑堟伅', - description: res.message + }, + + handlerAbolish(id) { + var that = this + deleteAction(that.url.abolish, { id }) + .then((res) => { + if (res.success) { + //閲嶆柊璁$畻鍒嗛〉闂 + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } }) - that.loadData() - } else { - // that.$message.warning(res.message); - that.$notification.warning({ - message: '娑堟伅', - description: res.message - }) - } - }) - }, - handlerBatchAbolish() { - if (!this.url.abolishBatch) { - this.$message.error('璇疯缃畊rl.abolishBatch灞炴��!') - return - } - if (this.selectedRowKeys.length <= 0) { - // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒'); - this.$notification.warning({ - message: '娑堟伅', - description: '璇烽�夋嫨涓�鏉¤褰�' - }) - return - } else { + }, + + handlerBatchAbolish() { var ids = '' for (var a = 0; a < this.selectedRowKeys.length; a++) { ids += this.selectedRowKeys[a] + ',' @@ -459,73 +316,54 @@ this.$confirm({ title: '纭浣滃簾', content: '鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?', - onOk: function () { + onOk: function() { that.loading = true - deleteAction(that.url.abolishBatch, { ids: ids }).then((res) => { - if (res.success) { - //閲嶆柊璁$畻鍒嗛〉闂 - that.reCalculatePage(that.selectedRowKeys.length) - // that.$message.success(res.message); - that.$notification.success({ - message: '娑堟伅', - description: res.message - }) - that.loadData() - that.onClearSelected() - } else { - // that.$message.warning(res.message); - that.$notification.warning({ - message: '娑堟伅', - description: res.message - }) - } - }).finally(() => { - that.loading = false - }) + deleteAction(that.url.abolishBatch, { ids }) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + that.onClearSelected() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.loading = false + }) } }) - } - }, - //鍗曚釜棰嗗彇 - handlerCollect(id) { - if (!this.url.collect) { - this.$message.error('璇疯缃畊rl.collect灞炴��!') - return - } - let that = this - getAction(that.url.collect, { id: id }).then((res) => { - if (res.success) { - //閲嶆柊璁$畻鍒嗛〉闂 - that.reCalculatePage(1) - // that.$message.success(res.message); - that.$notification.success({ - message: '娑堟伅', - description: res.message + }, + + //鍗曚釜棰嗗彇 + handlerCollect(id) { + let that = this + getAction(that.url.collect, { id }) + .then((res) => { + if (res.success) { + //閲嶆柊璁$畻鍒嗛〉闂 + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } }) - that.loadData() - } else { - // that.$message.warning(res.message); - that.$notification.warning({ - message: '娑堟伅', - description: res.message - }) - } - }) - }, - //鎵归噺棰嗗彇 - handlerBatchCollect() { - if (!this.url.collectBatch) { - this.$message.error('璇疯缃畊rl.abolishBatch灞炴��!') - return - } - if (this.selectedRowKeys.length <= 0) { - // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒'); - this.$notification.warning({ - message: '娑堟伅', - description: '璇烽�夋嫨涓�鏉¤褰�' - }) - return - } else { + }, + + //鎵归噺棰嗗彇 + handlerBatchCollect() { var ids = '' for (var a = 0; a < this.selectedRowKeys.length; a++) { ids += this.selectedRowKeys[a] + ',' @@ -534,48 +372,42 @@ this.$confirm({ title: '纭棰嗗彇', content: '鏄惁棰嗗彇閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲棰嗗彇鎴愬姛?', - onOk: function () { + onOk: function() { that.loading = true - deleteAction(that.url.collectBatch, { ids: ids }).then((res) => { - if (res.success) { - //閲嶆柊璁$畻鍒嗛〉闂 - that.reCalculatePage(that.selectedRowKeys.length) - // that.$message.success(res.message); - that.$notification.success({ - message: '娑堟伅', - description: res.message - }) - that.loadData() - that.onClearSelected() - } else { - // that.$message.warning(res.message); - that.$notification.warning({ - message: '娑堟伅', - description: res.message - }) - } - }).finally(() => { - that.loading = false - }) + deleteAction(that.url.collectBatch, { ids }) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + that.onClearSelected() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.loading = false + }) } }) - } - }, - handleDetail(record) { - this.selectThirdMaintenanceData = Object.assign({}, record) - this.$refs.thirdMaintenanceApprovalModal.recordDetail(record) - this.$refs.thirdMaintenanceApprovalModal.title = '璇︽儏' - this.$refs.thirdMaintenanceApprovalModal.disableSubmit = true - }, + }, - handlePrint(record) { - let href = `${window._CONFIG['domianURL']}/jmreport/view/1094880052100399104?id=` + record.id; - // + `&orderId=` + record.id; //缃戠珯閾炬帴 - window.open(href, "_blank"); - }, + handleDetail(record) { + this.selectThirdMaintenanceData = Object.assign({}, record) + this.$refs.thirdMaintenanceApprovalModal.recordDetail(record) + this.$refs.thirdMaintenanceApprovalModal.title = '璇︽儏' + this.$refs.thirdMaintenanceApprovalModal.disableSubmit = true + }, + + handlePrint(record) { + let href = `${window._CONFIG['domianURL']}/jmreport/view/1094880052100399104?id=` + record.id + window.open(href, '_blank') + } + } } -} -</script> -<style scoped> -@import '~@assets/less/common.less'; -</style> \ No newline at end of file +</script> \ No newline at end of file diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue index e246065..7eb37b6 100644 --- a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue +++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue @@ -1,459 +1,272 @@ <template> - <j-modal - :title="title" - :width="1200" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - :mask-closable="false" - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + :mask-closable="false" @ok="handleOk" @cancel="handleCancel" centered cancelText="鍏抽棴"> <a-spin :spinning="spinning"> <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-row :gutter="24"> + <a-row> <a-col :span="8"> <a-form-model-item prop="orderNum" label="宸ュ崟鍙�"> - <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled /> + <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/> </a-form-model-item> </a-col> <a-col :span="8"> - <a-form-model-item prop="equipmentId" label="璁惧缂栫爜"> - <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" - :maintenanceCategory="maintenanceCategory" + <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜"> + <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" + maintenanceCategory="THIRD_MAINTENANCE" @autocompleteForm="autocompleteForm" - :disabled="editable"></maintenance-equipment-select> + :disabled="!editable"/> </a-form-model-item> </a-col> <a-col :span="8"> - <a-form-model-item prop="standardName" label="鏍囧噯鍚嶇О"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled /> + <a-form-model-item prop="standardName" label="瑙勮寖鍚嶇О"> + <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/> </a-form-model-item> </a-col> </a-row> - <a-row :gutter="24"> + + <a-row> <a-col :span="8"> <a-form-model-item prop="maintenanceDate" label="淇濆吇鏃ユ湡"> - <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD" - style="width: 100%" /> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item prop="operator" label="淇濆吇浜�"> - <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" :disabled="!model.equipmentId" - :dictOptions="maintenanceOperatorOptions" /> + <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" value-format="YYYY-MM-DD" + style="width: 100%"/> </a-form-model-item> </a-col> <a-col :span="8"> <a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled /> + <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/> </a-form-model-item> </a-col> </a-row> - <a-row :gutter="24"> + + <a-row> <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞"> - <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" /> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/> </a-form-model-item> </a-row> - <a-row :gutter="24"> - <a-tabs v-model="activeTabKey"> - <a-tab-pane key="1" tab="淇濆吇椤�" :forceRender="true"> - <j-vxe-table - ref="editableDetailTable" - :rowNumber="true" - :rowSelection="true" - :bordered="true" - :alwaysEdit="true" - :toolbar="true" - :toolbarConfig="detail.toolbarConfig" - keep-source - :height="300" - :dataSource="detail.dataSource" - :columns="detail.columns" - style="margin-top: 8px;" /> - </a-tab-pane> - <a-tab-pane key="2" tab="绮惧害鍙傛暟" :forceRender="true"> - <j-vxe-table - ref="editablePrecisionDetailTable" - :rowNumber="true" - :rowSelection="true" - :bordered="true" - :alwaysEdit="true" - :toolbar="false" - :toolbarConfig="precisionDetail.toolbarConfig" - keep-source - :height="300" - :dataSource="precisionDetail.dataSource" - :columns="precisionDetail.columns" - style="margin-top: 8px;" /> - </a-tab-pane> - </a-tabs> - </a-row> + + <a-tabs> + <a-tab-pane key="1" tab="淇濆吇椤规槑缁�"> + <j-vxe-table ref="editableDetailTable" rowNumber bordered keep-source :height="300" + :dataSource="detail.dataSource" + :columns="detail.columns"/> + </a-tab-pane> + </a-tabs> </a-form-model> </a-spin> </j-modal> </template> <script> -import { getAction, httpAction } from '@/api/manage' -import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' -import { JVXETypes } from '@comp/jeecg/JVxeTable' + import { getAction, httpAction } from '@/api/manage' + import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' + import { JVXETypes } from '@comp/jeecg/JVxeTable' -export default { - name: 'EamThirdMaintenanceOrderModal', - components: { MaintenanceEquipmentSelect }, - data() { - return { - title: '鎿嶄綔', - visible: false, - editable: false, - maintenanceCategory: 'THIRD_MAINTENANCE', - model: {}, - labelCol: { - xs: { span: 24 }, - sm: { span: 6 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 } - }, - labelColLong: { - xs: { span: 24 }, - sm: { span: 2 } - }, - wrapperColLong: { - xs: { span: 24 }, - sm: { span: 21 } - }, - confirmLoading: false, - spinning: false, - activeTabKey: '1', - maintenanceOperatorOptions: [], - validatorRules: { - equipmentId: [ - { required: true, message: '璇烽�夋嫨璁惧!' } - ], - maintenanceDate: [ - { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!' } - ] - }, - url: { - add: '/eam/thirdMaintenanceOrder/add', - edit: '/eam/thirdMaintenanceOrder/edit', - standardDetail: '/eam/eamMaintenanceStandardDetail/queryList', - detail: '/eam/thirdMaintenanceOrderDetail/queryList', - userSelect: '/eam/user_select/list', - precisionDetail: '/eam/equipmentPrecisionParameters/queryList', - precisionCheckDetail: '/eam/precisionCheckDetail/queryList', - }, - detail: { - loading: false, - dataSource: [], - columns: [ - { - title: 'ID', - key: 'id', - type: JVXETypes.hidden - }, - { - title: 'orderId', - key: 'orderId', - type: JVXETypes.hidden - }, - { - title: '搴忓彿', - key: 'itemCode', - type: JVXETypes.inputNumber, - width: '10%', - align: 'center', - validateRules: [ - { required: true, unique: true, message: '搴忓彿涓嶈兘閲嶅' } - ] - }, - { - title: '閮ㄤ綅', - key: 'itemPart', - type: JVXETypes.textarea, - width: '25%', - align: 'center' - }, - { - title: '淇濆吇椤�', - key: 'itemName', - type: JVXETypes.textarea, - width: '20%', - align: 'center', - validateRules: [ - { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' } - ] - }, - { - title: '淇濆吇瑕佹眰', - key: 'itemDemand', - type: JVXETypes.textarea, - width: '30%', - align: 'center', - validateRules: [ - { required: true, message: '淇濆吇瑕佹眰涓嶈兘涓虹┖锛�' } - ] + export default { + name: 'EamThirdMaintenanceOrderModal', + components: { MaintenanceEquipmentSelect }, + data() { + return { + title: '鎿嶄綔', + visible: false, + editable: true, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 15 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 2 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 21 } + }, + confirmLoading: false, + spinning: false, + maintenanceOperatorOptions: [], + validatorRules: { + equipmentId: [ + { required: true, message: '璇烽�夋嫨璁惧!', trigger: 'change' } + ], + maintenanceDate: [ + { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!', trigger: 'change' } + ] + }, + url: { + add: '/eam/thirdMaintenanceOrder/add', + edit: '/eam/thirdMaintenanceOrder/edit', + standardDetail: '/eam/eamMaintenanceStandardDetail/queryList', + detail: '/eam/thirdMaintenanceOrderDetail/queryList', + userSelect: '/eam/user_select/list' + }, + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'orderId', + key: 'orderId', + type: JVXETypes.hidden + }, + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: 60, + align: 'center' + }, + { + title: '淇濆吇閮ㄤ綅', + key: 'itemPart', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '淇濆吇鍐呭', + key: 'itemName', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '楠屾敹鏍囧噯', + key: 'itemDemand', + type: JVXETypes.normal, + align: 'center' + } + ], + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['add', 'remove', 'clearSelection'] } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['add', 'remove', 'clearSelection'] + } + } + }, + methods: { + add() { + //鍒濆鍖栭粯璁ゅ�� + this.model = {} + this.visible = true + this.editable = true + this.detail.dataSource = [] + }, + + edit(record) { + this.model = Object.assign({}, record) + this.visible = true + this.editable = false + this.detail.dataSource = [] + this.loadDetail(record.id) + }, + + async handleOk() { + const that = this + let errMap = await that.$refs.editableDetailTable.validateTable() + if (errMap) { + this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') + return + } + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + let tableData = that.$refs.editableDetailTable.getTableData() + let removeData = that.$refs.editableDetailTable.getDeleteData() + that.model.tableDetailList = [...tableData] + that.model.removeDetailList = [...removeData] + + that.confirmLoading = true + let httpurl = '' + let method = '' + if (!this.model.id) { + httpurl += this.url.add + method = 'post' + } else { + httpurl += this.url.edit + method = 'put' + } + httpAction(httpurl, this.model, method).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + that.close() + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false + }) + } else { + return false + } + }) + }, + + autocompleteForm(selectObj) { + this.$set(this.model, 'standardName', selectObj.standardName) + this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) + this.$set(this.model, 'standardId', selectObj.id) + this.$set(this.model, 'equipmentId', selectObj.equipmentId) + if (!this.model.equipmentId) delete this.model.operator + if (!this.model.id) { + this.loadStandardDetail(selectObj.id) + } + this.loadMaintenanceOperatorList(this.model.equipmentId) + }, + + //鍔犺浇璇︽儏鏁版嵁 + loadStandardDetail(standardId) { + this.detail.dataSource = [] + if (standardId) { + this.spinning = true + getAction(this.url.standardDetail, { standardId: standardId }) + .then(res => { + if (res.success) { + this.detail.dataSource = res.result.map(item => ({ + itemCode: item.itemCode, + itemName: item.itemName, + itemPart: item.itemPart, + itemDemand: item.itemDemand + })) + } + }) + .finally(() => { + this.spinning = false + }) } }, - precisionDetail: { - loading: false, - dataSource: [], - columns: [ - { - title: 'ID', - key: 'id', - type: JVXETypes.hidden - }, - { - title: 'orderId', - key: 'orderId', - type: JVXETypes.hidden - }, - { - title: 'equipmentId', - key: 'equipmentId', - type: JVXETypes.hidden - }, - { - title: 'parameterId', - key: 'parameterId', - type: JVXETypes.hidden - }, - { - title: '妫�娴嬮」鐩�', - key: 'parameterId_dictText', - type: JVXETypes.normal, - width: '25%', - align: 'center' - }, - { - title: '鍙傛暟缂栫爜', - key: 'parameterCode_dictText', - type: JVXETypes.normal, - width: '20%', - align: 'center', - }, - { - title: '鍏佸樊鍊�', - key: 'parameterValue', - type: JVXETypes.normal, - width: '30%', - align: 'center', - } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['add', 'remove', 'clearSelection'] + + //瑙勮寖閫夋嫨鍙樺寲 + loadDetail(orderId) { + if (orderId) { + getAction(this.url.detail, { orderId: orderId }).then(res => { + if (res.success) { + this.detail.dataSource = [...res.result] + } + }) } + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() } } - }, - created() { - }, - methods: { - add() { - this.initParams(); - //鍒濆鍖栭粯璁ゅ�� - this.model = {} - this.visible = true - this.editable = false - this.detail.dataSource = [] - }, - edit(record) { - this.initParams(); - this.model = Object.assign({}, record) - this.visible = true - this.editable = true - this.detail.dataSource = [] - this.loadDetail(record.id) - this.loadPrecisionDetail(record.id) - }, - close() { - this.$emit('close') - this.visible = false - this.$refs.form.clearValidate() - }, - async handleOk() { - const that = this - let errMap = await that.$refs.editableDetailTable.validateTable() - if (errMap) { - this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') - return - } - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - let tableData = that.$refs.editableDetailTable.getTableData() - let removeData = that.$refs.editableDetailTable.getDeleteData() - that.model.tableDetailList = [...tableData] - that.model.removeDetailList = [...removeData] - - let precisionDetailList = that.$refs.editablePrecisionDetailTable.getTableData() - let removePrecisionDetailList = that.$refs.editablePrecisionDetailTable.getDeleteData() - that.model.precisionDetailList = [...precisionDetailList] - that.model.removePrecisionDetailList = [...removePrecisionDetailList] - - that.confirmLoading = true - let httpurl = '' - let method = '' - if (!this.model.id) { - httpurl += this.url.add - method = 'post' - } else { - httpurl += this.url.edit - method = 'put' - } - httpAction(httpurl, this.model, method).then((res) => { - if (res.success) { - that.$message.success(res.message) - that.$emit('ok') - that.close() - } else { - that.$message.warning(res.message) - } - }).finally(() => { - that.confirmLoading = false - }) - } else { - return false - } - }) - }, - handleCancel() { - this.close() - }, - autocompleteForm(selectObj) { - //鏍囧噯鍚嶇О锛屼繚鍏诲懆鏈熶笉鍒锋柊瑙e喅鍔炴硶 - //鍔炴硶涓� validatorRules equipmentId 杩樻槸鏈夐棶棰� - // const newObj = { - // standardName: selectObj.standardName, - // maintenancePeriod: selectObj.maintenancePeriod, - // standardId : selectObj.id, - // equipmentId: selectObj.equipmentId, - // }; - // this.model = Object.assign({}, newObj, this.model) - //鍔炴硶浜� - this.$set(this.model, 'standardName', selectObj.standardName) - this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) - this.$set(this.model, 'standardId', selectObj.id) - this.$set(this.model, 'equipmentId', selectObj.equipmentId) - // console.log('model', this.model) - if (!this.model.equipmentId) delete this.model.operator - if (!this.model.id) { - this.loadStandardDetail(selectObj.id) - this.loadPrecisionParameterList(selectObj.equipmentId) - } - this.loadMaintenanceOperatorList(this.model.equipmentId) - }, - //鍔犺浇璇︽儏鏁版嵁 - loadStandardDetail(standardId) { - this.detail.dataSource = [] - if (standardId) { - this.spinning = true - getAction(this.url.standardDetail, { standardId: standardId }) - .then(res => { - if (res.success) { - this.detail.dataSource = res.result.map(item => ({ - itemCode: item.itemCode, - itemName: item.itemName, - itemPart: item.itemPart, - itemDemand: item.itemDemand - })) - } - }) - .finally(() => { - this.spinning = false - }) - } - }, - //鏍囧噯閫夋嫨鍙樺寲 - loadDetail(orderId) { - if (orderId) { - getAction(this.url.detail, { orderId: orderId }).then(res => { - if (res.success) { - this.detail.dataSource = [...res.result] - } - }) - } - }, - loadMaintenanceOperatorList(equipmentId) { - this.maintenanceOperatorOptions = [] - let params = { positionCode: 'PCR0001' } - if (equipmentId) { - params.equipmentId = equipmentId - } else { - return - } - const that = this - getAction(this.url.userSelect, params) - .then(res => { - if (res.success) { - that.maintenanceOperatorOptions = res.result.map(item => ({ - key: item.id, - value: item.username, - text: item.realname - })) - if (!that.maintenanceOperatorOptions.find(item => item.value === that.model.operator)) delete that.model.operator - } else { - if (that.model.operator) delete that.model.operator - } - }) - .catch(err => { - if (that.model.operator) delete that.model.operator - }) - }, - loadPrecisionParameterList(equipmentId) { - this.precisionDetail.dataSource = [] - if (equipmentId) { - this.spinning = true - getAction(this.url.precisionDetail, { equipmentId: equipmentId }) - .then(res => { - if (res.success) { - this.precisionDetail.dataSource = res.result.map(item => ({ - equipmentId: item.equipmentId, - parameterId: item.parameterId, - parameterId_dictText: item.parameterId_dictText, - parameterCode_dictText: item.parameterCode_dictText, - parameterValue: item.parameterValue, - })) - } - }) - .finally(() => { - this.spinning = false - }) - } - }, - loadPrecisionDetail(orderId) { - if (orderId) { - getAction(this.url.precisionCheckDetail, { orderId: orderId }).then(res => { - if (res.success) { - this.precisionDetail.dataSource = [...res.result] - } - }) - } - }, - initParams() { - this.detail.dataSource = [] - this.precisionDetail.dataSource = [] - this.activeTabKey = '1' - }, } -} -</script> - -<style lang="less" scoped> - -</style> \ No newline at end of file +</script> \ No newline at end of file diff --git a/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue index f1b933b..1747b37 100644 --- a/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue +++ b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue @@ -1,184 +1,126 @@ <template> - <j-modal - :title="title" - :width="1200" - :visible="visible" - :confirmLoading="confirmLoading" - :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" - switchFullscreen - @ok="handleOk" - @cancel="handleCancel" - centered - cancelText="鍏抽棴"> + <j-modal :title="title" :visible="visible" :confirmLoading="confirmLoading" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" fullscreen @ok="handleOk" @cancel="handleCancel" + centered cancelText="鍏抽棴"> <a-spin :spinning="spinning"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 淇濆吇鍩虹淇℃伅 - </a-divider> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-row :gutter="24"> <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNum" label="宸ュ崟鍙�"> - <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栫爜"> - <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" - :maintenanceCategory="maintenanceCategory" - @autocompleteForm="autocompleteForm" - disabled></maintenance-equipment-select> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/> - </a-form-model-item> - </a-col> - </a-row> - <a-row :gutter="24"> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenanceDate" label="淇濆吇鏃ユ湡"> - <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD" - disabled - style="width: 100%"/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="淇濆吇浜�"> - <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" disabled - :dictOptions="maintenanceOperatorOptions"/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/> - </a-form-model-item> - </a-col> - </a-row> - <a-row :gutter="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞"> - <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" disabled/> - </a-form-model-item> - </a-row> - <a-row :gutter="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="淇濆吇鍥剧墖"> - <lx-upload :returnUrl="false" - :isMultiple="true" - file-type="image" - :disabled="confirmDisable" - :number="3" - v-model="model.imageFilesResult"/> - </a-form-model-item> - </a-row> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 淇濆吇椤逛俊鎭� - </a-divider> - <a-row :gutter="24"> - <a-tabs v-model="activeTabKey"> - <a-tab-pane key="1" tab="淇濆吇椤规槑缁�" v-if="!isPrecisionCheck"> - <j-vxe-table - ref="editableDetailTable" - :rowNumber="false" - :rowSelection="true" - :bordered="true" - :alwaysEdit="true" - :toolbar="false" - keep-source - :height="300" - :loading="detail.loading" - :dataSource="detail.dataSource" - :columns="detail.columns" - @selectRowChange="handleTableSelectRowChange" - > - <template v-slot:maintenanceResult="props"> - <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="eam_inspection_result" - placeholder="璇烽�夋嫨淇濆吇缁撴灉" - :disabled="disableSubmit || confirmDisable" - @change="handleInspectionResultSelectChange($event,props.row)" - style="width: 100%"/> - </template> + <a-tabs> + <a-tab-pane tab="鍩虹淇℃伅"> + <a-row> + <a-col :span="12"> + <a-form-model-item label="宸ュ崟鍙�"> + <a-input v-model="model.orderNum" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="缁熶竴缂栫爜"> + <maintenance-equipment-select v-model="model.equipmentId" maintenanceCategory="SECOND_MAINTENANCE" + @autocompleteForm="autocompleteForm" disabled/> + </a-form-model-item> + </a-col> + </a-row> - <template v-slot:exceptionDescription="props"> - <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" - :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"/> - </template> + <a-row> + <a-col :span="12"> + <a-form-model-item label="瑙勮寖鍚嶇О"> + <a-input v-model="model.standardName" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="淇濆吇鏃ユ湡"> + <a-input v-model="model.maintenanceDate" readOnly/> + </a-form-model-item> + </a-col> + </a-row> - <template v-slot:reportFlag="props"> - <j-dict-select-tag v-model="props.row.reportFlag" - :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'" - dictCode="yn" - style="width: 100%"/> - </template> - </j-vxe-table> - </a-tab-pane> - <a-tab-pane key='4' tab='绮惧害妫�楠�' v-if="!isMaintenance"> - <j-vxe-table - ref="editablePrecisionDetailTable" - :rowNumber="true" - :rowSelection="true" - :bordered="true" - :alwaysEdit="true" - :toolbar="false" - :toolbarConfig="precisionDetail.toolbarConfig" - keep-source - :height="300" - :dataSource="precisionDetail.dataSource" - :columns="precisionDetail.columns" - style="margin-top: 8px;" > - <template v-slot:actualValue="props"> - <a-input-number v-model="props.row.actualValue" :disabled="disableSubmit || confirmDisable" style="width: 100%" /> - </template> - </j-vxe-table> - </a-tab-pane> - <template v-if="selectShenpiData.procInstId"> - <a-tab-pane key='2' tab='娴佺▼鑺傜偣'> - <a-card :bordered="false"> - <a-timeline> - <a-timeline-item v-for="(item,index) in taskData" :key="index"> - <div> - <h3 style="font-weight: bold;">{{item.taskName}}</h3> - <div>澶勭悊浜猴細{{item.assignee_dictText}}</div> - <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div> - <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div> - <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div> - </div> - </a-timeline-item> - </a-timeline> - </a-card> + <a-row> + <a-col :span="12"> + <a-form-model-item label="淇濆吇浜�"> + <a-input v-model="model.operator" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="淇濆吇鍛ㄦ湡"> + <a-input v-model="model.maintenancePeriod" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞"> + <a-textarea v-model="model.remark" readOnly/> + </a-form-model-item> + </a-col> + </a-row> </a-tab-pane> - <a-tab-pane key='3' tab='娴佺▼鍥�'> - <img :src="imageSrc" alt="Fetched Image"/> + </a-tabs> + </a-col> + + <a-col :span="10"> + <a-tabs v-model="activeTabKey"> + <a-tab-pane key="1" tab="淇濆吇椤规槑缁�" v-if="!isPrecisionCheck"> + <j-vxe-table ref="editableDetailTable" :rowNumber="false" :rowSelection="true" :bordered="true" + :alwaysEdit="true" :toolbar="false" keep-source :height="300" :loading="detail.loading" + :dataSource="detail.dataSource" :columns="detail.columns" + @selectRowChange="handleTableSelectRowChange"> + <template v-slot:maintenanceResult="props"> + <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="eam_inspection_result" + placeholder="璇烽�夋嫨淇濆吇缁撴灉" + :disabled="disableSubmit || confirmDisable" + @change="handleInspectionResultSelectChange($event,props.row)" + style="width: 100%"/> + </template> + + <template v-slot:exceptionDescription="props"> + <a-textarea style="height: 32px" v-model="props.row.exceptionDescription" + :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"/> + </template> + + <template v-slot:reportFlag="props"> + <j-dict-select-tag v-model="props.row.reportFlag" + :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'" + dictCode="yn" + style="width: 100%"/> + </template> + </j-vxe-table> </a-tab-pane> - </template> - <a-button v-if="!disableSubmit &&!confirmDisable&& selectedRowKeys.length > 0" slot="tabBarExtraContent" - type="primary" @click="handleSelectAllInspectionResult">淇濆吇姝e父 - </a-button> - </a-tabs> + <template v-if="selectShenpiData.procInstId"> + <a-tab-pane key='2' tab='娴佺▼鍥�'> + <img :src="imageSrc" alt="Fetched Image"/> + </a-tab-pane> + </template> + <a-button :disabled="disableSubmit ||confirmDisable||selectedRowKeys.length > 0" slot="tabBarExtraContent" + type="primary" @click="handleSelectAllInspectionResult">鎵归噺淇濆吇姝e父 + </a-button> + </a-tabs> + </a-col> + + <a-col :span="6"> + <a-tabs v-if="confirmDisable"> + <a-tab-pane tab="纭"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="confirmComment" + label="纭鎰忚"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.confirmComment" + :disabled="disableSubmit || leaderConfirmDisable"/> + </a-form-model-item> + </a-tab-pane> + </a-tabs> + + <a-tabs v-if="leaderConfirmDisable"> + <a-tab-pane tab="棰嗗纭"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="leaderConfirmComment" + label="棰嗗鎰忚"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.leaderConfirmComment" + :disabled="disableSubmit || completionDisable"/> + </a-form-model-item> + </a-tab-pane> + </a-tabs> + </a-col> </a-row> - <div v-if="confirmDisable"> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 鏈哄姩鍔炵‘璁や俊鎭� - </a-divider> - <a-row :gutter="24"> - <a-col :span="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="confirmComment" label="纭鎰忚"> - <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.confirmComment" - :disabled="disableSubmit || leaderConfirmDisable"/> - </a-form-model-item> - </a-col> - </a-row> - </div> - <div v-if="leaderConfirmDisable"> - <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 棰嗗纭淇℃伅 - </a-divider> - <a-row :gutter="24"> - <a-col :span="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="leaderConfirmComment" - label="棰嗗鎰忚"> - <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.leaderConfirmComment" - :disabled="disableSubmit || completionDisable"/> - </a-form-model-item> - </a-col> - </a-row> - </div> </a-form-model> </a-spin> </j-modal> @@ -205,15 +147,7 @@ return { title: '鎿嶄綔', visible: false, - //鐘舵�佹帶鍒� - //淇濆吇涓� 涓嶅彲缂栬緫 - // confirmDisable: false, - // initialAcceptanceDisable: false, - // finalAcceptanceDisable: false, - editable: false, model: {}, - maintenanceCategory: 'SECOND_MAINTENANCE', - maintenanceOperatorOptions: [], labelCol: { xs: { span: 24 }, sm: { span: 6 } @@ -224,11 +158,11 @@ }, labelColLong: { xs: { span: 24 }, - sm: { span: 2 } + sm: { span: 3 } }, wrapperColLong: { xs: { span: 24 }, - sm: { span: 21 } + sm: { span: 20 } }, confirmLoading: false, spinning: false, @@ -240,24 +174,18 @@ ], leaderConfirmComment: [ { required: true, message: '璇疯緭鍏ュ垵楠屾敹鎰忚!' } - ], + ] }, url: { queryById: '/eam/thirdMaintenanceOrder/queryById', detail: '/eam/thirdMaintenanceOrderDetail/queryList', approval: '/eam/thirdMaintenanceOrder/approval', - userSelect: '/eam/user_select/list', queryHisTaskList: '/assign/flow/queryHisTaskList', - diagramView: '/assign/flow/diagramView', - precisionCheckDetail: '/eam/precisionCheckDetail/queryList', + diagramView: '/assign/flow/diagramView' }, disableSubmit: false, - taskData: [], - isDisplayBmp: false, - showBmpButtonLoading: false, selectedRowKeys: [], detail: { - loading: false, dataSource: [], columns: [ { @@ -274,28 +202,31 @@ title: '搴忓彿', key: 'itemCode', type: JVXETypes.normal, - width: '5%', + width: 60, align: 'center' }, { - title: '淇濆吇椤�', + title: '淇濆吇閮ㄤ綅', + key: 'itemPart', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '淇濆吇鍐呭', key: 'itemName', type: JVXETypes.normal, - width: '10%', align: 'center' }, { - title: '淇濆吇瑕佹眰', + title: '楠屾敹鏍囧噯', key: 'itemDemand', type: JVXETypes.normal, - width: '20%', align: 'center' }, { title: '淇濆吇缁撴灉', key: 'maintenanceResult', type: JVXETypes.slot, - width: '10%', align: 'center', slotName: 'maintenanceResult', validateRules: [ @@ -306,7 +237,6 @@ title: '寮傚父鎻忚堪', key: 'exceptionDescription', type: JVXETypes.slot, - width: '20%', align: 'center', slotName: 'exceptionDescription', validateRules: [ @@ -317,88 +247,15 @@ title: '鏄惁鎶ヤ慨', key: 'reportFlag', type: JVXETypes.slot, - width: '10%', align: 'center', slotName: 'reportFlag', validateRules: [ { handler: this.customValidator } ] } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['clearSelection'] - } - }, - precisionDetail: { - loading: false, - dataSource: [], - columns: [ - { - title: 'ID', - key: 'id', - type: JVXETypes.hidden - }, - { - title: 'orderId', - key: 'orderId', - type: JVXETypes.hidden - }, - { - title: 'equipmentId', - key: 'equipmentId', - type: JVXETypes.hidden - }, - { - title: 'parameterId', - key: 'parameterId', - type: JVXETypes.hidden - }, - { - title: '妫�娴嬮」鐩�', - key: 'parameterId_dictText', - type: JVXETypes.normal, - width: '25%', - align: 'center' - }, - { - title: '鍙傛暟缂栫爜', - key: 'parameterCode_dictText', - type: JVXETypes.normal, - width: '20%', - align: 'center', - }, - { - title: '鍏佸樊鍊�', - key: 'parameterValue', - type: JVXETypes.normal, - width: '15%', - align: 'center', - }, - { - title: '瀹炴祴鍊�', - key: 'actualValue', - type: JVXETypes.slot, - width: '15%', - align: 'center', - slotName: 'actualValue', - validateRules: [ - { required: true, message: '璇疯緭鍏ュ疄娴嬪�硷紒' } - ] - } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['add', 'remove', 'clearSelection'] - } + ] } } - }, - created() { }, computed: { confirmDisable: function() { @@ -411,25 +268,18 @@ return ['COMPLETE', 'ABOLISH'].includes(this.model.maintenanceStatus) }, isMaintenance: function() { - return this.selectShenpiData && this.selectShenpiData.taskDefKey === 'maintenance_execution'; + return this.selectShenpiData && this.selectShenpiData.taskDefKey === 'maintenance_execution' }, isPrecisionCheck: function() { - return this.selectShenpiData && this.selectShenpiData.taskDefKey === 'precision_check'; - }, + return this.selectShenpiData && this.selectShenpiData.taskDefKey === 'precision_check' + } }, methods: { async handleDetail(item) { this.initParams() - //閲嶆柊璁$畻defaultKey - if(item && item.taskDefKey === 'precision_check') { - this.activeTabKey = '4'; - } this.model = {} if (item.procInstId) { - const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = item - - let taskDataList = await getAction(this.url.queryHisTaskList, { procInstId }) - this.taskData = [...taskDataList.result] + const { processDefinitionId, processInstanceId, processDefinitionKey } = item downFile(this.url.diagramView, { processDefinitionId, @@ -449,66 +299,40 @@ } let res = await getAction(this.url.queryById, { id: item.dataId }) this.model = Object.assign({}, res.result) - if (this.model.imageFiles) { - let obj = JSON.parse(this.model.imageFiles) - this.model.imageFilesResult = [...obj] - } this.model.dataId = item.dataId this.model.taskId = item.id this.model.userId = item.assignee this.model.instanceId = item.procInstId - this.model.values = item.variables await this.loadDetail(item.dataId) - await this.loadPrecisionDetail(item.dataId); }, recordDetail(record) { - console.log('record', record) this.initParams() this.model = Object.assign({}, record) - if (this.model.imageFiles) { - let obj = JSON.parse(this.model.imageFiles) - this.model.imageFilesResult = [...obj] - } this.loadDetail(record.id) - this.loadPrecisionDetail(record.id); }, initParams() { this.detail.dataSource = [] this.visible = true - this.activeTabKey = '1'; - if(this.selectShenpiData && this.selectShenpiData.taskDefKey === 'precision_check') { - this.activeTabKey = '4'; - } + this.activeTabKey = '1' this.spinning = true }, + async handleOk() { const that = this - if(that.$refs.editableDetailTable) { - let errMap = await that.$refs.editableDetailTable.validateTable() - if (errMap) { - this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') - return - } + let errMap = await that.$refs.editableDetailTable.validateTable() + if (errMap) { + this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') + return } + // 瑙﹀彂琛ㄥ崟楠岃瘉 this.$refs.form.validate(valid => { if (valid) { that.confirmLoading = that.spinning = true - let tableData = []; - let precisionTableData = []; - if(that.$refs.editableDetailTable) { - tableData = that.$refs.editableDetailTable.getTableData() - } - if(that.$refs.editablePrecisionDetailTable) { - precisionTableData = that.$refs.editablePrecisionDetailTable.getTableData() - } - that.model.tableDetailList = [...tableData] - that.model.precisionDetailList = [...precisionTableData] - let httpurl = this.url.approval - let method = 'put' + that.model.tableDetailList = that.$refs.editableDetailTable.getTableData() - httpAction(httpurl, this.model, method).then((res) => { + httpAction(this.url.approval, this.model, 'put').then((res) => { if (res.success) { that.$message.success(res.message) that.$emit('searchReset') @@ -524,21 +348,20 @@ } }) }, + autocompleteForm(selectObj) { this.$set(this.model, 'standardName', selectObj.standardName) this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) this.$set(this.model, 'standardId', selectObj.id) this.$set(this.model, 'equipmentId', selectObj.equipmentId) - // console.log('model', this.model) if (!this.model.id) { this.loadStandardDetail(selectObj.id) } - this.loadMaintenanceOperatorList(this.model.equipmentId) }, - //鏍囧噯閫夋嫨鍙樺寲 + //瑙勮寖閫夋嫨鍙樺寲 loadDetail(orderId) { if (orderId) { - getAction(this.url.detail, { orderId: orderId }) + getAction(this.url.detail, { orderId }) .then(res => { if (res.success) { this.detail.dataSource = [...res.result] @@ -549,35 +372,11 @@ }) } }, - loadPrecisionDetail(orderId) { - if (orderId) { - getAction(this.url.precisionCheckDetail, { orderId: orderId }).then(res => { - if (res.success) { - this.precisionDetail.dataSource = [...res.result] - } - }) - } - }, - loadMaintenanceOperatorList(equipmentId) { - this.maintenanceOperatorOptions = [] - let params = { positionCode: 'PCR0001' } - if (equipmentId) { - params.equipmentId = equipmentId - } - getAction(this.url.userSelect, params).then(res => { - if (res.success) { - this.maintenanceOperatorOptions = res.result.map(item => ({ - key: item.id, - value: item.username, - text: item.realname - })) - } - }) - }, handleInspectionResultSelectChange(value, record) { if (record.exceptionDescription) delete record.exceptionDescription if (record.reportFlag) delete record.reportFlag }, + // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉 handleSelectAllInspectionResult() { this.selectedRowKeys.forEach(key => { @@ -624,8 +423,4 @@ } } } -</script> - -<style lang="less" scoped> - -</style> \ No newline at end of file +</script> \ No newline at end of file -- Gitblit v1.9.3