From 958233d0bb26417d5b51e68ecc1cfb9410fcdccc Mon Sep 17 00:00:00 2001 From: “linengliang” <vanSuperEnergy@163.com> Date: 星期二, 21 十一月 2023 20:30:02 +0800 Subject: [PATCH] ABC评分签审 --- src/views/eam/ABC/ABCAssessmentList.vue | 216 ++++++++ src/views/eam/ABC/modules/StreamModal.vue | 65 ++ src/views/eam/ABC/StreamList.vue | 269 +++++++++ src/views/eam/ABC/StreamOperationList.vue | 171 ++++++ src/views/eam/ABC/modules/StreamForm.vue | 572 +++++++++++++++++++++ src/views/eam/ABC/modules/EquipmentSelectModel.vue | 303 +++++++++++ 6 files changed, 1,596 insertions(+), 0 deletions(-) diff --git a/src/views/eam/ABC/ABCAssessmentList.vue b/src/views/eam/ABC/ABCAssessmentList.vue new file mode 100644 index 0000000..d3bd7a6 --- /dev/null +++ b/src/views/eam/ABC/ABCAssessmentList.vue @@ -0,0 +1,216 @@ +<template> + <a-card :bordered="false" :class="'cust-erp-sub-tab'"> + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator" v-if="mainId"> + <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" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + @change="handleTableChange"> + + <template slot="htmlSlot" slot-scope="text"> + <div v-html="text"></div> + </template> + <template slot="imgSlot" slot-scope="text,record"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> + <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + <template slot="fileSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> + <a-button + v-else + :ghost="true" + type="primary" + icon="download" + size="small" + @click="downloadFile(text)"> + 涓嬭浇 + </a-button> + </template> + + <span slot="action" slot-scope="text, record"> + <a @click="handleEdit(record)">缂栬緫</a> + <a-divider type="vertical" /> + <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </span> + + </a-table> + </div> + </a-card> +</template> + +<script> + + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + + export default { + name: "ABCAssessmentList", + mixins:[JeecgListMixin], + components: { }, + props:{ + mainId:{ + type:String, + default:'', + required:false + } + }, + watch:{ + mainId:{ + immediate: true, + handler(val) { + if(!this.mainId){ + this.clearList() + }else{ + this.queryParam['streamId'] = val + this.loadData(1); + } + } + } + }, + data () { + return { + description: '璁惧ABC璇勪环绠$悊椤甸潰', + disableMixinCreated:true, + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key:'rowIndex', + width:60, + align:"center", + customRender:function (t,r,index) { + return parseInt(index)+1; + } + }, + { + title:'缁熶竴缂栧彿', + align:"center", + dataIndex: 'num', + width:200 + }, + { + title:'璁惧鍚嶇О', + align:"center", + dataIndex: 'name', + width:200 + }, + { + title:'璁惧鍨嬪彿', + align:"center", + dataIndex: 'model', + width:200 + }, + { + title:'骞冲潎浣跨敤鐜�', + align:"center", + dataIndex: 'standardA_dictText', + width:200 + }, + { + title:'鍙浛鎹㈡��', + align:"center", + dataIndex: 'standardB_dictText', + width:200 + }, + { + title:'鏁呴殰褰卞搷搴�', + align:"center", + dataIndex: 'standardC_dictText', + width:200 + }, + { + title:'鐢熶骇瓒呭樊搴�', + align:"center", + dataIndex: 'standardD_dictText', + width:200 + }, + { + title:'鏁呴殰棰戠巼', + align:"center", + dataIndex: 'standardE_dictText', + width:200 + }, + { + title:'璁惧浠峰��', + align:"center", + dataIndex: 'standardF_dictText', + width:200 + }, + { + title:'鏃ф爣璇�', + align:"center", + dataIndex: 'equipmentImportanceId_dictText', + width:200 + }, + { + title:'鏂版爣璇�', + align:"center", + dataIndex: 'finalStandard_dictText', + width:200 + }, + ], + url: { + list: "/eam/stream/listABCAssessmentByMainId", + delete: "/eam/stream/deleteABCAssessment", + deleteBatch: "/eam/stream/deleteBatchABCAssessment", + exportXlsUrl: "/eam/stream/exportABCAssessment", + importUrl: "/eam/stream/importABCAssessment", + }, + dictOptions:{ + } + } + }, + created() { + }, + computed: { + importExcelUrl(){ + return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; + } + }, + methods: { + clearList(){ + this.dataSource=[] + this.selectedRowKeys=[] + this.ipagination.current = 1 + } + + } + } +</script> +<style scoped> + @import '~@assets/less/common.less' +</style> diff --git a/src/views/eam/ABC/StreamList.vue b/src/views/eam/ABC/StreamList.vue new file mode 100644 index 0000000..d626a2f --- /dev/null +++ b/src/views/eam/ABC/StreamList.vue @@ -0,0 +1,269 @@ +<template> + <a-card :bordered="false"> + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + <!-- <a-button type="primary" icon="download" @click="handleExportXls('璁惧ABC璇勪环')">瀵煎嚭</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> --> + <!-- 楂樼骇鏌ヨ鍖哄煙 --> + <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> --> + </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" + class="j-table-force-nowrap" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}" + :customRow="clickThenSelect" + @change="handleTableChange"> + + <template slot="htmlSlot" slot-scope="text"> + <div v-html="text"></div> + </template> + <template slot="imgSlot" slot-scope="text,record"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> + <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + <template slot="fileSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> + <a-button + v-else + :ghost="true" + type="primary" + icon="download" + size="small" + @click="downloadFile(text)"> + 涓嬭浇 + </a-button> + </template> + + <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> + </span> + + </a-table> + </div> + + <a-tabs defaultActiveKey="1"> + <a-tab-pane tab="鎿嶄綔璁板綍" key="1" > + <StreamOperationList :mainId="streamOperationMainId" /> + </a-tab-pane> + <a-tab-pane tab="ABC璇勫垎" key="2" forceRender> + <ABCAssessmentList :mainId="aBCAssessmentMainId" /> + </a-tab-pane> + </a-tabs> + + <stream-modal ref="modalForm" @ok="modalFormOk"></stream-modal> + </a-card> +</template> + +<script> + + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import StreamModal from './modules/StreamModal' + import { getAction } from '@/api/manage' + import StreamOperationList from './StreamOperationList' + import ABCAssessmentList from './ABCAssessmentList' + import '@/assets/less/TableExpand.less' + + export default { + name: "StreamList", + mixins:[JeecgListMixin], + components: { + StreamOperationList, + ABCAssessmentList, + StreamModal + }, + data () { + return { + description: '璁惧ABC璇勪环绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key:'rowIndex', + width:60, + align:"center", + customRender:function (t,r,index) { + return parseInt(index)+1; + } + }, + { + title:'鍗曟嵁鍙�', + align:"center", + dataIndex: 'num', + width:400 + }, + { + title:'褰撳墠鑺傜偣', + align:"center", + dataIndex: 'status', + width:300 + }, + { + title:'鍗曟嵁绫诲瀷', + align:"center", + dataIndex: 'type', + width:300 + }, + { + title:'鍙戣捣鏃堕棿', + align:"center", + dataIndex: 'createTime', + width:300 + }, + { + title:'鍙戣捣浜�', + align:"center", + dataIndex: 'createBy_dictText' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align:"center", + fixed:"right", + width:200, + scopedSlots: { customRender: 'action' }, + } + ], + url: { + list: "/eam/stream/list", + delete: "/eam/stream/delete", + deleteBatch: "/eam/stream/deleteBatch", + exportXlsUrl: "/eam/stream/exportXls", + importExcelUrl: "eam/stream/importExcel", + }, + dictOptions:{ + }, + /* 鍒嗛〉鍙傛暟 */ + ipagination:{ + current: 1, + pageSize: 5, + pageSizeOptions: ['5', '10', '50'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + selectedMainId:'', + superFieldList:[], + streamOperationMainId: '', + aBCAssessmentMainId: '', + } + }, + created() { + this.getSuperFieldList(); + }, + computed: { + importExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + } + }, + methods: { + initDictConfig(){ + }, + clickThenSelect(record) { + return { + on: { + click: () => { + this.onSelectChange(record.id.split(","), [record]); + } + } + } + }, + onClearSelected() { + this.selectedRowKeys = []; + this.selectionRows = []; + this.selectedMainId='' + }, + onSelectChange(selectedRowKeys, selectionRows) { + if(selectedRowKeys.length===1){ + this.selectedMainId=selectedRowKeys[0] + this.streamOperationMainId = selectionRows[0]['id'] + this.aBCAssessmentMainId = selectionRows[0]['id'] + }else{ + this.selectedMainId='' + this.streamOperationMainId = '' + this.aBCAssessmentMainId = '' + } + + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + + }, + loadData(arg) { + if(!this.url.list){ + this.$message.error("璇疯缃畊rl.list灞炴��!") + return + } + //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + if (arg === 1) { + this.ipagination.current = 1; + } + this.onClearSelected() + var params = this.getQueryParams();//鏌ヨ鏉′欢 + this.loading = true; + getAction(this.url.list, params).then((res) => { + if (res.success) { + this.dataSource = res.result.records; + this.ipagination.total = res.result.total; + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.loading = false; + }) + }, + getSuperFieldList(){ + let fieldList=[]; + fieldList.push({type:'string',value:'num',text:'num',dictCode:''}) + fieldList.push({type:'string',value:'status',text:'status',dictCode:''}) + fieldList.push({type:'string',value:'type',text:'鍗曟嵁绫诲瀷',dictCode:''}) + this.superFieldList = fieldList + } + } + } +</script> +<style scoped> + @import '~@assets/less/common.less' +</style> \ No newline at end of file diff --git a/src/views/eam/ABC/StreamOperationList.vue b/src/views/eam/ABC/StreamOperationList.vue new file mode 100644 index 0000000..7538b72 --- /dev/null +++ b/src/views/eam/ABC/StreamOperationList.vue @@ -0,0 +1,171 @@ +<template> + <a-card :bordered="false" :class="'cust-erp-sub-tab'"> + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator" v-if="mainId"> + <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" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + @change="handleTableChange"> + + <template slot="htmlSlot" slot-scope="text"> + <div v-html="text"></div> + </template> + <template slot="imgSlot" slot-scope="text,record"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> + <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + <template slot="fileSlot" slot-scope="text"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> + <a-button + v-else + :ghost="true" + type="primary" + icon="download" + size="small" + @click="downloadFile(text)"> + 涓嬭浇 + </a-button> + </template> + + <span slot="action" slot-scope="text, record"> + <a @click="handleEdit(record)">缂栬緫</a> + <a-divider type="vertical" /> + <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </span> + + </a-table> + </div> + </a-card> +</template> + +<script> + + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + + export default { + name: "StreamOperationList", + mixins:[JeecgListMixin], + components: { }, + props:{ + mainId:{ + type:String, + default:'', + required:false + } + }, + watch:{ + mainId:{ + immediate: true, + handler(val) { + if(!this.mainId){ + this.clearList() + }else{ + this.queryParam['streamId'] = val + this.loadData(1); + } + } + } + }, + data () { + return { + description: '璁惧ABC璇勪环绠$悊椤甸潰', + disableMixinCreated:true, + // 琛ㄥご + columns: [ + { + title:'鎺掑簭', + align:"center", + dataIndex: 'sort', + width:60 + }, + { + title:'鎿嶄綔', + align:"center", + dataIndex: 'operation', + width:400 + }, + { + title:'鎿嶄綔鑺傜偣', + align:"center", + dataIndex: 'streamId', + width:400 + }, + + { + title:'鎿嶄綔浜�', + align:"center", + dataIndex: 'userId_dictText', + width:400 + }, + { + title:'鎿嶄綔浜烘剰瑙�', + align:"center", + dataIndex: 'remark', + width:500 + }, + ], + url: { + list: "/eam/stream/listStreamOperationByMainId", + delete: "/eam/stream/deleteStreamOperation", + deleteBatch: "/eam/stream/deleteBatchStreamOperation", + exportXlsUrl: "/eam/stream/exportStreamOperation", + importUrl: "/eam/stream/importStreamOperation", + }, + dictOptions:{ + } + } + }, + created() { + }, + computed: { + importExcelUrl(){ + return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; + } + }, + methods: { + clearList(){ + this.dataSource=[] + this.selectedRowKeys=[] + this.ipagination.current = 1 + } + + } + } +</script> +<style scoped> + @import '~@assets/less/common.less' +</style> diff --git a/src/views/eam/ABC/modules/EquipmentSelectModel.vue b/src/views/eam/ABC/modules/EquipmentSelectModel.vue new file mode 100644 index 0000000..fbbcb6d --- /dev/null +++ b/src/views/eam/ABC/modules/EquipmentSelectModel.vue @@ -0,0 +1,303 @@ +<template> + <!--鏀寔鍏ㄥ睆缂╂斁--> + <a-modal + :visible="visible" + :title="title" + switchFullscreen + @ok="handleSubmit" + @cancel="close" + style="top:50px" + cancelText="鍏抽棴" + :width="1400" + > + <a-card :bordered="false"> + <div class="table-page-search-wrapper"> + <a-form + layout="inline" + @keyup.enter.native="searchQuery" + > + <a-row :gutter="24"> + <a-col + :md="8" + :sm="6" + > + <a-form-item label="缁熶竴缂栫爜"> + <a-input + placeholder="璇疯緭鍏ョ粺涓�缂栫爜" + v-model="queryParam.num" + /> + </a-form-item> + </a-col> + <a-col + :md="8" + :sm="6" + > + <a-form-item label="璁惧鍚嶇О"> + <a-input + placeholder="璁惧鍚嶇О" + v-model="queryParam.name" + /> + </a-form-item> + </a-col> + <a-col :md="3"> + <span + style="float: left;overflow: hidden;" + class="table-page-search-submitButtons" + > + <a-button + type="primary" + @click="searchQuery" + icon="search" + >鏌ヨ</a-button> + <a-button + @click="searchReset" + icon="reload" + style="margin-left: 10px" + >閲嶇疆</a-button> + </span> + </a-col> + </a-row> + </a-form> + </div> + <a-table + ref="table" + :scroll="scrollTrigger" + size="middle" + rowKey="id" + bordered + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :rowSelection="rowSelection" + :loading="loading" + @change="handleTableChange" + > + <template slot="equipmentPhoto" slot-scope="text,record"> + <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> + <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> + </template> + </a-table> + </a-card> + </a-modal> +</template> + +<script> +import { filterObj } from '@/utils/util' +import { getAction } from '@/api/manage' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' + +export default { + name: 'EquipmentSelectModel', + mixins: [JeecgListMixin], + components: {}, + props: {}, + data() { + return { + queryParam: {}, + columns: [ + { + title: '#', + dataIndex: 'id', + key: 'rowIndex', + width: 50, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'num', + width:200 + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'name', + width:200 + }, + { + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'model', + width:200 + }, + { + title: '璁惧瑙勬牸', + align: 'center', + dataIndex: 'specification', + width:200 + }, + { + title: 'ABC鏍囪瘑', + align: "center", + dataIndex: 'equipmentImportanceId', + width:100 + }, + { + title: '鍏抽敭璁惧鏍囪瘑', + align: "center", + dataIndex: 'specificEquipment_dictText', + width:100 + }, + { + title: '璁惧鐘舵��', + align: 'center', + dataIndex: 'equipmentStatus_dictText', + width:100 + }, + { + title: '鎶�鏈姸鎬�', + align: 'center', + dataIndex: 'technologyStatus_dictText', + width:100 + }, + ], + selectedRowKeys: [], + oldSelectRows: [], + scrollTrigger: {}, + dataSource: [], + selectionRows: [], + title: '閫夋嫨璁惧', + ipagination: { + current: 1, + pageSize: 10, + pageSizeOptions: ['5', '10', '30', '50', '100'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + isorter: { + column: 'num', + order: 'desc' + }, + visible: false, + loading: false, + url: { + list: '/eam/equipment/list' + } + } + }, + computed: { + rowSelection() { + return { + type: 'checkbox', + onChange: (selectedRowKeys, selectedRows) => { + this.selectedRowKeys = selectedRowKeys + this.onSelectChange(selectedRows) + }, + getCheckboxProps: record => ({ + props: { + disabled: record.distable + } + }), + selectedRowKeys: this.selectedRowKeys + } + } + }, + + methods: { + + async loadData(arg) { + if (arg === 1) { + this.ipagination.current = 1 + } + let that = this + this.loading = true + let params = this.getQueryParams()//鏌ヨ鏉′欢 + // params.equipmentStatus = '1' + await getAction(this.url.list, params).then((res) => { + if (res.success) { + for (let i = 0; i < res.result.records.length; i++) { + if (that.oldSelectRows.indexOf(res.result.records[i].id) > -1) { + res.result.records[i].distable = true + } else { + res.result.records[i].distable = false + } + } + this.dataSource = res.result.records + this.ipagination.total = res.result.total + } + if (res.code === 510) { + this.$message.warning(res.message) + } + this.loading = false + }) + }, + + showModals(oldSelectRows) { + this.oldSelectRows = oldSelectRows + this.visible = true + this.loadData(1) + }, + getQueryParams() { + let param = Object.assign({}, this.queryParam, this.isorter) + param.field = this.getQueryField() + param.pageNo = this.ipagination.current + param.pageSize = this.ipagination.pageSize + return filterObj(param) + }, + //鏌ヨ鏉′欢澶勭悊 + getQueryField() { + let str = 'id,' + for (let a = 0; a < this.columns.length; a++) { + str += ',' + this.columns[a].dataIndex + } + return str + }, + searchReset(num) { + let that = this + this.queryParam = [] + if (num !== 0) { + that.loadData(1) + } + that.selectborrowIds = [] + }, + close() { + this.searchReset(0) + this.selectedRowKeys = [] + this.visible = false + }, + handleTableChange(pagination, filters, sorter) { + //TODO 绛涢�� + + if (Object.keys(sorter).length > 0) { + this.isorter.column = sorter.field + this.isorter.order = 'ascend' === sorter.order ? 'asc' : 'desc' + } + this.ipagination = pagination + this.loadData() + }, + handleSubmit() { + this.$emit('selectionRows', this.selectionRows) + this.searchReset(0) + this.close() + }, + onSelectChange(selectionRows) { + this.selectionRows = selectionRows + }, + searchQuery() { + this.loadData(1) + } + } +} +</script> + +<style scoped> +.ant-table-tbody .ant-table-row td { + padding-top: 10px; + padding-bottom: 10px; +} + +#components-layout-demo-custom-trigger .trigger { + font-size: 18px; + line-height: 64px; + padding: 0 24px; + cursor: pointer; + transition: color 0.3s; +} +</style> \ No newline at end of file diff --git a/src/views/eam/ABC/modules/StreamForm.vue b/src/views/eam/ABC/modules/StreamForm.vue new file mode 100644 index 0000000..7f32450 --- /dev/null +++ b/src/views/eam/ABC/modules/StreamForm.vue @@ -0,0 +1,572 @@ +<template> + <a-spin :spinning="confirmLoading"> + <j-form-container :disabled="formDisabled"> + <!-- 涓昏〃鍗曞尯鍩� --> + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> + <a-row :gutter="24"> + <a-col :span="12" > + <a-form-model-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num"> + <a-input v-model="model.num" placeholder="绯荤粺鑷姩鐢熸垚" :disabled="true" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item + label="鏂癆BC鏍囪瘑" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="finalStandard" + :disabled="true" + > + <j-dict-select-tag + allow-clear + :disabled="true" + placeholder="璇烽�夋嫨ABC鏍囪瘑" + :triggerChange="true" + dictCode="ABC-standard-result" + v-model="model.finalStandard" + /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item + label="骞冲潎浣跨敤鐜�" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="standardA" + > + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨骞冲潎浣跨敤鐜�" + :disabled="formDisabled" + :triggerChange="true" + dictCode="ABC-standardA" + v-model="model.standardA" + @change="(e) =>standardResultCompute(e,'A')" + /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item + label="鍙浛鎹㈡��" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="standardB" + > + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨鍙浛鎹㈡��" + :disabled="formDisabled" + :triggerChange="true" + dictCode="ABC-standardB" + v-model="model.standardB" + @change="(e) =>standardResultCompute(e,'B')" + /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item + label="鏁呴殰褰卞搷搴�" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="standardC" + > + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨鏁呴殰褰卞搷搴�" + :disabled="formDisabled" + :triggerChange="true" + dictCode="ABC-standardC" + v-model="model.standardC" + @change="(e) =>standardResultCompute(e,'C')" + /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item + label="鐢熶骇瓒呭樊搴�" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="standardD" + > + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨鐢熶骇瓒呭樊搴�" + :disabled="formDisabled" + :triggerChange="true" + dictCode="ABC-standardD" + v-model="model.standardD" + @change="(e) =>standardResultCompute(e,'D')" + /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item + label="鏁呴殰棰戠巼" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="standardE" + > + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨鏁呴殰棰戠巼" + :disabled="formDisabled" + :triggerChange="true" + dictCode="ABC-standardE" + v-model="model.standardE" + @change="(e) =>standardResultCompute(e,'E')" + /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item + label="璁惧浠峰��" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="standardF" + > + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨璁惧浠峰��" + :disabled="formDisabled" + :triggerChange="true" + dictCode="ABC-standardF" + v-model="model.standardF" + @change="(e) =>standardResultCompute(e,'F')" + /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </j-form-container> + <!-- 瀛愯〃鍗曞尯鍩� --> + <a-tabs v-model="activeKey" @change="handleChangeTabs"> + <a-tab-pane tab="ABC璇勪环" :key="refKeys[0]" :forceRender="true"> + <j-vxe-table + keep-source + :ref="refKeys[0]" + :loading="aBCAssessmentTable.loading" + :columns="aBCAssessmentTable.columns" + :dataSource="aBCAssessmentTable.dataSource" + :maxHeight="300" + :disabled="formDisabled" + :rowNumber="true" + :rowSelection="true" + :toolbar="true" + :alwaysEdit="true" + @valueChange="changeDate" + :toolbarConfig="toolbarConfig" + > + <template slot="toolbarPrefix"> + <a-button type="primary" @click="selectEquipmentList" :disabled="formDisabled">閫夋嫨璁惧 + </a-button> + </template> + </j-vxe-table> + </a-tab-pane> + </a-tabs> + <equipment-select-model ref="EquipmentSelectModal" @selectionRows="addSelectedEquipments"></equipment-select-model> + </a-spin> +</template> + +<script> + + import { getAction } from '@/api/manage' + import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' + import { JVXETypes } from '@/components/jeecg/JVxeTable' + import { getRefPromise,VALIDATE_FAILED} from '@/components/jeecg/JVxeTable/utils/vxeUtils.js' + import { validateDuplicateValue } from '@/utils/util' + import JFormContainer from '@/components/jeecg/JFormContainer' + import EquipmentSelectModel from './EquipmentSelectModel' + + export default { + name: 'StreamForm', + mixins: [JVxeTableModelMixin], + components: { + JFormContainer, + EquipmentSelectModel + }, + data() { + return { + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['remove', 'clearSelection'] + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + model:{ + }, + // 鏂板鏃跺瓙琛ㄩ粯璁ゆ坊鍔犲嚑琛岀┖鏁版嵁 + addDefaultRowNum: 0, + validatorRules: { + }, + refKeys: ['aBCAssessment' ], + tableKeys:[ 'aBCAssessment' ], + activeKey: 'streamOperation', + // ABC璇勪环 + aBCAssessmentTable: { + loading: false, + dataSource: [], + columns: [ + { + title: '缁熶竴缂栫爜', + key: 'num', + type: JVXETypes.normal, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + disabled:true, + align:'center', + defaultValue:'', + }, + { + title: '璁惧鍚嶇О', + key: 'name', + type: JVXETypes.normal, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + disabled:true, + align:'center', + defaultValue:'', + }, + { + title: '璁惧鍨嬪彿', + key: 'model', + type: JVXETypes.normal, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + disabled:true, + align:'center', + defaultValue:'', + }, + { + title: '璁惧ID', + key: 'equipmentId', + type: JVXETypes.hidden, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + align:'center', + }, + { + title: '骞冲潎浣跨敤鐜�', + key: 'standardA', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standardA', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + { + title: '鍙浛鎹㈡��', + key: 'standardB', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standardB', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + { + title: '鏁呴殰褰卞搷搴�', + key: 'standardC', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standardC', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + { + title: '鐢熶骇瓒呭樊搴�', + key: 'standardD', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standardD', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + { + title: '鏁呴殰棰戠巼', + key: 'standardE', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standardE', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + { + title: '璁惧浠峰��', + key: 'standardF', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standardF', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + { + title: '鏃ф爣璇�', + key: 'equipmentImportanceId', + type: JVXETypes.select, + width:"250px", + disabled:true, + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standard-result', + options:[], + align:'center', + }, + { + title: '鏂版爣璇�', + key: 'finalStandard', + type: JVXETypes.select, + width:"250px", + placeholder: '璇疯緭鍏�${title}', + defaultValue:'', + dictCode:'ABC-standard-result', + options:[], + align:'center', + validateRules: [ + { + required: true, // 蹇呭~ + message: '璇疯緭鍏�${title}' // 鏄剧ず鐨勬枃鏈� + }, + ] + }, + ] + }, + url: { + add: "/eam/stream/add", + edit: "/eam/stream/edit", + queryById: "/eam/stream/queryById", + getNum:'/eam/sysIdentity/getNumNew', + aBCAssessment: { + list: '/eam/stream/queryABCAssessmentByMainId' + }, + } + } + }, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + computed: { + formDisabled(){ + return this.disabled + }, + }, + created () { + }, + methods: { + addBefore(){ + let that = this; + let param = { + type: 'ABCAssement', + length: 4 + }; + getAction(this.url.getNum,param).then(res=>{ + if(res.success){ + that.model.num = res.result; + } + }) + this.aBCAssessmentTable.dataSource=[] + }, + getAllTable() { + let values = this.tableKeys.map(key => getRefPromise(this, key)) + return Promise.all(values) + }, + /** 璋冪敤瀹宔dit()鏂规硶涔嬪悗浼氳嚜鍔ㄨ皟鐢ㄦ鏂规硶 */ + editAfter() { + this.$nextTick(() => { + }) + // 鍔犺浇瀛愯〃鏁版嵁 + if (this.model.id) { + let params = { id: this.model.id } + this.requestSubTableData(this.url.aBCAssessment.list, params, this.aBCAssessmentTable) + } + }, + //鏍¢獙鎵�鏈変竴瀵逛竴瀛愯〃琛ㄥ崟 + validateSubForm(allValues){ + return new Promise((resolve,reject)=>{ + Promise.all([ + ]).then(() => { + resolve(allValues) + }).catch(e => { + if (e.error === VALIDATE_FAILED) { + // 濡傛灉鏈夋湭閫氳繃琛ㄥ崟楠岃瘉鐨勫瓙琛紝灏辫嚜鍔ㄨ烦杞埌瀹冩墍鍦ㄧ殑tab + this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] + } else { + console.error(e) + } + }) + }) + }, + /** 鏁寸悊鎴恌ormData */ + classifyIntoFormData(allValues) { + let main = Object.assign(this.model, allValues.formValue) + return { + ...main, // 灞曞紑 + assessmentList: allValues.tablesValue[0].tableData + } + }, + validateError(msg){ + this.$message.error(msg) + }, + standardResultCompute(e,index) { + let keyIndex = 'standard'+index; + let tableData =this.$refs.aBCAssessment.getTableData(); + for(var i = 0;i<tableData.length;i++){ + let row = this.$refs.aBCAssessment.getRowById(tableData[i].equipmentId); + row[keyIndex]=e + this.changeDateByRow(row); + } + var standardA = this.model.standardA == null || this.model.standardA == undefined || this.model.standardA == '' ? 0 : parseInt(this.model.standardA); + var standardB = this.model.standardB == null || this.model.standardB == undefined || this.model.standardB == '' ? 0 : parseInt(this.model.standardB); + var standardC = this.model.standardA == null || this.model.standardC == undefined || this.model.standardC == '' ? 0 : parseInt(this.model.standardC); + var standardD = this.model.standardD == null || this.model.standardD == undefined || this.model.standardD == '' ? 0 : parseInt(this.model.standardD); + var standardE = this.model.standardE == null || this.model.standardE == undefined || this.model.standardE == '' ? 0 : parseInt(this.model.standardE); + var standardF = this.model.standardF == null || this.model.standardF == undefined || this.model.standardF == '' ? 0 : parseInt(this.model.standardF); + var sum = standardA + standardB + standardC + standardD + standardE + standardF; + console.log(sum) + if (sum >= 18) { + this.model.finalStandard = 'A' + } else if (sum >= 10 && sum <= 17) { + this.model.finalStandard = 'B' + } else { + this.model.finalStandard = 'C' + } + this.model = Object.assign({}, this.model); + }, + //閫夋嫨璁惧 + selectEquipmentList() { + let ids = [] + let tableData = this.$refs.aBCAssessment.getTableData() + let deleteData = this.$refs.aBCAssessment.getDeleteData() + for (let i = 0; i < tableData.length; i++) { + ids.push(tableData[i].equipmentId) + } + this.$refs.EquipmentSelectModal.showModals(ids) + this.$refs.EquipmentSelectModal.title = '閫夋嫨璁惧' + this.$refs.EquipmentSelectModal.disableSubmit = false + }, + addSelectedEquipments(data) { + let tableData = this.$refs.aBCAssessment.getTableData() + // const seletedEquipmentIds = tableData. + var tableStr = JSON.stringify(tableData) + const addRows = [] + for (let i = 0; i < data.length; i++) { + var equipment = {} + if (tableStr.indexOf(data[i].id)==-1) { + equipment = { + id:data[i].id, + equipmentId: data[i].id, + num: data[i].num, + name: data[i].name, + model:data[i].model, + equipmentImportanceId:data[i].equipmentImportanceId, + } + } + addRows.push(equipment) + } + this.$refs.aBCAssessment.pushRows(addRows) + }, + changeDate(target){ + var standardA = target.row.standardA == null || target.row.standardA == undefined || target.row.standardA == '' ? 0 : parseInt(target.row.standardA); + var standardB = target.row.standardB == null || target.row.standardB == undefined || target.row.standardB == '' ? 0 : parseInt(target.row.standardB); + var standardC = target.row.standardA == null || target.row.standardC == undefined || target.row.standardC == '' ? 0 : parseInt(target.row.standardC); + var standardD = target.row.standardD == null || target.row.standardD == undefined || target.row.standardD == '' ? 0 : parseInt(target.row.standardD); + var standardE = target.row.standardE == null || target.row.standardE == undefined || target.row.standardE == '' ? 0 : parseInt(target.row.standardE); + var standardF = target.row.standardF == null || target.row.standardF == undefined || target.row.standardF == '' ? 0 : parseInt(target.row.standardF); + var sum = standardA + standardB + standardC + standardD + standardE + standardF; + console.log(sum) + if (sum >= 18) { + target.row.finalStandard = 'A' + } else if (sum >= 10 && sum <= 17) { + target.row.finalStandard = 'B' + } else { + target.row.finalStandard = 'C' + } + }, + changeDateByRow(row){ + var standardA = row.standardA == null || row.standardA == undefined || row.standardA == '' ? 0 : parseInt(row.standardA); + var standardB = row.standardB == null || row.standardB == undefined || row.standardB == '' ? 0 : parseInt(row.standardB); + var standardC = row.standardA == null || row.standardC == undefined || row.standardC == '' ? 0 : parseInt(row.standardC); + var standardD = row.standardD == null || row.standardD == undefined || row.standardD == '' ? 0 : parseInt(row.standardD); + var standardE = row.standardE == null || row.standardE == undefined || row.standardE == '' ? 0 : parseInt(row.standardE); + var standardF = row.standardF == null || row.standardF == undefined || row.standardF == '' ? 0 : parseInt(row.standardF); + var sum = standardA + standardB + standardC + standardD + standardE + standardF; + if (sum >= 18) { + row.finalStandard = 'A' + } else if (sum >= 10 && sum <= 17) { + row.finalStandard = 'B' + } else { + row.finalStandard = 'C' + } + }, + } + } +</script> + +<style scoped> +</style> \ No newline at end of file diff --git a/src/views/eam/ABC/modules/StreamModal.vue b/src/views/eam/ABC/modules/StreamModal.vue new file mode 100644 index 0000000..4c1d193 --- /dev/null +++ b/src/views/eam/ABC/modules/StreamModal.vue @@ -0,0 +1,65 @@ +<template> + <j-modal + :title="title" + :width="1200" + :visible="visible" + :maskClosable="false" + switchFullscreen + :fullscreen="true" + @ok="handleOk" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @cancel="handleCancel"> + <stream-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"/> + </j-modal> +</template> + +<script> + + import StreamForm from './StreamForm' + + export default { + name: 'StreamModal', + components: { + StreamForm + }, + data() { + return { + title:'', + width:800, + visible: false, + disableSubmit: false + } + }, + methods:{ + add () { + this.visible=true + this.$nextTick(()=>{ + this.$refs.realForm.add(); + }) + }, + edit (record) { + this.visible=true + this.$nextTick(()=>{ + this.$refs.realForm.edit(record); + }) + }, + close () { + this.$emit('close'); + this.visible = false; + }, + handleOk () { + this.$refs.realForm.handleOk(); + }, + submitCallback(){ + this.$emit('ok'); + this.visible = false; + }, + handleCancel () { + this.close() + } + } + } +</script> + +<style scoped> +</style> \ No newline at end of file -- Gitblit v1.9.3