From a8441611deb2a51bb16a0f85e83a2750840c18f4 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 09 七月 2025 16:22:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/system/modules/SelectEamDeviceModal.vue                     |  231 +++++++++
 src/components/jeecgbiz/JSelectBaseFactory.vue                        |  183 +++++++
 src/api/api.js                                                        |   11 
 src/views/eam/equipment/modules/EamEquipmentModal.vue                 |    2 
 src/views/system/modules/UserModal.vue                                |   74 ++
 src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue |  413 ++++++++--------
 src/components/jeecgbiz/modal/JSelectBaseFactoryModal.vue             |  294 ++++++++++++
 src/views/eam/maintenance/modules/EamInspectionOrderModal.vue         |   26 
 src/views/flowable/workflow/FlowTodo.vue                              |   10 
 src/views/eam/base/EamMaintenanceStandardList.vue                     |   55 +
 src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue       |   84 ++
 11 files changed, 1,115 insertions(+), 268 deletions(-)

diff --git a/src/api/api.js b/src/api/api.js
index 41f3a08..371c8fe 100644
--- a/src/api/api.js
+++ b/src/api/api.js
@@ -67,7 +67,10 @@
 const queryRepairDepartTreeList = (params)=>getAction("/eam/eamBaseRepairDepart/queryTreeList",params);
 const queryRepDepIdTree = (params)=>getAction("/eam/eamBaseRepairDepart/queryIdTree",params);
 const deleteByRepairDepartId   = (params)=>deleteAction("/eam/eamBaseRepairDepart/delete",params);
-
+//EAM涓績
+const queryEamCenterTreeList = (params)=>getAction("/eam/BaseFactory/queryTreeList",params);
+const queryEamCenterIdTree = (params)=>getAction("/eam/BaseFactory/queryIdTree",params);
+const deleteByEamCenterId   = (params)=>deleteAction("/eam/BaseFactory/delete",params);
 //浜х嚎鏍�
 
 
@@ -190,8 +193,10 @@
   editEquipment,
   queryRepairDepartTreeList,
   queryRepDepIdTree,
-  deleteByRepairDepartId
-
+  deleteByRepairDepartId,
+  queryEamCenterTreeList,
+  queryEamCenterIdTree,
+  deleteByEamCenterId
 }
 
 
