From 763765958b36e99f33e3463ee0e17f8c6ad16c68 Mon Sep 17 00:00:00 2001 From: houshuai <17802598606@163.com> Date: 星期二, 15 七月 2025 20:28:39 +0800 Subject: [PATCH] 安灯模块开发 --- src/views/andon/modules/AndonResponseConfigForm.vue | 165 ++++++ src/views/andon/modules/AndonButtonConfigModal.vue | 60 ++ src/views/andon/AndonButtonConfigList.vue | 224 +++++++++ src/views/andon/AndonResponseConfigList.vue | 197 ++++++++ src/views/andon/modules/AndonOrderModal.vue | 60 ++ src/views/andon/AndonOrderList.vue | 282 +++++++++++ src/views/andon/modules/AndonOrderForm.vue | 209 ++++++++ src/views/andon/modules/AndonResponseConfigModal.vue | 60 ++ src/views/andon/modules/AndonButtonConfigForm.vue | 160 ++++++ 9 files changed, 1,417 insertions(+), 0 deletions(-) diff --git a/src/views/andon/AndonButtonConfigList.vue b/src/views/andon/AndonButtonConfigList.vue new file mode 100644 index 0000000..0abde8b --- /dev/null +++ b/src/views/andon/AndonButtonConfigList.vue @@ -0,0 +1,224 @@ +<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="瀹夌伅鍚嶇О"> + <j-input placeholder="璇疯緭鍏ュ畨鐏悕绉�" v-model="queryParam.buttonName"></j-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="瀹夌伅缂栫爜"> + <j-input placeholder="璇疯緭鍏ュ畨鐏紪鐮�" v-model="queryParam.buttonCode"></j-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="瀹夌伅鎸夐挳鐘舵��"> + <j-dict-select-tag dictCode="button_status" placeholder="璇疯緭鍏ュ畨鐏寜閽姸鎬�" v-model="queryParam.buttonStatus"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + </span> + </a-col> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + </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" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + class="j-table-force-nowrap" + @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 @click="handleDetail(record)">璇︽儏</a> + </a-menu-item> + <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> + + <andon-button-config-modal ref="modalForm" @ok="modalFormOk"></andon-button-config-modal> + </a-card> +</template> + +<script> + + import '@/assets/less/TableExpand.less' + import { mixinDevice } from '@/utils/mixin' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import AndonButtonConfigModal from './modules/AndonButtonConfigModal' + import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' + + export default { + name: 'AndonButtonConfigList', + mixins:[JeecgListMixin, mixinDevice], + components: { + AndonButtonConfigModal + }, + data () { + return { + description: '瀹夌伅鎸夐挳閰嶇疆绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key:'rowIndex', + width:60, + align:"center", + customRender:function (t,r,index) { + return parseInt(index)+1; + } + }, + { + title:'瀹夌伅鍚嶇О', + align:"center", + dataIndex: 'buttonName' + }, + { + title:'瀹夌伅缂栫爜', + align:"center", + dataIndex: 'buttonCode' + }, + { + title:'鍗囩骇鍝嶅簲鏃堕暱(鍒嗛挓)', + align:"center", + dataIndex: 'upgradeResponseDuration' + }, + { + title:'鍗囩骇澶勭悊鏃堕暱(鍒嗛挓)', + align:"center", + dataIndex: 'upgradeProcessDuration' + }, + { + title:'浜屾鍗囩骇鍝嶅簲鏃堕暱(鍒嗛挓)', + align:"center", + dataIndex: 'secondUpgradeResponseDuration' + }, + { + title:'浜屾鍗囩骇澶勭悊鏃堕暱(鍒嗛挓)', + align:"center", + dataIndex: 'secondUpgradeProcessDuration' + }, + { + title:'瀹夌伅鎸夐挳鐘舵��', + align:"center", + dataIndex: 'buttonStatus_dictText' + }, + { + title:'澶囨敞', + align:"center", + dataIndex: 'remark' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: "/andonbuttonconfig/andonButtonConfig/list", + delete: "/andonbuttonconfig/andonButtonConfig/delete", + deleteBatch: "/andonbuttonconfig/andonButtonConfig/deleteBatch", + exportXlsUrl: "/andonbuttonconfig/andonButtonConfig/exportXls", + importExcelUrl: "andonbuttonconfig/andonButtonConfig/importExcel", + + }, + dictOptions:{}, + superFieldList:[], + } + }, + created() { + this.getSuperFieldList(); + }, + computed: { + importExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + }, + }, + methods: { + initDictConfig(){ + }, + getSuperFieldList(){ + let fieldList=[]; + fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) + fieldList.push({type:'string',value:'buttonName',text:'瀹夌伅鍚嶇О',dictCode:''}) + fieldList.push({type:'string',value:'buttonCode',text:'瀹夌伅缂栫爜',dictCode:''}) + fieldList.push({type:'int',value:'upgradeResponseDuration',text:'鍗囩骇鍝嶅簲鏃堕暱(鍒嗛挓)',dictCode:''}) + fieldList.push({type:'int',value:'upgradeProcessDuration',text:'鍗囩骇澶勭悊鏃堕暱(鍒嗛挓)',dictCode:''}) + fieldList.push({type:'int',value:'secondUpgradeResponseDuration',text:'浜屾鍗囩骇鍝嶅簲鏃堕暱(鍒嗛挓)',dictCode:''}) + fieldList.push({type:'int',value:'secondUpgradeProcessDuration',text:'浜屾鍗囩骇澶勭悊鏃堕暱(鍒嗛挓)',dictCode:''}) + fieldList.push({type:'string',value:'buttonStatus',text:'瀹夌伅鎸夐挳鐘舵��',dictCode:'button_status'}) + fieldList.push({type:'string',value:'remark',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/andon/AndonOrderList.vue b/src/views/andon/AndonOrderList.vue new file mode 100644 index 0000000..8246434 --- /dev/null +++ b/src/views/andon/AndonOrderList.vue @@ -0,0 +1,282 @@ +<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="瀹夌伅绛夌骇"> + <j-dict-select-tag dictCode="andon_level" placeholder="璇疯緭鍏ュ畨鐏瓑绾�" v-model="queryParam.andonLevel"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="瀹夌伅鐘舵��"> + <j-dict-select-tag dictCode="order_status" placeholder="璇疯緭鍏ュ畨鐏姸鎬�" v-model="queryParam.orderStatus"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + </span> + </a-col> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + </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" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + class="j-table-force-nowrap" + @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 @click="handleDetail(record)">璇︽儏</a> + </a-menu-item> + <a-menu-item> + <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </a-menu-item> + <a-menu-item> + <a @click="handleResponse(record)">鍝嶅簲(妯℃嫙)</a> + </a-menu-item> + <a-menu-item> + <a @click="handleDispose(record)">澶勭悊(妯℃嫙)</a> + </a-menu-item> + </a-menu> + </a-dropdown> + </span> + + </a-table> + </div> + + <andon-order-modal ref="modalForm" @ok="modalFormOk"></andon-order-modal> + </a-card> +</template> + +<script> + + import '@/assets/less/TableExpand.less' + import { mixinDevice } from '@/utils/mixin' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import AndonOrderModal from './modules/AndonOrderModal' + import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' + import { postAction } from '@api/manage' + import store from '@/store' + import JSelectFactory from '@comp/jeecgbiz/JSelectFactory.vue' + + export default { + name: 'AndonOrderList', + mixins:[JeecgListMixin, mixinDevice], + components: { + JSelectFactory, + AndonOrderModal + }, + data () { + return { + description: '瀹夌伅宸ュ崟绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key:'rowIndex', + width:60, + align:"center", + customRender:function (t,r,index) { + return parseInt(index)+1; + } + }, + { + title:'浜х嚎', + align:"center", + dataIndex: 'factoryId_dictText' + }, + { + title:'瀹夌伅绫诲瀷', + align:"center", + dataIndex: 'buttonId_dictText' + }, + { + title:'瀹夌伅浜�', + align:"center", + dataIndex: 'operator' + }, + { + title:'瀹夌伅鏃堕棿', + align:"center", + dataIndex: 'operateTime' + }, + { + title:'瀹夌伅绛夌骇', + align:"center", + dataIndex: 'andonLevel_dictText' + }, + { + title:'鍝嶅簲浜�', + align:"center", + dataIndex: 'responder' + }, + { + title:'鍝嶅簲鏃堕棿', + align:"center", + dataIndex: 'responseTime' + }, + { + title:'澶勭悊浜�', + align:"center", + dataIndex: 'processor' + }, + { + title:'澶勭悊瀹屾垚鏃堕棿', + align:"center", + dataIndex: 'processTime' + }, + { + title:'瀹夌伅鐘舵��', + align:"center", + dataIndex: 'orderStatus_dictText' + }, + { + title:'闂鎻忚堪', + align:"center", + dataIndex: 'problemDescreption' + }, + { + title:'澶勭悊缁撴灉鎻忚堪', + align:"center", + dataIndex: 'resolutionDescreption' + }, + { + title:'澶勭悊缁撴灉鍥剧墖', + align:"center", + dataIndex: 'imageFiles', + scopedSlots: {customRender: 'imgSlot'} + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: "/andonorder/andonOrder/list", + delete: "/andonorder/andonOrder/delete", + deleteBatch: "/andonorder/andonOrder/deleteBatch", + exportXlsUrl: "/andonorder/andonOrder/exportXls", + importExcelUrl: "andonorder/andonOrder/importExcel", + edit:"/andonorder/andonOrder/edit" + + }, + dictOptions:{}, + superFieldList:[], + } + }, + created() { + this.getSuperFieldList(); + }, + computed: { + importExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + }, + }, + methods: { + handleResponse(record){ + //鑾峰彇褰撳墠鏃堕棿 + const now = new Date(); + const formattedTime = `${now.getFullYear()}-${(now.getMonth()+1).toString().padStart(2,'0')}-${now.getDate().toString().padStart(2,'0')} ${now.getHours().toString().padStart(2,'0')}:${now.getMinutes().toString().padStart(2,'0')}:${now.getSeconds().toString().padStart(2,'0')}`; + record.orderStatus = "2" + record.andonLevel = "1" + record.responseTime = formattedTime + record.responder = store.getters.userInfo.username + postAction(this.url.edit,record) + this.loadData() + }, + handleDispose(record){ + const now = new Date(); + const formattedTime = `${now.getFullYear()}-${(now.getMonth()+1).toString().padStart(2,'0')}-${now.getDate().toString().padStart(2,'0')} ${now.getHours().toString().padStart(2,'0')}:${now.getMinutes().toString().padStart(2,'0')}:${now.getSeconds().toString().padStart(2,'0')}`; + record.orderStatus = "3" + record.andonLevel = "1" + record.processTime = formattedTime + record.processor = store.getters.userInfo.username + postAction(this.url.edit,record) + this.loadData() + }, + initDictConfig(){ + }, + getSuperFieldList(){ + let fieldList=[]; + fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) + fieldList.push({type:'string',value:'factoryId',text:'浜х嚎ID',dictCode:''}) + fieldList.push({type:'string',value:'buttonId',text:'瀹夌伅绫诲瀷',dictCode:''}) + fieldList.push({type:'string',value:'operator',text:'瀹夌伅浜�',dictCode:''}) + fieldList.push({type:'datetime',value:'operateTime',text:'瀹夌伅鏃堕棿'}) + fieldList.push({type:'string',value:'andonLevel',text:'瀹夌伅绛夌骇',dictCode:'andon_level'}) + fieldList.push({type:'string',value:'responder',text:'鍝嶅簲浜�',dictCode:''}) + fieldList.push({type:'datetime',value:'responseTime',text:'鍝嶅簲鏃堕棿'}) + fieldList.push({type:'string',value:'processor',text:'澶勭悊浜�',dictCode:''}) + fieldList.push({type:'datetime',value:'processTime',text:'澶勭悊瀹屾垚鏃堕棿'}) + fieldList.push({type:'string',value:'orderStatus',text:'瀹夌伅鐘舵��',dictCode:'order_status'}) + fieldList.push({type:'string',value:'problemDescreption',text:'闂鎻忚堪',dictCode:''}) + fieldList.push({type:'string',value:'resolutionDescreption',text:'澶勭悊缁撴灉鎻忚堪',dictCode:''}) + fieldList.push({type:'Text',value:'imageFiles',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/andon/AndonResponseConfigList.vue b/src/views/andon/AndonResponseConfigList.vue new file mode 100644 index 0000000..ce04649 --- /dev/null +++ b/src/views/andon/AndonResponseConfigList.vue @@ -0,0 +1,197 @@ +<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="瀹夌伅绫诲瀷"> + <j-search-select-tag placeholder="璇疯緭鍏ュ畨鐏被鍨�" v-model="queryParam.buttonId" + dict="andon_button_config,button_name,id" + ></j-search-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + </span> + </a-col> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + </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" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + class="j-table-force-nowrap" + @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 @click="handleDetail(record)">璇︽儏</a> + </a-menu-item> + <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> + + <andon-response-config-modal ref="modalForm" @ok="modalFormOk"></andon-response-config-modal> + </a-card> +</template> + +<script> + + import '@/assets/less/TableExpand.less' + import { mixinDevice } from '@/utils/mixin' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import AndonResponseConfigModal from './modules/AndonResponseConfigModal' + + export default { + name: 'AndonResponseConfigList', + mixins:[JeecgListMixin, mixinDevice], + components: { + AndonResponseConfigModal + }, + data () { + return { + description: '瀹夌伅鍝嶅簲閰嶇疆绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key:'rowIndex', + width:60, + align:"center", + customRender:function (t,r,index) { + return parseInt(index)+1; + } + }, + { + title:'浜х嚎ID', + align:"center", + dataIndex: 'factoryId_dictText' + }, + { + title:'瀹夌伅绫诲瀷', + align:"center", + dataIndex: 'buttonId_dictText' + }, + { + title:'鍒濆鍝嶅簲浜�', + align:"center", + dataIndex: 'firsterResponder' + }, + { + title:'浜岀骇鍝嶅簲浜�(鍗囩骇涓�娆�)', + align:"center", + dataIndex: 'secondResponder' + }, + { + title:'涓夌骇鍝嶅簲浜�(鍗囩骇涓ゆ)', + align:"center", + dataIndex: 'thirdResponder' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: "/andonresponseconfig/andonResponseConfig/list", + delete: "/andonresponseconfig/andonResponseConfig/delete", + deleteBatch: "/andonresponseconfig/andonResponseConfig/deleteBatch", + exportXlsUrl: "/andonresponseconfig/andonResponseConfig/exportXls", + importExcelUrl: "andonresponseconfig/andonResponseConfig/importExcel", + + }, + dictOptions:{}, + superFieldList:[], + } + }, + created() { + this.getSuperFieldList(); + }, + computed: { + importExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + }, + }, + methods: { + initDictConfig(){ + }, + getSuperFieldList(){ + let fieldList=[]; + fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) + fieldList.push({type:'string',value:'factoryId',text:'浜х嚎ID',dictCode:''}) + fieldList.push({type:'string',value:'buttonId',text:'瀹夌伅绫诲瀷',dictCode:''}) + fieldList.push({type:'string',value:'firsterResponder',text:'鍒濆鍝嶅簲浜�',dictCode:''}) + fieldList.push({type:'string',value:'secondResponder',text:'浜岀骇鍝嶅簲浜�(鍗囩骇涓�娆�)',dictCode:''}) + fieldList.push({type:'string',value:'thirdResponder',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/andon/modules/AndonButtonConfigForm.vue b/src/views/andon/modules/AndonButtonConfigForm.vue new file mode 100644 index 0000000..7465026 --- /dev/null +++ b/src/views/andon/modules/AndonButtonConfigForm.vue @@ -0,0 +1,160 @@ +<template> + <a-spin :spinning="confirmLoading"> + <j-form-container :disabled="formDisabled"> + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> + <a-row> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buttonName"> + <a-input v-model="model.buttonName" placeholder="璇疯緭鍏ュ畨鐏悕绉�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buttonCode"> + <a-input v-model="model.buttonCode" placeholder="璇疯緭鍏ュ畨鐏紪鐮�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鍗囩骇鍝嶅簲鏃堕暱(鍒嗛挓)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upgradeResponseDuration"> + <a-input-number v-model="model.upgradeResponseDuration" placeholder="璇疯緭鍏ュ崌绾у搷搴旀椂闀�(鍒嗛挓)" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鍗囩骇澶勭悊鏃堕暱(鍒嗛挓)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upgradeProcessDuration"> + <a-input-number v-model="model.upgradeProcessDuration" placeholder="璇疯緭鍏ュ崌绾у鐞嗘椂闀�(鍒嗛挓)" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="浜屾鍗囩骇鍝嶅簲鏃堕暱(鍒嗛挓)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="secondUpgradeResponseDuration"> + <a-input-number v-model="model.secondUpgradeResponseDuration" placeholder="璇疯緭鍏ヤ簩娆″崌绾у搷搴旀椂闀�(鍒嗛挓)" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="浜屾鍗囩骇澶勭悊鏃堕暱(鍒嗛挓)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="secondUpgradeProcessDuration"> + <a-input-number v-model="model.secondUpgradeProcessDuration" placeholder="璇疯緭鍏ヤ簩娆″崌绾у鐞嗘椂闀�(鍒嗛挓)" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅鎸夐挳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buttonStatus"> + <j-dict-select-tag type="list" v-model="model.buttonStatus" dictCode="button_status" placeholder="璇烽�夋嫨瀹夌伅鎸夐挳鐘舵��" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> + <a-input v-model="model.remark" placeholder="璇疯緭鍏ュ娉�" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </j-form-container> + </a-spin> +</template> + +<script> + + import { httpAction, getAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + + export default { + name: 'AndonButtonConfigForm', + components: { + }, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data () { + return { + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + confirmLoading: false, + validatorRules: { + buttonName: [ + { required: true, message: '瀹夌伅鍚嶇О鏄繀閫夐」', trigger: 'change' } + ], + buttonCode: [ + { required: true, message: '瀹夌伅缂栫爜鏄繀閫夐」', trigger: 'change' } + ], + upgradeResponseDuration: [ + { required: true, message: '鍗囩骇鍝嶅簲鏃堕暱鏄繀閫夐」', trigger: 'change' } + ], + upgradeProcessDuration: [ + { required: true, message: '鍗囩骇澶勭悊鏃堕暱鏄繀閫夐」', trigger: 'change' } + ], + secondUpgradeResponseDuration: [ + { required: true, message: '浜屾鍗囩骇鍝嶅簲鏃堕暱鏄繀閫夐」', trigger: 'change' } + ], + secondUpgradeProcessDuration: [ + { required: true, message: '浜屾鍗囩骇澶勭悊鏃堕暱鏄繀閫夐」', trigger: 'change' } + ], + buttonStatus: [ + { required: true, message: '瀹夌伅鎸夐挳鐘舵�佹槸蹇呴�夐」', trigger: 'change' } + ], + }, + url: { + add: "/andonbuttonconfig/andonButtonConfig/add", + edit: "/andonbuttonconfig/andonButtonConfig/edit", + queryById: "/andonbuttonconfig/andonButtonConfig/queryById" + } + } + }, + computed: { + formDisabled(){ + return this.disabled + }, + }, + created () { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + add () { + this.edit(this.modelDefault); + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + submitForm () { + 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'; + } + 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; + }) + } + + }) + }, + } + } +</script> \ No newline at end of file diff --git a/src/views/andon/modules/AndonButtonConfigModal.vue b/src/views/andon/modules/AndonButtonConfigModal.vue new file mode 100644 index 0000000..3b3d1c8 --- /dev/null +++ b/src/views/andon/modules/AndonButtonConfigModal.vue @@ -0,0 +1,60 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + switchFullscreen + @ok="handleOk" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @cancel="handleCancel" + cancelText="鍏抽棴"> + <andon-button-config-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></andon-button-config-form> + </j-modal> +</template> + +<script> + + import AndonButtonConfigForm from './AndonButtonConfigForm' + export default { + name: 'AndonButtonConfigModal', + components: { + AndonButtonConfigForm + }, + data () { + return { + title:'', + width:896, + 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.submitForm(); + }, + submitCallback(){ + this.$emit('ok'); + this.visible = false; + }, + handleCancel () { + this.close() + } + } + } +</script> \ No newline at end of file diff --git a/src/views/andon/modules/AndonOrderForm.vue b/src/views/andon/modules/AndonOrderForm.vue new file mode 100644 index 0000000..84fff50 --- /dev/null +++ b/src/views/andon/modules/AndonOrderForm.vue @@ -0,0 +1,209 @@ +<template> + <a-spin :spinning="confirmLoading"> + <j-form-container :disabled="formDisabled"> + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="浜х嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId"> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="" + > + <j-select-factory + :disabled="disabled" + v-model="model.factoryId" + :multi="true" + @back="backFactoryInfo" + :backProduction="true" + :treeProductOpera="true" + ></j-select-factory> + </a-form-item> + </a-col> + </a-row> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buttonId"> + <j-search-select-tag v-model="model.buttonId" placeholder="璇疯緭鍏ュ畨鐏被鍨�" + dict="andon_button_config,button_name,id"></j-search-select-tag> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator"> + <j-select-user-by-dep :multi="false" v-model="model.operator" placeholder="璇疯緭鍏ュ畨鐏汉" ></j-select-user-by-dep> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operateTime"> + <j-date placeholder="璇烽�夋嫨瀹夌伅鏃堕棿" v-model="model.operateTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅绛夌骇" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="andonLevel"> + <j-dict-select-tag type="list" v-model="model.andonLevel" dictCode="andon_level" placeholder="璇烽�夋嫨瀹夌伅绛夌骇" /> + </a-form-model-item> + </a-col> +<!-- <a-col :span="12">--> +<!-- <a-form-model-item label="鍝嶅簲浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="responder">--> +<!-- <j-select-user-by-dep v-model="model.responder" placeholder="璇疯緭鍏ュ搷搴斾汉" ></j-select-user-by-dep>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- <a-col :span="12">--> +<!-- <a-form-model-item label="鍝嶅簲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="responseTime">--> +<!-- <j-date placeholder="璇烽�夋嫨鍝嶅簲鏃堕棿" v-model="model.responseTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- <a-col :span="12">--> +<!-- <a-form-model-item label="澶勭悊浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processor">--> +<!-- <j-select-user-by-dep v-model="model.processor" placeholder="璇疯緭鍏ュ鐞嗕汉" ></j-select-user-by-dep>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- <a-col :span="12">--> +<!-- <a-form-model-item label="澶勭悊瀹屾垚鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processTime">--> +<!-- <j-date placeholder="璇烽�夋嫨澶勭悊瀹屾垚鏃堕棿" v-model="model.processTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderStatus"> + <j-dict-select-tag type="list" v-model="model.orderStatus" dictCode="order_status" placeholder="璇烽�夋嫨瀹夌伅鐘舵��" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="闂鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="problemDescreption"> + <a-textarea v-model="model.problemDescreption" rows="4" placeholder="璇疯緭鍏ラ棶棰樻弿杩�" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="澶勭悊缁撴灉鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="resolutionDescreption"> + <a-textarea v-model="model.resolutionDescreption" rows="4" placeholder="璇疯緭鍏ュ鐞嗙粨鏋滄弿杩�" /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="澶勭悊缁撴灉鍥剧墖" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="imageFiles"> + <j-image-upload isMultiple v-model="model.imageFiles" ></j-image-upload> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </j-form-container> + </a-spin> +</template> + +<script> + + import { httpAction, getAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + import JSelectFactory from '@comp/jeecgbiz/JSelectFactory.vue' + + export default { + name: 'AndonOrderForm', + components: { + JSelectFactory + }, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data () { + return { + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + confirmLoading: false, + validatorRules: { + factoryId: [ + { required: true, message: '浜х嚎鏄繀閫夐」', trigger: 'change' } + ], + buttonId: [ + { required: true, message: '瀹夌伅绫诲瀷鏄繀閫夐」', trigger: 'change' } + ], + operator: [ + { required: true, message: '瀹夌伅浜烘槸蹇呴�夐」', trigger: 'change' } + ], + operateTime: [ + { required: true, message: '瀹夌伅鏃堕棿鏄繀閫夐」', trigger: 'change' } + ], + andonLevel: [ + { required: true, message: '瀹夌伅绛夌骇鏄繀閫夐」', trigger: 'change' } + ], + orderStatus: [ + { required: true, message: '瀹夌伅鐘舵�佹槸蹇呴�夐」', trigger: 'change' } + ], + }, + url: { + add: "/andonorder/andonOrder/add", + edit: "/andonorder/andonOrder/edit", + queryById: "/andonorder/andonOrder/queryById" + } + } + }, + computed: { + formDisabled(){ + return this.disabled + }, + }, + created () { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + backFactoryInfo(info) { + this.model.factoryIds = this.model.factoryId + this.nextFactoryOptions = info.map((item, index, arr) => { + let c = { label: item.text, value: item.value + '' } + return c + }) + }, + add () { + this.edit(this.modelDefault); + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + submitForm () { + 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'; + } + 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; + }) + } + + }) + }, + } + } +</script> \ No newline at end of file diff --git a/src/views/andon/modules/AndonOrderModal.vue b/src/views/andon/modules/AndonOrderModal.vue new file mode 100644 index 0000000..67f42d1 --- /dev/null +++ b/src/views/andon/modules/AndonOrderModal.vue @@ -0,0 +1,60 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + switchFullscreen + @ok="handleOk" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @cancel="handleCancel" + cancelText="鍏抽棴"> + <andon-order-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></andon-order-form> + </j-modal> +</template> + +<script> + + import AndonOrderForm from './AndonOrderForm' + export default { + name: 'AndonOrderModal', + components: { + AndonOrderForm + }, + data () { + return { + title:'', + width:896, + 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.submitForm(); + }, + submitCallback(){ + this.$emit('ok'); + this.visible = false; + }, + handleCancel () { + this.close() + } + } + } +</script> \ No newline at end of file diff --git a/src/views/andon/modules/AndonResponseConfigForm.vue b/src/views/andon/modules/AndonResponseConfigForm.vue new file mode 100644 index 0000000..131a263 --- /dev/null +++ b/src/views/andon/modules/AndonResponseConfigForm.vue @@ -0,0 +1,165 @@ +<template> + <a-spin :spinning="confirmLoading"> + <j-form-container :disabled="formDisabled"> + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> + <a-row> + <a-col :span="24"> + <a-form-model-item label="浜х嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId"> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + label="" + > + <j-select-factory + :disabled="disabled" + v-model="model.factoryId" + :multi="true" + @back="backFactoryInfo" + :backProduction="true" + :treeProductOpera="true" + ></j-select-factory> + </a-form-item> + </a-col> + </a-row> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="瀹夌伅绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buttonId"> + <j-search-select-tag v-model="model.buttonId" placeholder="璇疯緭鍏ュ畨鐏被鍨�" + dict="andon_button_config,button_name,id"></j-search-select-tag> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鍒濆鍝嶅簲浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="firsterResponder"> + <j-select-user-by-dep :multi="false" v-model="model.firsterResponder" placeholder="璇疯緭鍏ュ垵濮嬪搷搴斾汉" ></j-select-user-by-dep> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="浜岀骇鍝嶅簲浜�(鍗囩骇涓�娆�)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="secondResponder"> + <j-select-user-by-dep :multi="false" v-model="model.secondResponder" placeholder="璇疯緭鍏ヤ簩绾у搷搴斾汉(鍗囩骇涓�娆�)" ></j-select-user-by-dep> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="涓夌骇鍝嶅簲浜�(鍗囩骇涓ゆ)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="thirdResponder"> + <j-select-user-by-dep :multi="false" v-model="model.thirdResponder" placeholder="璇疯緭鍏ヤ笁绾у搷搴斾汉(鍗囩骇涓ゆ)" ></j-select-user-by-dep> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </j-form-container> + </a-spin> +</template> + +<script> + + import { httpAction, getAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + import JSelectFactory from '@comp/jeecgbiz/JSelectFactory.vue' + export default { + name: 'AndonResponseConfigForm', + components: { + JSelectFactory + }, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data () { + return { + model:{ + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + confirmLoading: false, + validatorRules: { + factoryId: [ + { required: true, message: '浜х嚎鏄繀閫夐」', trigger: 'change' } + ], + buttonId: [ + { required: true, message: '瀹夌伅绫诲瀷鏄繀閫夐」', trigger: 'change' } + ], + firsterResponder: [ + { required: true, message: '鍒濆鍝嶅簲浜烘槸蹇呴�夐」', trigger: 'change' } + ], + secondResponder: [ + { required: true, message: '浜岀骇鍝嶅簲浜烘槸蹇呴�夐」', trigger: 'change' } + ], + thirdResponder: [ + { required: true, message: '涓夌骇鍝嶅簲浜烘槸蹇呴�夐」', trigger: 'change' } + ], + }, + url: { + add: "/andonresponseconfig/andonResponseConfig/add", + edit: "/andonresponseconfig/andonResponseConfig/edit", + queryById: "/andonresponseconfig/andonResponseConfig/queryById" + } + } + }, + computed: { + formDisabled(){ + return this.disabled + }, + }, + created () { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + backFactoryInfo(info) { + this.model.factoryIds = this.model.factoryId + this.nextFactoryOptions = info.map((item, index, arr) => { + let c = { label: item.text, value: item.value + '' } + return c + }) + }, + add () { + this.edit(this.modelDefault); + }, + edit (record) { + this.model = Object.assign({}, record); + this.visible = true; + }, + submitForm () { + 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'; + } + 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; + }) + } + + }) + }, + } + } +</script> \ No newline at end of file diff --git a/src/views/andon/modules/AndonResponseConfigModal.vue b/src/views/andon/modules/AndonResponseConfigModal.vue new file mode 100644 index 0000000..d421295 --- /dev/null +++ b/src/views/andon/modules/AndonResponseConfigModal.vue @@ -0,0 +1,60 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + switchFullscreen + @ok="handleOk" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @cancel="handleCancel" + cancelText="鍏抽棴"> + <andon-response-config-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></andon-response-config-form> + </j-modal> +</template> + +<script> + + import AndonResponseConfigForm from './AndonResponseConfigForm' + export default { + name: 'AndonResponseConfigModal', + components: { + AndonResponseConfigForm + }, + data () { + return { + title:'', + width:896, + 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.submitForm(); + }, + submitCallback(){ + this.$emit('ok'); + this.visible = false; + }, + handleCancel () { + this.close() + } + } + } +</script> \ No newline at end of file -- Gitblit v1.9.3