From 5e9fb57f959d6cccbb3a3c56d0ccdd241855ad06 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 11 七月 2025 16:06:07 +0800 Subject: [PATCH] 1、技术鉴定工单页面基础功能 2、新增技术鉴定设备选择组件 3、 --- src/views/eam/technical/modules/EamTechnicalStatusEvaluationOrderModal.vue | 358 ++++++++++++--------- src/views/eam/maintenance/EamInspectionOrderList.vue | 14 src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue | 36 -- src/views/eam/equipment/modules/TechnicalStatusEquipmentSelect.vue | 155 +++++++++ src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue | 395 +++++++++++------------- 5 files changed, 542 insertions(+), 416 deletions(-) diff --git a/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue b/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue index 5b00280..bc37560 100644 --- a/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue +++ b/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue @@ -23,40 +23,8 @@ </a-col> </a-row> -<!-- <a-row>--> -<!-- <a-col :span="8">--> -<!-- <a-form-model-item label="閴村畾鍛ㄦ湡(骞�)">--> -<!-- <a-input-number v-model="model.evaluationPeriod" :min="1" placeholder="璇疯緭鍏ラ壌瀹氬懆鏈�(骞�)" style="width: 100%"/>--> -<!-- </a-form-model-item>--> -<!-- </a-col>--> -<!-- </a-row>--> - <a-row> - <!--<a-col :span="8">--> - <!--<a-form-model-item label="瀹夊叏瑁呯疆妫�鏌�">--> - <!--<j-dict-select-tag @change="handleCheckListChange($event,1)" dict-code="yn " type="radio"--> - <!--:disabled="model.hasPrecisionCheck=='0'&&model.hasOtherCheck=='0'"--> - <!--v-model="model.hasSafetyEquipmentCheck"/>--> - <!--</a-form-model-item>--> - <!--</a-col>--> - - <!--<a-col :span="8">--> - <!--<a-form-model-item label="璁惧绮惧害妫�鏌�">--> - <!--<j-dict-select-tag @change="handleCheckListChange($event,2)" dict-code="yn " type="radio"--> - <!--:disabled="model.hasSafetyEquipmentCheck=='0'&&model.hasOtherCheck=='0'"--> - <!--v-model="model.hasPrecisionCheck"/>--> - <!--</a-form-model-item>--> - <!--</a-col>--> - - <!--<a-col :span="8">--> - <!--<a-form-model-item label="鍏朵粬妫�鏌�">--> - <!--<j-dict-select-tag @change="handleCheckListChange($event,3)" dict-code="yn " type="radio"--> - <!--:disabled="model.hasPrecisionCheck=='0'&&model.hasSafetyEquipmentCheck=='0'"--> - <!--v-model="model.hasOtherCheck"/>--> - <!--</a-form-model-item>--> - <!--</a-col>--> - - <a-col :span="8" v-for="item in checkList"> + <a-col :span="8" v-for="item in checkList" :key="item.key"> <a-form-model-item :label="item.label"> <j-dict-select-tag @change="handleCheckListChange($event,item.key)" dict-code="yn" type="radio" :disabled="checkList.filter(i=>i.key!=item.key).every(i=>i.value=='0')" @@ -342,7 +310,7 @@ if (tableData.length == 0) { this.$notification.warning({ message: '娑堟伅', - description: hasCheckedCheckList[index].label + '蹇呭~椤逛笉鑳戒负绌�' + description: hasCheckedCheckList[index].label + '涓嶈兘涓虹┖' }) return } diff --git a/src/views/eam/equipment/modules/TechnicalStatusEquipmentSelect.vue b/src/views/eam/equipment/modules/TechnicalStatusEquipmentSelect.vue new file mode 100644 index 0000000..e15b15f --- /dev/null +++ b/src/views/eam/equipment/modules/TechnicalStatusEquipmentSelect.vue @@ -0,0 +1,155 @@ +<template> + <a-select showSearch labelInValue :disabled="disabled" :getPopupContainer="getParentContainer" @search="loadData" + :placeholder="placeholder" v-model="selectedAsyncValue" style="width: 100%" :filterOption="false" + @change="handleAsyncChange" :allowClear="allowClear" :notFoundContent="loading ? undefined : null" + mode="default"> + <template #suffixIcon> + <a-icon type="search"/> + </template> + <a-spin v-if="loading" slot="notFoundContent" size="small"/> + <a-select-option v-for="d in options" :key="d.equipmentId" :value="d.equipmentId">{{ + d.equipmentCode+`[${d.equipmentName}]` }} + </a-select-option> + </a-select> +</template> + +<script> + import debounce from 'lodash/debounce' + import { getAction } from '@/api/manage' + + export default { + name: 'TechnicalStatusEquipmentSelect', + props: { + disabled: Boolean, + value: [String, Number], + placeholder: { + type: String, + default: '璇烽�夋嫨', + required: false + }, + pageSize: { + type: Number, + default: 20, + required: false + }, + allowClear: { + type: Boolean, + default: () => true, + required: false + } + }, + data() { + this.loadData = debounce(this.loadData, 800)//娑堟姈 + this.lastLoad = 0 + return { + loading: false, + selectedValue: undefined, + selectedAsyncValue: undefined, + options: [], + url: { + list: '/eam/eamTechnicalStatusEvaluationStandard/selectEnableEquipment' + } + } + }, + watch: { + 'value': { + immediate: true, + handler(val) { + if (!val) { + this.selectedValue = undefined + this.selectedAsyncValue = undefined + this.initDictData() + } else { + this.initSelectValue() + } + } + } + }, + methods: { + initSelectValue() { + if (!this.selectedAsyncValue || !this.selectedAsyncValue.key || this.selectedAsyncValue.key != this.value) { + getAction(this.url.list, { equipmentId: this.value }) + .then(res => { + if (res.success) { + if (res.result && res.result.length > 0) { + let obj = { + key: this.value, + label: res.result[0].text + } + this.selectedAsyncValue = { ...obj } + this.$emit('autocompleteForm', res.result[0]) + } + this.options = res.result + } + }) + } + }, + loadData(value) { + this.lastLoad += 1 + const currentLoad = this.lastLoad + this.options = [] + this.loading = true + // 瀛楀吀code鏍煎紡锛歵able,text,code + getAction(this.url.list, { keyword: value, pageSize: this.pageSize }) + .then(res => { + this.loading = false + if (res.success) { + if (currentLoad != this.lastLoad) { + return + } + this.options = res.result + } else { + this.$message.warning(res.message) + } + }) + }, + initDictData() { + //寮傛涓�寮�濮嬩篃鍔犺浇涓�鐐规暟鎹� + this.loading = true + getAction(this.url.list, { pageSize: this.pageSize, keyword: '' }) + .then(res => { + this.loading = false + if (res.success) { + this.options = [...res.result] + } else { + this.$message.warning(res.message) + } + }) + }, + filterOption(input, option) { + return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + handleAsyncChange(selectedObj) { + if (selectedObj) { + this.selectedAsyncValue = selectedObj + this.selectedValue = selectedObj.key + this.$emit('autocompleteForm', this.options.find(item => item.equipmentId === selectedObj.key)) + } else { + this.selectedAsyncValue = undefined + this.selectedValue = null + this.options = [] + this.loadData('') + this.$emit('autocompleteForm', {}) + } + this.callback() + }, + callback() { + this.$emit('change', this.selectedValue) + }, + getParentContainer(node) { + if (typeof this.getPopupContainer === 'function') { + return this.getPopupContainer(node) + } else if (!this.popContainer) { + return node.parentNode + } else { + return document.querySelector(this.popContainer) + } + } + + }, + model: { + prop: 'value', + event: 'change' + } + } +</script> \ No newline at end of file diff --git a/src/views/eam/maintenance/EamInspectionOrderList.vue b/src/views/eam/maintenance/EamInspectionOrderList.vue index fc1b94d..39c7c2b 100644 --- a/src/views/eam/maintenance/EamInspectionOrderList.vue +++ b/src/views/eam/maintenance/EamInspectionOrderList.vue @@ -98,7 +98,7 @@ </a-menu-item> <a-menu-item> - <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleOrReceive(record.id)"> + <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleAbolish(record.id)"> <a>浣滃簾</a> </a-popconfirm> </a-menu-item> @@ -219,7 +219,7 @@ dataIndex: 'operateTime' }, { - title: '绠$悊鍛樼‘璁�', + title: '缁翠慨宸�', align: 'center', dataIndex: 'confirmUser_dictText' }, @@ -269,8 +269,6 @@ } }, methods: { - initDictConfig() { - }, //璇︽儏 handleDetail: function(record) { this.selectInspectionOrderXqData = Object.assign({}, record) @@ -280,6 +278,7 @@ this.$refs.modalFormXq.getAllApproveData(record) this.$refs.modalFormXq.getBasicInformation({ ...record, dataId: record.id }) }, + handleInspection(id) { var that = this this.loading = true @@ -301,11 +300,8 @@ } }) }, - handleOrReceive(id) { - if (!this.url.cancelInspectionOrder) { - this.$message.error('璇疯缃畊rl.cancelInspectionOrder!') - return - } + + handleAbolish(id) { var that = this getAction(that.url.cancelInspectionOrder, { id: id }).then((res) => { if (res.success) { diff --git a/src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue b/src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue index eb3b30f..26efcce 100644 --- a/src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue +++ b/src/views/eam/technical/EamTechnicalStatusEvaluationOrderList.vue @@ -1,49 +1,30 @@ <template> <a-card :bordered="false"> - <!-- 鏌ヨ鍖哄煙 --> <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍒犻櫎鏍囪"> - <a-input placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" v-model="queryParam.delFlag"></a-input> + <a-col :xl="5" :lg="6" :md="8" :sm="12"> + <a-form-item label="缁熶竴缂栫爜"> + <technical-status-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/> </a-form-item> </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-col :xl="5" :lg="6" :md="8" :sm="12"> <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> - <template v-if="toggleSearchStatus"> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="璁惧ID"> - <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="queryParam.equipmentId"></a-input> + <a-col :xl="5" :lg="6" :md="8" :sm="12"> + <a-form-item label="璁″垝閴村畾鏃ユ湡"> + <a-date-picker v-model="queryParam.evaluationDate" style="width: 100%"/> </a-form-item> </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="瑙勮寖ID"> - <a-input placeholder="璇疯緭鍏ヨ鑼僆D" v-model="queryParam.standardId"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="璁″垝閴村畾鏃ユ湡;鎻愬墠70澶╃敓鎴愬伐鍗�"> - <a-input placeholder="璇疯緭鍏ヨ鍒掗壌瀹氭棩鏈�;鎻愬墠70澶╃敓鎴愬伐鍗�" v-model="queryParam.evaluationDate"></a-input> - </a-form-item> - </a-col> - </template> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-col :xl="4" :lg="6" :md="8" :sm="12"> <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 @click="handleToggleSearch" style="margin-left: 8px"> - {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} - <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> - </a> </span> </a-col> - </a-row> </a-form> </div> @@ -51,75 +32,40 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-button type="primary" icon="download" @click="handleExportXls('鎶�鏈姸鎬侀壌瀹氬伐鍗�')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> - </a-menu> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> - </a-dropdown> </div> <!-- table鍖哄煙-begin --> - <div> - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> - <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" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - @change="handleTableChange"> + <a-table bordered rowKey="id" :columns="columns" :dataSource="dataSource" :pagination="ipagination" + :scroll="{ x: 'max-content' }" :loading="loading" @change="handleTableChange"> <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> - - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> - </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> + <a-popconfirm v-if="record.evaluationStatus=='WAIT_EVALUATION'" title="纭畾棰嗗彇鍚楋紵" + @confirm="handleReceive(record.id)"> + <a>棰嗗彇</a> + </a-popconfirm> </span> - - </a-table> - </div> + </a-table> <!-- table鍖哄煙-end --> <!-- 琛ㄥ崟鍖哄煙 --> - <eamTechnicalStatusEvaluationOrder-modal ref="modalForm" @ok="modalFormOk"></eamTechnicalStatusEvaluationOrder-modal> + <eamTechnicalStatusEvaluationOrder-modal ref="modalForm" @ok="modalFormOk"/> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' import EamTechnicalStatusEvaluationOrderModal from './modules/EamTechnicalStatusEvaluationOrderModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import TechnicalStatusEquipmentSelect from '../equipment/modules/TechnicalStatusEquipmentSelect' + import { getAction } from '@/api/manage' export default { - name: "EamTechnicalStatusEvaluationOrderList", - mixins:[JeecgListMixin], + name: 'EamTechnicalStatusEvaluationOrderList', + mixins: [JeecgListMixin], components: { + TechnicalStatusEquipmentSelect, EamTechnicalStatusEvaluationOrderModal }, - data () { + data() { return { description: '鎶�鏈姸鎬侀壌瀹氬伐鍗曠鐞嗛〉闈�', // 琛ㄥご @@ -127,189 +73,204 @@ { title: '#', dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title: '鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' - }, - { + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + }, + fixed: 'left' + }, + { + 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: '璁惧ID', - align:"center", - dataIndex: 'equipmentId' - }, - { - title: '瑙勮寖ID', - align:"center", - dataIndex: 'standardId' - }, - { - title: '璁″垝閴村畾鏃ユ湡;鎻愬墠70澶╃敓鎴愬伐鍗�', - align:"center", - dataIndex: 'evaluationDate' - }, - { - title: '閿佸畾宸ュ崟鏃ユ湡;鎻愬墠55澶╅攣瀹氬伐鍗�', - align:"center", + align: 'center', + dataIndex: 'orderNum', + fixed: 'left' + }, + { + title: '璁″垝閴村畾鏃ユ湡', + align: 'center', + dataIndex: 'evaluationDate', + fixed: 'left' + }, + { + title: '閿佸畾宸ュ崟鏃ユ湡', + align: 'center', dataIndex: 'freezeOrderDate' - }, - { - title: '宸ュ崟杩囨湡鏃ユ湡;鍒版湡鏈仛鐩存帴杩囨湡锛屽苟淇敼璁惧鎶�鏈姸鎬佷负绂佺敤', - align:"center", + }, + { + title: '宸ュ崟杩囨湡鏃ユ湡', + align: 'center', dataIndex: 'orderExpirationDate' - }, - { + }, + { title: '瀹為檯寮�濮嬫椂闂�', - align:"center", + align: 'center', dataIndex: 'actualStartTime' - }, - { + }, + { title: '瀹為檯缁撴潫鏃堕棿', - align:"center", + align: 'center', dataIndex: 'actualEndTime' - }, - { + }, + { title: '閴村畾浜�', - align:"center", + align: 'center', dataIndex: 'evaluator' - }, - { - title: '閴村畾鐘舵��;寰呴壌瀹氥�侀壌瀹氫腑銆佺淮淇涓讳换绛惧瓧銆佸伐鑹轰汉鍛樼瀛椼�佹妧鏈富绠$瀛椼�佽澶囨楠屽憳绛惧瓧銆佸凡瀹屾垚銆佸凡閿佸畾銆佸彉鏇翠腑銆佸凡杩囨湡', - align:"center", - dataIndex: 'evaluationStatus' - }, - { + }, + { + title: '閴村畾鐘舵��', + align: 'center', + dataIndex: 'evaluationStatus_dictText' + }, + { title: '鍒涘缓鏂瑰紡', - align:"center", - dataIndex: 'creationMethod' - }, - { - title: '瀹夊叏瑁呯疆妫�鏌ョ粨鏋�;鏄�佸惁', - align:"center", + align: 'center', + dataIndex: 'creationMethod_dictText' + }, + { + title: '瀹夊叏瑁呯疆妫�鏌ョ粨鏋�', + align: 'center', dataIndex: 'safetyEquipmentCheckResult' - }, - { - title: '绮惧害鍙傛暟妫�鏌ョ粨鏋�;鏄�佸惁銆佹棤', - align:"center", + }, + { + title: '绮惧害鍙傛暟妫�鏌ョ粨鏋�', + align: 'center', dataIndex: 'precisionCheckResult' - }, - { - title: '鍔熻兘鐘舵�佹鏌ョ粨鏋�;鏄�佸惁', - align:"center", + }, + { + title: '鍔熻兘鐘舵�佹鏌ョ粨鏋�', + align: 'center', dataIndex: 'functionalCheckResult' - }, - { - title: '鍏朵粬妫�鏌ョ粨鏋�;鏄�佸惁銆佹棤', - align:"center", + }, + { + title: '鍏朵粬妫�鏌ョ粨鏋�', + align: 'center', dataIndex: 'otherCheckResult' - }, - { + }, + { title: '缁翠慨瀹や富浠荤瀛�', - align:"center", + align: 'center', dataIndex: 'repairManagerSignature' - }, - { + }, + { title: '缁翠慨瀹や富浠荤瀛楁椂闂�', - align:"center", + align: 'center', dataIndex: 'repairManagerSignatureTime1' - }, - { - title: '璇曚欢妫�鏌ョ粨鏋�;鍚堟牸銆佷笉鍚堟牸', - align:"center", + }, + { + title: '璇曚欢妫�鏌ョ粨鏋�', + align: 'center', dataIndex: 'sampleCheckResult' - }, - { + }, + { title: '宸ヨ壓鍛樼瀛�', - align:"center", + align: 'center', dataIndex: 'processTechnicianSignature' - }, - { + }, + { title: '宸ヨ壓鍛樼瀛楁椂闂�', - align:"center", + align: 'center', dataIndex: 'processTechnicianSignatureTime' - }, - { - title: '閴村畾缁撴灉;鍚堟牸銆侀檺鐢ㄣ�佺鐢�', - align:"center", + }, + { + title: '閴村畾缁撴灉', + align: 'center', dataIndex: 'evaluationResult' - }, - { - title: '闄怽绂佺敤鍘熷洜(澶氶��);瀹夊叏瑁呯疆銆佽澶囧姛鑳姐�佺簿搴︺�佽瘯浠躲�佸叾浠�', - align:"center", + }, + { + title: '闄�/绂佺敤鍘熷洜', + align: 'center', dataIndex: 'evaluationReason' - }, - { + }, + { title: '璁惧妫�鏌ヤ汉绛惧瓧', - align:"center", + align: 'center', dataIndex: 'inspectorSignature' - }, - { + }, + { title: '璁惧妫�鏌ヤ汉绛惧瓧鏃堕棿', - align:"center", + align: 'center', dataIndex: 'inspectorSignatureTime' - }, - { + }, + { title: '闄勫綍A HF缂栫爜', - align:"center", + align: 'center', dataIndex: 'hfCodeA' - }, - { + }, + { title: '闄勫綍B HF缂栫爜', - align:"center", + align: 'center', dataIndex: 'hfCodeB' - }, - { + }, + { title: '闄勫綍C HF缂栫爜', - align:"center", + align: 'center', dataIndex: 'hfCodeC' - }, - { + }, + { title: '闄勫綍D HF缂栫爜', - align:"center", + align: 'center', dataIndex: 'hfCodeD' - }, - { - title: '澶囨敞', - align:"center", - dataIndex: 'remark' - }, + }, { title: '鎿嶄綔', dataIndex: 'action', - align:"center", + align: 'center', scopedSlots: { customRender: 'action' }, + fixed: 'right' } ], - url: { - list: "/eam/eamTechnicalStatusEvaluationOrder/list", - delete: "/eam/eamTechnicalStatusEvaluationOrder/delete", - deleteBatch: "/eam/eamTechnicalStatusEvaluationOrder/deleteBatch", - exportXlsUrl: "eam/eamTechnicalStatusEvaluationOrder/exportXls", - importExcelUrl: "eam/eamTechnicalStatusEvaluationOrder/importExcel", - }, - } - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - } - }, + url: { + list: '/eam/eamTechnicalStatusEvaluationOrder/list', + receive: '/eam/eamTechnicalStatusEvaluationOrder/collect', + delete: '/eam/eamTechnicalStatusEvaluationOrder/delete', + deleteBatch: '/eam/eamTechnicalStatusEvaluationOrder/deleteBatch', + exportXlsUrl: 'eam/eamTechnicalStatusEvaluationOrder/exportXls', + importExcelUrl: 'eam/eamTechnicalStatusEvaluationOrder/importExcel' + } + } + }, + computed: { + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + } + }, methods: { - + handleReceive(id) { + getAction(this.url.receive, { id }) + .then(res => { + if (res.success) { + this.$notification.success({ + message: '娑堟伅', + description: res.message + }) + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + } } } -</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/technical/modules/EamTechnicalStatusEvaluationOrderModal.vue b/src/views/eam/technical/modules/EamTechnicalStatusEvaluationOrderModal.vue index da01900..b1dea0d 100644 --- a/src/views/eam/technical/modules/EamTechnicalStatusEvaluationOrderModal.vue +++ b/src/views/eam/technical/modules/EamTechnicalStatusEvaluationOrderModal.vue @@ -1,194 +1,240 @@ <template> - <j-modal - :title="title" - :width="800" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> - - <a-spin :spinning="confirmLoading"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag" label="鍒犻櫎鏍囪"> - <a-input-number v-model="model.delFlag"/> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNum" label="宸ュ崟鍙�"> - <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-model="model.orderNum" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧ID"> - <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="model.equipmentId" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardId" label="瑙勮寖ID"> - <a-input placeholder="璇疯緭鍏ヨ鑼僆D" v-model="model.standardId" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="evaluationDate" label="璁″垝閴村畾鏃ユ湡;鎻愬墠70澶╃敓鎴愬伐鍗�"> - <a-input placeholder="璇疯緭鍏ヨ鍒掗壌瀹氭棩鏈�;鎻愬墠70澶╃敓鎴愬伐鍗�" v-model="model.evaluationDate" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="freezeOrderDate" label="閿佸畾宸ュ崟鏃ユ湡;鎻愬墠55澶╅攣瀹氬伐鍗�"> - <a-input placeholder="璇疯緭鍏ラ攣瀹氬伐鍗曟棩鏈�;鎻愬墠55澶╅攣瀹氬伐鍗�" v-model="model.freezeOrderDate" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderExpirationDate" label="宸ュ崟杩囨湡鏃ユ湡;鍒版湡鏈仛鐩存帴杩囨湡锛屽苟淇敼璁惧鎶�鏈姸鎬佷负绂佺敤"> - <a-input placeholder="璇疯緭鍏ュ伐鍗曡繃鏈熸棩鏈�;鍒版湡鏈仛鐩存帴杩囨湡锛屽苟淇敼璁惧鎶�鏈姸鎬佷负绂佺敤" v-model="model.orderExpirationDate" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="actualStartTime" label="瀹為檯寮�濮嬫椂闂�"> - <a-input placeholder="璇疯緭鍏ュ疄闄呭紑濮嬫椂闂�" v-model="model.actualStartTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="actualEndTime" label="瀹為檯缁撴潫鏃堕棿"> - <a-input placeholder="璇疯緭鍏ュ疄闄呯粨鏉熸椂闂�" v-model="model.actualEndTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="evaluator" label="閴村畾浜�"> - <a-input placeholder="璇疯緭鍏ラ壌瀹氫汉" v-model="model.evaluator" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="evaluationStatus" label="閴村畾鐘舵��;寰呴壌瀹氥�侀壌瀹氫腑銆佺淮淇涓讳换绛惧瓧銆佸伐鑹轰汉鍛樼瀛椼�佹妧鏈富绠$瀛椼�佽澶囨楠屽憳绛惧瓧銆佸凡瀹屾垚銆佸凡閿佸畾銆佸彉鏇翠腑銆佸凡杩囨湡"> - <a-input placeholder="璇疯緭鍏ラ壌瀹氱姸鎬�;寰呴壌瀹氥�侀壌瀹氫腑銆佺淮淇涓讳换绛惧瓧銆佸伐鑹轰汉鍛樼瀛椼�佹妧鏈富绠$瀛椼�佽澶囨楠屽憳绛惧瓧銆佸凡瀹屾垚銆佸凡閿佸畾銆佸彉鏇翠腑銆佸凡杩囨湡" v-model="model.evaluationStatus" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creationMethod" label="鍒涘缓鏂瑰紡"> - <a-input placeholder="璇疯緭鍏ュ垱寤烘柟寮�" v-model="model.creationMethod" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="safetyEquipmentCheckResult" label="瀹夊叏瑁呯疆妫�鏌ョ粨鏋�;鏄�佸惁"> - <a-input placeholder="璇疯緭鍏ュ畨鍏ㄨ缃鏌ョ粨鏋�;鏄�佸惁" v-model="model.safetyEquipmentCheckResult" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precisionCheckResult" label="绮惧害鍙傛暟妫�鏌ョ粨鏋�;鏄�佸惁銆佹棤"> - <a-input placeholder="璇疯緭鍏ョ簿搴﹀弬鏁版鏌ョ粨鏋�;鏄�佸惁銆佹棤" v-model="model.precisionCheckResult" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="functionalCheckResult" label="鍔熻兘鐘舵�佹鏌ョ粨鏋�;鏄�佸惁"> - <a-input placeholder="璇疯緭鍏ュ姛鑳界姸鎬佹鏌ョ粨鏋�;鏄�佸惁" v-model="model.functionalCheckResult" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="otherCheckResult" label="鍏朵粬妫�鏌ョ粨鏋�;鏄�佸惁銆佹棤"> - <a-input placeholder="璇疯緭鍏ュ叾浠栨鏌ョ粨鏋�;鏄�佸惁銆佹棤" v-model="model.otherCheckResult" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairManagerSignature" label="缁翠慨瀹や富浠荤瀛�"> - <a-input placeholder="璇疯緭鍏ョ淮淇涓讳换绛惧瓧" v-model="model.repairManagerSignature" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairManagerSignatureTime1" label="缁翠慨瀹や富浠荤瀛楁椂闂�"> - <a-input placeholder="璇疯緭鍏ョ淮淇涓讳换绛惧瓧鏃堕棿" v-model="model.repairManagerSignatureTime1" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sampleCheckResult" label="璇曚欢妫�鏌ョ粨鏋�;鍚堟牸銆佷笉鍚堟牸"> - <a-input placeholder="璇疯緭鍏ヨ瘯浠舵鏌ョ粨鏋�;鍚堟牸銆佷笉鍚堟牸" v-model="model.sampleCheckResult" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processTechnicianSignature" label="宸ヨ壓鍛樼瀛�"> - <a-input placeholder="璇疯緭鍏ュ伐鑹哄憳绛惧瓧" v-model="model.processTechnicianSignature" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processTechnicianSignatureTime" label="宸ヨ壓鍛樼瀛楁椂闂�"> - <a-input placeholder="璇疯緭鍏ュ伐鑹哄憳绛惧瓧鏃堕棿" v-model="model.processTechnicianSignatureTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="evaluationResult" label="閴村畾缁撴灉;鍚堟牸銆侀檺鐢ㄣ�佺鐢�"> - <a-input placeholder="璇疯緭鍏ラ壌瀹氱粨鏋�;鍚堟牸銆侀檺鐢ㄣ�佺鐢�" v-model="model.evaluationResult" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="evaluationReason" label="闄怽绂佺敤鍘熷洜(澶氶��);瀹夊叏瑁呯疆銆佽澶囧姛鑳姐�佺簿搴︺�佽瘯浠躲�佸叾浠�"> - <a-input placeholder="璇疯緭鍏ラ檺\绂佺敤鍘熷洜(澶氶��);瀹夊叏瑁呯疆銆佽澶囧姛鑳姐�佺簿搴︺�佽瘯浠躲�佸叾浠�" v-model="model.evaluationReason" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectorSignature" label="璁惧妫�鏌ヤ汉绛惧瓧"> - <a-input placeholder="璇疯緭鍏ヨ澶囨鏌ヤ汉绛惧瓧" v-model="model.inspectorSignature" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectorSignatureTime" label="璁惧妫�鏌ヤ汉绛惧瓧鏃堕棿"> - <a-input placeholder="璇疯緭鍏ヨ澶囨鏌ヤ汉绛惧瓧鏃堕棿" v-model="model.inspectorSignatureTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hfCodeA" label="闄勫綍A HF缂栫爜"> - <a-input placeholder="璇疯緭鍏ラ檮褰旳 HF缂栫爜" v-model="model.hfCodeA" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hfCodeB" label="闄勫綍B HF缂栫爜"> - <a-input placeholder="璇疯緭鍏ラ檮褰旴 HF缂栫爜" v-model="model.hfCodeB" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hfCodeC" label="闄勫綍C HF缂栫爜"> - <a-input placeholder="璇疯緭鍏ラ檮褰旵 HF缂栫爜" v-model="model.hfCodeC" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hfCodeD" label="闄勫綍D HF缂栫爜"> - <a-input placeholder="璇疯緭鍏ラ檮褰旸 HF缂栫爜" v-model="model.hfCodeD" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="澶囨敞"> - <a-input placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" /> - </a-form-model-item> - + <j-modal :title="title" :width="1300" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> + <a-spin :spinning="spinning"> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-row> + <a-col :span="8"> + <a-form-model-item label="宸ュ崟鍙�"> + <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="缁熶竴缂栫爜"> + <technical-status-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" + @autocompleteForm="getDetailDataByOrderId" :allowClear="false"/> + </a-form-model-item> + </a-col> + + <a-col :span="8"> + <a-form-model-item prop="evaluationDate" label="璁″垝閴村畾鏃ユ湡"> + <a-date-picker v-model="model.evaluationDate" value-format="YYYY-MM-DD" :allowClear="false" + style="width: 100%"/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> + <a-form-model-item :labelCol="{span:2}" :wrapperCol="{span:21}" label="澶囨敞"> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/> + </a-form-model-item> + </a-col> + </a-row> </a-form-model> + + <a-tabs default-active-key="1" v-if="model.equipmentId"> + <a-tab-pane tab="瀹夊叏瑁呯疆妫�鏌�" key="1" v-if="detail.safetyEquipmentCheckList.length>0"> + <j-vxe-table ref="editableDetailTable1" rowNumber bordered keep-source :height="300" + :dataSource="detail.safetyEquipmentCheckList" :columns="detail.columns"/> + </a-tab-pane> + + <a-tab-pane tab="璁惧绮惧害妫�鏌�" key="2" v-if="detail.precisionCheckList.length>0"> + <j-vxe-table ref="editableDetailTable2" rowNumber bordered keep-source :height="300" + :dataSource="detail.precisionCheckList" :columns="detail.precisionCheckColumns"/> + </a-tab-pane> + + <a-tab-pane tab="鍏朵粬妫�鏌�" key="3" v-if="detail.otherCheckList.length>0"> + <j-vxe-table ref="editableDetailTable3" rowNumber bordered keep-source :height="300" + :dataSource="detail.otherCheckList" :columns="detail.columns"/> + </a-tab-pane> + </a-tabs> </a-spin> </j-modal> </template> <script> - import { httpAction } from '@/api/manage' - import moment from "moment" + import { httpAction, getAction } from '@/api/manage' + import TechnicalStatusEquipmentSelect from '../../equipment/modules/TechnicalStatusEquipmentSelect' + import { JVXETypes } from '@/components/jeecg/JVxeTable' + import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' export default { - name: "EamTechnicalStatusEvaluationOrderModal", - data () { + name: 'EamTechnicalStatusEvaluationOrderModal', + components: { + TechnicalStatusEquipmentSelect + }, + mixins: [JVxeTableModelMixin], + data() { return { - title:"鎿嶄綔", + title: '鎿嶄綔', visible: false, model: {}, labelCol: { xs: { span: 24 }, - sm: { span: 5 }, + sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 16 }, + sm: { span: 15 } }, - confirmLoading: false, - validatorRules:{ + spinning: false, + validatorRules: { + equipmentId: [{ required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�', trigger: 'change' }], + evaluationDate: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }] + }, + detail: { + safetyEquipmentCheckList: [], + precisionCheckList: [], + otherCheckList: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'standardId', + key: 'standardId', + type: JVXETypes.hidden + }, + { + title: '椤圭洰搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + align: 'center', + width: 150 + }, + { + title: '妫�鏌ラ」鐩�', + key: 'itemName', + type: JVXETypes.normal, + align: 'center' + } + ], + precisionCheckColumns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'standardId', + key: 'standardId', + type: JVXETypes.hidden + }, + { + title: '椤圭洰搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + align: 'center', + width: 150 + }, + { + title: '妫�鏌ラ」鐩�', + key: 'itemName', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '妫�鏌ュ瓙椤圭洰', + key: 'subItemName', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '鍏佸樊鍊�', + key: 'toleranceValue', + type: JVXETypes.normal, + align: 'center' + } + ] }, url: { - add: "/eam/eamTechnicalStatusEvaluationOrder/add", - edit: "/eam/eamTechnicalStatusEvaluationOrder/edit", - }, + add: '/eam/eamTechnicalStatusEvaluationOrder/add', + edit: '/eam/eamTechnicalStatusEvaluationOrder/edit', + detail: '/eam/eamTechnicalStatusEvaluationStandardDetail/queryList' + } } }, - created () { - }, methods: { - add () { + add() { //鍒濆鍖栭粯璁ゅ�� - this.edit({}); + this.edit({}) }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; + + edit(record) { + this.model = Object.assign({}, record) + this.visible = true }, - close () { - this.$emit('close'); - this.visible = false; - this.$refs.form.clearValidate(); - }, - handleOk () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - that.confirmLoading = true; - let httpurl = ''; - let method = ''; - if(!this.model.id){ - httpurl+=this.url.add; - method = 'post'; - }else{ - httpurl+=this.url.edit; - method = 'put'; + + getDetailDataByOrderId({ id }) { + this.model.standardId = id + this.spinning = true + getAction(this.url.detail, { standardId: id }) + .then(res => { + if (res.success) { + this.detail.safetyEquipmentCheckList = res.result.filter(item => item.checkCategory == 'SAFETY_EQUIPMENT_CHECK') + this.detail.precisionCheckList = res.result.filter(item => item.checkCategory == 'PRECISION_CHECK') + this.detail.otherCheckList = res.result.filter(item => item.checkCategory == 'OTHER_CHECK') } - httpAction(httpurl,this.model,method).then((res)=>{ - if(res.success){ - that.$message.success(res.message); - that.$emit('ok'); - }else{ - that.$message.warning(res.message); - } - }).finally(() => { - that.confirmLoading = false; - that.close(); + }) + .finally(() => { + this.spinning = false + }) + }, + + handleOk() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = that.spinning = true + let httpUrl = '' + let method = '' + if (!this.model.id) { + httpUrl += this.url.add + method = 'post' + } else { + httpUrl += this.url.edit + method = 'put' + } + this.model.tableDetailList = [...this.detail.safetyEquipmentCheckList, ...this.detail.precisionCheckList, ...this.detail.otherCheckList] + httpAction(httpUrl, this.model, method) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('ok') + that.close() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }).finally(() => { + that.confirmLoading = that.spinning = false }) - }else{ - return false; + } else { + return false } }) }, - handleCancel () { + + handleCancel() { this.close() }, - + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + } } } </script> -- Gitblit v1.9.3