diff --git a/src/components/jeecgbiz/JSelectBaseFactory.vue b/src/components/jeecgbiz/JSelectBaseFactory.vue
new file mode 100644
index 0000000..22df2a6
--- /dev/null
+++ b/src/components/jeecgbiz/JSelectBaseFactory.vue
@@ -0,0 +1,183 @@
+<template>
+  <div class="components-input-demo-presuffix">
+    <!---->
+    <a-input @click="openModal" placeholder="璇风偣鍑婚�夋嫨EAM涓績" v-model="textVals" readOnly :disabled="disabled">
+      <a-icon slot="prefix" type="cluster" title="EAM涓績閫夋嫨鎺т欢"/>
+      <a-icon v-if="storeVals" slot="suffix" type="close-circle" @click="handleEmpty" title="娓呯┖"/>
+    </a-input>
+    <JSelectBaseFactoryModal
+      ref="innerBaseFactorySelectModal"
+      :modal-width="modalWidth"
+      :multi="multi"
+      :rootOpened="rootOpened"
+      :BaseFactoryId="value"
+      :store="storeField"
+      :text="textField"
+      :treeBaseFactory="treeBaseFactory"
+      @ok="handleOK"
+      @initComp="initComp">
+
+    </JSelectBaseFactoryModal>
+  </div>
+</template>
+
+<script>
+  import JSelectBaseFactoryModal from './modal/JSelectBaseFactoryModal'
+  import { underLinetoHump } from '@/components/_util/StringUtil'
+  export default {
+    name: 'JSelectBaseFactory',
+    components:{
+      JSelectBaseFactoryModal
+    },
+    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: ''
+      },
+      backBaseFactory: {
+        type: Boolean,
+        default: false,
+        required: false
+      },
+      // 瀛樺偍瀛楁 [key field]
+      store: {
+        type: String,
+        default: 'id',
+        required: false
+      },
+      // 鏄剧ず瀛楁 [label field]
+      text: {
+        type: String,
+        default: 'factoryName',
+        required: false
+      },
+      treeBaseFactory: {
+        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
+      },
+      //杩斿洖閫変腑鐨勮溅闂翠俊鎭�
+      backBaseFactoryInfo(){
+        if(this.backBaseFactory===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.innerBaseFactorySelectModal.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.backBaseFactoryInfo()
+      },
+      getBaseFactoryNames(){
+        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/modal/JSelectBaseFactoryModal.vue b/src/components/jeecgbiz/modal/JSelectBaseFactoryModal.vue
new file mode 100644
index 0000000..2e839c9
--- /dev/null
+++ b/src/components/jeecgbiz/modal/JSelectBaseFactoryModal.vue
@@ -0,0 +1,294 @@
+<template>
+  <j-modal
+    title="璇风偣鍑婚�夋嫨EAM涓績"
+    :width="modalWidth"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+    @update:fullscreen="isFullscreen"
+    wrapClassName="j-repair-depart-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>
+  </j-modal>
+</template>
+
+<script>
+import {queryEamCenterTreeList} from '@/api/api'
+  export default {
+    name: 'JSelectBaseFactoryModal',
+    props:['modalWidth','multi','rootOpened','BaseFactoryId', 'store', 'text','treeBaseFactory'],
+    data(){
+      return {
+        visible:false,
+        confirmLoading:false,
+        treeData:[],
+        autoExpandParent:true,
+        expandedKeys:[],
+        dataList:[],
+        checkedKeys:[],
+        checkedRows:[],
+        searchValue:"",
+        checkStrictly: false,
+        fullscreen:false
+      }
+    },
+    created(){
+      this.loadDepart();
+    },
+    watch:{
+      BaseFactoryId(){
+        this.initDepartComponent()
+      },
+      visible: {
+        handler() {
+          this.initDepartComponent(true)
+        }
+      }
+    },
+    computed:{
+      treeScreenClass() {
+        return {
+          'my-dept-select-tree': true,
+          'fullscreen': this.fullscreen,
+        }
+      },
+    },
+    methods:{
+      show(){
+        this.visible=true
+        this.checkedRows=[]
+        this.checkedKeys=[]
+      },
+      loadDepart(){
+        // 杩欎釜鏂规硶鏄壘鍒版墍鏈夌殑閮ㄩ棬淇℃伅
+        queryEamCenterTreeList().then(res=>{
+          if(res.success){
+            let arr = [...res.result]
+            this.reWriterWithSlot(arr)
+            this.treeData = arr
+            this.initDepartComponent()
+            if(this.rootOpened){
+              this.initExpandedKeys(res.result)
+            }
+          }
+        })
+      },
+      initDepartComponent(flag){
+        let arr = []
+        //璇ユ柟娉曚袱涓湴鏂圭敤 1.visible鏀瑰彉浜嬩欢閲嶆柊璁剧疆閫変腑椤� 2.缁勪欢缂栬緫椤甸潰鍥炴樉
+        let fieldName = flag==true?'key':this.text
+        if(this.BaseFactoryId){
+          let arr2 = this.BaseFactoryId.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/views/eam/base/EamMaintenanceStandardList.vue b/src/views/eam/base/EamMaintenanceStandardList.vue
index e04390f..f437afa 100644
--- a/src/views/eam/base/EamMaintenanceStandardList.vue
+++ b/src/views/eam/base/EamMaintenanceStandardList.vue
@@ -90,19 +90,10 @@
         <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"
-        class="j-table-force-nowrap"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-        :customRow='clickThenSelect'
-        @change="handleTableChange">
+      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+               :pagination="ipagination" :loading="loading" class="j-table-force-nowrap"
+               :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" :customRow='clickThenSelect'
+               @change="handleTableChange">
         <span slot="action" slot-scope="text, record">
           <a v-if="record.standardStatus === 'START'" @click.stop="handleUpgrade(record)">鍗囩増</a>
 
@@ -125,14 +116,33 @@
         </span>
       </a-table>
 
-      <a-tabs defaultActiveKey="1">
-        <a-tab-pane tab='淇濆吇鏍囧噯鏄庣粏椤�' key="1">
-          <div class="table-operator" style="margin:-16px">
-            <eam-maintenance-standard-detail-list ref="standardDetailRef" :standardId="standardId"
-                                                  :pageSelectionRow="selectionRows[0]"/>
-          </div>
-        </a-tab-pane>
+      <a-tabs defaultActiveKey="1" v-if="selectionRows.length===1">
+        <template v-if="selectionRows[0]&&selectionRows[0].maintenanceCategory=='POINT_INSPECTION'">
+          <a-tab-pane tab="鏃ョ偣妫�" key="1">
+            <eam-maintenance-standard-detail-list :standardId="standardId" :pageSelectionRow="selectionRows[0]"
+                                                  filterKey="DAY_INSPECTION"/>
+          </a-tab-pane>
+          <a-tab-pane tab="鍛ㄧ偣妫�" key="2" forceRender>
+            <eam-maintenance-standard-detail-list :standardId="standardId" :pageSelectionRow="selectionRows[0]"
+                                                  filterKey="WEEK_INSPECTION"/>
+          </a-tab-pane>
+        </template>
 
+        <template v-if="selectionRows[0]&&selectionRows[0].maintenanceCategory=='SECOND_MAINTENANCE'">
+          <a-tab-pane tab="鎿嶄綔宸�" key="1">
+            <eam-maintenance-standard-detail-list :standardId="standardId" :pageSelectionRow="selectionRows[0]"
+                                                  filterKey="OPERATOR_MAINTENANCE"/>
+          </a-tab-pane>
+          <a-tab-pane tab="缁翠慨宸�" key="2" forceRender>
+            <eam-maintenance-standard-detail-list :standardId="standardId" :pageSelectionRow="selectionRows[0]"
+                                                  filterKey="REPAIRER_MAINTENANCE"/>
+          </a-tab-pane>
+        </template>
+
+        <a-tab-pane tab="涓変繚" key="1" v-if="selectionRows[0]&&selectionRows[0].maintenanceCategory=='THIRD_MAINTENANCE'">
+          <eam-maintenance-standard-detail-list :standardId="standardId"
+                                                :pageSelectionRow="selectionRows[0]"/>
+        </a-tab-pane>
       </a-tabs>
     </div>
     <!-- table鍖哄煙-end -->
@@ -243,9 +253,8 @@
           secondMaintenanceImportExcel: '/eam/maintenanceStandard/importSecondMaintenanceStandard',
           thirdMaintenanceImportExcel: '/eam/maintenanceStandard/importThirdMaintenanceStandard',
           inspectionXlsDownloadUrl: '瀵煎叆妯℃澘/鐐规鏍囧噯瀵煎叆妯℃澘_v1.0.xlsx',
-          weekMaintenanceXlsDownloadUrl: '瀵煎叆妯℃澘/鍛ㄤ繚鏍囧噯瀵煎叆妯℃澘_v1.0.xlsx',
-          secondMaintenanceXlsDownloadUrl: '瀵煎叆妯℃澘/浜屼繚鏍囧噯瀵煎叆妯℃澘_v1.0.xlsx',
-          thirdMaintenanceXlsDownloadUrl: '瀵煎叆妯℃澘/涓変繚鏍囧噯瀵煎叆妯℃澘_v1.0.xlsx'
+          secondMaintenanceXlsDownloadUrl: '瀵煎叆妯℃澘/浜屼繚鏍囧噯瀵煎叆妯℃澘_v1.0.docx',
+          thirdMaintenanceXlsDownloadUrl: '瀵煎叆妯℃澘/涓変繚鏍囧噯瀵煎叆妯℃澘_v1.0.docx'
         },
         standardId: '-1'
       }
diff --git a/src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue b/src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue
index 214e801..d242efa 100644
--- a/src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue
+++ b/src/views/eam/base/modules/EamMaintenanceStandardDetailList.vue
@@ -32,6 +32,9 @@
         type: Object,
         default: () => {
         }
+      },
+      filterKey: {
+        type: String
       }
     },
     data() {
@@ -39,18 +42,12 @@
         description: '淇濆吇鏍囧噯鏄庣粏绠$悊椤甸潰',
         // 琛ㄥご
         columns: [],
-        defaultColumns: [
+        inspectionColumns: [
           {
             title: '搴忓彿',
             align: 'center',
             dataIndex: 'itemCode',
             width: 60
-          },
-          {
-            title: '閮ㄤ綅',
-            align: 'center',
-            dataIndex: 'itemPart',
-            ellipsis: true
           },
           {
             title: '淇濆吇椤瑰垎绫�',
@@ -71,6 +68,53 @@
             ellipsis: true
           }
         ],
+        secondMaintenanceColumns: [
+          {
+            title: '搴忓彿',
+            align: 'center',
+            dataIndex: 'itemCode',
+            width: 60
+          },
+          {
+            title: '淇濆吇椤瑰垎绫�',
+            align: 'center',
+            dataIndex: 'itemCategory_dictText',
+            width: 150
+          },
+          {
+            title: '淇濆吇椤圭洰',
+            align: 'center',
+            dataIndex: 'itemName',
+            ellipsis: true
+          }
+        ],
+        thirdMaintenanceColumns: [
+          {
+            title: '搴忓彿',
+            align: 'center',
+            dataIndex: 'itemCode',
+            width: 60
+          },
+          {
+            title: '淇濆吇閮ㄤ綅',
+            align: 'center',
+            dataIndex: 'itemPart',
+            ellipsis: true
+          },
+          {
+            title: '淇濆吇鍐呭',
+            align: 'center',
+            dataIndex: 'itemName',
+            ellipsis: true
+          },
+          {
+            title: '楠屾敹鏍囧噯',
+            align: 'center',
+            dataIndex: 'itemDemand',
+            ellipsis: true
+          }
+        ],
+        disableMixinCreated: true,
         url: {
           list: '/eam/eamMaintenanceStandardDetail/list'
         }
@@ -81,28 +125,32 @@
         immediate: true,
         handler(val) {
           if (val) {
-            this.loadData(1)
+            console.log('val---------------------', val)
+            this.$nextTick(() => this.loadData(1))
           } else {
             this.clearList()
           }
         }
       },
       pageSelectionRow: {
+        immediate: true,
         handler(val) {
-          if (val) {
-            if (val.maintenanceCategory != 'THIRD_MAINTENANCE') this.columns = [...this.defaultColumns.filter(item => item.dataIndex != 'itemPart')]
-            else this.columns = [...this.defaultColumns.filter(item => item.dataIndex != 'itemCategory_dictText')]
+          switch (val.maintenanceCategory) {
+            case 'POINT_INSPECTION':
+              this.columns = this.inspectionColumns
+              break
+            case 'SECOND_MAINTENANCE':
+              this.columns = this.secondMaintenanceColumns
+              break
+            case 'THIRD_MAINTENANCE':
+              this.columns = this.thirdMaintenanceColumns
+              break
           }
         }
       }
     },
-    computed: {},
     methods: {
       loadData(arg) {
-        if (!this.url.list) {
-          this.$message.error('璇疯缃畊rl.list灞炴��!')
-          return
-        }
         if (this.standardId && this.standardId === '-1') {
           this.clearList()
           return
@@ -118,11 +166,13 @@
         this.dataSource = []
         params.standardId = this.standardId
         this.loading = true
+        console.log('----------------------', this.filterKey)
         getAction(this.url.list, params).then((res) => {
           if (res.success) {
             // console.log(res)
             //update-begin---author:zhangyafei    Date:20201118  for锛氶�傞厤涓嶅垎椤电殑鏁版嵁鍒楄〃------------
-            this.dataSource = res.result.records || res.result
+            if (this.filterKey) this.dataSource = res.result.records.filter(item => item.itemCategory == this.filterKey)
+            else this.dataSource = res.result.records
             if (res.result.total) {
               this.ipagination.total = res.result.total
             } else {
diff --git a/src/views/eam/equipment/modules/EamEquipmentModal.vue b/src/views/eam/equipment/modules/EamEquipmentModal.vue
index 4db5113..a06b114 100644
--- a/src/views/eam/equipment/modules/EamEquipmentModal.vue
+++ b/src/views/eam/equipment/modules/EamEquipmentModal.vue
@@ -99,7 +99,7 @@
               <a-row>
                 <a-col :span="customSpan">
                   <a-form-model-item label="绯荤粺">
-                    <a-input placeholder="璇疯緭鍏ョ郴缁�" :disabled="Boolean(+model.operationSystem)" v-model="model.system"/>
+                    <a-input placeholder="璇疯緭鍏ョ郴缁�" :disabled="!Boolean(+model.operationSystem)" v-model="model.system"/>
                   </a-form-model-item>
                 </a-col>
                 <a-col :span="customSpan">
diff --git a/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue b/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue
index 1ecc745..84c5ec1 100644
--- a/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue
@@ -128,7 +128,7 @@
             {
               title: '搴忓彿',
               key: 'itemCode',
-              type: JVXETypes.inputNumber,
+              type: JVXETypes.normal,
               width: 100,
               align: 'center',
               disabled: true
@@ -156,42 +156,42 @@
               type: JVXETypes.normal,
               width: 60,
               align: 'center',
-              fixed: 'left'
+              disabled: true
             },
             {
               title: '淇濆吇椤�',
               key: 'itemName',
               type: JVXETypes.textarea,
               align: 'center',
-              fixed: 'left'
+              disabled: true
             },
             {
               title: '淇濆吇瑕佹眰',
               key: 'itemDemand',
               type: JVXETypes.textarea,
               align: 'center',
-              fixed: 'left'
+              disabled: true
             },
             {
               title: '鐐规缁撴灉',
               key: 'inspectionResult',
-              type: JVXETypes.slot,
-              slotName: 'inspectionResult',
-              align: 'center'
+              type: JVXETypes.textarea,
+              align: 'center',
+              disabled: true
             },
             {
               title: '寮傚父鎻忚堪',
               key: 'exceptionDescription',
-              type: JVXETypes.slot,
-              slotName: 'exceptionDescription',
-              align: 'center'
+              type: JVXETypes.textarea,
+              align: 'center',
+              disabled: true
             },
             {
               title: '寮傚父鏄惁鎶ヤ慨',
               key: 'reportFlag',
-              type: JVXETypes.slot,
-              slotName: 'reportFlag',
-              align: 'center'
+              type: JVXETypes.textarea,
+              align: 'center',
+              disabled: true
             }
           ]
         }
diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue
index e29eaf4..7d6937e 100644
--- a/src/views/flowable/workflow/FlowTodo.vue
+++ b/src/views/flowable/workflow/FlowTodo.vue
@@ -90,6 +90,8 @@
 
     <maintenance-standard-approval-modal ref="maintenanceStandardApprovalModal" @modalFormOk="modalFormOk"
                                          :selectShenpiData="selectedRowData"/>
+
+    <inspection-order-handle ref="modalFormInspectionOrder" :selectShenpiData="selectedRowData"/>
   </a-card>
 </template>
 
@@ -98,11 +100,12 @@
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import { getAction } from '@api/manage'
   import MaintenanceStandardApprovalModal from './MaintenanceStandard/MaintenanceStandardApprovalModal'
+  import InspectionOrderHandle from './InspectionOrder/InspectionOrderHandle'
 
   export default {
     name: 'NcDeviceCharactersList',
     mixins: [JeecgListMixin, mixinDevice],
-    components: { MaintenanceStandardApprovalModal },
+    components: { InspectionOrderHandle, MaintenanceStandardApprovalModal },
     data() {
       return {
         description: '宸ヤ綔娴�-鎴戠殑寰呭姙',
@@ -225,8 +228,11 @@
         }
       },
 
+      /**
+       * 鐐瑰嚮淇濆吇瑙勮寖鍒嗙被娴佺▼璇︽儏鏃惰Е鍙�
+       * @param record
+       */
       handleMaintenanceStandard(record) {
-        console.log('this.$refs.maintenanceStandardApprovalModal.', this.$refs.maintenanceStandardApprovalModal)
         this.selectedRowData = Object.assign({}, record)
         this.$refs.maintenanceStandardApprovalModal.visible = true
         this.$refs.maintenanceStandardApprovalModal.title = '淇濆吇瑙勮寖'
diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
index 156c30d..b302f37 100644
--- a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
+++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
@@ -1,201 +1,198 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="1200"
-    :visible="visible"
-    :okButtonProps="{ class:{'jee-hidden': disableSubmit||!hasInspectionDateArrived} }"
-    @ok="submitForm"
-    @cancel="handleCancel"
-    :mask-closable="false"
-    :confirmLoading="confirmLoading"
-    switchFullscreen
-    centered
-  >
+  <j-modal :title="title" :width="1200" :visible="visible"
+           :okButtonProps="{ class:{'jee-hidden': disableSubmit||!hasInspectionDateArrived} }" @ok="submitForm"
+           @cancel="handleCancel" :mask-closable="false" :confirmLoading="confirmLoading" fullscreen>
     <a-spin :spinning="spinning">
       <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol"
                     :rules="validatorRules">
-        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 鐐规鍩虹淇℃伅</a-divider>
+        <a-row :gutter="48">
+          <a-col :span="8">
+            <a-tabs>
+              <a-tab-pane tab="鍩虹淇℃伅">
+                <a-row>
+                  <a-col :span='span'>
+                    <a-form-model-item label="宸ュ崟鍙�">
+                      <a-input readOnly v-model="tableRowRecord.orderNum"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span='span'>
+                    <a-form-model-item label="璁惧缂栧彿">
+                      <MaintenanceEquipmentSelect v-model="tableRowRecord.equipmentId"
+                                                  :maintenanceCategory="'POINT_INSPECTION'"
+                                                  disabled @autocompleteForm="autoCompleteForm"/>
+                    </a-form-model-item>
+                  </a-col>
 
-        <a-row>
-          <a-col :span='span'>
-            <a-form-model-item label="宸ュ崟鍙�">
-              <a-input readOnly v-model="tableRowRecord.orderNum"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span='span'>
-            <a-form-model-item label="璁惧缂栧彿">
-              <MaintenanceEquipmentSelect v-model="tableRowRecord.equipmentId"
-                                          :maintenanceCategory="'POINT_INSPECTION'" disabled
-                                          @autocompleteForm="autoCompleteForm"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span='span'>
-            <a-form-model-item label="鏍囧噯鍚嶇О">
-              <a-input readOnly v-model="tableRowRecord.standardName"/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
+                </a-row>
 
-        <a-row>
-          <a-col :span='span'>
-            <a-form-model-item label="鏍囧噯缂栫爜">
-              <a-input readOnly v-model="tableRowRecord.standardCode"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span='span'>
-            <a-form-model-item label="鐐规鏃ユ湡">
-              <a-input v-model="tableRowRecord.inspectionDate" readOnly/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span='span'>
-            <a-form-model-item label="鐐规杩囨湡鏃堕棿">
-              <a-input v-model="tableRowRecord.expirationTime" readOnly/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
+                <a-row>
+                  <a-col :span='span'>
+                    <a-form-model-item label="瑙勮寖鍚嶇О">
+                      <a-input readOnly v-model="tableRowRecord.standardName"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span='span'>
+                    <a-form-model-item label="瑙勮寖缂栫爜">
+                      <a-input readOnly v-model="tableRowRecord.standardCode"/>
+                    </a-form-model-item>
+                  </a-col>
 
-        <a-row>
-          <a-col :span='span'>
-            <a-form-model-item label="淇濆吇鍛ㄦ湡">
-              <a-input v-model="tableRowRecord.maintenancePeriod" readOnly/>
-            </a-form-model-item>
+                </a-row>
+
+                <a-row>
+                  <a-col :span='span'>
+                    <a-form-model-item label="鐐规鏃ユ湡">
+                      <a-input v-model="tableRowRecord.inspectionDate" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span='span'>
+                    <a-form-model-item label="鐐规杩囨湡鏃堕棿">
+                      <a-input v-model="tableRowRecord.expirationTime" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+
+                <a-row>
+                  <a-col :span='span'>
+                    <a-form-model-item label="淇濆吇鍛ㄦ湡">
+                      <a-input v-model="tableRowRecord.maintenancePeriod" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span='span'>
+                    <a-form-model-item label="鐐规浜�">
+                      <a-input v-model="tableRowRecord.operator_dictText" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+
+                <a-row>
+                  <a-col :span="span*2">
+                    <a-form-model-item label="澶囨敞" :labelCol="{span:4}" :wrapperCol="{span:20}">
+                      <a-textarea v-model="tableRowRecord.remark" rows="3" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
           </a-col>
-          <a-col :span='span'>
-            <a-form-model-item label="鐐规浜�">
-              <a-input v-model="tableRowRecord.operator_dictText" readOnly/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
 
-        <a-row>
-          <a-col :span="span*3">
-            <a-form-model-item label="澶囨敞" :labelCol="{span:2}" :wrapperCol="{span:21}">
-              <a-textarea v-model="tableRowRecord.remark" rows="3" readOnly/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
+          <a-col :span="disableSubmit||tableRowRecord.inspectionStatus=='UNDER_INSPECTION'?16:10">
+            <a-tabs v-model="activeTabKey">
+              <a-tab-pane key="1" tab="鏃ョ偣妫�">
+                <j-vxe-table ref="editableDetailTable" :rowNumber="false" rowSelection bordered
+                             alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading"
+                             :dataSource="detail.dataSource" :columns="detail.columns"
+                             @selectRowChange="handleTableSelectRowChange">
+                  <template v-slot:inspectionResult="props">
+                    <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result"
+                                       :disabled="isDisableOperation" placeholder="璇烽�夋嫨鐐规缁撴灉"
+                                       @change="handleInspectionResultSelectChange($event,props.row)"
+                                       style="width: 100%"/>
+                  </template>
 
-        <a-row>
-          <a-form-model-item prop="imageFilesResult" label="鐐规鍥剧墖" :labelCol="{span:2}" :wrapperCol="{span:21}">
-            <lx-upload :returnUrl="false" :isMultiple="true" file-type="image" :number="3"
-                       :disabled="isDisableOperation||!hasInspectionDateArrived"
-                       v-model="tableRowRecord.fileList"/>
-          </a-form-model-item>
-        </a-row>
+                  <template v-slot:exceptionDescription="props">
+                    <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
+                                :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/>
+                  </template>
 
-        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">
-          淇濆吇椤逛俊鎭�
-        </a-divider>
+                  <template v-slot:reportFlag="props">
+                    <j-dict-select-tag v-model="props.row.reportFlag"
+                                       :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
+                                       :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"
+                                       dictCode="yn" style="width: 100%"/>
+                  </template>
+                </j-vxe-table>
+              </a-tab-pane>
 
-        <a-tabs v-model="activeTabKey">
-          <a-tab-pane key="1" tab="淇濆吇椤规槑缁�">
-            <j-vxe-table
-              ref="editableDetailTable"
-              :rowNumber="false"
-              :rowSelection="true"
-              :bordered="true"
-              :alwaysEdit="true"
-              :toolbar="false"
-              keep-source
-              :height="300"
-              :loading="detail.loading"
-              :dataSource="detail.dataSource"
-              :columns="detail.columns"
-              @selectRowChange="handleTableSelectRowChange"
-            >
-              <template v-slot:inspectionResult="props">
-                <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result"
-                                   :disabled="isDisableOperation"
-                                   placeholder="璇烽�夋嫨鐐规缁撴灉"
-                                   @change="handleInspectionResultSelectChange($event,props.row)"
-                                   style="width: 100%"/>
+              <a-tab-pane key="2" tab="鍛ㄧ偣妫�">
+                <j-vxe-table ref="editableDetailTable" :rowNumber="false" rowSelection bordered
+                             alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading"
+                             :dataSource="detail.weekInspectionList" :columns="detail.columns"
+                             @selectRowChange="handleTableSelectRowChange">
+                  <template v-slot:inspectionResult="props">
+                    <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="eam_inspection_result"
+                                       :disabled="isDisableOperation" placeholder="璇烽�夋嫨鐐规缁撴灉"
+                                       @change="handleInspectionResultSelectChange($event,props.row)"
+                                       style="width: 100%"/>
+                  </template>
+
+                  <template v-slot:exceptionDescription="props">
+                    <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
+                                :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/>
+                  </template>
+
+                  <template v-slot:reportFlag="props">
+                    <j-dict-select-tag v-model="props.row.reportFlag"
+                                       :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
+                                       :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"
+                                       dictCode="yn" style="width: 100%"/>
+                  </template>
+                </j-vxe-table>
+              </a-tab-pane>
+
+              <template v-if="selectShenpiData.procInstId">
+                <a-tab-pane key='3' tab='娴佺▼鑺傜偣'>
+                  <a-card :bordered="false">
+                    <a-timeline>
+                      <a-timeline-item v-for="(item,index) in hitaskDataSource" :key="index">
+                        <div>
+                          <h3 style="font-weight: bold;">{{item.taskName}}</h3>
+                          <div>澶勭悊浜猴細{{item.assignee_dictText}}</div>
+                          <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div>
+                          <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div>
+                          <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div>
+                        </div>
+                      </a-timeline-item>
+                    </a-timeline>
+                  </a-card>
+                </a-tab-pane>
+
+                <a-tab-pane key='4' tab='娴佺▼鍥�'>
+                  <img :src="imageSrc" width="100%" v-if="imageSrc"/>
+                </a-tab-pane>
               </template>
 
-              <template v-slot:exceptionDescription="props">
-                <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
-                            :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''"
-                            :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/>
-              </template>
+              <a-button
+                v-if="selectedRowKeys.length>0&&!isDisableOperation&&hasInspectionDateArrived&&activeTabKey==='1'&&activeTabKey==='2'"
+                slot="tabBarExtraContent" type="primary"
+                @click="handleSelectAllInspectionResult">鎵归噺鐐规姝e父
+              </a-button>
+            </a-tabs>
+          </a-col>
 
-              <template v-slot:reportFlag="props">
-                <j-dict-select-tag v-model="props.row.reportFlag"
-                                   :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
-                                   :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"
-                                   dictCode="yn"
-                                   style="width: 100%"/>
-              </template>
-            </j-vxe-table>
-          </a-tab-pane>
+          <a-col v-if="!disableSubmit&&isDisplayConfirm" :span="6">
+            <a-tabs>
+              <a-tab-pane tab="缁翠慨宸ョ‘璁�">
+                <a-row>
+                  <a-col :span="24">
+                    <a-form-model-item prop="confirmDealType" label="澶勭悊绫诲瀷">
+                      <j-dict-select-tag type='radio' v-model='tableRowRecord.confirmDealType'
+                                         dictCode='approved_rejected'
+                                         :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"/>
+                    </a-form-model-item>
+                  </a-col>
 
-          <template v-if="selectShenpiData.procInstId">
-            <a-tab-pane key='2' tab='娴佺▼鑺傜偣'>
-              <a-card :bordered="false">
-                <a-timeline>
-                  <a-timeline-item v-for="(item,index) in hitaskDataSource" :key="index">
-                    <div>
-                      <h3 style="font-weight: bold;">{{item.taskName}}</h3>
-                      <div>澶勭悊浜猴細{{item.assignee_dictText}}</div>
-                      <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div>
-                      <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div>
-                      <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div>
-                    </div>
-                  </a-timeline-item>
-                </a-timeline>
-              </a-card>
-            </a-tab-pane>
-
-            <a-tab-pane key='3' tab='娴佺▼鍥�'>
-              <img :src="imageSrc" alt="Fetched Image"/>
-            </a-tab-pane>
-          </template>
-
-          <a-button
-            v-if="selectedRowKeys.length>0&&!isDisableOperation&&hasInspectionDateArrived&&activeTabKey==='1'"
-            slot="tabBarExtraContent" type="primary"
-            @click="handleSelectAllInspectionResult">鎵归噺鐐规姝e父
-          </a-button>
-
-          <!--<a-dropdown slot="tabBarExtraContent" v-if="selectedRowKeys.length>0">-->
-          <!--<a-menu slot="overlay">-->
-          <!--<a-menu-item key="1" @click="handleSelectAllInspectionResult('姝e父')">姝e父</a-menu-item>-->
-          <!--<a-menu-item key="2" @click="handleSelectAllInspectionResult('寮傚父')">寮傚父</a-menu-item>-->
-          <!--</a-menu>-->
-
-          <!--<a-button> 鎵归噺閫夋嫨鐐规缁撴灉-->
-          <!--<a-icon type="down"/>-->
-          <!--</a-button>-->
-          <!--</a-dropdown>-->
-        </a-tabs>
-
-        <template v-if="isDisplayConfirm">
-          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 绠$悊鍛樼‘璁や俊鎭�
-          </a-divider>
-
-          <a-row :gutter="24">
-            <a-col :span="12">
-              <a-form-model-item prop="confirmDealType" label="澶勭悊绫诲瀷">
-                <j-dict-select-tag type='radio' v-model='tableRowRecord.confirmDealType' dictCode='approved_rejected'
-                                   :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"/>
-              </a-form-model-item>
-            </a-col>
-
-            <a-col :span="12">
-              <a-form-model-item prop="confirmComment" label="澶勭悊鎰忚">
-                <a-textarea placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"
-                            :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"
-                            v-model="tableRowRecord.confirmComment"/>
-              </a-form-model-item>
-            </a-col>
-          </a-row>
-        </template>
+                  <a-col :span="24">
+                    <a-form-model-item prop="confirmComment" label="澶勭悊鎰忚">
+                      <a-textarea placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"
+                                  :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"
+                                  v-model="tableRowRecord.confirmComment"/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
+          </a-col>
+        </a-row>
       </a-form-model>
     </a-spin>
   </j-modal>
 </template>
 
 <script>
-  import '@assets/less/TableExpand.less'
-  import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage'
+  import { getAction, postAction, downFile } from '@api/manage'
   import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
   import { JVXETypes } from '@comp/jeecg/JVxeTable'
   import moment from 'moment'
@@ -210,11 +207,10 @@
     },
     data() {
       return {
-        span: 8,
+        span: 12,
         confirmLoading: false,
         spinning: false,
         tableRowRecord: {},
-        assignFileStream: {},
         hitaskDataSource: [],
         validatorRules: {
           confirmDealType: [
@@ -227,21 +223,21 @@
         imageSrc: null,
         labelCol: {
           xs: { span: 24 },
-          sm: { span: 6 }
+          sm: { span: 9 }
         },
         wrapperCol: {
           xs: { span: 30 },
-          sm: { span: 16 }
+          sm: { span: 15 }
         },
         visible: false,
         // 琛ㄥご
         url: {
-          // queryBomDataById: '/eam/eamInspectionOrder/selectVoById',
           diagramView: '/assign/flow/diagramView',
           queryHisTaskList: '/assign/flow/queryHisTaskList',
           approve: '/eam/eamInspectionOrder/approval',
           queryById: '/eam/eamInspectionOrder/queryById',
-          detailList: '/eam/eamInspectionOrderDetail/queryList'
+          detailList: '/eam/eamInspectionOrderDetail/queryList',
+          weekInspectionOrderList: '/eam/eamWeekInspectionDetail/queryStandardList'
         },
         detail: {
           loading: false,
@@ -251,7 +247,7 @@
               title: '搴忓彿',
               key: 'itemCode',
               type: JVXETypes.normal,
-              width: '5%',
+              width: 60,
               align: 'center',
               fixed: 'left'
             },
@@ -259,7 +255,6 @@
               title: '淇濆吇椤�',
               key: 'itemName',
               type: JVXETypes.normal,
-              width: '15%',
               align: 'center',
               fixed: 'left'
             },
@@ -267,7 +262,6 @@
               title: '淇濆吇瑕佹眰',
               key: 'itemDemand',
               type: JVXETypes.normal,
-              width: '15%',
               align: 'center',
               fixed: 'left'
             },
@@ -276,10 +270,9 @@
               key: 'inspectionResult',
               type: JVXETypes.slot,
               slotName: 'inspectionResult',
-              width: '15%',
               align: 'center',
               validateRules: [
-                { required: true, message: '${title}涓嶈兘涓虹┖锛�' }
+                { required: true, message: '${title}涓嶈兘涓虹┖' }
               ]
             },
             {
@@ -287,7 +280,6 @@
               key: 'exceptionDescription',
               type: JVXETypes.slot,
               slotName: 'exceptionDescription',
-              width: '20%',
               align: 'center',
               validateRules: [
                 { handler: this.customValidator }
@@ -298,13 +290,13 @@
               key: 'reportFlag',
               type: JVXETypes.slot,
               slotName: 'reportFlag',
-              width: '20%',
               align: 'center',
               validateRules: [
                 { handler: this.customValidator }
               ]
             }
-          ]
+          ],
+          weekInspectionList: []
         },
         selectedRowKeys: [],
         disableSubmit: false,
@@ -363,13 +355,11 @@
         this.detail.dataSource = []
         this.spinning = true
         const param = { id: record.dataId }
-        let res = await getAction(this.url.queryById, param);
-        this.tableRowRecord = Object.assign({}, res.result);
-        if (this.tableRowRecord.imageFiles) {
-          let obj = JSON.parse(this.tableRowRecord.imageFiles)
-          this.tableRowRecord.fileList = [...obj]
-        }
-        await this.loadDetail(record.dataId)
+        let res = await getAction(this.url.queryById, param)
+        this.tableRowRecord = Object.assign({}, res.result)
+        this.loadDetail(record.dataId)
+        console.log('record', record)
+        this.getWeekInspectionOrderListByApi(this.tableRowRecord.standardId)
       },
 
       async submitForm() {
@@ -390,11 +380,9 @@
             flowTaskVo.values = this.selectShenpiData.variables
             flowTaskVo.confirmDealType = this.tableRowRecord.confirmDealType
             flowTaskVo.confirmComment = this.tableRowRecord.confirmComment
-            flowTaskVo.fileList = this.tableRowRecord.fileList
             flowTaskVo.tableDetailList = this.$refs.editableDetailTable.getTableData()
             const that = this
-            console.log('琛ㄥ崟鎻愪氦鏁版嵁', flowTaskVo)
-            httpAction(this.url.approve, flowTaskVo, 'post')
+            postAction(this.url.approve, flowTaskVo)
               .then((res) => {
                 if (res.success) {
                   that.$message.success(res.message)
@@ -468,10 +456,14 @@
         this.selectedRowKeys = []
         this.visible = false
       },
-      //鏍囧噯閫夋嫨鍙樺寲
+
+      /**
+       * 鑾峰彇鏃ョ偣妫�鏄庣粏
+       * @param orderId
+       */
       loadDetail(orderId) {
         if (orderId) {
-          getAction(this.url.detailList, { orderId: orderId })
+          getAction(this.url.detailList, { orderId })
             .then(res => {
               if (res.success) {
                 this.detail.dataSource = [...res.result]
@@ -482,6 +474,21 @@
             })
         }
       },
+
+      /**
+       * 鑾峰彇鐐规宸ュ崟涓殑鍛ㄧ偣妫�鍒楄〃
+       * @param standardId 瑙勮寖id
+       */
+      getWeekInspectionOrderListByApi(standardId) {
+        console.log('standardId-------------------------', standardId)
+        getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.tableRowRecord.inspectionDate })
+          .then(res => {
+            if (res.success) this.detail.weekInspectionList = res.result
+          })
+          .finally(() => {
+            this.spinning = false
+          })
+      }
     }
   }
 </script>
@@ -489,6 +496,4 @@
   /deep/ .ant-select-dropdown-menu {
     text-align: left;
   }
-
-  @import '~@assets/less/common.less';
 </style>
\ No newline at end of file
diff --git a/src/views/system/modules/SelectEamDeviceModal.vue b/src/views/system/modules/SelectEamDeviceModal.vue
new file mode 100644
index 0000000..74fb71b
--- /dev/null
+++ b/src/views/system/modules/SelectEamDeviceModal.vue
@@ -0,0 +1,231 @@
+<template>
+  <a-modal
+    :title="title"
+    :visible="visible"
+    @ok="handleOk"
+    @cancel="handleCancel"
+  >
+
+    <a-spin :spinning="loading">
+      <!-- showLine -->
+      <a-form>
+        <a-form-item label="杞﹂棿灞傜骇锛�">
+          <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys"
+                  :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys"
+                  @expand="onExpand">
+          </a-tree>
+        </a-form-item>
+      </a-form>
+
+    </a-spin>
+
+    <template slot="footer">
+      <div>
+        <a-dropdown
+          style="float: left"
+          :trigger="['click']"
+          placement="topCenter"
+        >
+          <a-menu slot="overlay">
+            <a-menu-item key="1" @click="expandAll">灞曞紑鎵�鏈�</a-menu-item>
+            <a-menu-item key="2" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item>
+            <a-menu-item key="3" @click="refreshTree">鍒锋柊</a-menu-item>
+          </a-menu>
+          <a-button>
+            鏍戞搷浣�
+            <a-icon type="up"/>
+          </a-button>
+        </a-dropdown>
+        <a-popconfirm title="纭畾鏀惧純缂栬緫锛�" @confirm="handleCancel" okText="纭畾" cancelText="鍙栨秷">
+          <a-button style="margin-right: .8rem">鍏抽棴</a-button>
+        </a-popconfirm>
+        <a-button
+          @click="handleOk"
+          type="primary"
+        >纭畾
+        </a-button>
+      </div>
+    </template>
+
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAction,
+    postAction,
+    deleteAction
+  } from '@/api/manage'
+  import BaseTree from '@/views/mdc/common/BaseTree'
+  import DepartTree from '@/views/mdc/base/modules/DepartList/DepartListTree/DepartTree'
+
+  export default {
+    name: 'selectEamDeviceModal',
+    components: {
+      BaseTree, DepartTree
+    },
+    props: {
+      editDisable: {
+        type: Boolean,
+        default() {
+          return true
+        }
+      },
+      title: {
+        type: String
+      },
+      selectedProduction: {
+        type: String
+      }
+    },
+    data() {
+      return {
+        loading: false,
+        treeDataSource: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        url: {
+          getDeviceTree: '/eam/equipment/loadTreeListByEamCenterIds'
+        },
+        selectedWorkshopIds: '',
+        dataList: [],
+        allTreeKeys: [],
+        visible: false,
+        dataSource: []
+      }
+    },
+    created() {
+      this.closeAll()
+    },
+    methods: {
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      queryTreeData(value) {
+        this.loading = true
+        this.selectedWorkshopIds = value
+        getAction(this.url.getDeviceTree, { ids: value })
+          .then(res => {
+            if (res.success) {
+              this.dataList = []
+              this.allTreeKeys = []
+              this.getTreeDataSouce(res.result)
+              this.treeDataSource = res.result
+              this.generateList(this.treeDataSource)
+              this.expandedKeys = this.allTreeKeys
+            } else {
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+          .catch(err => {
+            this.$notification.error({
+              message: '娑堟伅',
+              description: err.message
+            })
+          })
+          .finally(() => {
+            this.loading = false
+          })
+      },
+
+      generateList(data) {
+        for (let i = 0; i < data.length; i++) {
+          const node = data[i]
+          const key = node.key
+          const title = node.title
+          this.dataList.push({
+            key,
+            title: title
+          })
+          this.allTreeKeys.push(key)
+          if (node.children) {
+            this.generateList(node.children)
+          }
+        }
+      },
+
+      getTreeDataSouce(data) {
+        data.forEach(item => {
+          if (item.children && item.children.length > 0) {
+            this.getTreeDataSouce(item.children)
+          }
+          item.key = item.equipmentId ? item.equipmentId : item.key
+          item.value = item.equipmentId ? item.equipmentId : item.value
+        })
+      },
+      expandAll() {
+        this.expandedKeys = this.allTreeKeys
+      },
+      closeAll() {
+        this.expandedKeys = ['-1']
+      },
+      refreshTree() {
+        this.queryTreeData(this.selectedWorkshopIds)
+      },
+      onCheck(value, obj) {
+        this.checkedKeys = value
+        this.deviceNodes = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => item.data.props.equipmentId)
+      },
+      handleCancel() {
+        this.visible = false
+      },
+      handleOk() {
+        this.$emit('selectFinished', this.deviceNodes)
+        this.visible = false
+      }
+
+    }
+  }
+</script>
+<style lang="less" scoped>
+  /deep/ .ant-modal {
+    /*transform-origin: 337px 50px;*/
+  }
+
+  .ant-card-body .table-operator {
+    margin-bottom: 18px;
+  }
+
+  .ant-table-tbody .ant-table-row td {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+
+  .anty-row-operator button {
+    margin: 0 5px
+  }
+
+  .ant-btn-danger {
+    background-color: #ffffff
+  }
+
+  .ant-modal-cust-warp {
+    height: 100%
+  }
+
+  .ant-modal-cust-warp .ant-modal-body {
+    height: calc(100% - 110px) !important;
+    overflow-y: auto
+  }
+
+  .ant-modal-cust-warp .ant-modal-content {
+    height: 90% !important;
+    overflow-y: hidden
+  }
+
+  .drawer-bottom-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/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue
index 76bd7f1..740580c 100644
--- a/src/views/system/modules/UserModal.vue
+++ b/src/views/system/modules/UserModal.vue
@@ -74,12 +74,12 @@
           <a-input-search :readOnly="true" v-model="model.equipmentIds" @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧" :disabled="!model.selectedProduction"/>
         </a-form-model-item>
 
-        <a-form-model-item label="EAM涓績鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="areaId">
-          <j-multi-select-tag :triggerChange="true" v-model="model.eamFactoryIds" dictCode="mom_base_area,name,id,del_flag = 0 and type = 1" placeholder="璇风淮鎶や腑蹇�"/>
+        <a-form-model-item label="EAM涓績鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eamFactoryIds">
+          <JSelectBaseFactory v-model="model.selectedBaseFactory" :multi="true" @back="backBaseFactoryInfo" :backProduction="true" :treeProductOpera="true"/>
         </a-form-model-item>
 
         <a-form-model-item label="EAM璁惧鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled">
-          <a-input-search :readOnly="true" v-model="model.eamEquipmentIds" @search="deviceSearch" enter-button placeholder="璇烽�夋嫨璁惧" :disabled="!model.selectedProduction"/>
+          <a-input-search :readOnly="true" v-model="model.eamEquipmentIds" @search="eamDeviceSearch" enter-button placeholder="璇烽�夋嫨EAM璁惧" :disabled="!model.selectedBaseFactory"/>
         </a-form-model-item>
 
         <a-form-model-item label="缁翠慨閮ㄩ棬/鐝粍鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!repairDepartDisabled">
@@ -100,6 +100,9 @@
     </div>
 
     <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+
+    <select-eam-device-modal ref="selectEamDeviceModal" @selectFinished="selectEamOK" :title="'閫夋嫨EAM璁惧'"/>
+
   </a-drawer>
 </template>
 
@@ -116,13 +119,17 @@
   import { mapActions } from 'vuex'
   import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
   import SelectDeviceModal from './SelectDeviceModal'
+  import SelectEamDeviceModal from './SelectEamDeviceModal'
+  import JSelectBaseFactory from "@comp/jeecgbiz/JSelectBaseFactory.vue";
 
   export default {
     name: 'UserModal',
     components: {
+      JSelectBaseFactory,
       SelectDeviceModal,
       JSelectProduction,
-      JSelectRepairDepart
+      JSelectRepairDepart,
+      SelectEamDeviceModal
     },
     data() {
       return {
@@ -181,17 +188,20 @@
           syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//鍚屾鐢ㄦ埛鍒板伐浣滄祦
           queryTenantList: '/sys/tenant/queryList',
           userRepairDepartList: '/sys/user/userRepairDepartList',
+          userBaseFactoryList: '/sys/user/userBaseFactoryList',
           repairDepartTreeList: '/eam/eamBaseRepairDepart/queryTreeList'
         },
         tenantsOptions: [],
         rolesOptions: [],
         nextDepartOptions: [],
         nextProductionOptions: [],
+        nextBaseFactoryOptions:[],
         nextRepairDepartOptions: [],
         isDepartType: '',
         model: {
           selectedProduction: '',
-          selectedRepairDeparts: ''
+          selectedRepairDeparts: '',
+          selectedBaseFactory:'',
         }
       }
     },
@@ -210,6 +220,17 @@
           }
           // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
           if (newVal === '') this.model.equipmentIds = ''
+        }
+      },
+      'model.selectedBaseFactory': {
+        handler(newVal, oldVal) {
+          if (newVal && this.$refs.selectEamDeviceModal) {
+            // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧
+            if ((oldVal && newVal !== oldVal)) this.model.eamEquipmentIds = ''
+            this.$refs.selectEamDeviceModal.queryTreeData(newVal)
+          }
+          // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
+          if (newVal === '') this.model.eamEquipmentIds = ''
         }
       }
     },
@@ -265,6 +286,7 @@
           selectedroles: '',
           selecteddeparts: '',
           selectedProduction: '',
+          selectedBaseFactory:'',
           selectedRepairDeparts: ''
         })
       },
@@ -288,6 +310,7 @@
           that.getUserDeparts(record.id)
           that.getUserProductions(record.id)
           that.getUserRepairDeparts(record.id)
+          this.getUserBaseFactorys(record.id)
         }
       },
       isDisabledAuth(code) {
@@ -403,6 +426,27 @@
           }
         })
       },
