From ab7007a57d36f2a9cb2f419195e5728349c73497 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期二, 08 七月 2025 17:39:51 +0800 Subject: [PATCH] 技术鉴定规范页面功能开发 --- src/views/eam/base/EamTechnicalStatusEvaluationStandardList.vue | 304 ++++++++++++----------- src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue | 455 ++++++++++++++++++++++++++++------ 2 files changed, 528 insertions(+), 231 deletions(-) diff --git a/src/views/eam/base/EamTechnicalStatusEvaluationStandardList.vue b/src/views/eam/base/EamTechnicalStatusEvaluationStandardList.vue index 01114ca..e10a508 100644 --- a/src/views/eam/base/EamTechnicalStatusEvaluationStandardList.vue +++ b/src/views/eam/base/EamTechnicalStatusEvaluationStandardList.vue @@ -5,45 +5,37 @@ <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> + <a-col :xl="5" :lg="6" :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="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍒犻櫎鏍囪"> - <a-input placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" v-model="queryParam.delFlag"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="瑙勮寖鍚嶇О"> - <a-input placeholder="璇疯緭鍏ヨ鑼冨悕绉�" v-model="queryParam.standardName"></a-input> - </a-form-item> - </a-col> - <template v-if="toggleSearchStatus"> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-col :xl="5" :lg="6" :md="8" :sm="24"> <a-form-item label="瑙勮寖缂栫爜"> - <a-input placeholder="璇疯緭鍏ヨ鑼冪紪鐮�" v-model="queryParam.standardCode"></a-input> + <a-input placeholder="璇疯緭鍏ヨ鑼冪紪鐮�" v-model="queryParam.standardCode"/> </a-form-item> </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="閴村畾鍛ㄦ湡"> - <a-input placeholder="璇疯緭鍏ラ壌瀹氬懆鏈�" v-model="queryParam.evaluationPeriod"></a-input> + + <a-col :xl="5" :lg="6" :md="8" :sm="24"> + <a-form-item label="瑙勮寖鍚嶇О"> + <a-input placeholder="璇疯緭鍏ヨ鑼冨悕绉�" v-model="queryParam.standardName"/> </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.equipmentId"></a-input> + + <a-col :xl="5" :lg="6" :md="8" :sm="24"> + <a-form-item label="瑙勮寖鐘舵��"> + <j-dict-select-tag dict-code="technical_status_evaluation_standard_status" placeholder="璇烽�夋嫨瑙勮寖鐘舵��" + v-model="queryParam.standardStatus"/> </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="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 @click="handleToggleSearch" style="margin-left: 8px"> - {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} - <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> - </a> </span> </a-col> - </a-row> </a-form> </div> @@ -51,75 +43,77 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <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-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-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-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" @change="handleTableChange"> - <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"> + <!--鏄惁鏈夊畨鍏ㄨ缃鏌�--> + <template slot="hasSafetyEquipmentCheck" slot-scope="text"> + <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/> + </template> - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <!--鏄惁鏈夎澶囩簿搴︽鏌�--> + <template slot="hasPrecisionCheck" slot-scope="text"> + <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/> + </template> - <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> + <!--鏄惁鏈夊叾浠栨鏌�--> + <template slot="hasOtherCheck" slot-scope="text"> + <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/> + </template> + + + <span slot="action" slot-scope="text, record"> + <template v-if="record.standardStatus=='WAIT_SUBMIT'"> + <a @click="handleEdit(record)">缂栬緫</a> + <a-divider type="vertical"/> + <a-popconfirm title="纭畾鎻愪氦鍚�?" @confirm="handleSubmit(record)"> + <a @click.stop="event=>event.stopPropagation()">鎻愪氦</a> + </a-popconfirm> + </template> + <a @click="handleUpgrade(record)" v-if="record.standardStatus=='ENABLE'">鍗囩増</a> </span> - </a-table> - </div> + </a-table> + <!-- table鍖哄煙-end --> <!-- 琛ㄥ崟鍖哄煙 --> - <eamTechnicalStatusEvaluationStandard-modal ref="modalForm" @ok="modalFormOk"></eamTechnicalStatusEvaluationStandard-modal> + <eamTechnicalStatusEvaluationStandard-modal ref="modalForm" @ok="modalFormOk"/> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' + import { getAction } from '@/api/manage' import EamTechnicalStatusEvaluationStandardModal from './modules/EamTechnicalStatusEvaluationStandardModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' export default { - name: "EamTechnicalStatusEvaluationStandardList", - mixins:[JeecgListMixin], + name: 'EamTechnicalStatusEvaluationStandardList', + mixins: [JeecgListMixin], components: { - EamTechnicalStatusEvaluationStandardModal + EamTechnicalStatusEvaluationStandardModal, + LxSearchEquipmentSelect }, - data () { + data() { return { description: '鎶�鏈姸鎬侀壌瀹氳鑼冪鐞嗛〉闈�', // 琛ㄥご @@ -127,89 +121,113 @@ { title: '#', dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } - }, - { - title: '鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' - }, - { - title: '瑙勮寖鍚嶇О', - align:"center", - dataIndex: 'standardName' - }, - { + }, + { + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'equipmentCode' + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName' + }, + { + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'equipmentModel' + }, + { title: '瑙勮寖缂栫爜', - align:"center", + align: 'center', dataIndex: 'standardCode' - }, - { - title: '閴村畾鍛ㄦ湡', - align:"center", - dataIndex: 'evaluationPeriod' - }, - { - title: '璁惧ID', - align:"center", - dataIndex: 'equipmentId' - }, - { - title: '瑙勮寖鐘舵��;寰呮彁浜ゃ�佸惎鐢ㄣ�佷綔搴�', - align:"center", - dataIndex: 'standardStatus' - }, - { - title: '鏄惁鏈夊畨鍏ㄨ缃鏌�;鏄惁', - align:"center", - dataIndex: 'hasSafetyEquipmentCheck' - }, - { - title: '鏄惁鏈夎澶囩簿搴︽鏌�;鏄惁', - align:"center", - dataIndex: 'hasPrecisionCheck' - }, - { - title: '鏄惁鏈夊叾浠栨鏌�;鏄惁', - align:"center", - dataIndex: 'hasOtherCheck' - }, - { - title: '澶囨敞', - align:"center", - dataIndex: 'remark' - }, + }, + { + title: '瑙勮寖鍚嶇О', + align: 'center', + dataIndex: 'standardName' + }, + { + title: '閴村畾鍛ㄦ湡锛堝勾锛�', + align: 'center', + dataIndex: 'evaluationPeriod', + width: 150 + }, + { + title: '瑙勮寖鐘舵��', + align: 'center', + dataIndex: 'standardStatus_dictText', + width: 150 + }, + { + title: '鏄惁鏈夊畨鍏ㄨ缃鏌�', + align: 'center', + dataIndex: 'hasSafetyEquipmentCheck', + scopedSlots: { customRender: 'hasSafetyEquipmentCheck' }, + width: 150 + }, + { + title: '鏄惁鏈夎澶囩簿搴︽鏌�', + align: 'center', + dataIndex: 'hasPrecisionCheck', + scopedSlots: { customRender: 'hasPrecisionCheck' }, + width: 150 + }, + { + title: '鏄惁鏈夊叾浠栨鏌�', + align: 'center', + dataIndex: 'hasOtherCheck', + scopedSlots: { customRender: 'hasOtherCheck' }, + width: 150 + }, { title: '鎿嶄綔', dataIndex: 'action', - align:"center", - scopedSlots: { customRender: 'action' }, + align: 'center', + scopedSlots: { customRender: 'action' } } ], - url: { - list: "/eam/eamTechnicalStatusEvaluationStandard/list", - delete: "/eam/eamTechnicalStatusEvaluationStandard/delete", - deleteBatch: "/eam/eamTechnicalStatusEvaluationStandard/deleteBatch", - exportXlsUrl: "eam/eamTechnicalStatusEvaluationStandard/exportXls", - importExcelUrl: "eam/eamTechnicalStatusEvaluationStandard/importExcel", - }, - } - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - } - }, + url: { + list: '/eam/eamTechnicalStatusEvaluationStandard/list', + submit: '/eam/eamTechnicalStatusEvaluationStandard/submit', + importExcelUrl: 'eam/eamTechnicalStatusEvaluationStandard/importExcel' + } + } + }, + computed: { + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + } + }, methods: { - + handleSubmit(record) { + getAction(this.url.submit, record) + .then(res => { + if (res.success) { + this.$notification.success({ + message: '娑堟伅', + description: res.message + }) + this.loadData() + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + }, + + handleUpgrade(record) { + this.$refs.modalForm.edit(record, true) + this.$refs.modalForm.title = '鍗囩増' + } } } -</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/base/modules/EamTechnicalStatusEvaluationStandardModal.vue b/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue index c6ea154..7673464 100644 --- a/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue +++ b/src/views/eam/base/modules/EamTechnicalStatusEvaluationStandardModal.vue @@ -1,130 +1,409 @@ <template> - <j-modal - :title="title" - :width="800" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered + @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.standardCode" disabled/> + </a-form-model-item> + </a-col> - <a-spin :spinning="confirmLoading"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="瑙勮寖鍚嶇О"> - <a-input placeholder="璇疯緭鍏ヨ鑼冨悕绉�" v-model="model.standardName" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="瑙勮寖缂栫爜"> - <a-input placeholder="璇疯緭鍏ヨ鑼冪紪鐮�" v-model="model.standardCode" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="evaluationPeriod" label="閴村畾鍛ㄦ湡(骞�)"> - <a-input-number v-model="model.evaluationPeriod"/> - </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="hasSafetyEquipmentCheck" label="鏄惁鏈夊畨鍏ㄨ缃鏌�"> - <j-dict-select-tag dict-code="yn " type="radio" v-model="model.hasSafetyEquipmentCheck"/> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hasPrecisionCheck" label="鏄惁鏈夎澶囩簿搴︽鏌�"> - <j-dict-select-tag dict-code="yn " type="radio" v-model="model.hasPrecisionCheck"/> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="hasOtherCheck" label="鏄惁鏈夊叾浠栨鏌�"> - <j-dict-select-tag dict-code="yn " type="radio" v-model="model.hasOtherCheck"/> - </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> + <a-col :span="8"> + <a-form-model-item prop="standardName" label="瑙勮寖鍚嶇О"> + <a-input placeholder="璇疯緭鍏ヨ鑼冨悕绉�" v-model="model.standardName"/> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" :disabled="!editable"/> + </a-form-model-item> + </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-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')" + v-model="model[item.key]"/> + </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 :activeKey="activeTabKey" @change="handleTabChange"> + <a-tab-pane tab="瀹夊叏瑁呯疆妫�鏌�" :key="1" v-if="+model.hasSafetyEquipmentCheck"> + <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar + :toolbarConfig="detail.toolbarConfig" keep-source + :height="300" :dataSource="detail.safetyEquipmentCheckList" :columns="detail.columns"> + </j-vxe-table> + </a-tab-pane> + + <a-tab-pane tab="璁惧绮惧害妫�鏌�" :key="2" v-if="+model.hasPrecisionCheck" forceRender> + <j-vxe-table ref="editableDetailTable2" rowNumber rowSelection bordered alwaysEdit toolbar + :toolbarConfig="detail.toolbarConfig" keep-source + :height="300" :dataSource="detail.precisionCheckList" :columns="detail.precisionCheckColumns"> + </j-vxe-table> + </a-tab-pane> + + <a-tab-pane tab="鍏朵粬妫�鏌�" :key="3" v-if="+model.hasOtherCheck" forceRender> + <j-vxe-table ref="editableDetailTable3" rowNumber rowSelection bordered alwaysEdit toolbar + :toolbarConfig="detail.toolbarConfig" keep-source + :height="300" :dataSource="detail.otherCheckList" :columns="detail.columns"> + </j-vxe-table> + </a-tab-pane> + </a-tabs> </a-spin> </j-modal> </template> <script> -import { httpAction } from '@/api/manage' + import { httpAction, getAction } from '@/api/manage' + import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' + import { JVXETypes } from '@/components/jeecg/JVxeTable' + import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' -export default { - name: "EamTechnicalStatusEvaluationStandardModal", - data () { + export default { + name: 'EamTechnicalStatusEvaluationStandardModal', + components: { + LxSearchEquipmentSelect + }, + 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 } }, - + spinning: false, confirmLoading: false, - validatorRules:{ + editable: true, + validatorRules: { + standardName: [{ required: true, message: '璇疯緭鍏ヨ鑼冨悕绉�', trigger: 'change' }], + equipmentId: [{ required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�', trigger: 'change' }] + }, + checkList: [ + { + label: '瀹夊叏瑁呯疆妫�鏌�', + dictValue: 'SAFETY_EQUIPMENT_CHECK', + key: 'hasSafetyEquipmentCheck', + value: '1', + order: 1 + }, + { + label: '璁惧绮惧害妫�鏌�', + dictValue: 'PRECISION_CHECK', + key: 'hasPrecisionCheck', + value: '1', + order: 2 + }, + { + label: '鍏朵粬妫�鏌�', + dictValue: 'OTHER_CHECK', + key: 'hasOtherCheck', + value: '1', + order: 3 + } + ], + activeTabKey: 1, + upgradeFlag: false, + detail: { + safetyEquipmentCheckList: [], + precisionCheckList: [], + otherCheckList: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'standardId', + key: 'standardId', + type: JVXETypes.hidden + }, + { + title: '椤圭洰搴忓彿', + key: 'itemCode', + type: JVXETypes.inputNumber, + align: 'center', + placeholder: '璇疯緭鍏ラ」鐩簭鍙�', + width: 150, + validateRules: [ + { required: true, message: '璇疯緭鍏�${title}' }, + { unique: true, message: '${title}涓嶈兘閲嶅' } + ] + }, + { + title: '妫�鏌ラ」鐩�', + key: 'itemName', + placeholder: '璇疯緭鍏�${title}', + type: JVXETypes.textarea, + align: 'center', + validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }] + } + ], + precisionCheckColumns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'standardId', + key: 'standardId', + type: JVXETypes.hidden + }, + { + title: '椤圭洰搴忓彿', + key: 'itemCode', + type: JVXETypes.inputNumber, + align: 'center', + placeholder: '璇疯緭鍏ラ」鐩簭鍙�', + width: 150, + validateRules: [ + { required: true, message: '璇疯緭鍏�${title}' }, + { unique: true, message: '${title}涓嶈兘閲嶅' } + ] + }, + { + title: '妫�鏌ラ」鐩�', + key: 'itemName', + placeholder: '璇疯緭鍏�${title}', + type: JVXETypes.textarea, + align: 'center', + validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }] + }, + { + title: '妫�鏌ュ瓙椤圭洰', + key: 'subItemName', + placeholder: '璇疯緭鍏�${title}', + type: JVXETypes.textarea, + align: 'center', + validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }] + }, + { + title: '鍏佸樊鍊�', + key: 'toleranceValue', + placeholder: '璇疯緭鍏�${title}', + type: JVXETypes.input, + align: 'center', + validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }] + } + ], + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['add', 'remove', 'clearSelection'] + } }, url: { - add: "/eam/eamTechnicalStatusEvaluationStandard/add", - edit: "/eam/eamTechnicalStatusEvaluationStandard/edit", - }, + add: '/eam/eamTechnicalStatusEvaluationStandard/add', + edit: '/eam/eamTechnicalStatusEvaluationStandard/edit', + upgrade: '/eam/eamTechnicalStatusEvaluationStandard/upgrade', + detail: '/eam/eamTechnicalStatusEvaluationStandardDetail/queryList' + } } }, - created () { - }, methods: { - add () { + add() { + this.editable = true //鍒濆鍖栭粯璁ゅ�� - this.edit({}); + this.edit({ + hasSafetyEquipmentCheck: '1', + hasPrecisionCheck: '1', + hasOtherCheck: '1' + }) }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; + + /** + * 琛岃褰曠紪杈戞椂瑙﹀彂 + * @param record 椤甸潰琛ㄦ牸琛岃褰� + */ + edit(record, upgradeFlag = false) { + this.upgradeFlag = upgradeFlag + console.log('upgradeFlag', this.upgradeFlag) + this.detail.safetyEquipmentCheckList = this.detail.precisionCheckList = this.detail.otherCheckList = [] + this.model = Object.assign({}, record) + this.hasCheckedCheckList = [] + this.checkList.forEach(item => { + if (+this.model[item.key]) this.hasCheckedCheckList.push(item) + }) + this.activeTabKey = this.hasCheckedCheckList[0].order + this.visible = true + if (record.id) { + this.editable = false + this.loadDetail(record.id) + } }, - close () { - this.$emit('close'); - this.visible = false; - this.$refs.form.clearValidate(); + + /** + * 妫�鏌ラ�夋嫨鍙戠敓鏀瑰彉鍚庤Е鍙� + * @param value 妫�鏌ラ�夋嫨鍊� 0涓哄惁 1涓烘槸 + * @param key 妫�鏌ラ�夋嫨瀵瑰簲鏍囩key + */ + handleCheckListChange(value, key) { + this.checkList.find(item => item.key == key).value = value + if (+value) this.hasCheckedCheckList.push(this.checkList.find(item => item.key == key)) + else { + this.hasCheckedCheckList = this.hasCheckedCheckList.filter(item => item.key != key) + if (!this.hasCheckedCheckList.some(item => item.key == key)) this.activeTabKey = this.hasCheckedCheckList.sort((x, y) => x.order - y.order)[0].order + } }, - 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'; + + loadDetail(standardId) { + this.spinning = true + getAction(this.url.detail, { standardId }) + .then(res => { + console.log('res', 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(() => { + this.spinning = false + }) + }, + + /** + * 鏍囩鍒囨崲鏃惰Е鍙� + * @param key 鍒囨崲鍚庣殑鏍囩key + * @returns {Promise<boolean>} + */ + async handleTabChange(key) { + let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable() + if (errMap) return false + this.activeTabKey = key + }, + + async handleOk() { + // 鍏堟牎楠屽綋鍓峵ab涓嬬殑琛ㄦ牸 + let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable() + if (errMap) return false + + // 鏍¢獙宸查�夋嫨鐨勬鏌ラ」琛ㄦ牸涓虹┖ + let allTableData = [] + const hasCheckedCheckList = this.hasCheckedCheckList.sort((x, y) => x.order - y.order) + for (let index = 0; index < hasCheckedCheckList.length; index++) { + let tableData = this.$refs['editableDetailTable' + hasCheckedCheckList[index].order].getTableData() + if (tableData.length == 0) { + this.$notification.warning({ + message: '娑堟伅', + description: hasCheckedCheckList[index].label + '蹇呭~椤逛笉鑳戒负绌�' + }) + return + } + tableData = tableData.map(item => { + return { + ...item, + checkCategory: hasCheckedCheckList[index].dictValue + } + }) + allTableData = [...allTableData, ...tableData] + } + 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 { + if (!this.upgradeFlag) httpUrl += this.url.edit + else httpUrl += this.url.upgrade + method = 'put' + } + this.model.tableDetailList = allTableData + httpAction(httpUrl, this.model, method).then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('ok') + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) } }).finally(() => { - that.confirmLoading = false; - that.close(); + that.confirmLoading = false + that.close() }) - }else{ - return false; + } else { + return false } }) }, - handleCancel () { + + handleCancel() { this.close() }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + } } } -</script> - -<style lang="less" scoped> - -</style> \ No newline at end of file +</script> \ No newline at end of file -- Gitblit v1.9.3