From ba77fdc6a30c9ad0941e40319f8c4f6fe6fdf9f1 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期四, 07 八月 2025 10:30:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/mdc/base/EquipmentList.vue | 16 src/store/index.js | 2 src/views/pms/modules/PmsProcessBillMaterialsForm.vue | 161 +-- src/views/mdc/base/modules/EquipmentList/EquipmentModal.vue | 10 src/views/mes/modules/MesProductionOrderForm.vue | 351 ++++--- src/store/modules/factory.js | 45 src/views/pms/modules/PmsProcessBillMaterialsModal.vue | 82 src/views/pms/modules/PmsMaterialProcessForm.vue | 186 +-- src/components/jeecgbiz/modal/JSelectEquipmentFactoryModal.vue | 348 +++++++ src/views/pms/PmsProcessBillMaterialsList.vue | 310 ++--- src/views/mes/modules/MesProductionOrderModal.vue | 82 src/views/mdc/base/modules/EquipmentList/UserModal.vue | 102 +- src/views/system/SysApiLogList.vue | 198 ++++ src/store/mutation-types.js | 4 src/views/mdc/common/BaseTree.vue | 4 src/views/system/modules/UserModal.vue | 116 +- src/components/jeecgbiz/JSelectFactory.vue | 10 src/views/mes/MesProductionOrderList.vue | 185 +-- src/views/pms/PmsMaterialProcessList.vue | 247 +--- src/components/jeecgbiz/JSelectEquipmentFactory.vue | 183 +++ src/views/system/modules/SysApiLogModal.vue | 189 +++ 21 files changed, 1,765 insertions(+), 1,066 deletions(-) diff --git a/src/components/jeecgbiz/JSelectEquipmentFactory.vue b/src/components/jeecgbiz/JSelectEquipmentFactory.vue new file mode 100644 index 0000000..cac6cca --- /dev/null +++ b/src/components/jeecgbiz/JSelectEquipmentFactory.vue @@ -0,0 +1,183 @@ +<template> + <div class="components-input-demo-presuffix"> + <!----> + <a-input @click="openModal" placeholder="璇风偣鍑婚�夋嫨杞﹂棿" v-model="textVals" readOnly :disabled="disabled"> + <a-icon slot="prefix" type="cluster" title="杞﹂棿閫夋嫨鎺т欢"/> + <a-icon v-if="storeVals&&!disabled" slot="suffix" type="close-circle" @click="handleEmpty" title="娓呯┖"/> + </a-input> + <j-select-equipment-factory-modal + ref="innerDepartSelectModal" + :modal-width="modalWidth" + :multi="multi" + :rootOpened="rootOpened" + :factory-id="value" + :store="storeField" + :text="textField" + :treeProductOpera="treeProductOpera" + @ok="handleOK" + @initComp="initComp"> + + </j-select-equipment-factory-modal> + </div> +</template> + +<script> + import JSelectEquipmentFactoryModal from './modal/JSelectEquipmentFactoryModal' + import { underLinetoHump } from '@comp/_util/StringUtil' + export default { + name: 'JSelectEquipmentFactory', + components:{ + JSelectEquipmentFactoryModal, + }, + props:{ + modalWidth:{ + type:Number, + default:500, + required:false + }, + multi:{ + type:Boolean, + default:false, + required:false + }, + rootOpened:{ + type:Boolean, + default:true, + required:false + }, + value:{ + type:String, + required:false + }, + disabled:{ + type: Boolean, + required: false, + default: false + }, + // 鑷畾涔夎繑鍥炲瓧娈碉紝榛樿杩斿洖 id + customReturnField: { + type: String, + default: '' + }, + backFactory: { + type: Boolean, + default: false, + required: false + }, + // 瀛樺偍瀛楁 [key field] + store: { + type: String, + default: 'id', + required: false + }, + // 鏄剧ず瀛楁 [label field] + text: { + type: String, + default: 'factoryName', + required: false + }, + treeProductOpera: { + type: Boolean, + default: false, + required: false + } + + }, + data(){ + return { + visible:false, + confirmLoading:false, + storeVals: '', //[key values] + textVals: '' //[label values] + } + }, + computed:{ + storeField(){ + let field = this.customReturnField + if(!field){ + field = this.store; + } + return underLinetoHump(field) + }, + textField(){ + return underLinetoHump(this.text) + } + }, + mounted(){ + this.storeVals = this.value + }, + watch:{ + value(val){ + this.storeVals = val + } + }, + methods:{ + initComp(textVals){ + this.textVals = textVals + }, + //杩斿洖閫変腑鐨勮溅闂翠俊鎭� + backProductInfo(){ + if(this.backFactory===true){ + //LOWCOD-2147 銆愮敤鎴风鐞嗐�戦�夋嫨閮ㄩ棬鍜屼笂绾т互鍚庯紝璐熻矗閮ㄩ棬娌℃湁鏁版嵁鍙�� (闄剁値鏀归�犺嚜瀹氫箟杩斿洖瀛楁瀵艰嚧) + if(this.storeVals && this.storeVals.length>0){ + let arr1 = this.storeVals.split(',') + let arr2 = this.textVals.split(',') + let info = [] + for(let i=0;i<arr1.length;i++){ + info.push({ + value: arr1[i], + text: arr2[i] + }) + } + this.$emit('back', info) + } + } + }, + openModal(){ + this.$refs.innerDepartSelectModal.show() + }, + handleOK(rows) { + if (!rows && rows.length <= 0) { + this.textVals = '' + this.storeVals = '' + } else { + let arr1 = [] + let arr2 = [] + for(let dep of rows){ + arr1.push(dep[this.storeField]) + arr2.push(dep[this.textField]) + } + this.storeVals = arr1.join(',') + this.textVals = arr2.join(',') + } + this.$emit("change", this.storeVals) + this.backProductInfo() + }, + getDepartNames(){ + return this.departNames + }, + handleEmpty(){ + this.handleOK('') + } + }, + model: { + prop: 'value', + event: 'change' + } + } +</script> + +<style scoped> + .components-input-demo-presuffix .anticon-close-circle { + cursor: pointer; + color: #ccc; + transition: color 0.3s; + font-size: 12px; + } + .components-input-demo-presuffix .anticon-close-circle:hover { + color: #f5222d; + } + .components-input-demo-presuffix .anticon-close-circle:active { + color: #666; + } +</style> \ No newline at end of file diff --git a/src/components/jeecgbiz/JSelectFactory.vue b/src/components/jeecgbiz/JSelectFactory.vue index 1af1e2f..927778e 100644 --- a/src/components/jeecgbiz/JSelectFactory.vue +++ b/src/components/jeecgbiz/JSelectFactory.vue @@ -59,7 +59,7 @@ type: String, default: '' }, - backProduction: { + backFactory: { type: Boolean, default: false, required: false @@ -116,8 +116,8 @@ this.textVals = textVals }, //杩斿洖閫変腑鐨勮溅闂翠俊鎭� - backProductInfo(){ - if(this.backProduction===true){ + backFactoryInfo(){ + if(this.backFactory===true){ if(this.storeVals && this.storeVals.length>0){ let arr1 = this.storeVals.split(',') let arr2 = this.textVals.split(',') @@ -150,9 +150,9 @@ this.textVals = arr2.join(',') } this.$emit("change", this.storeVals) - this.backProductInfo() + this.backFactoryInfo() }, - + handleEmpty(){ this.handleOK('') } diff --git a/src/components/jeecgbiz/modal/JSelectEquipmentFactoryModal.vue b/src/components/jeecgbiz/modal/JSelectEquipmentFactoryModal.vue new file mode 100644 index 0000000..a310faf --- /dev/null +++ b/src/components/jeecgbiz/modal/JSelectEquipmentFactoryModal.vue @@ -0,0 +1,348 @@ +<template> + <j-modal + title="閫夋嫨杞﹂棿" + :width="modalWidth" + :visible="visible" + :confirmLoading="confirmLoading" + @ok="handleSubmit" + @cancel="handleCancel" + @update:fullscreen="isFullscreen" + wrapClassName="j-factory-select-modal" + switchFullscreen + cancelText="鍏抽棴"> + <a-spin tip="Loading..." :spinning="false"> + <a-input-search style="margin-bottom: 1px" placeholder="璇疯緭鍏ヨ溅闂村悕绉版寜鍥炶溅杩涜鎼滅储" @search="onSearch" /> + <a-tree + checkable + :class="treeScreenClass" + :treeData="treeData" + :checkStrictly="checkStrictly" + @check="onCheck" + @select="onSelect" + @expand="onExpand" + :autoExpandParent="autoExpandParent" + :expandedKeys="expandedKeys" + :checkedKeys="checkedKeys"> + + <template slot="title" slot-scope="{title}"> + <span v-if="title.indexOf(searchValue) > -1"> + {{title.substr(0, title.indexOf(searchValue))}} + <span style="color: #f50">{{searchValue}}</span> + {{title.substr(title.indexOf(searchValue) + searchValue.length)}} + </span> + <span v-else>{{title}}</span> + </template> + </a-tree> + </a-spin> + <!--搴曢儴鐖跺瓙鍏宠仈鎿嶄綔鍜岀‘璁ゅ彇娑堟寜閽�--> + <!--<template slot="footer">--> + <!--<div class="drawer-bootom-button">--> + <!--<a-dropdown style="float: left" :trigger="['click']" placement="topCenter">--> + <!--<a-menu slot="overlay">--> + <!--<a-menu-item key="1" @click="switchCheckStrictly(1)">鐖跺瓙鍏宠仈</a-menu-item>--> + <!--<a-menu-item key="2" @click="switchCheckStrictly(2)">鍙栨秷鍏宠仈</a-menu-item>--> + <!--</a-menu>--> + <!--<a-button>--> + <!--鏍戞搷浣� <a-icon type="up" />--> + <!--</a-button>--> + <!--</a-dropdown>--> + <!--<a-button @click="handleCancel" type="primary" style="margin-right: 0.8rem">鍏抽棴</a-button>--> + <!--<a-button @click="handleSubmit" type="primary" >纭</a-button>--> + <!--</div>--> + <!--</template>--> + </j-modal> +</template> + +<script> + import { queryFactoryTreeList } from '@/api/api' + import { getAction } from '@/api/manage' + export default { + name: 'JSelectEquipmentFactoryModal', + props:['modalWidth','multi','rootOpened','factoryId', 'store', 'text','treeOpera'], + data(){ + return { + visible:false, + confirmLoading:false, + treeData:[], + autoExpandParent:true, + expandedKeys:[], + dataList:[], + checkedKeys:[], + checkedRows:[], + searchValue:"", + checkStrictly: true, + fullscreen:false, + allTreeKeys:[], + url:{ + queryTreeIdList:'/base/factory/queryTreeIdList' + } + } + }, + created(){ + this.loadFactoryTree(); + }, + watch:{ + factoryId(){ + this.initDepartComponent() + }, + visible: { + handler() { + this.initDepartComponent(true) + } + } + }, + computed:{ + treeScreenClass() { + return { + 'my-dept-select-tree': true, + 'fullscreen': this.fullscreen, + } + }, + }, + methods:{ + loadFactoryTree(){ + getAction(this.url.queryTreeIdList).then(res => { + if (res.success) { + this.allTreeKeys = res.result + this.loadDepart() + } else { + // this.$message.warning(res.message) + this.$notification.warning({ + message:'娑堟伅', + description:res.message + }); + } + }).finally(() => { + this.loading = false + }) + }, + matterTree(data) { + for (var i = 0; i < data.length; i++) { + if(data[i].leaf == false){ + data[i].disabled = true + } + + // // 杩欓噷闈㈠氨鏄綘澶勭悊鏁版嵁鐨勫湴鏂� + // data[i].width = '200' + if (data[i].children && data[i].children.length > 0) { + // children鑻ヤ笉涓虹┖鏁扮粍锛屽垯缁х画 閫掑綊璋冪敤 鏈柟娉� + this.matterTree(data[i].children) + } + } + return data + }, + show(){ + this.visible=true + this.checkedRows=[] + this.checkedKeys=[] + }, + loadDepart(){ + // 杩欎釜鏂规硶鏄壘鍒版墍鏈夌殑閮ㄩ棬淇℃伅 + queryFactoryTreeList().then(res=>{ + if(res.success){ + let arr = [...res.result] + this.reWriterWithSlot(arr) + this.treeData = arr + this.initDepartComponent() + if(this.rootOpened){ + this.initExpandedKeys(res.result) + } + this.matterTree(this.treeData) + this.expandedKeys = this.allTreeKeys + } + }) + }, + initDepartComponent(flag){ + let arr = [] + //璇ユ柟娉曚袱涓湴鏂圭敤 1.visible鏀瑰彉浜嬩欢閲嶆柊璁剧疆閫変腑椤� 2.缁勪欢缂栬緫椤甸潰鍥炴樉 + let fieldName = flag==true?'key':this.text + if(this.factoryId){ + let arr2 = this.factoryId.split(',') + for(let item of this.dataList){ + if(arr2.indexOf(item[this.store])>=0){ + arr.push(item[fieldName]) + } + } + } + if(flag==true){ + this.checkedKeys = [...arr] + }else{ + this.$emit("initComp", arr.join(',')) + } + }, + reWriterWithSlot(arr){ + for(let item of arr){ + if(item.children && item.children.length>0){ + this.reWriterWithSlot(item.children) + let temp = Object.assign({},item) + temp.children = {} + this.dataList.push(temp) + }else{ + this.dataList.push(item) + item.scopedSlots={ title: 'title' } + } + } + }, + initExpandedKeys(arr){ + if(arr && arr.length>0){ + let keys = [] + for(let item of arr){ + if(item.children && item.children.length>0){ + keys.push(item.id) + } + } + this.expandedKeys=[...keys] + //鍏ㄩ儴keys + //this.allTreeKeys = [...keys] + }else{ + this.expandedKeys=[] + //this.allTreeKeys = [] + } + }, + onCheck (checkedKeys,info) { + if(!this.multi){ + let arr = checkedKeys.checked.filter(item => this.checkedKeys.indexOf(item) < 0) + this.checkedKeys = [...arr] + this.checkedRows = (this.checkedKeys.length === 0) ? [] : [info.node.dataRef] + }else{ + if(this.checkStrictly){ + this.checkedKeys = checkedKeys.checked + }else{ + this.checkedKeys = checkedKeys + } + this.checkedRows = this.getCheckedRows(this.checkedKeys) + } + }, + onSelect(selectedKeys,info) { + //鍙栨秷鍏宠仈鐨勬儏鍐典笅鎵嶈蛋onSelect鐨勯�昏緫 + if(this.checkStrictly){ + let keys = [] + keys.push(selectedKeys[0]) + if(!this.checkedKeys || this.checkedKeys.length===0 || !this.multi){ + this.checkedKeys = [...keys] + this.checkedRows=[info.node.dataRef] + }else{ + let currKey = info.node.dataRef.key + if(this.checkedKeys.indexOf(currKey)>=0){ + this.checkedKeys = this.checkedKeys.filter(item=> item !==currKey) + }else{ + this.checkedKeys.push(...keys) + } + } + this.checkedRows = this.getCheckedRows(this.checkedKeys) + } + }, + onExpand (expandedKeys) { + this.expandedKeys = expandedKeys + this.autoExpandParent = false + }, + handleSubmit(){ + if(!this.checkedKeys || this.checkedKeys.length==0){ + this.$emit("ok",'') + }else{ + let checkRow = this.getCheckedRows(this.checkedKeys) + let keyStr = this.checkedKeys.join(",") + this.$emit("ok", checkRow, keyStr) + } + this.handleClear() + }, + handleCancel(){ + this.handleClear() + }, + handleClear(){ + this.visible=false + this.checkedKeys=[] + }, + getParentKey(currKey,treeData){ + let parentKey + for (let i = 0; i < treeData.length; i++) { + const node = treeData[i] + if (node.children) { + if (node.children.some(item => item.key === currKey)) { + parentKey = node.key + } else if (this.getParentKey(currKey, node.children)) { + parentKey = this.getParentKey(currKey, node.children) + } + } + } + return parentKey + }, + onSearch(value){ + const expandedKeys = this.dataList.map((item) => { + if (item.title.indexOf(value) > -1) { + return this.getParentKey(item.key,this.treeData) + } + return null + }).filter((item, i, self) => item && self.indexOf(item) === i) + + Object.assign(this, { + expandedKeys, + searchValue: value, + autoExpandParent: true, + }) + + + }, + // 鏍规嵁 checkedKeys 鑾峰彇 rows + getCheckedRows(checkedKeys) { + const forChildren = (list, key) => { + for (let item of list) { + if (item.id === key) { + return item + } + if (item.children instanceof Array) { + let value = forChildren(item.children, key) + if (value != null) { + return value + } + } + } + return null + } + + let rows = [] + for (let key of checkedKeys) { + let row = forChildren(this.treeData, key) + if (row != null) { + rows.push(row) + } + } + return rows + }, + switchCheckStrictly (v) { + if(v==1){ + this.checkStrictly = false + }else if(v==2){ + this.checkStrictly = true + } + }, + isFullscreen(val){ + this.fullscreen=val + } + } + } + +</script> + +<style lang="less" scoped> + // 闄愬埗閮ㄩ棬閫夋嫨鏍戦珮搴︼紝閬垮厤閮ㄩ棬澶鏃剁偣鍑荤‘瀹氫笉渚� + .my-dept-select-tree{ + height:350px; + + &.fullscreen{ + height: calc(100vh - 250px); + } + overflow-y: scroll; + } + .drawer-bootom-button { + position: absolute; + bottom: 0; + width: 100%; + border-top: 1px solid #e8e8e8; + padding: 10px 16px; + text-align: right; + left: 0; + background: #fff; + border-radius: 0 0 2px 2px; + } +</style> \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js index c6e17e0..3d15c3c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -11,6 +11,7 @@ import Production from './modules/Production' //閮ㄩ棬鏍戞潈闄� import DepartTree from './modules/DepartTree' +import factory from './modules/factory' Vue.use(Vuex) @@ -22,6 +23,7 @@ enhance, online, Production, + factory, DepartTree }, state: { diff --git a/src/store/modules/factory.js b/src/store/modules/factory.js new file mode 100644 index 0000000..66239ee --- /dev/null +++ b/src/store/modules/factory.js @@ -0,0 +1,45 @@ +import Vue from 'vue' +import { SET_FACTORY } from "@/store/mutation-types" +import { getAction } from '@/api/manage' + +const Factory = { + state: { + token: '', + //浜х嚎鏍� + FactoryTree:[] + + }, + + mutations: { + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_FACTORY:(state,FactoryTree) => { + state.FactoryTree = FactoryTree + } + }, + + actions: { + // 浜х嚎鏍� + QueryFactory({ commit }) { + return new Promise((resolve, reject) => { + getAction("/mdc/mdcEquipment/queryTreeListByFactory").then(response => { + if(response.success){ + const result = response.result + Vue.ls.set(SET_FACTORY, result) + commit('SET_FACTORY', result) + resolve(response) + }else{ + resolve(response) + } + }).catch(error => { + reject(error) + }) + }) + }, + + + } +} + +export default Factory \ No newline at end of file diff --git a/src/store/mutation-types.js b/src/store/mutation-types.js index ec1f45c..8655479 100644 --- a/src/store/mutation-types.js +++ b/src/store/mutation-types.js @@ -30,4 +30,6 @@ //浜х嚎鏍� export const SYS_PRODUCTION = 'SYS_PRODUCTION' //閮ㄩ棬鏍戞潈闄� -export const SYS_DEPARTTREE = 'SYS_DEPARTTREE' \ No newline at end of file +export const SYS_DEPARTTREE = 'SYS_DEPARTTREE' + +export const SET_FACTORY = 'SET_FACTORY' \ No newline at end of file diff --git a/src/views/mdc/base/EquipmentList.vue b/src/views/mdc/base/EquipmentList.vue index ae5950e..d48afe9 100644 --- a/src/views/mdc/base/EquipmentList.vue +++ b/src/views/mdc/base/EquipmentList.vue @@ -107,7 +107,7 @@ <script> import UserModal from './modules/EquipmentList/UserModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import { queryProductionTreeListByMdc } from '@/api/api' + import { queryFactoryTreeList } from '@/api/api' import { mapActions } from 'vuex' export default { @@ -256,12 +256,12 @@ width: 200 // sorter: true }, - { - title: '瀹夎浣嶇疆', - align: 'center', - width: 200, - dataIndex: 'equipmentAddress' - }, + // { + // title: '瀹夎浣嶇疆', + // align: 'center', + // width: 200, + // dataIndex: 'equipmentAddress' + // }, { title: '杞﹂棿', align: 'center', @@ -406,7 +406,7 @@ * 璋冪敤鎺ュ彛鑾峰彇鏌ヨ鍖哄煙杞﹂棿鏍戝垪琛� */ getWorkshopListByApi() { - queryProductionTreeListByMdc().then(res => { + queryFactoryTreeList().then(res => { if (res.success) { this.workshopTreeData = res.result this.treeDefaultExpandedKeys = [...res.result].map(item => item.key) diff --git a/src/views/mdc/base/modules/EquipmentList/EquipmentModal.vue b/src/views/mdc/base/modules/EquipmentList/EquipmentModal.vue index ce4eb25..344325b 100644 --- a/src/views/mdc/base/modules/EquipmentList/EquipmentModal.vue +++ b/src/views/mdc/base/modules/EquipmentList/EquipmentModal.vue @@ -64,7 +64,7 @@ <!--杞﹂棿鍒嗛厤--> <a-form-model-item label="杞﹂棿鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled"> - <j-select-production v-model="model.selectedProduction" :multi="true" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-production> + <j-select-production v-model="model.selectedFactory" :multi="true" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-production> </a-form-model-item> <a-form-model-item label="璐熻矗閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow==true"> @@ -220,7 +220,7 @@ this.resetScreenSize(); that.userId = record.id; that.model = Object.assign({},{selectedroles:'',selecteddeparts:''}, record); - that.model = Object.assign({},{selectedroles:'',selectedProduction:''}, record); + that.model = Object.assign({},{selectedroles:'',selectedFactory:''}, record); //韬唤涓轰笂绾ф樉绀鸿礋璐i儴闂紝鍚﹀垯涓嶆樉绀� if(this.model.userIdentity==2){ @@ -305,7 +305,7 @@ } that.model.selecteddeparts = selectDepartKeys.join(",") - that.model.selectedProduction = selectDepartKeys.join(",") + that.model.selectedFactory = selectDepartKeys.join(",") that.nextDepartOptions=departOptions; console.log('that.nextDepartOptions=',that.nextDepartOptions) @@ -325,7 +325,7 @@ }) } - that.model.selectedProduction = selectProductKeys.join(",") + that.model.selectedFactory = selectProductKeys.join(",") that.nextProductionOptions=ProductionOptions; console.log('that.nextProductionOptions=',that.nextProductionOptions) @@ -341,7 +341,7 @@ }) }, backProductionInfo(info) { - this.model.productionIds = this.model.selectedProduction; + this.model.productionIds = this.model.selectedFactory; this.nextProductionOptions = info.map((item,index,arr)=>{ let c = {label:item.text, value: item.value+""} return c; diff --git a/src/views/mdc/base/modules/EquipmentList/UserModal.vue b/src/views/mdc/base/modules/EquipmentList/UserModal.vue index cb93b44..d22bb6d 100644 --- a/src/views/mdc/base/modules/EquipmentList/UserModal.vue +++ b/src/views/mdc/base/modules/EquipmentList/UserModal.vue @@ -57,12 +57,12 @@ </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="杞﹂棿鍒嗛厤" v-show="!productionDisabled" - ref="selectedProduction" prop="selectedProduction"> + <a-form-model-item label="杞﹂棿鍒嗛厤" v-show="!factoryDisabled" + ref="selectedFactory" prop="selectedFactory"> <!--<j-select-equipment-production v-decorator="['selectedProduction',{rules:[{required:true,message:'璇烽�夋嫨杞﹂棿!'}]}]" :multi="false" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"></j-select-equipment-production>--> - <j-select-equipment-production :disabled="disableSubmit" v-model="model.selectedProduction" :multi="false" - @back="backProductionInfo" :backProduction="true" - :treeProductOpera="true"></j-select-equipment-production> + <j-select-equipment-factory :disabled="disableSubmit" v-model="model.selectedFactory" :multi="false" + @back="backFactoryInfo" :backFactory="true" + :treeProductOpera="true"></j-select-equipment-factory> </a-form-model-item> </a-col> @@ -124,13 +124,13 @@ </a-row> <a-row :gutter="24"> - <a-col :span="12"> - <a-form-model-item label="绯荤粺绫诲瀷"> - <j-dict-select-tag placeholder="璇烽�夋嫨绯荤粺绫诲瀷" :triggerChange="true" dictCode="system_type" - :disabled="disableSubmit" - v-model="model.systemType" allow-clear/> - </a-form-model-item> - </a-col> +<!-- <a-col :span="12">--> +<!-- <a-form-model-item label="绯荤粺绫诲瀷">--> +<!-- <j-dict-select-tag placeholder="璇烽�夋嫨绯荤粺绫诲瀷" :triggerChange="true" dictCode="system_type"--> +<!-- :disabled="true"--> +<!-- v-model="model.systemType" allow-clear/>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> <a-col :span="12"> <a-form-model-item label="鎺掑簭"> <a-input :disabled="disableSubmit" :readOnly="disableSubmit" placeholder="璇疯緭鍏ユ帓搴�" @@ -139,22 +139,22 @@ </a-col> </a-row> - <a-row :gutter="24"> - <a-col :span='12' v-if="systemType"> - <a-form-model-item label="绯荤粺绫诲瀷"> - <a-radio-group name="radioGroup" v-model="systemValue" :disabled="disableSubmit"> - <a-radio value="1">DNC</a-radio> - <a-radio value="2">MDC</a-radio> - <a-radio value="3">閫氱敤</a-radio> - </a-radio-group> - </a-form-model-item> - </a-col> - <a-col :span='12'> - <a-form-model-item label="瀹夎浣嶇疆"> - <a-input v-model="model.equipmentAddress" allow-clear placeholder="璇疯緭鍏ュ畨瑁呬綅缃�" :disabled="disableSubmit"/> - </a-form-model-item> - </a-col> - </a-row> +<!-- <a-row :gutter="24">--> +<!-- <a-col :span='12' v-if="systemType">--> +<!-- <a-form-model-item label="绯荤粺绫诲瀷">--> +<!-- <a-radio-group name="radioGroup" v-model="systemValue" :disabled="disableSubmit">--> +<!-- <a-radio value="1">DNC</a-radio>--> +<!-- <a-radio value="2">MDC</a-radio>--> +<!-- <a-radio value="3">閫氱敤</a-radio>--> +<!-- </a-radio-group>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- <a-col :span='12'>--> +<!-- <a-form-model-item label="瀹夎浣嶇疆">--> +<!-- <a-input v-model="model.equipmentAddress" allow-clear placeholder="璇疯緭鍏ュ畨瑁呬綅缃�" :disabled="disableSubmit"/>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- </a-row>--> <a-row :gutter="24"> @@ -198,8 +198,8 @@ import { addEquipment, editEquipment } from '@/api/api' import { disabledAuthFilter } from '@/utils/authFilter' import { duplicateCheck } from '@/api/api' - import JSelectEquipmentProduction from '../../../../../components/jeecgbiz/JSelectEquipmentProduction' - import JSelectProduction from '../../../../../components/jeecgbiz/JSelectProduction' + import JSelectEquipmentFactory from '../../../../../components/jeecgbiz/JSelectEquipmentFactory' + import JSelectFactory from '../../../../../components/jeecgbiz/JSelectFactory' import DeviceListModel from './DeviceListModal' import JSelectEquipmentDepart from '../../../../../components/jeecgbiz/JSelectEquipmentDepart' import { mapActions } from 'vuex' @@ -207,15 +207,15 @@ export default { name: 'UserModal', components: { - JSelectProduction, + JSelectFactory, JSelectEquipmentDepart, - JSelectEquipmentProduction, + JSelectEquipmentFactory, DeviceListModel }, data() { return { departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰 - productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰 + factoryDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰 roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰 modalWidth: 800, drawerWidth: 700, @@ -240,7 +240,7 @@ ], // trigger: 'blur' // 瑙﹀彂鏂瑰紡 - selectedProduction: + selectedFactory: [ { required: true, message: '璇烽�夋嫨杞﹂棿锛�' @@ -289,7 +289,7 @@ fileUpload: window._CONFIG['domianURL'] + '/sys/common/upload', userWithDepart: '/mdc/mdcEquipment/equipmentDepartList', // 寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬮儴闂ㄤ俊鎭渶瑕佺殑url //寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬭溅闂翠俊鎭渶瑕佺殑url - userProductionList: '/mdc/mdcEquipment/equipmentProductionList', + equipmentFactoryList: '/mdc/mdcEquipment/equipmentFactoryList', userId: '/sys/user/generateUserId', // 寮曞叆鐢熸垚娣诲姞鐢ㄦ埛鎯呭喌涓嬬殑url syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//鍚屾鐢ㄦ埛鍒板伐浣滄祦 queryTenantList: '/sys/tenant/queryList', @@ -309,7 +309,7 @@ this.headers = { 'X-Access-Token': token } this.queryGroup() this.queryTreeData() - this.getAppPlatformName() + // this.getAppPlatformName() // this.initRoleList() // this.initTenantList() }, @@ -334,13 +334,13 @@ }).finally(() => { }) }, - getAppPlatformName() { - getAction(`/system/sysParams/query/by/settingKey?settingKey=system_type`).then(res => { - if (res.success) { - this.systemType = res.result.settingValue === '0' - } - }) - }, + // getAppPlatformName() { + // getAction(`/system/sysParams/query/by/settingKey?settingKey=system_type`).then(res => { + // if (res.success) { + // this.systemType = res.result.settingValue === '0' + // } + // }) + // }, queryGroup() { getAction(this.url.queryEquipmentType).then(res => { if (res.success) { @@ -412,7 +412,7 @@ // this.model = Object.assign({}, record) this.$nextTick(() => { - this.form.setFieldsValue(pick(that.model, 'selectedDeparts', 'selectedProduction', 'equipmentId', 'equipmentName', 'equipmentModel', 'equipmentType', 'equipmentIp', 'dataPort', + this.form.setFieldsValue(pick(that.model, 'selectedDeparts', 'selectedFactory', 'equipmentId', 'equipmentName', 'equipmentModel', 'equipmentType', 'equipmentIp', 'dataPort', 'driveType', 'sortNo', 'remark', 'systemVersion', 'devicePower', 'controlSystem', 'saveTableName', 'systemValue', 'equipmentAddress')) }) if (record.hasOwnProperty('id')) { @@ -467,24 +467,24 @@ } }) - getAction(that.url.userProductionList, { equipmentId: userid }).then((res) => { + getAction(that.url.equipmentFactoryList, { equipmentId: userid }).then((res) => { if (res.success) { // console.log(res.result) - let ProductionOptions = [] + let factoryOptions = [] let selectProductKeys = [] // console.log(res.result) for (let i = 0; i < res.result.length; i++) { selectProductKeys.push(res.result[i].key) //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗� - ProductionOptions.push({ + factoryOptions.push({ value: res.result[i].key, label: res.result[i].title }) } - that.model.selectedProduction = selectProductKeys.join(',') + that.model.selectedFactory = selectProductKeys.join(',') - that.nextProductionOptions = ProductionOptions + that.nextProductionOptions = factoryOptions // console.log('that.nextProductionOptions=',that.nextProductionOptions) } }) @@ -498,9 +498,9 @@ return c }) }, - backProductionInfo(info) { + backFactoryInfo(info) { // console.log(info) - this.model.productionIds = this.model.selectedProduction + this.model.productionIds = this.model.selectedFactory this.nextProductionOptions = info.map((item, index, arr) => { let c = { label: item.text, value: item.value + '' } return c diff --git a/src/views/mdc/common/BaseTree.vue b/src/views/mdc/common/BaseTree.vue index 445f539..a32611c 100644 --- a/src/views/mdc/common/BaseTree.vue +++ b/src/views/mdc/common/BaseTree.vue @@ -115,7 +115,7 @@ } , methods: { - ...mapActions(['QueryProduction']), + ...mapActions(['QueryFactory']), getCurrSelectedTitle() { return !this.currSelected.title ? '' : this.currSelected.title }, @@ -149,7 +149,7 @@ queryTreeData() { this.loading = true this.cardLoading = true - this.QueryProduction().then(res => { + this.QueryFactory().then(res => { if (res.success) { this.dataList = [] this.allTreeKeys = [] diff --git a/src/views/mes/MesProductionOrderList.vue b/src/views/mes/MesProductionOrderList.vue index db5a4c0..27c23e8 100644 --- a/src/views/mes/MesProductionOrderList.vue +++ b/src/views/mes/MesProductionOrderList.vue @@ -11,7 +11,7 @@ </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="璁㈠崟绫诲瀷"> - <j-dict-select-tag dictCode="orderCategory" placeholder="璇疯緭鍏ヨ鍗曠被鍨�" + <j-dict-select-tag dictCode="production_order_category" placeholder="璇烽�夋嫨璁㈠崟绫诲瀷" v-model="queryParam.orderCategory"></j-dict-select-tag> </a-form-item> </a-col> @@ -27,67 +27,20 @@ </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.order_status"></j-dict-select-tag> - </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.processRoute"></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.materialListCode"></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.factoryCode"></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.factoryName"></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.customerOrderModel"></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.customer"></j-input> + <j-dict-select-tag dictCode="production_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> + <a-button type="info" @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> - <!-- 楂樼骇鏌ヨ鍖哄煙 --> - <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> @@ -110,47 +63,11 @@ :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> + <a @click="handleDetail(record)">璇︽儏</a> </span> - </a-table> </div> @@ -164,7 +81,6 @@ import { mixinDevice } from '@/utils/mixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import MesProductionOrderModal from './modules/MesProductionOrderModal' -import { filterMultiDictText } from '@/components/dict/JDictSelectUtil' export default { name: 'MesProductionOrderList', @@ -185,22 +101,26 @@ align: 'center', customRender: function(t, r, index) { return parseInt(index) + 1 - } + }, + fixed: 'left', }, { title: '鐢熶骇璁㈠崟鍙�', align: 'center', - dataIndex: 'orderCode' + dataIndex: 'orderCode', + fixed: 'left', }, { title: '璁㈠崟绫诲瀷', align: 'center', - dataIndex: 'orderCategory' + dataIndex: 'orderCategory_dictText', + fixed: 'left', }, { title: '鐗╂枡缂栧彿', align: 'center', - dataIndex: 'materialNumber' + dataIndex: 'materialNumber', + fixed: 'left', }, { title: '鐗╂枡鍚嶇О', @@ -223,19 +143,24 @@ dataIndex: 'orderQuantity' }, { - title: '浜у搧鍗曚綅', + title: '鍩烘湰璁¢噺鍗曚綅', align: 'center', - dataIndex: 'productionUnit_dictText' + dataIndex: 'productionUnit' }, { title: '璁㈠崟鐘舵��', align: 'center', - dataIndex: 'orderStatus_dictText' + dataIndex: 'orderStatus' + }, + { + title: '璁㈠崟鐘舵�佹弿杩�', + align: 'center', + dataIndex: 'orderStatusName' }, { title: '浼樺厛绾�', align: 'center', - dataIndex: 'priority_dictText' + dataIndex: 'priority' }, { title: '璁″垝宸ヨ壓璺嚎', @@ -256,6 +181,36 @@ title: '宸ュ巶鍚嶇О', align: 'center', dataIndex: 'factoryName' + }, + { + title: '璋冨害鍛樼紪鍙�', + align: 'center', + dataIndex: 'dispatcherCode' + }, + { + title: '璋冨害鍛樺悕绉�', + align: 'center', + dataIndex: 'dispatcherName' + }, + { + title: '璁㈠崟鍒涘缓鏃ユ湡', + align: 'center', + dataIndex: 'orderCreateDate' + }, + { + title: '璁㈠崟鏇存柊鏃ユ湡', + align: 'center', + dataIndex: 'orderUpdateDate' + }, + { + title: '璁㈠崟鏇存柊鏃堕棿', + align: 'center', + dataIndex: 'orderUpdateTime' + }, + { + title: '璁㈠崟淇敼浜�', + align: 'center', + dataIndex: 'orderUpdateUser' }, { title: '瀹㈡埛鍨嬪彿', @@ -282,50 +237,16 @@ } ], url: { - list: '/mesproductionwork/mesProductionOrder/list', - delete: '/mesproductionwork/mesProductionOrder/delete', - deleteBatch: '/mesproductionwork/mesProductionOrder/deleteBatch', - exportXlsUrl: '/mesproductionwork/mesProductionOrder/exportXls', - importExcelUrl: 'mesproductionwork/mesProductionOrder/importExcel' - + list: '/mes/productionOrder/list', }, 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: 'orderCode', text: '鐢熶骇璁㈠崟鍙�', dictCode: '' }) - fieldList.push({ type: 'string', value: 'orderCategory', text: '璁㈠崟绫诲瀷', dictCode: '' }) - fieldList.push({ type: 'string', value: 'materialNumber', text: '鐗╂枡缂栧彿', dictCode: '' }) - fieldList.push({ type: 'string', value: 'materialName', text: '鐗╂枡鍚嶇О', dictCode: '' }) - fieldList.push({ type: 'datetime', value: 'planStart', text: '璁″垝寮�濮嬫棩鏈�' }) - fieldList.push({ type: 'datetime', value: 'planEnd', text: '璁″垝缁撴潫鏃ユ湡' }) - fieldList.push({ type: 'double', value: 'orderQuantity', text: '璁㈠崟鏁伴噺', dictCode: '' }) - fieldList.push({ type: 'string', value: 'productionUnit', text: '浜у搧鍗曚綅', dictCode: 'production_unit' }) - fieldList.push({ type: 'string', value: 'orderStatus', text: '璁㈠崟鐘舵��', dictCode: 'order_status' }) - fieldList.push({ type: 'string', value: 'priority', text: '浼樺厛绾�', dictCode: 'priority' }) - fieldList.push({ type: 'string', value: 'processRoute', text: '璁″垝宸ヨ壓璺嚎', dictCode: '' }) - fieldList.push({ type: 'string', value: 'materialListCode', text: '璁″垝鐗╂枡娓呭崟', dictCode: '' }) - fieldList.push({ type: 'string', value: 'factoryCode', text: '宸ュ巶缂栫爜', dictCode: '' }) - fieldList.push({ type: 'string', value: 'factoryName', text: '宸ュ巶鍚嶇О', dictCode: '' }) - fieldList.push({ type: 'string', value: 'customerOrderModel', text: '瀹㈡埛鍨嬪彿', dictCode: '' }) - fieldList.push({ type: 'string', value: 'customer', text: '瀹㈡埛鍚嶇О', dictCode: '' }) - fieldList.push({ type: 'string', value: 'remark', text: '澶囨敞', dictCode: '' }) - this.superFieldList = fieldList - } } } </script> diff --git a/src/views/mes/modules/MesProductionOrderForm.vue b/src/views/mes/modules/MesProductionOrderForm.vue index 904fb55..d21f065 100644 --- a/src/views/mes/modules/MesProductionOrderForm.vue +++ b/src/views/mes/modules/MesProductionOrderForm.vue @@ -1,91 +1,135 @@ <template> <a-spin :spinning="confirmLoading"> + <j-form-container disabled> + <a-form-model ref="form1" :model="model" :rules="validatorRules" slot="detail"> + <a-row> + <a-col :span="8"> + <a-form-model-item label="鐢熶骇璁㈠崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCode"> + <a-input v-model="model.orderCode" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCategory"> + <j-dict-select-tag v-model="model.orderCategory" dictCode="production_order_category"></j-dict-select-tag> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> + <a-input v-model="model.materialNumber"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> + <a-input v-model="model.materialName"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁″垝寮�濮嬫棩鏈�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planStart"> + <j-date v-model="model.planStart" :show-time="true" + date-format="YYYY-MM-DD" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁″垝缁撴潫鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planEnd"> + <j-date v-model="model.planEnd" :show-time="true" + date-format="YYYY-MM-DD" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderQuantity"> + <a-input-number v-model="model.orderQuantity" style="width: 100%" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="鍩烘湰璁¢噺鍗曚綅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionUnit"> + <a-input v-model="model.productionUnit" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderStatus"> + <a-input v-model="model.orderStatus" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟鐘舵�佹弿杩�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderStatusName"> + <a-input v-model="model.orderStatusName" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="priority"> + <a-input v-model="model.priority" /> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁″垝宸ヨ壓璺嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processRoute"> + <a-input v-model="model.processRoute" placeholder="璇疯緭鍏ヨ鍒掑伐鑹鸿矾绾�"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁″垝鐗╂枡娓呭崟" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="materialListCode"> + <a-input v-model="model.materialListCode"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="宸ュ巶缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryCode"> + <a-input v-model="model.factoryCode"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="宸ュ巶鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryName"> + <a-input v-model="model.factoryName" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璋冨害鍛樼紪鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="dispatcherCode"> + <a-input v-model="model.dispatcherCode"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璋冨害鍛樺悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="dispatcherName"> + <a-input v-model="model.dispatcherName" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟鍒涘缓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCreateDate"> + <a-input v-model="model.orderCreateDate"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟鏇存柊鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderUpdateDate"> + <a-input v-model="model.orderUpdateDate" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderUpdateTime"> + <a-input v-model="model.orderUpdateTime"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="8"> + <a-form-model-item label="璁㈠崟淇敼浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderUpdateUser"> + <a-input v-model="model.orderUpdateUser" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </j-form-container> <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="orderCode"> - <a-input v-model="model.orderCode" placeholder="璇疯緭鍏ョ敓浜ц鍗曞彿" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="璁㈠崟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCategory"> - <j-dict-select-tag v-model="model.orderCategory" dictCode="orderCategory" placeholder="璇疯緭鍏ヨ鍗曠被鍨�" ></j-dict-select-tag> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> - <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="璁″垝寮�濮嬫棩鏈�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planStart"> - <j-date placeholder="璇烽�夋嫨璁″垝寮�濮嬫棩鏈�" v-model="model.planStart" :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="planEnd"> - <j-date placeholder="璇烽�夋嫨璁″垝缁撴潫鏃ユ湡" v-model="model.planEnd" :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="orderQuantity"> - <a-input-number v-model="model.orderQuantity" placeholder="璇疯緭鍏ヨ鍗曟暟閲�" style="width: 100%" /> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="浜у搧鍗曚綅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionUnit"> - <j-dict-select-tag type="list" v-model="model.productionUnit" dictCode="production_unit" placeholder="璇烽�夋嫨浜у搧鍗曚綅" /> - </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="priority"> - <j-dict-select-tag type="list" v-model="model.priority" dictCode="priority" placeholder="璇烽�夋嫨浼樺厛绾�" /> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="璁″垝宸ヨ壓璺嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processRoute"> - <a-input v-model="model.processRoute" placeholder="璇疯緭鍏ヨ鍒掑伐鑹鸿矾绾�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="璁″垝鐗╂枡娓呭崟" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialListCode"> - <a-input v-model="model.materialListCode" placeholder="璇疯緭鍏ヨ鍒掔墿鏂欐竻鍗�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="宸ュ巶缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryCode"> - <a-input v-model="model.factoryCode" placeholder="璇疯緭鍏ュ伐鍘傜紪鐮�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="宸ュ巶鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryName"> - <a-input v-model="model.factoryName" placeholder="璇疯緭鍏ュ伐鍘傚悕绉�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> <a-form-model-item label="瀹㈡埛鍨嬪彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="customerOrderModel"> - <a-input v-model="model.customerOrderModel" placeholder="璇疯緭鍏ュ鎴峰瀷鍙�" ></a-input> + <a-input v-model="model.customerOrderModel" placeholder="璇疯緭鍏ュ鎴峰瀷鍙�"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="瀹㈡埛鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="customer"> - <a-input v-model="model.customer" placeholder="璇疯緭鍏ュ鎴峰悕绉�" ></a-input> + <a-input v-model="model.customer" placeholder="璇疯緭鍏ュ鎴峰悕绉�"></a-input> </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-col :span="24"> + <a-form-model-item label="澶囨敞" :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark"> + <a-textarea v-model="model.remark" placeholder="璇疯緭鍏ュ娉�"></a-textarea> </a-form-model-item> </a-col> </a-row> @@ -96,89 +140,92 @@ <script> - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' +import { httpAction } from '@/api/manage' - export default { - name: 'MesProductionOrderForm', - components: { - }, - props: { - //琛ㄥ崟绂佺敤 - disabled: { - type: Boolean, - default: false, - required: false +export default { + name: 'MesProductionOrderForm', + components: {}, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data() { + return { + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 3 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 20 } + }, + confirmLoading: false, + validatorRules: {}, + url: { + edit: '/mes/productionOrder/edit', + queryById: '/mes/productionOrder/queryById' } + } + }, + computed: { + formDisabled() { + return this.disabled + } + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)) + }, + methods: { + add() { + this.edit(this.modelDefault) }, - data () { - return { - model:{ - }, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - confirmLoading: false, - validatorRules: { - }, - url: { - add: "/mesproductionwork/mesProductionOrder/add", - edit: "/mesproductionwork/mesProductionOrder/edit", - queryById: "/mesproductionwork/mesProductionOrder/queryById" - } - } + edit(record) { + this.model = Object.assign({}, record) + this.visible = true }, - 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; - }) + 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/mes/modules/MesProductionOrderModal.vue b/src/views/mes/modules/MesProductionOrderModal.vue index a21838d..4623da5 100644 --- a/src/views/mes/modules/MesProductionOrderModal.vue +++ b/src/views/mes/modules/MesProductionOrderModal.vue @@ -8,53 +8,55 @@ :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @cancel="handleCancel" cancelText="鍏抽棴"> - <mes-production-order-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></mes-production-order-form> + <mes-production-order-form ref="realForm" @ok="submitCallback" + :disabled="disableSubmit"></mes-production-order-form> </j-modal> </template> <script> - import MesProductionOrderForm from './MesProductionOrderForm' - export default { - name: 'MesProductionOrderModal', - components: { - MesProductionOrderForm +import MesProductionOrderForm from './MesProductionOrderForm' + +export default { + name: 'MesProductionOrderModal', + components: { + MesProductionOrderForm + }, + data() { + return { + title: '', + width: 1200, + visible: false, + disableSubmit: false + } + }, + methods: { + add() { + this.visible = true + this.$nextTick(() => { + this.$refs.realForm.add() + }) }, - data () { - return { - title:'', - width:896, - visible: false, - disableSubmit: false - } + edit(record) { + this.visible = true + this.$nextTick(() => { + this.$refs.realForm.edit(record) + }) }, - 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() - } + 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/pms/PmsMaterialProcessList.vue b/src/views/pms/PmsMaterialProcessList.vue index 68bfa0c..99cd1c5 100644 --- a/src/views/pms/PmsMaterialProcessList.vue +++ b/src/views/pms/PmsMaterialProcessList.vue @@ -4,46 +4,38 @@ <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-col :xl="4" :lg="7" :md="8" :sm="24"> + <a-form-item label="璁㈠崟鍙�"> + <a-input placeholder="璇疯緭鍏ヨ鍗曞彿" v-model="queryParam.orderCode" allowClear></a-input> + </a-form-item> + </a-col> + <a-col :xl="4" :lg="7" :md="8" :sm="24"> <a-form-item label="鐗╂枡缂栫爜"> - <j-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" v-model="queryParam.materialNumber"></j-input> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" v-model="queryParam.materialNumber" allowClear></a-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.materialName"></j-input> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-model="queryParam.materialName" allowClear></a-input> + </a-form-item> + </a-col> + <a-col :xl="4" :lg="7" :md="8" :sm="24"> + <a-form-item label="宸ュ簭鍙�"> + <a-input placeholder="璇疯緭鍏ュ伐搴忓彿" v-model="queryParam.processCode" allowClear></a-input> </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> + <a-button type="info" @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> - <!-- 楂樼骇鏌ヨ鍖哄煙 --> - <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" @@ -54,160 +46,97 @@ :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> + <a @click="handleDetail(record)">璇︽儏</a> </span> - </a-table> </div> - <pms-material-process-modal ref="modalForm" @ok="modalFormOk"></pms-material-process-modal> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import { mixinDevice } from '@/utils/mixin' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import PmsMaterialProcessModal from './modules/PmsMaterialProcessModal' +import '@/assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import PmsMaterialProcessModal from './modules/PmsMaterialProcessModal' - export default { - name: 'PmsMaterialProcessList', - mixins:[JeecgListMixin, mixinDevice], - components: { - PmsMaterialProcessModal - }, - 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: 'materialNumber' - }, - { - title:'鐗╂枡鍚嶇О', - align:"center", - dataIndex: 'materialName' - }, - { - title:'浜х嚎ID(SAP宸ヤ綔涓績)', - align:"center", - dataIndex: 'factoryId_dictText' - }, - { - title:'宸ュ簭鍙�', - align:"center", - dataIndex: 'processCode' - }, - { - title:'宸ュ簭鍚嶇О', - align:"center", - dataIndex: 'processName' - }, - { - title:'鎺у埗鐮�', - align:"center", - dataIndex: 'controlCode' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } +export default { + name: 'PmsMaterialProcessList', + mixins: [JeecgListMixin, mixinDevice], + components: { + PmsMaterialProcessModal + }, + data() { + return { + description: '鐗╂枡宸ュ簭绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } - ], - url: { - list: "/pms/pmsMaterialProcess/list", - delete: "/pms/pmsMaterialProcess/delete", - deleteBatch: "/pms/pmsMaterialProcess/deleteBatch", - exportXlsUrl: "/pms/pmsMaterialProcess/exportXls", - importExcelUrl: "pms/pmsMaterialProcess/importExcel", - }, - dictOptions:{}, - superFieldList:[], - } - }, - created() { - this.getSuperFieldList(); - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + { + title: '璁㈠崟鍙�', + align: 'center', + dataIndex: 'orderCode' + }, + { + title: '鐗╂枡缂栫爜', + align: 'center', + dataIndex: 'materialNumber' + }, + { + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' + }, + { + title: '宸ュ簭鍙�', + align: 'center', + dataIndex: 'processCode' + }, + { + title: '宸ュ簭鍚嶇О', + align: 'center', + dataIndex: 'processName' + }, + { + title: '鎺у埗鐮�', + align: 'center', + dataIndex: 'controlCode' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + fixed: 'right', + width: 147, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: '/pms/materialProcess/list' + }, - }, - methods: { - initDictConfig(){ - }, - getSuperFieldList(){ - let fieldList=[]; - fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) - fieldList.push({type:'string',value:'materialNumber',text:'鐗╂枡缂栫爜',dictCode:''}) - fieldList.push({type:'string',value:'materialName',text:'鐗╂枡鍚嶇О',dictCode:''}) - fieldList.push({type:'string',value:'factoryId',text:'浜х嚎ID(SAP宸ヤ綔涓績)',dictCode:''}) - fieldList.push({type:'string',value:'processCode',text:'宸ュ簭鍙�',dictCode:''}) - fieldList.push({type:'string',value:'processName',text:'宸ュ簭鍚嶇О',dictCode:''}) - fieldList.push({type:'string',value:'controlCode',text:'鎺у埗鐮�',dictCode:''}) - this.superFieldList = fieldList - } + dictOptions: {} } - } + }, + created() { + }, + computed: {}, + methods: {} +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file diff --git a/src/views/pms/PmsProcessBillMaterialsList.vue b/src/views/pms/PmsProcessBillMaterialsList.vue index 8e8f6bd..ec47455 100644 --- a/src/views/pms/PmsProcessBillMaterialsList.vue +++ b/src/views/pms/PmsProcessBillMaterialsList.vue @@ -5,19 +5,24 @@ <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="璁㈠崟鍙�"> + <a-input placeholder="璇疯緭鍏ヨ鍗曞彿" v-model="queryParam.orderCode" allowClear></a-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.materialNumber"></j-input> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" v-model="queryParam.materialNumber" allowClear></a-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.materialName"></j-input> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-model="queryParam.materialName" allowClear></a-input> </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> + <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> </span> </a-col> </a-row> @@ -25,24 +30,8 @@ </div> <!-- 鏌ヨ鍖哄煙-END --> - <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> - <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <!-- 楂樼骇鏌ヨ鍖哄煙 --> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="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" @@ -53,189 +42,152 @@ :dataSource="dataSource" :pagination="ipagination" :loading="loading" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" class="j-table-force-nowrap" + :expandedRowKeys.sync="expandedRowKeys" + @expand="handleExpand" @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> - + <a-table + slot="expandedRowRender" + slot-scope="text" + :scroll="{x:true}" + :columns="innerColumns" + :data-source="innerData" + :pagination="false" + ></a-table> <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> - <span slot="figureNum" slot-scope="text, record"> - <span v-if="record.materialNumber == null || '' == record.materialNumber">鏃犳暟鎹�</span> - <span v-else> - <a-popover placement="top" :title="'鐗╂枡鍩烘湰淇℃伅:'" arrow-point-at-center> - <template slot="content"> - </template> - <a-button class="fontweight" style="font-weight: bold;color: inherit;" @click="handleMaterialClick(record)"> - {{ record.materialNumber }} - </a-button> - </a-popover> - </span> + <a @click="handleDetail(record)">璇︽儏</a> </span> </a-table> </div> - <pms-process-bill-materials-modal ref="modalForm" @ok="modalFormOk"></pms-process-bill-materials-modal> - <PmsProcessBillMaterialsDetailModal ref="PmsProcessBillMaterialsDetailModal"></PmsProcessBillMaterialsDetailModal> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import { mixinDevice } from '@/utils/mixin' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import PmsProcessBillMaterialsModal from './modules/PmsProcessBillMaterialsModal' - import PmsProcessBillMaterialsDetailModal from './modules/PmsProcessBillMaterialsDetailModal.vue' - import { getAction } from '@api/manage' +import '@/assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import PmsProcessBillMaterialsModal from './modules/PmsProcessBillMaterialsModal' +import { getAction } from '@api/manage' - export default { - name: 'PmsProcessBillMaterialsList', - mixins:[JeecgListMixin, mixinDevice], - components: { - PmsProcessBillMaterialsModal, - PmsProcessBillMaterialsDetailModal - }, - data () { - return { - description: '璁㈠崟BOM绠$悊椤甸潰', - // 琛ㄥご - columns: [ - { - title: '#', - dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title:'鐢熸垚璁㈠崟ID', - align:"center", - dataIndex: 'orderId' - }, - { - title:'鐗╂枡缂栫爜', - align:"center", - dataIndex: 'materialNumber', - defaultSortOrder: 'descend', - scopedSlots: { customRender: 'figureNum', }, - }, - { - title:'鐗╂枡鍚嶇О', - align:"center", - dataIndex: 'materialName' - }, - { - title:'BOM浠g爜', - align:"center", - dataIndex: 'billMaterialsCode' - }, - { - title:'鍩烘湰鍗曚綅', - align:"center", - dataIndex: 'productionUnit' - }, - { - title:'璁㈠崟鏁伴噺', - align:"center", - dataIndex: 'productionQuantity' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } +export default { + name: 'PmsProcessBillMaterialsList', + mixins: [JeecgListMixin, mixinDevice], + components: { + PmsProcessBillMaterialsModal + }, + data() { + return { + description: '璁㈠崟BOM绠$悊椤甸潰', + innerData: [], + expandedRowKeys: [], + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } - ], - url: { - list: "/pmsprocessbillmaterials/pmsProcessBillMaterials/list", - delete: "/pmsprocessbillmaterials/pmsProcessBillMaterials/delete", - deleteBatch: "/pmsprocessbillmaterials/pmsProcessBillMaterials/deleteBatch", - exportXlsUrl: "/pmsprocessbillmaterials/pmsProcessBillMaterials/exportXls", - importExcelUrl: "pmsprocessbillmaterials/pmsProcessBillMaterials/importExcel", - queryByMaterialId:'/pms/pmsProcessBillMaterialsDetail/queryByMaterialId' }, - dictOptions:{}, - superFieldList:[], - } - }, - created() { - this.getSuperFieldList(); - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + { + title: '璁㈠崟鍙�', + align: 'center', + dataIndex: 'orderCode' + }, + { + title: '鐗╂枡缂栫爜', + align: 'center', + dataIndex: 'materialNumber' + }, + { + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' + }, + { + title: '鍩烘湰鍗曚綅', + align: 'center', + dataIndex: 'productionUnit' + }, + { + title: '璁㈠崟鏁伴噺', + align: 'center', + dataIndex: 'productionQuantity' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + width: 147, + scopedSlots: { customRender: 'action' } + } + ], + innerColumns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '鐗╂枡缂栫爜', + align: 'center', + dataIndex: 'materialNumber' + }, + { + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' + }, + { + title: '鍩烘湰鍗曚綅', + align: 'center', + dataIndex: 'productionUnit' + }, + { + title: '闇�姹傛暟閲�', + align: 'center', + dataIndex: 'usageQuantity' + } + ], + url: { + list: '/pms/processBillMaterials/list', + queryByMaterialId: '/pms/processBillMaterialsDetail/queryByMaterialId' }, - }, - methods: { - handleMaterialClick(record){ - console.log('record----->',record) - getAction(this.url.queryByMaterialId,{'materialId':record.id}).then(res=>{ + } + }, + created() { + }, + computed: {}, + methods: { + handleExpand(expanded, record) { + let that = this + if(expanded) { + this.expandedRowKeys = [record.id]; + getAction(that.url.queryByMaterialId, {materialId: record.id}).then((res)=>{ if(res.success){ - this.$refs.PmsProcessBillMaterialsDetailModal.edit(res.result); - this.$refs.PmsProcessBillMaterialsDetailModal.title="鐗╂枡娓呭崟"; - this.$refs.PmsProcessBillMaterialsDetailModal.disableSubmit = true; + this.innerData = [...res.result]; }else{ - this.$message.error('娌℃煡鍒版暟鎹紝璇疯仈绯荤鐞嗗憳') + that.$message.warning(res.message); + this.innerData = []; } }) - }, - initDictConfig(){ - }, - getSuperFieldList(){ - let fieldList=[]; - fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) - fieldList.push({type:'string',value:'orderId',text:'鐢熸垚璁㈠崟ID',dictCode:''}) - fieldList.push({type:'string',value:'materialNumber',text:'鐗╂枡缂栫爜',dictCode:''}) - fieldList.push({type:'string',value:'materialName',text:'鐗╂枡鍚嶇О',dictCode:''}) - fieldList.push({type:'string',value:'billMaterialsCode',text:'BOM浠g爜',dictCode:''}) - fieldList.push({type:'string',value:'productionUnit',text:'鍩烘湰鍗曚綅',dictCode:''}) - fieldList.push({type:'double',value:'productionQuantity',text:'璁㈠崟鏁伴噺',dictCode:''}) - this.superFieldList = fieldList + } else { + this.expandedRowKeys = []; } } } +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file diff --git a/src/views/pms/modules/PmsMaterialProcessForm.vue b/src/views/pms/modules/PmsMaterialProcessForm.vue index d76e154..11de4cb 100644 --- a/src/views/pms/modules/PmsMaterialProcessForm.vue +++ b/src/views/pms/modules/PmsMaterialProcessForm.vue @@ -4,50 +4,33 @@ <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="orderCode"> + <a-input v-model="model.orderCode"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> <a-form-model-item label="鐗╂枡缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" ></a-input> + <a-input v-model="model.materialNumber"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> - <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="浜х嚎ID(SAP宸ヤ綔涓績)" :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-input v-model="model.materialName"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="宸ュ簭鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processCode"> - <a-input v-model="model.processCode" placeholder="璇疯緭鍏ュ伐搴忓彿" ></a-input> + <a-input v-model="model.processCode"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="宸ュ簭鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processName"> - <a-input v-model="model.processName" placeholder="璇疯緭鍏ュ伐搴忓悕绉�" ></a-input> + <a-input v-model="model.processName"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鎺у埗鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="controlCode"> - <a-input v-model="model.controlCode" placeholder="璇疯緭鍏ユ帶鍒剁爜" ></a-input> + <a-input v-model="model.controlCode"></a-input> </a-form-model-item> </a-col> </a-row> @@ -58,115 +41,50 @@ <script> - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' - import JSelectFactory from '@comp/jeecgbiz/JSelectFactory.vue' - import JTreeDict from '@/components/jeecg/JTreeDict'//鍒嗙被瀛楀吀鏍戝舰涓嬫媺缁勪欢 - - export default { - name: 'PmsMaterialProcessForm', - components: { - JSelectFactory, - JTreeDict - }, - 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' } - ], - materialNumber: [ - { required: true, message: '鐗╂枡缂栫爜鏄繀閫夐」', trigger: 'change' } - ], - materialName: [ - { required: true, message: '鐗╂枡鍚嶇О鏄繀閫夐」', trigger: 'change' } - ], - processCode: [ - { required: true, message: '宸ュ簭鍙锋槸蹇呴�夐」', trigger: 'change' } - ], - processName: [ - { required: true, message: '宸ュ簭鍚嶇О鏄繀閫夐」', trigger: 'change' } - ], - }, - url: { - add: "/pms/pmsMaterialProcess/add", - edit: "/pms/pmsMaterialProcess/edit", - queryById: "/pms/pmsMaterialProcess/queryById" - } - } - }, - computed: { - formDisabled(){ - return this.disabled +export default { + name: 'PmsMaterialProcessForm', + 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: {}, + url: {} + } + }, + computed: { + formDisabled() { + return this.disabled + } + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)) + }, + methods: { + add() { + this.edit(this.modelDefault) }, - 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; - }) - } - - }) - }, + edit(record) { + this.model = Object.assign({}, record) + this.visible = true } } +} </script> \ No newline at end of file diff --git a/src/views/pms/modules/PmsProcessBillMaterialsForm.vue b/src/views/pms/modules/PmsProcessBillMaterialsForm.vue index 68e2d88..cc12488 100644 --- a/src/views/pms/modules/PmsProcessBillMaterialsForm.vue +++ b/src/views/pms/modules/PmsProcessBillMaterialsForm.vue @@ -4,33 +4,28 @@ <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="orderId"> - <a-input v-model="model.orderId" placeholder="璇疯緭鍏ョ敓鎴愯鍗旾D" ></a-input> + <a-form-model-item label="璁㈠崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCode"> + <a-input v-model="model.orderCode"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鐗╂枡缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" ></a-input> + <a-input v-model="model.materialNumber"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> - <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="BOM浠g爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="billMaterialsCode"> - <a-input v-model="model.billMaterialsCode" placeholder="璇疯緭鍏OM浠g爜" ></a-input> + <a-input v-model="model.materialName"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鍩烘湰鍗曚綅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionUnit"> - <a-input v-model="model.productionUnit" placeholder="璇疯緭鍏ュ熀鏈崟浣�" ></a-input> + <a-input v-model="model.productionUnit"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="璁㈠崟鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productionQuantity"> - <a-input-number v-model="model.productionQuantity" placeholder="璇疯緭鍏ヨ鍗曟暟閲�" style="width: 100%" /> + <a-input-number v-model="model.productionQuantity" style="width: 100%" /> </a-form-model-item> </a-col> </a-row> @@ -41,104 +36,54 @@ <script> - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' +import { httpAction } from '@/api/manage' - export default { - name: 'PmsProcessBillMaterialsForm', - 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: { - orderId: [ - { required: true, message: '鐢熸垚璁㈠崟鏄繀閫夐」', trigger: 'change' } - ], - materialNumber: [ - { required: true, message: '鐗╂枡缂栫爜鏄繀濉」', trigger: 'change' } - ], - materialName: [ - { required: true, message: '鐗╂枡鍚嶇О鏄繀濉」', trigger: 'change' } - ], - productionUnit: [ - { required: true, message: '鍩烘湰鍗曚綅鏄繀濉」', trigger: 'change' } - ], - productionQuantity: [ - { required: true, message: '璁㈠崟鏁伴噺鏄繀濉」', trigger: 'change' } - ], - }, - url: { - add: "/pmsprocessbillmaterials/pmsProcessBillMaterials/add", - edit: "/pmsprocessbillmaterials/pmsProcessBillMaterials/edit", - queryById: "/pmsprocessbillmaterials/pmsProcessBillMaterials/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; - }) - } - - }) - }, +export default { + name: 'PmsProcessBillMaterialsForm', + 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: { + }, + url: { + } + } + }, + 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 + }, } +} </script> \ No newline at end of file diff --git a/src/views/pms/modules/PmsProcessBillMaterialsModal.vue b/src/views/pms/modules/PmsProcessBillMaterialsModal.vue index 806a2e2..d6fce85 100644 --- a/src/views/pms/modules/PmsProcessBillMaterialsModal.vue +++ b/src/views/pms/modules/PmsProcessBillMaterialsModal.vue @@ -8,53 +8,55 @@ :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @cancel="handleCancel" cancelText="鍏抽棴"> - <pms-process-bill-materials-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></pms-process-bill-materials-form> + <pms-process-bill-materials-form ref="realForm" @ok="submitCallback" + :disabled="disableSubmit"></pms-process-bill-materials-form> </j-modal> </template> <script> - import PmsProcessBillMaterialsForm from './PmsProcessBillMaterialsForm' - export default { - name: 'PmsProcessBillMaterialsModal', - components: { - PmsProcessBillMaterialsForm +import PmsProcessBillMaterialsForm from './PmsProcessBillMaterialsForm' + +export default { + name: 'PmsProcessBillMaterialsModal', + components: { + PmsProcessBillMaterialsForm + }, + data() { + return { + title: '', + width: 896, + visible: false, + disableSubmit: false + } + }, + methods: { + add() { + this.visible = true + this.$nextTick(() => { + this.$refs.realForm.add() + }) }, - data () { - return { - title:'', - width:896, - visible: false, - disableSubmit: false - } + edit(record) { + this.visible = true + this.$nextTick(() => { + this.$refs.realForm.edit(record) + }) }, - 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() - } + 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/system/SysApiLogList.vue b/src/views/system/SysApiLogList.vue new file mode 100644 index 0000000..bfe102b --- /dev/null +++ b/src/views/system/SysApiLogList.vue @@ -0,0 +1,198 @@ +<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="API鍒嗙被"> + <j-search-select-tag + placeholder="璇烽�夋嫨API鍒嗙被" + v-model="queryParam.apiCategory" + dict="api_log_category" + /> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鎺ュ彛鍚嶇О"> + <j-input placeholder="璇疯緭鍏ユ帴鍙e悕绉�" v-model="queryParam.apiName"></j-input> + </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="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + </span> + </a-col> + + </a-row> + </a-form> + </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" + :scroll="{ x: 200 }" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + @change="handleTableChange"> + <span slot="action" slot-scope="text, record"> + <a @click="handleDetail(record)">璇︽儏</a> + </span> + </a-table> + </div> + <!-- table鍖哄煙-end --> + + <!-- 琛ㄥ崟鍖哄煙 --> + <sysApiLog-modal ref="modalForm" @ok="modalFormOk"></sysApiLog-modal> + </a-card> +</template> + +<script> +import '@/assets/less/TableExpand.less' +import SysApiLogModal from './modules/SysApiLogModal' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' + +export default { + name: 'SysApiLogList', + mixins: [JeecgListMixin], + components: { + SysApiLogModal + }, + data() { + return { + description: '绯荤粺绗笁鏂归泦鎴愭帴鍙f棩蹇楃鐞嗛〉闈�', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + }, + fixed: 'left', + }, + { + title: 'API鍒嗙被', + align: 'center', + dataIndex: 'apiCategory', + fixed: 'left', + width: 100, + }, + { + title: '鎺ュ彛鍚嶇О', + align: 'center', + dataIndex: 'apiName', + fixed: 'left', + width: 200, + ellipsis: true, + }, + { + title: '璇锋眰鏃堕棿', + align: 'center', + dataIndex: 'requestTime', + width: 150, + }, + { + title: '鍝嶅簲鏃堕棿', + align: 'center', + dataIndex: 'responseTime', + width: 150, + }, + { + title: '璇锋眰鏂瑰紡', + align: 'center', + dataIndex: 'requestMethod', + width: 100, + }, + { + title: '璇锋眰URL', + align: 'center', + dataIndex: 'requestUrl', + width: 200, + ellipsis: true, + }, + { + title: '璇锋眰澶�', + align: 'center', + dataIndex: 'requestHeaders', + width: 200, + ellipsis: true, + }, + { + title: '璇锋眰浣�', + align: 'center', + dataIndex: 'requestBody', + width: 200, + ellipsis: true, + }, + { + title: '鍝嶅簲缂栫爜', + align: 'center', + dataIndex: 'responseCode', + width: 100, + }, + { + title: '鍝嶅簲娑堟伅', + align: 'center', + dataIndex: 'responseMessage', + width: 200, + }, + { + title: '鍝嶅簲浣�', + align: 'center', + dataIndex: 'responseBody', + width: 200, + ellipsis: true, + }, + { + title: '鐘舵��', + align: 'center', + dataIndex: 'requestStatus', + width: 100, + }, + { + title: '璋冪敤鏂规硶', + align: 'center', + dataIndex: 'method', + width: 200, + ellipsis: true, + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + scopedSlots: { customRender: 'action' }, + fixed: 'right', + } + ], + url: { + list: '/system/sysApiLog/list', + } + } + }, + computed: { + }, + methods: {} +} +</script> +<style scoped> +@import '~@assets/less/common.less'; +</style> \ No newline at end of file diff --git a/src/views/system/modules/SysApiLogModal.vue b/src/views/system/modules/SysApiLogModal.vue new file mode 100644 index 0000000..7e18dfd --- /dev/null +++ b/src/views/system/modules/SysApiLogModal.vue @@ -0,0 +1,189 @@ +<template> + <j-modal + :title="title" + :width="800" + :visible="visible" + :confirmLoading="confirmLoading" + fullscreen + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @ok="handleOk" + @cancel="handleCancel" + cancelText="鍏抽棴"> + + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-row> + <a-col :span="12"> + <a-form-model-item prop="apiCategory" label="API鍒嗙被"> + <a-input v-model="model.apiCategory" readonly /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item prop="apiName" label="鎺ュ彛鍚嶇О"> + <a-input v-model="model.apiName" readonly /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="12"> + <a-form-model-item prop="requestTime" label="璇锋眰鏃堕棿"> + <a-input v-model="model.requestTime" readonly /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item prop="responseTime" label="鍝嶅簲鏃堕棿"> + <a-input v-model="model.responseTime" readonly /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="12"> + <a-form-model-item prop="requestMethod" label="璇锋眰鏂瑰紡"> + <a-input v-model="model.requestMethod" readonly /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item prop="requestStatus" label="璇锋眰鐘舵��"> + <a-input v-model="model.requestStatus" readonly /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="12"> + <a-form-model-item prop="responseCode" label="鍝嶅簲缂栫爜"> + <a-input v-model="model.responseCode" readonly /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item prop="responseMessage" label="鍝嶅簲娑堟伅"> + <a-input v-model="model.responseMessage" readonly /> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="requestUrl" + label="璇锋眰URL"> + <a-textarea v-model="model.requestUrl" :rows="1" readonly /> + </a-form-model-item> + </a-row> + <a-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="requestHeaders" label="璇锋眰澶�"> + <a-textarea v-model="model.requestHeaders" :rows="2" readonly /> + </a-form-model-item> + </a-row> + <a-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="requestBody" label="璇锋眰浣�"> + <a-textarea v-model="model.requestBody" :rows="4" readonly /> + </a-form-model-item> + </a-row> + <a-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="responseBody" label="鍝嶅簲浣�"> + <a-textarea v-model="model.responseBody" :rows="4" readonly /> + </a-form-model-item> + </a-row> + <a-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="method" + label="璋冪敤鏂规硶"> + <a-textarea v-model="model.method" :rows="1" readonly /> + </a-form-model-item> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> +import { httpAction } from '@/api/manage' +import moment from 'moment' + +export default { + name: 'SysApiLogModal', + data() { + return { + title: '鎿嶄綔', + visible: false, + disableSubmit: true, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 3 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 20 } + }, + confirmLoading: false, + validatorRules: {}, + url: { + add: '/system/sysApiLog/add', + edit: '/system/sysApiLog/edit' + } + } + }, + created() { + }, + methods: { + add() { + //鍒濆鍖栭粯璁ゅ�� + this.edit({}) + }, + edit(record) { + this.model = Object.assign({}, record) + this.visible = true + }, + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + }, + handleOk() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true + let httpurl = '' + let method = '' + if (!this.model.id) { + httpurl += this.url.add + method = 'post' + } else { + httpurl += this.url.edit + method = 'put' + } + httpAction(httpurl, this.model, method).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false + that.close() + }) + } else { + return false + } + }) + }, + handleCancel() { + this.close() + } + + + } +} +</script> + +<style lang="less" scoped> + +</style> \ No newline at end of file diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue index 8044934..93f60a0 100644 --- a/src/views/system/modules/UserModal.vue +++ b/src/views/system/modules/UserModal.vue @@ -136,40 +136,55 @@ </a-form-model-item> <!--杞﹂棿鍒嗛厤--> +<!-- <a-form-model-item--> +<!-- label="杞﹂棿鍒嗛厤"--> +<!-- :labelCol="labelCol"--> +<!-- :wrapperCol="wrapperCol"--> +<!-- v-show="!productionDisabled"--> +<!-- >--> +<!-- <j-select-production--> +<!-- v-model="model.selectedProduction"--> +<!-- :multi="true"--> +<!-- @back="backProductionInfo"--> +<!-- :backProduction="true"--> +<!-- :treeProductOpera="true"--> +<!-- ></j-select-production>--> +<!-- </a-form-model-item>--> + + <!--涓績鍒嗛厤--> <a-form-model-item - label="杞﹂棿鍒嗛厤" + label="涓績鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" - v-show="!productionDisabled" + v-show="!factoryDisabled" > - <j-select-production - v-model="model.selectedProduction" + <j-select-factory + v-model="model.selectedFactorys" :multi="true" - @back="backProductionInfo" - :backProduction="true" - :treeProductOpera="true" - ></j-select-production> + @back="backFactoryInfo" + :backFactory="true" + :treeFactoryOpera="true" + ></j-select-factory> </a-form-model-item> - - <a-form-model-item - label="閫夋嫨璁惧" - :labelCol="labelCol" - :wrapperCol="wrapperCol" - v-show="!productionDisabled" - > - <a-tooltip title="閫夋嫨璁惧鍚庯紝鐢ㄦ埛灏卞彧鏈夎繖浜涜澶囩殑鏉冮檺锛佷笉閫夋嫨璁惧锛屽垯浼氭牴鎹溅闂村垎閰嶆帶鍒惰澶囩殑鏉冮檺锛�" - placement="topRight"> - <a-input-search - :readOnly="true" - v-model="model.equipmentIds" - @search="deviceSearch" - enter-button - placeholder="璇烽�夋嫨璁惧" - :disabled="!model.selectedProduction" - /> - </a-tooltip> - </a-form-model-item> +<!-- <a-form-model-item--> +<!-- label="閫夋嫨璁惧"--> +<!-- :labelCol="labelCol"--> +<!-- :wrapperCol="wrapperCol"--> +<!-- v-show="!productionDisabled"--> +<!-- >--> +<!-- <a-tooltip title="閫夋嫨璁惧鍚庯紝鐢ㄦ埛灏卞彧鏈夎繖浜涜澶囩殑鏉冮檺锛佷笉閫夋嫨璁惧锛屽垯浼氭牴鎹溅闂村垎閰嶆帶鍒惰澶囩殑鏉冮檺锛�"--> +<!-- placement="topRight">--> +<!-- <a-input-search--> +<!-- :readOnly="true"--> +<!-- v-model="model.equipmentIds"--> +<!-- @search="deviceSearch"--> +<!-- enter-button--> +<!-- placeholder="璇烽�夋嫨璁惧"--> +<!-- :disabled="!model.selectedProduction"--> +<!-- />--> +<!-- </a-tooltip>--> +<!-- </a-form-model-item>--> <!--<a-form-model-item--> @@ -356,7 +371,7 @@ import { addUser, editUser, queryUserRole, queryall } from '@/api/api' import { disabledAuthFilter } from '@/utils/authFilter' import { duplicateCheck } from '@/api/api' -import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction' +import JSelectFactory from '../../../components/jeecgbiz/JSelectFactory' import { mapActions } from 'vuex' import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' import SelectDeviceModal from './SelectDeviceModal' @@ -365,12 +380,12 @@ name: 'UserModal', components: { SelectDeviceModal, - JSelectProduction + JSelectFactory }, data() { return { departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰 - productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰 + factoryDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰 roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰 modalWidth: 800, drawerWidth: 700, @@ -404,7 +419,6 @@ departIdShow: false, title: '鎿嶄綔', visible: false, - model: {}, labelCol: { xs: { span: 24 }, sm: { span: 5 } @@ -420,7 +434,7 @@ fileUpload: window._CONFIG['domianURL'] + 'sys/common/upload', userWithDepart: '/sys/user/userDepartList', // 寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬮儴闂ㄤ俊鎭渶瑕佺殑url //寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬭溅闂翠俊鎭渶瑕佺殑url - userProductionList: '/sys/user/userProductionList', + userFactoryList: '/sys/user/userFactorysList', userId: '/sys/user/generateUserId', // 寮曞叆鐢熸垚娣诲姞鐢ㄦ埛鎯呭喌涓嬬殑url syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//鍚屾鐢ㄦ埛鍒板伐浣滄祦 queryTenantList: '/sys/tenant/queryList' @@ -428,10 +442,10 @@ tenantsOptions: [], rolesOptions: [], nextDepartOptions: [], - nextProductionOptions: [], + nextFactoryOptions: [], isDepartType: '', model: { - selectedProduction: '' + selectedFactorys: '' } } }, @@ -441,7 +455,7 @@ if (value) this.initDictData('password_length') } }, - 'model.selectedProduction': { + 'model.selectedFactorys': { handler(newVal, oldVal) { if (newVal && this.$refs.selectDeviceModal) { // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧 @@ -489,7 +503,7 @@ userIdentity: 1, selectedroles: '', selecteddeparts: '', - selectedProduction: '' + selectedFactorys: '' }) }, edit(record) { @@ -510,6 +524,7 @@ if (record.hasOwnProperty('id')) { that.getUserRoles(record.id) that.getUserDeparts(record.id) + that.getUserFactorys(record.id) } }, isDisabledAuth(code) { @@ -582,26 +597,27 @@ that.nextDepartOptions = departOptions } }) - + }, + getUserFactorys(userid) { + let that = this // 鑾峰彇杞﹂棿鍒嗛厤 - getAction(that.url.userProductionList, { userId: userid }).then((res) => { + getAction(that.url.userFactoryList, { userId: userid }).then((res) => { if (res.success) { - let ProductionOptions = [] - let selectProductKeys = [] + let factoryOptions = [] + let selectFactoryKeys = [] for (let i = 0; i < res.result.length; i++) { - selectProductKeys.push(res.result[i].key) + selectFactoryKeys.push(res.result[i].key) //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗� - ProductionOptions.push({ + factoryOptions.push({ value: res.result[i].key, label: res.result[i].title }) } - this.$set(this.model, 'selectedProduction', selectProductKeys.join(',')) - that.nextProductionOptions = ProductionOptions + this.$set(this.model, 'selectedFactorys', selectFactoryKeys.join(',')) + that.nextFactoryOptions = factoryOptions } }) - //杞﹂棿鐨剈rl }, backDepartInfo(info) { this.model.departIds = this.model.selecteddeparts @@ -610,9 +626,9 @@ return c }) }, - backProductionInfo(info) { - this.model.productionIds = this.model.selectedProduction - this.nextProductionOptions = info.map((item, index, arr) => { + backFactoryInfo(info) { + this.model.productionIds = this.model.selectedFactorys + this.nextFactoryOptions = info.map((item, index, arr) => { let c = { label: item.text, value: item.value + '' } return c }) @@ -621,7 +637,7 @@ refresh() { this.userId = '' this.nextDepartOptions = [] - this.nextProductionOptions = [] + this.nextFactoryOptions = [] this.departIdShow = false }, close() { @@ -629,7 +645,7 @@ this.visible = false this.disableSubmit = false this.nextDepartOptions = [] - this.nextProductionOptions = [] + this.nextFactoryOptions = [] this.departIdShow = false this.$refs.form.resetFields() }, -- Gitblit v1.9.3