+      getUserBaseFactorys(userid) {
+        let that = this
+        // 鑾峰彇EAM涓績/宸ュ尯/宸ユ鍒嗛厤
+        getAction(that.url.userBaseFactoryList, { userId: userid }).then((res) => {
+          if (res.success) {
+            let BaseFactoryOptions = []
+            let selectedBaseFactoryOptionsKeys = []
+            for (let i = 0; i < res.result.length; i++) {
+              selectedBaseFactoryOptionsKeys.push(res.result[i].key)
+              //鏂板璐熻矗缁翠慨閮ㄩ棬/鐝粍閫夋嫨涓嬫媺妗�
+              BaseFactoryOptions.push({
+                value: res.result[i].key,
+                label: res.result[i].title
+              })
+            }
+
+            this.$set(this.model, 'selectedBaseFactory', selectedBaseFactoryOptionsKeys.join(','))
+            that.nextBaseFactoryOptions = BaseFactoryOptions
+          }
+        })
+      },
       backDepartInfo(info) {
         this.model.departIds = this.model.selecteddeparts
         this.nextDepartOptions = info.map((item, index, arr) => {
@@ -413,6 +457,13 @@
       backProductionInfo(info) {
         this.model.productionIds = this.model.selectedProduction
         this.nextProductionOptions = info.map((item, index, arr) => {
+          let c = { label: item.text, value: item.value + '' }
+          return c
+        })
+      },
+      backBaseFactoryInfo(info) {
+        this.model.eamFactoryIds = this.model.selectedBaseFactory
+        this.nextBaseFactoryOptions = info.map((item, index, arr) => {
           let c = { label: item.text, value: item.value + '' }
           return c
         })
@@ -429,6 +480,7 @@
         this.userId = ''
         this.nextDepartOptions = []
         this.nextProductionOptions = []
+        this.nextBaseFactoryOptions = []
         this.nextRepairDepartOptions = []
         this.departIdShow = false
       },
@@ -437,6 +489,7 @@
         this.visible = false
         this.disableSubmit = false
         this.nextDepartOptions = []
+        this.nextProductionOptions = []
         this.nextProductionOptions = []
         this.nextRepairDepartOptions = []
         this.departIdShow = false
@@ -615,6 +668,13 @@
         this.$refs.selectDeviceModal.checkedKeys = this.model.equipmentIds ? this.model.equipmentIds.split(',') : []
       },
 
+      eamDeviceSearch(){
+        this.$refs.selectEamDeviceModal.visible = true
+        this.$refs.selectEamDeviceModal.selectedRowKeys = []
+        this.$refs.selectEamDeviceModal.selectedRows = []
+        this.$refs.selectEamDeviceModal.checkedKeys = this.model.eamEquipmentIds ? this.model.eamEquipmentIds.split(',') : []
+      },
+
       /**
        * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂
        * @param data 宸查�夋嫨鐨勮澶囨暟缁�
@@ -622,6 +682,10 @@
       selectOK(data) {
         console.log('data=', data)
         this.$set(this.model, 'equipmentIds', data.join(','))
+      },
+      selectEamOK(data) {
+        console.log('data=', data)
+        this.$set(this.model, 'eamEquipmentIds', data.join(','))
       }
     }
   }

--
Gitblit v1.9.3