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