浏览代码

Merge branch 'master' of http://152.136.206.27:3000/dongjh/ems_client

dongjh 1 年之前
父节点
当前提交
2fd48de595
共有 25 个文件被更改,包括 1614 次插入373 次删除
  1. 4 1
      src/App.vue
  2. 1 1
      src/components/dict/JDictSelectTag.vue
  3. 41 5
      src/views/module_cmms/inspectContent/InspectContentList.vue
  4. 26 5
      src/views/module_cmms/inspectContent/modules/InspectContentForm.vue
  5. 76 31
      src/views/module_cmms/inspectContent/modules/InspectContentModalAdd.vue
  6. 7 4
      src/views/module_cmms/inspectLine/modules/InspectLineForm.vue
  7. 54 31
      src/views/module_cmms/inspectLine/modules/InspectLineModalAdd.vue
  8. 7 2
      src/views/module_cmms/inspectPlan/modules/InspectPlanFormList.vue
  9. 2 0
      src/views/module_cmms/inspectPlan/modules/InspectPlanFormSet.vue
  10. 54 33
      src/views/module_cmms/inspectPlan/modules/InspectPlanModalAddLine.vue
  11. 47 32
      src/views/module_cmms/inspectPlan/modules/InspectPlanModalAddSpot.vue
  12. 10 6
      src/views/module_cmms/inspectSpot/modules/InspectSpotForm.vue
  13. 95 27
      src/views/module_cmms/inspectSpot/modules/InspectSpotModalAdd.vue
  14. 78 2
      src/views/module_cmms/submission/SubmissionList.vue
  15. 2 1
      src/views/module_cmms/submission/modules/SubmissionForm.vue
  16. 75 0
      src/views/module_cmms/submission/modules/editStatusModal.vue
  17. 95 0
      src/views/module_cmms/submission/modules/handleDetailXq.vue
  18. 215 76
      src/views/module_cmms/submission/modulesFK/SubmissionEquipmentFormFK.vue
  19. 3 3
      src/views/module_cmms/submission/modulesFK/SubmissionEquipmentModalFK.vue
  20. 134 109
      src/views/module_cmms/upkeep/UpkeepList.vue
  21. 262 0
      src/views/module_cmms/upkeep/index.vue
  22. 1 1
      src/views/module_cmms/upkeepPlan/modules/UpkeepPlanForm.vue
  23. 68 3
      src/views/module_tpm/equipment/EquipmentList.vue
  24. 212 0
      src/views/module_tpm/equipment/modules/EquipmentDetail.vue
  25. 45 0
      src/views/module_tpm/equipment/modules/EquipmentForm.vue

+ 4 - 1
src/App.vue

@@ -41,4 +41,7 @@
   #app {
     height: 100%;
   }
-</style>
+</style>
+<!-- <style lang="less">
+  @import '~@/assets/less/uStyle.less';
+</style> -->

+ 1 - 1
src/components/dict/JDictSelectTag.vue

@@ -7,7 +7,7 @@
     <a-radio-button v-for="(item, key) in dictOptions" :key="key" :value="item.value">{{ item.text }}</a-radio-button>
   </a-radio-group>
 
-  <a-select v-else-if="tagType=='select'" :getPopupContainer = "getPopupContainer" :placeholder="placeholder" :disabled="disabled" :value="getValueSting" @change="handleInput">
+  <a-select v-else-if="tagType=='select'" :getPopupContainer = "getPopupContainer" :placeholder="placeholder" :disabled="disabled" :value="getValueSting" @change="handleInput" allowClear>
     <a-select-option :value="undefined">请选择</a-select-option>
     <a-select-option v-for="(item, key) in dictOptions" :key="key" :value="item.value">
       <span style="display: inline-block;width: 100%" :title=" item.text || item.label ">

+ 41 - 5
src/views/module_cmms/inspectContent/InspectContentList.vue

@@ -94,6 +94,10 @@
           </a-button>
         </template>
 
+        <template slot="status" slot-scope="text, record">
+          <a-switch :checked="record.status === '0' ? true : false" checked-children="启动" un-checked-children="停用" @click="changeStatus(record)"/>
+        </template>
+
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
 
@@ -122,6 +126,7 @@
 
 <script>
 
+  import { httpAction, getAction } from '@/api/manage'
   import '@/assets/less/TableExpand.less'
   import { mixinDevice } from '@/utils/mixin'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
@@ -159,14 +164,20 @@
             dataIndex: 'contentname'
           },
           {
-            title:'设备id',
+            title:'巡检内容名称',
+            align:"center",
+            dataIndex: 'classification_dictText'
+          },
+          {
+            title:'设备名称',
             align:"center",
-            dataIndex: 'equipmentid'
+            dataIndex: 'equipmentname'
           },
           {
-            title:'状态:启用:0、禁用:1',
+            title:'状态',
             align:"center",
-            dataIndex: 'status'
+            dataIndex: 'status',
+            scopedSlots: { customRender: 'status' }
           },
           {
             title:'备注',
@@ -188,6 +199,7 @@
           deleteBatch: "/cmmsInspectContent/cmmsInspectContent/deleteBatch",
           exportXlsUrl: "/cmmsInspectContent/cmmsInspectContent/exportXls",
           importExcelUrl: "cmmsInspectContent/cmmsInspectContent/importExcel",
+          updateStatus: "/cmmsInspectContent/cmmsInspectContent/updatestatus",
 
         },
         dictOptions:{},
@@ -195,7 +207,7 @@
       }
     },
     created() {
-    this.getSuperFieldList();
+      this.getSuperFieldList();
     },
     computed: {
       importExcelUrl: function(){
@@ -203,6 +215,30 @@
       },
     },
     methods: {
+      changeStatus(record){
+        // console.log(record.status)
+        const that = this
+        that.$confirm({
+          title: "提示",
+          content: record.status ==='0'?'确定停用吗?':'确定启用吗?',
+          onOk() {
+            var status = {
+              id: record.id,
+              status: record.status ==='0' ? '1' : '0',
+            }
+            httpAction(that.url.updateStatus,status,'post').then((res)=>{
+              if(res.success){
+                that.loadData()
+                that.$message.success(res.message);
+              }else{
+                that.$message.warning(res.message);
+              }
+            })
+          },
+          onCancel() {
+          }
+        });
+      },
       initDictConfig(){
       },
       getSuperFieldList(){

+ 26 - 5
src/views/module_cmms/inspectContent/modules/InspectContentForm.vue

@@ -101,14 +101,17 @@
         },
         confirmLoading: false,
         validatorRules: {
+          classification: [
+            { required: true, message: '请先选择巡检内容类型!'},
+          ],
           contentname: [
-          { required: true, message: '请输入巡检内容名称!'},
+            { required: true, message: '请输入巡检内容名称!'},
           ],
           equipmentid: [
-          { required: true, message: '请选择设备!'},
+            { required: true, message: '请选择设备!'},
           ],
           status: [
-          { required: true, message: '请选择状态!'},
+            { required: true, message: '请选择状态!'},
           ],
         },
         url: {
@@ -127,6 +130,16 @@
           //     return parseInt(index)+1;
           //   }
           // },
+          // {
+          //   title:'id',
+          //   align:"center",
+          //   dataIndex: 'id'
+          // },
+          // {
+          //   title:'inspectcheckitemid',
+          //   align:"center",
+          //   dataIndex: 'inspectcheckitemid'
+          // },
           {
             title:'点检项编号',
             align:"center",
@@ -171,6 +184,7 @@
         if (this.model.classification === '1' && this.model.equipmentid == undefined) {
           this.$message.error("请先选择设备!");
         } else {
+          this.$refs.addItemRef.type = this.model.classification
           this.$refs.addItemRef.add();
           this.$refs.addItemRef.title = "选择巡检项";
         }
@@ -185,6 +199,10 @@
         // this.model = Object.assign({}, record);
         getAction(this.url.queryById, {id: record.id}).then((res) => {
           this.model = res.result
+          this.model.cmmsInspectContentItemList.forEach(item => {
+            item.id = item.inspectcheckitemid
+          });
+          console.log(this.model.cmmsInspectContentItemList)
           this.confirmLoading = false
         })
       },
@@ -203,6 +221,9 @@
               httpurl+=this.url.edit;
                method = 'put';
             }
+            this.model.cmmsInspectContentItemList.forEach(item => {
+              item.inspectcheckitemid = item.id
+            });
             httpAction(httpurl,this.model,method).then((res)=>{
               if(res.success){
                 that.$message.success(res.message);
@@ -218,8 +239,8 @@
         })
       },
       handleOk(data){
-        console.log(data)
-        this.model.cmmsInspectContentItemList = data;
+        console.log('handleOk-data', data)
+        this.model.cmmsInspectContentItemList = data
       }
     }
   }

+ 76 - 31
src/views/module_cmms/inspectContent/modules/InspectContentModalAdd.vue

@@ -6,6 +6,10 @@
   @ok="handleOk"
   @cancel="handleCancel"
   cancelText="关闭">
+    <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"
@@ -14,8 +18,9 @@
       rowKey="id"
       :columns="columns"
       :dataSource="dataSource"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-      :pagination="false"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, onSelect: onSelect}"
+      :pagination="ipagination"
+      @change="handleTableChange"
       class="j-table-force-nowrap">
     </a-table>
   </j-modal>
@@ -23,12 +28,12 @@
 
 <script>
   import { httpAction, getAction } from '@/api/manage'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   
   export default {
     name: 'SpotcheckContentModalAdd',
-    components: {
-        
-    },
+    mixins:[JeecgListMixin, mixinDevice],
     props: {
       //表单禁用
       equipmentId: {
@@ -90,60 +95,100 @@
           }
         ],
         dataSource: [],
+        chooseData: [],
         url: {
           getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
           itemList: "/cmmsInspectItem/cmmsInspectItem/list",
         },
       }
     },
+    watch: {
+      selectData: {
+        handler(newV, oldV){
+          console.log(newV, oldV)
+          if(newV.length > 0){
+            this.selectList()
+          }
+        },
+      }
+    },
     methods: {
-      add () {
+      add(){
         this.visible = true;
+        this.loadData()
+      },
+      loadData () {
+        // console.log(this.type)
+        var params = this.getQueryParams();//查询条件
+        this.loading = true;
         if(this.type === '1'){
-          getAction(this.url.getList, {eqid: this.equipmentId}).then((res) => {
-            this.dataSource = res.result
+          params.eqid = this.equipmentId
+          getAction(this.url.getList, params).then((res) => {
+            if (res.success) {
+              this.dataSource = res.result.records||res.result;
+              if(res.result.total)
+              {
+                this.ipagination.total = res.result.total;
+              }else{
+                this.ipagination.total = 0;
+              }
+              // this.selectList()
+            }else{
+              this.$message.warning(res.message)
+            }
+          }).finally(() => {
+            this.loading = false
           })
         } else {
-          getAction(this.url.itemList, {classification: this.type}).then((res) => {
-            this.dataSource = res.result.records
+          params.classification = this.type
+          getAction(this.url.itemList, params).then((res) => {
+            if (res.success) {
+              this.dataSource = res.result.records||res.result;
+              if(res.result.total)
+              {
+                this.ipagination.total = res.result.total;
+              }else{
+                this.ipagination.total = 0;
+              }
+              // this.selectList()
+            }else{
+              this.$message.warning(res.message)
+            }
+          }).finally(() => {
+            this.loading = false
           })
         }
-        this.selectList()
       },
       // 将以选中的值重新在列表中选中
       selectList() {
-        this.selectionRows = this.selectData
-        console.log(this.selectData)
-        this.selectedRowKeys = this.selectData.map((res) => {
+        this.chooseData = [...this.selectData]
+        console.log('chooseData', this.chooseData)
+        this.selectedRowKeys = this.chooseData.map((res) => {
           return res.id
         })
+        console.log(this.selectedRowKeys)
       },
       close () {
-        this.$emit('close');
         this.visible = false;
-        this.onClearSelected()
-        this.selectionRows = this.selectData
-        this.selectedRowKeys = this.selectData.map((res) => {
-          return res.id
-        })
-        this.dataSource = []
       },
       handleOk () {
-        console.log(this.selectionRows)
-        this.$emit('ok', this.selectionRows);
+        this.$emit('ok', this.chooseData);
+        console.log(this.chooseData)
         this.visible = false;
       },
       handleCancel () {
         this.close()
       },
-      onSelectChange(selectedRowKeys, selectionRows) {
-        this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows = selectionRows;
-        console.log(this.selectedRowKeys,this.selectionRows)
-      },
-      onClearSelected() {
-        this.selectedRowKeys = [];
-        this.selectionRows = [];
+      onSelect(selectedRow, selected){
+        // console.log(selectedRow, selected)
+        if(selected){
+          // 新增
+          this.chooseData.push(selectedRow)
+        } else {
+          // 删除(过滤)
+          var index = this.chooseData.findIndex(item => item.id === selectedRow.id)
+          this.chooseData.splice(index, 1)
+        }
       },
     }
   }

+ 7 - 4
src/views/module_cmms/inspectLine/modules/InspectLineForm.vue

@@ -298,6 +298,9 @@
         // this.model = Object.assign({}, record);
         getAction(this.url.queryById, {id: record.id}).then((res) => {
           this.model = res.result
+          this.model.detailList.forEach(item => {
+            item.id = item.inspectspotid
+          });
           console.log(res)
           this.confirmLoading = false
         })
@@ -317,6 +320,9 @@
               httpurl+=this.url.edit;
                method = 'put';
             }
+            this.model.detailList.forEach(item => {
+              item.inspectspotid = item.id
+            });
             httpAction(httpurl,this.model,method).then((res)=>{
               if(res.success){
                 that.$message.success(res.message);
@@ -333,10 +339,7 @@
       },
       handleOk(data){
         console.log(data)
-        this.model.detailList = data.map(item=>{
-          item.inspectspotid = item.id
-          return item
-        })
+        this.model.detailList = data
       },
     }
   }

+ 54 - 31
src/views/module_cmms/inspectLine/modules/InspectLineModalAdd.vue

@@ -14,8 +14,9 @@
       rowKey="id"
       :columns="columns"
       :dataSource="dataSource"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-      :pagination="false"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, onSelect: onSelect}"
+      :pagination="ipagination"
+      @change="handleTableChange"
       class="j-table-force-nowrap">
     </a-table>
   </j-modal>
@@ -23,12 +24,12 @@
 
 <script>
   import { httpAction, getAction } from '@/api/manage'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   
   export default {
     name: 'InspectLineModalAdd',
-    components: {
-        
-    },
+    mixins:[JeecgListMixin, mixinDevice],
     props: {
       //表单禁用
       equipmentId: {
@@ -80,55 +81,77 @@
           },
         ],
         dataSource: [],
+        chooseData: [],
         url: {
-          getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
-          spotList: "/cmmsInspectSpot/cmmsInspectSpot/listDetails",
+          list: "/cmmsInspectSpot/cmmsInspectSpot/listDetails",
+        },
+      }
+    },
+    watch: {
+      selectData: {
+        handler(newV, oldV){
+          console.log(newV, oldV)
+          if(newV.length > 0){
+            this.selectList()
+          }
         },
       }
     },
     methods: {
-      add () {
+      add(){
         this.visible = true;
+        this.loadData()
+      },
+      loadData () {
         //  {status: '0'}
-        getAction(this.url.spotList).then((res) => {
-          this.dataSource = res.result.records
+        var params = this.getQueryParams();//查询条件
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records||res.result;
+            if(res.result.total)
+            {
+              this.ipagination.total = res.result.total;
+            }else{
+              this.ipagination.total = 0;
+            }
+            // this.selectList()
+          }else{
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
         })
-        this.selectList()
       },
       // 将以选中的值重新在列表中选中
       selectList() {
-        this.selectionRows = this.selectData
-        console.log(this.selectData)
+        this.chooseData = [...this.selectData]
+        // console.log(this.selectData)
         this.selectedRowKeys = this.selectData.map((res) => {
-          return res.inspectspotid
+          return res.id
         })
       },
       close () {
-        this.$emit('close');
         this.visible = false;
-        this.onClearSelected()
-        this.selectionRows = this.selectData
-        this.selectedRowKeys = this.selectData.map((res) => {
-          return res.inspectspotid
-        })
-        this.dataSource = []
       },
       handleOk () {
-        console.log(this.selectionRows)
-        this.$emit('ok', this.selectionRows);
+        this.$emit('ok', this.chooseData);
+        console.log('chooseData', this.chooseData)
         this.visible = false;
       },
       handleCancel () {
         this.close()
       },
-      onSelectChange(selectedRowKeys, selectionRows) {
-        this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows = selectionRows;
-        console.log(this.selectedRowKeys,this.selectionRows)
-      },
-      onClearSelected() {
-        this.selectedRowKeys = [];
-        this.selectionRows = [];
+      onSelect(selectedRow, selected){
+        // console.log(selectedRow, selected)
+        if(selected){
+          // 新增
+          this.chooseData.push(selectedRow)
+        } else {
+          // 删除(过滤)
+          var index = this.chooseData.findIndex(item => item.id === selectedRow.id)
+          this.chooseData.splice(index, 1)
+        }
       },
     }
   }

+ 7 - 2
src/views/module_cmms/inspectPlan/modules/InspectPlanFormList.vue

@@ -336,12 +336,16 @@
       // 维护巡检路线
       handleAddLine(){
         this.inspectLineList = this.tableData.filter(item => item.tasktype === '巡检路线').map(i => i.inspectLineVo)
+        console.log(this.inspectLineList)
         this.$refs.addLineRef.add();
         this.$refs.addLineRef.title = "选择巡检路线";
       },
       handleLineOk(data){
-        // console.log(data) // 新获取的巡检路线数据
-        // console.log(this.inspectLineList) // 原来巡检路线数据
+        // console.log('ok-data', data) // 新获取的巡检路线数据
+        this.inspectLineList = this.tableData.filter(item => item.tasktype === '巡检路线').map(i => i.inspectLineVo)
+        // 为什么不写上面那一步,直接调用数据会变成data
+        // console.log('inspectLineList', this.inspectLineList) // 原来巡检路线数据
+        
         // 添加--获取最新巡检路线数据中原来巡检点没有的数据
         var addData = data.filter(item => !this.inspectLineList.some(i=>i.id === item.id))
         console.log(addLines)
@@ -375,6 +379,7 @@
       handleSpotOk(data){
         // console.log(data) // 新获取的巡检点数据
         // console.log(this.inspectSpotList) // 原来巡检点数据
+        this.inspectSpotList = this.tableData.filter(item => item.tasktype === '巡检点').map(i => i.inspectSpotVo)
         // 添加--获取最新巡检点数据中原来巡检点没有的数据
         var addData = data.filter(item => !this.inspectSpotList.some(i=>i.id === item.id))
         console.log(addSpots)

+ 2 - 0
src/views/module_cmms/inspectPlan/modules/InspectPlanFormSet.vue

@@ -172,6 +172,8 @@
             }).finally(() => {
               that.confirmLoading = false;
             })
+          } else {
+            that.$message.warning('计划设置参数未填写完全');
           }
          
         })

+ 54 - 33
src/views/module_cmms/inspectPlan/modules/InspectPlanModalAddLine.vue

@@ -6,6 +6,10 @@
   @ok="handleOk"
   @cancel="handleCancel"
   cancelText="关闭">
+    <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"
@@ -14,23 +18,23 @@
       rowKey="id"
       :columns="columns"
       :dataSource="dataSource"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-      :pagination="false"
-      class="j-table-force-nowrap">
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, onSelect: onSelect}"
+      class="j-table-force-nowrap"
+      :pagination="ipagination"
+      @change="handleTableChange">
     </a-table>
   </j-modal>
 </template>
 
 <script>
   import { httpAction, getAction } from '@/api/manage'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   
   export default {
     name: 'InspectLineModalAdd',
-    components: {
-        
-    },
+    mixins:[JeecgListMixin, mixinDevice],
     props: {
-      //表单禁用
       equipmentId: {
         type: String,
         default: ''
@@ -44,6 +48,7 @@
     },
     data () {
       return {
+        disableMixinCreated: true,
         title:'',
         width: 1000,
         visible: false,
@@ -80,9 +85,11 @@
           },
         ],
         dataSource: [],
+        chooseData: [],
         url: {
-          getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
-          lineList: "/cmmsInspectLine/cmmsInspectLine/listDetails",
+          list: "/cmmsInspectLine/cmmsInspectLine/listDetails",
+          // getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
+          // lineList: "/cmmsInspectLine/cmmsInspectLine/listDetails",
         },
       }
     },
@@ -90,53 +97,67 @@
       selectData: {
         handler(newV, oldV){
           console.log(newV, oldV)
-          this.selectList()
+          if(newV.length > 0){
+            this.selectList()
+          }
         },
       }
     },
     methods: {
-      add () {
+      add(){
         this.visible = true;
+        this.loadData()
+      },
+      loadData () {
         //  {status: '0'}
-        getAction(this.url.lineList).then((res) => {
-          this.dataSource = res.result.records
+        var params = this.getQueryParams();//查询条件
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records||res.result;
+            if(res.result.total)
+            {
+              this.ipagination.total = res.result.total;
+            }else{
+              this.ipagination.total = 0;
+            }
+            // this.selectList()
+          }else{
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
         })
-        this.selectList()
       },
       // 将以选中的值重新在列表中选中
       selectList() {
-        this.selectionRows = this.selectData
-        console.log(this.selectData)
+        this.chooseData = this.selectData
+        // console.log(this.selectData)
         this.selectedRowKeys = this.selectData.map((res) => {
           return res.id
         })
       },
       close () {
-        this.$emit('close');
         this.visible = false;
-        this.onClearSelected()
-        this.selectionRows = this.selectData
-        this.selectedRowKeys = this.selectData.map((res) => {
-          return res.id
-        })
-        this.dataSource = []
       },
       handleOk () {
-        console.log(this.selectionRows)
-        this.$emit('ok', this.selectionRows);
+        this.$emit('ok', this.chooseData);
+        console.log(this.chooseData)
         this.visible = false;
       },
       handleCancel () {
         this.close()
       },
-      onSelectChange(selectedRowKeys, selectionRows) {
-        this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows = selectionRows;
-        console.log(this.selectedRowKeys,this.selectionRows)
-      },
-      onClearSelected() {
-        this.selectedRowKeys = [];
-        this.selectionRows = [];
+      onSelect(selectedRow, selected){
+        // console.log(selectedRow, selected)
+        if(selected){
+          // 新增
+          this.chooseData.push(selectedRow)
+        } else {
+          // 删除(过滤)
+          var index = this.chooseData.findIndex(item => item.id === selectedRow.id)
+          this.chooseData.splice(index, 1)
+        }
       },
     }
   }

+ 47 - 32
src/views/module_cmms/inspectPlan/modules/InspectPlanModalAddSpot.vue

@@ -14,8 +14,9 @@
       rowKey="id"
       :columns="columns"
       :dataSource="dataSource"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-      :pagination="false"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, onSelect: onSelect}"
+      :pagination="ipagination"
+      @change="handleTableChange"
       class="j-table-force-nowrap">
     </a-table>
   </j-modal>
@@ -23,14 +24,13 @@
 
 <script>
   import { httpAction, getAction } from '@/api/manage'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   
   export default {
     name: 'InspectLineModalAdd',
-    components: {
-        
-    },
+    mixins:[JeecgListMixin, mixinDevice],
     props: {
-      //表单禁用
       equipmentId: {
         type: String,
         default: ''
@@ -80,9 +80,10 @@
           },
         ],
         dataSource: [],
+        chooseData: [],
         url: {
-          getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
-          spotList: "/cmmsInspectSpot/cmmsInspectSpot/listDetails",
+          // getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
+          list: "/cmmsInspectSpot/cmmsInspectSpot/listDetails",
         },
       }
     },
@@ -90,53 +91,67 @@
       selectData: {
         handler(newV, oldV){
           console.log(newV, oldV)
-          this.selectList()
+          if(newV.length > 0){
+            this.selectList()
+          }
         },
       }
     },
     methods: {
-      add () {
+      add(){
         this.visible = true;
+        this.loadData()
+      },
+      loadData () {
         //  {status: '0'}
-        getAction(this.url.spotList).then((res) => {
-          this.dataSource = res.result.records
+        var params = this.getQueryParams();//查询条件
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records||res.result;
+            if(res.result.total)
+            {
+              this.ipagination.total = res.result.total;
+            }else{
+              this.ipagination.total = 0;
+            }
+            // this.selectList()
+          }else{
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
         })
-        this.selectList()
       },
       // 将以选中的值重新在列表中选中
       selectList() {
-        this.selectionRows = this.selectData
-        console.log(this.selectData)
+        this.chooseData = this.selectData
+        // console.log(this.selectData)
         this.selectedRowKeys = this.selectData.map((res) => {
           return res.id
         })
       },
       close () {
-        this.$emit('close');
         this.visible = false;
-        this.onClearSelected()
-        this.selectionRows = this.selectData
-        this.selectedRowKeys = this.selectData.map((res) => {
-          return res.id
-        })
-        this.dataSource = []
       },
       handleOk () {
-        console.log(this.selectionRows)
-        this.$emit('ok', this.selectionRows);
+        this.$emit('ok', this.chooseData);
+        console.log(this.chooseData)
         this.visible = false;
       },
       handleCancel () {
         this.close()
       },
-      onSelectChange(selectedRowKeys, selectionRows) {
-        this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows = selectionRows;
-        console.log(this.selectedRowKeys,this.selectionRows)
-      },
-      onClearSelected() {
-        this.selectedRowKeys = [];
-        this.selectionRows = [];
+      onSelect(selectedRow, selected){
+        // console.log(selectedRow, selected)
+        if(selected){
+          // 新增
+          this.chooseData.push(selectedRow)
+        } else {
+          // 删除(过滤)
+          var index = this.chooseData.findIndex(item => item.id === selectedRow.id)
+          this.chooseData.splice(index, 1)
+        }
       },
     }
   }

+ 10 - 6
src/views/module_cmms/inspectSpot/modules/InspectSpotForm.vue

@@ -10,8 +10,8 @@
             </a-form-model-item>
           </a-col> -->
           <a-col :span="24">
-            <a-form-model-item label="巡检内容名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentname">
-              <a-input v-model="model.contentname" placeholder="请输入巡检内容名称"  ></a-input>
+            <a-form-model-item label="巡检名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentname">
+              <a-input v-model="model.contentname" placeholder="请输入巡检名称"  ></a-input>
             </a-form-model-item>
           </a-col>
           <a-col :span="24">
@@ -87,6 +87,9 @@
         },
         confirmLoading: false,
         validatorRules: {
+          contentname: [
+            { required: true, message: '请输入巡检路线名称!'},
+          ],
         },
         url: {
           add: "/cmmsInspectSpot/cmmsInspectSpot/add",
@@ -227,10 +230,11 @@
         })
       },
       handleOk(data){
-        data.map(res=>{
-          
-        })
-        this.model.inspectContentList = data;
+        // this.model.inspectContentList = data;
+        this.model.inspectContentList = data.map(item => {
+          // item.inspectcheckitemid = item.id
+          return item
+        });
       },
     }
   }

+ 95 - 27
src/views/module_cmms/inspectSpot/modules/InspectSpotModalAdd.vue

@@ -14,8 +14,9 @@
       rowKey="id"
       :columns="columns"
       :dataSource="dataSource"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-      :pagination="false"
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, onSelect: onSelect}"
+      :pagination="ipagination"
+      @change="handleTableChange"
       class="j-table-force-nowrap">
     </a-table>
   </j-modal>
@@ -23,9 +24,12 @@
 
 <script>
   import { httpAction, getAction } from '@/api/manage'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   
   export default {
     name: 'SpotcheckContentModalAdd',
+    mixins:[JeecgListMixin, mixinDevice],
     components: {
         
     },
@@ -89,55 +93,119 @@
           },
         ],
         dataSource: [],
+        chooseData: [],
         url: {
-          getList: "/cmmsInspectItem/cmmsInspectItem/getItemByEqId",
-          contentList: "/cmmsInspectContent/cmmsInspectContent/listDetails",
+          list: "/cmmsInspectContent/cmmsInspectContent/listDetails",
+        },
+      }
+    },
+    watch: {
+      selectData: {
+        handler(newV, oldV){
+          console.log(newV, oldV)
+          if(newV.length > 0){
+            this.selectList()
+          }
         },
       }
     },
     methods: {
-      add () {
+      add(){
         this.visible = true;
-        getAction(this.url.contentList, {status: '0'}).then((res) => {
-          this.dataSource = res.result.records
+        this.loadData()
+      },
+      loadData () {
+        //  {status: '0'}
+        var params = this.getQueryParams();//查询条件
+        params.status = '0'
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records||res.result;
+            if(res.result.total)
+            {
+              this.ipagination.total = res.result.total;
+            }else{
+              this.ipagination.total = 0;
+            }
+            // this.selectList()
+          }else{
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
         })
-        this.selectList()
       },
       // 将以选中的值重新在列表中选中
       selectList() {
-        this.selectionRows = this.selectData
-        console.log(this.selectData)
+        this.chooseData = [...this.selectData]
+        // console.log(this.selectData)
         this.selectedRowKeys = this.selectData.map((res) => {
           return res.id
         })
       },
       close () {
-        this.$emit('close');
         this.visible = false;
-        this.onClearSelected()
-        this.selectionRows = this.selectData
-        this.selectedRowKeys = this.selectData.map((res) => {
-          return res.id
-        })
-        this.dataSource = []
       },
       handleOk () {
-        console.log(this.selectionRows)
-        this.$emit('ok', this.selectionRows);
+        this.$emit('ok', this.chooseData);
+        console.log(this.chooseData)
         this.visible = false;
       },
       handleCancel () {
         this.close()
       },
-      onSelectChange(selectedRowKeys, selectionRows) {
-        this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows = selectionRows;
-        console.log(this.selectedRowKeys,this.selectionRows)
-      },
-      onClearSelected() {
-        this.selectedRowKeys = [];
-        this.selectionRows = [];
+      onSelect(selectedRow, selected){
+        // console.log(selectedRow, selected)
+        if(selected){
+          // 新增
+          this.chooseData.push(selectedRow)
+        } else {
+          // 删除(过滤)
+          var index = this.chooseData.findIndex(item => item.id === selectedRow.id)
+          this.chooseData.splice(index, 1)
+        }
       },
+
+
+
+
+
+      // 将以选中的值重新在列表中选中
+      // selectList() {
+      //   this.selectionRows = this.selectData
+      //   console.log(this.selectData)
+      //   this.selectedRowKeys = this.selectData.map((res) => {
+      //     return res.id
+      //   })
+      // },
+      // close () {
+      //   this.$emit('close');
+      //   this.visible = false;
+      //   this.onClearSelected()
+      //   this.selectionRows = this.selectData
+      //   this.selectedRowKeys = this.selectData.map((res) => {
+      //     return res.id
+      //   })
+      //   this.dataSource = []
+      // },
+      // handleOk () {
+      //   console.log(this.selectionRows)
+      //   this.$emit('ok', this.selectionRows);
+      //   this.visible = false;
+      // },
+      // handleCancel () {
+      //   this.close()
+      // },
+      // onSelectChange(selectedRowKeys, selectionRows) {
+      //   this.selectedRowKeys = selectedRowKeys;
+      //   this.selectionRows = selectionRows;
+      //   console.log(this.selectedRowKeys,this.selectionRows)
+      // },
+      // onClearSelected() {
+      //   this.selectedRowKeys = [];
+      //   this.selectionRows = [];
+      // },
     }
   }
 </script>

+ 78 - 2
src/views/module_cmms/submission/SubmissionList.vue

@@ -94,6 +94,23 @@
           </a-button>
         </template>
 
+        <span slot="sjcode" slot-scope="text, record">
+          <a @click="handleDetailXQ(record)">{{ record.sjcode}}</a>
+        </span>
+
+        <!-- 版本1:弹框(未做if判断) -->
+        <!-- <span slot="submissionGdstatus_dictText" slot-scope="text, record">
+          <a @click="statusEdit(record)">{{ record.submissionGdstatus_dictText}}</a>
+        </span> -->
+        <!-- 版本二(加if判断) -->
+        <span slot="submissionGdstatus_dictText" slot-scope="text, record">
+          <!-- <a @click="statusEdit(record)" v-if="record.submissionGdstatus != 2">{{ record.submissionGdstatus_dictText}}</a> -->
+          <a-popconfirm  v-if="record.submissionGdstatus != 2" :title="record.submissionGdstatus == 0 ? '确定将工单状态改为“进行中”吗':'确定将工单状态改为“已完成”吗'" @confirm="() => statusEdit(record)">
+            <a>{{ record.submissionGdstatus_dictText}}</a>
+          </a-popconfirm>
+          <span v-if="record.submissionGdstatus == 2">{{ record.submissionGdstatus_dictText}}</span>
+        </span>
+
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
@@ -119,6 +136,8 @@
 
     <cmms-submission-modal ref="modalForm" @ok="modalFormOk"></cmms-submission-modal>
     <SubmissionEquipmentModalFK ref="modalFormFK" @ok="modalFormOk"> </SubmissionEquipmentModalFK>
+    <edit-status-modal ref="modalFormEdit" @ok="modalFormOk"></edit-status-modal>
+    <handle-detail-xq ref="modalFormXq"></handle-detail-xq>
   </a-card>
 </template>
 
@@ -127,8 +146,11 @@
   import '@/assets/less/TableExpand.less'
   import { mixinDevice } from '@/utils/mixin'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import { httpAction, getAction } from '@/api/manage'
   import CmmsSubmissionModal from './modules/SubmissionModal'
   import SubmissionEquipmentModalFK from "./modulesFK/SubmissionEquipmentModalFK.vue";
+  import EditStatusModal from './modules/editStatusModal.vue'
+  import HandleDetailXq from './modules/handleDetailXq.vue'
 
   export default {
     name: 'CmmsSubmissionList',
@@ -136,6 +158,8 @@
     components: {
       CmmsSubmissionModal,
       SubmissionEquipmentModalFK,
+        EditStatusModal,
+        HandleDetailXq,
     },
     data () {
       return {
@@ -153,9 +177,15 @@
             }
           },
           {
+            title:'送检编号',
+            align:"center",
+            dataIndex: 'sjcode',
+            scopedSlots: { customRender: 'sjcode' }
+          },
+          {
             title:'送检负责人',
             align:"center",
-            dataIndex: 'verificatePerson'
+            dataIndex: 'verificatePerson_dictText'
           },
           {
             title:'检定方式',
@@ -183,6 +213,12 @@
             dataIndex: 'remark'
           },
           {
+            title:'送检工单状态',
+            align:"center",
+            dataIndex: 'submissionGdstatus_dictText',
+            scopedSlots: { customRender: 'submissionGdstatus_dictText' }
+          },
+          {
             title: '操作',
             dataIndex: 'action',
             align:"center",
@@ -197,10 +233,11 @@
           deleteBatch: "/cmmsSubmission/cmmsSubmission/deleteBatch",
           exportXlsUrl: "/cmmsSubmission/cmmsSubmission/exportXls",
           importExcelUrl: "cmmsSubmission/cmmsSubmission/importExcel",
-
+          editStatus: "/cmmsSubmission/cmmsSubmission/editSJStatus"
         },
         dictOptions:{},
         superFieldList:[],
+        model: {}
       }
     },
     created() {
@@ -228,6 +265,45 @@
         this.$refs.modalFormFK.title = "送检信息反馈";
         this.$refs.modalFormFK.disableSubmit = false;
         this.$refs.modalFormFK.fankui(record.id);
+      },
+      // 修改工单状态
+      statusEdit(record){
+        // 版本1:弹框
+        // this.$refs.modalFormEdit.title = "修改工单状态";
+        // this.$refs.modalFormEdit.disableSubmit = false;
+        // this.$refs.modalFormEdit.edit(record.id);
+        // 版本2:按钮直接进行下一步状态
+        console.log(record.submissionGdstatus)
+        let httpurl = '';
+        let method = '';
+        httpurl+=this.url.editStatus;
+        method = 'put';
+        if (record.submissionGdstatus == 0) {
+          this.model = {
+            id: record.id,
+            submissionGdstatus : "1",
+          }
+        }
+        if (record.submissionGdstatus == 1) {
+          this.model = {
+            id: record.id,
+            submissionGdstatus : "2",
+          }
+        }
+        httpAction(httpurl,this.model,method).then((res)=>{
+          if(res.success){
+            this.$message.success(res.message);
+            this.modalFormOk()
+          }else{
+            this.$message.warning(res.message);
+            this.modalFormOk()
+          }
+        })
+      },
+      handleDetailXQ(record){
+        this.$refs.modalFormXq.title = "送检信息详情";
+        this.$refs.modalFormXq.disableSubmit = false;
+        this.$refs.modalFormXq.findHandle(record.id);
       }
     }
   }

+ 2 - 1
src/views/module_cmms/submission/modules/SubmissionForm.vue

@@ -10,7 +10,8 @@
           </a-col>
           <a-col :span="24">
             <a-form-model-item label="送检负责人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="verificatePerson">
-              <a-input v-model="model.verificatePerson" placeholder="请输入送检负责人"  ></a-input>
+              <!-- <a-input v-model="model.verificatePerson" placeholder="请输入送检负责人"  ></a-input> -->
+              <j-dict-select-tag v-model="model.verificatePerson" placeholder="请选择负责人" dictCode="sys_user,realname,username"/>
             </a-form-model-item>
           </a-col>
           <a-col :span="24">

+ 75 - 0
src/views/module_cmms/submission/modules/editStatusModal.vue

@@ -0,0 +1,75 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+
+    <j-form-container>
+        <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+            <a-row>
+            <a-col :span="24">
+                <a-form-model-item label="工单状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="submissionGdstatus">
+                <j-search-select-tag v-model="model.submissionGdstatus" dict="submission_gdstatus"  placeholder="请选择工单状态"/>
+                </a-form-model-item>
+            </a-col>
+            </a-row>
+        </a-form-model>
+    </j-form-container>
+
+  </j-modal>
+</template>
+
+<script>
+
+
+  export default {
+    name: 'SubmissionModal',
+    components: {
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false,
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+        },
+      }
+    },
+    methods: {
+      edit (record) {
+        this.visible=true
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        // this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>

+ 95 - 0
src/views/module_cmms/submission/modules/handleDetailXq.vue

@@ -0,0 +1,95 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="true"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <!-- <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div> -->
+  </a-drawer>
+</template>
+
+<script>
+
+import {getAction, httpAction} from "@api/manage";
+
+  export default {
+    name: 'handleDetailXq',
+    data () {
+      return {
+        title:"",
+        width:800,
+        visible: false,
+        disableSubmit: false,
+        url: {
+            queryById: "/cmmsSubmission/cmmsSubmission/queryById",
+        },
+      }
+    },
+    methods: {
+        findHandle(id){
+            // 获取送检详情
+            getAction(this.url.queryById, {id:id}).then((res) => {
+                console.log(77,res)
+                // this.formModel.submissionEquipmentList = res.result.submissionEquipmentList
+                // const b = res.result.uploadFileList.map((res) => {
+                // return res.url
+                // })
+                // this.formModel.uploadFileList = b.join(',')
+            })
+            this.visible = true
+        },
+    //   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;
+      },
+      submitCallback(){
+        // this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        // this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 215 - 76
src/views/module_cmms/submission/modulesFK/SubmissionEquipmentFormFK.vue

@@ -1,47 +1,97 @@
 <template>
-  <div class="center">
-    <!-- 查询区域 -->
-    <div class="table-page-search-wrapper">
-      <a-form layout="inline" @keyup.enter.native="getSJSBOptions2">
-        <a-row :gutter="24">
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="设备">
-              <j-search-select-tag placeholder="请选择设备" v-model="queryParam.equipmentid" dict="tpm_equipment,equipmentname,id"/>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="检定结果">
-              <j-dict-select-tag placeholder="请选择检定结果" v-model="queryParam.submissionResult" dictCode="device_verification_result"/>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="送检状态">
-              <j-dict-select-tag placeholder="请选择送检状态" v-model="queryParam.submissionStatus" dictCode="submission_status"/>
-            </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="getSJSBOptions2" icon="search">查询</a-button>
-              <a-button type="primary" @click="getSJSBOptions3" icon="reload" style="margin-left: 8px">重置</a-button>
-            </span>
-          </a-col>
-        </a-row>
-      </a-form>
-    </div>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container>
+      <a-form-model :model="formModel" :rules="formRules" ref="form" slot="detail">
+        <div class="cmms-dialog-item-title">送检工单信息</div>
+          <a-row style="padding-top: 24px;">
+            <a-col :span="24">
+              <a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planname">
+                <!-- <a-input v-model="model.planname" placeholder="请输入计划名称"  ></a-input> -->
+                <j-image-upload text="上传" v-model="formModel.uploadFileList" isMultiple></j-image-upload>
+              </a-form-model-item>
+            </a-col>
+          </a-row>
+        <div class="cmms-dialog-item-title">送检设备信息</div>
+        <!-- 查询区域 -->
+        <div class="table-page-search-wrapper">
+          <a-form layout="inline" @keyup.enter.native="getSJSBOptions2">
+            <a-row :gutter="24">
+              <a-col :xl="6" :lg="7" :md="8" :sm="24">
+                <a-form-item label="设备">
+                  <!-- <j-search-select-tag placeholder="请选择设备" v-model="queryParam.equipmentid" dict="tpm_equipment,equipmentname,id"/> -->
+                  <a-select placeholder="请选择设备" v-model="queryParam.equipmentid" show-search allowClear :options="deviceOption"></a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :xl="6" :lg="7" :md="8" :sm="24">
+                <a-form-item label="检定结果">
+                  <j-dict-select-tag placeholder="请选择检定结果" allowClear v-model="queryParam.submissionResult" dictCode="device_verification_result"/>
+                </a-form-item>
+              </a-col>
+              <a-col :xl="6" :lg="7" :md="8" :sm="24">
+                <a-form-item label="送检状态">
+                  <j-dict-select-tag placeholder="请选择送检状态" allowClear v-model="queryParam.submissionStatus" dictCode="submission_status"/>
+                </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="getSJSBOptions2" icon="search">查询</a-button>
+                  <a-button type="primary" @click="getSJSBOptions3" icon="reload" style="margin-left: 8px">重置</a-button>
+                </span>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
     <!-- 查询区域-END -->
 
-    <a-table
-      ref="table"
-      size="small"
-      :scroll="{x:true}"
-      bordered
-      rowKey="id"
-      :columns="columns"
-      :dataSource="sjsbdataPoint"
-      :pagination="false"
-      class="j-table-force-nowrap">
-    </a-table>
-  </div>
+<!--    <a-button @click="handleFK">提交反馈</a-button>-->
+    <!-- <j-form-container>
+      <a-form-model :model="formModel" :rules="formRules" ref="form" slot="detail"> -->
+        <a-table
+          size="small"
+          :scroll="{x:true}"
+          bordered
+          rowKey="id"
+          :columns="columns"
+          :dataSource="formModel.submissionEquipmentList"
+          :pagination="false"
+          class="j-table-force-nowrap">
+
+          <template slot="remark" slot-scope="text, record,index">
+            <a-form-model-item :prop="'submissionEquipmentList.'+index+'.remark'" :rules="formRules.remark" style="margin-bottom: 0px;">
+              <a-input v-model="record.remark" placeholder="请输入备注"></a-input>
+            </a-form-model-item>
+          </template>
+          <template slot="teamConfirm" slot-scope="text, record,index">
+            <a-form-model-item :prop="'submissionEquipmentList.'+index+'.teamConfirm'" :rules="formRules.teamConfirm" style="margin-bottom: 0px;">
+              <a-input v-model="record.teamConfirm" placeholder="请输入班组确认"></a-input>
+            </a-form-model-item>
+          </template>
+          <template slot="submissionReturnDate" slot-scope="text, record,index">
+            <a-form-model-item :prop="'submissionEquipmentList.'+index+'.submissionReturnDate'" :rules="formRules.submissionReturnDate" style="margin-bottom: 0px;">
+              <a-date-picker placeholder="请选择送回日期"  v-model="record.submissionReturnDate" :show-time="true" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            </a-form-model-item>
+          </template>
+          <template slot="submissionDate" slot-scope="text, record,index">
+            <a-form-model-item :prop="'submissionEquipmentList.'+index+'.submissionDate'" :rules="formRules.submissionDate" style="margin-bottom: 0px;">
+              <a-date-picker placeholder="请选择检定日期"  v-model="record.submissionDate" :show-time="true" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            </a-form-model-item>
+          </template>
+
+          <template slot="submissionStatus" slot-scope="text, record,index">
+            <a-form-model-item :prop="'submissionEquipmentList.'+index+'.submissionStatus'" :rules="formRules.submissionStatus" style="margin-bottom: 0px;">
+              <j-dict-select-tag placeholder="请选择送检状态" v-model="record.submissionStatus" dictCode="submission_status"/>
+            </a-form-model-item>
+          </template>
+          <template slot="submissionResult" slot-scope="text, record,index">
+            <a-form-model-item :prop="'submissionEquipmentList.'+index+'.submissionResult'" :rules="formRules.submissionResult" style="margin-bottom: 0px;">
+              <j-dict-select-tag placeholder="请选择检定结果" v-model="record.submissionResult" dictCode="device_verification_result"/>
+            </a-form-model-item>
+          </template>
+
+        </a-table>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
 </template>
 
 <script>
@@ -60,19 +110,33 @@ export default {
   },
   data () {
     return {
+      confirmLoading: false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 2 },
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 20 },
+      },
+      // 设备下拉列表
+      deviceOption: [],
       //送检工单id
       csId: '',
       //送检工单设备查询参数
       queryParam: {},
-      // 送检设备及相关数据
-      sjsbdataPoint: [],
-      model:{
+      // // 送检设备及相关数据
+      // submissionEquipmentList: [],
+      formModel: {
+        // 送检设备及相关数据
+        submissionEquipmentList: [],
       },
+      formRules:{},
       description: '送检工单设备表管理页面',
       // 表头
       columns: [
         {
-          title: '#',
+          title: '序号',
           dataIndex: '',
           key:'rowIndex',
           width:60,
@@ -81,89 +145,164 @@ export default {
             return parseInt(index)+1;
           }
         },
-        {
-          title:'送检工单id',
-          align:"center",
-          dataIndex: 'cmmsSubmissionId'
-        },
+        // {
+        //   title:'送检工单id',
+        //   align:"center",
+        //   dataIndex: 'cmmsSubmissionId'
+        // },
         {
           title:'设备',
           align:"center",
-          dataIndex: 'equipmentid_dictText'
+          dataIndex: 'equipmentname'
         },
         {
           title:'检定日期',
           align:"center",
-          dataIndex: 'submissionDate'
+          dataIndex: 'submissionDate',
+          scopedSlots: { customRender: 'submissionDate' }
         },
         {
           title:'检定结果',
           align:"center",
-          dataIndex: 'submissionResult_dictText'
-        },
-        {
-          title:'有效日期',
-          align:"center",
-          dataIndex: 'submissionEffectiveDate'
+          width:90,
+          dataIndex: 'submissionResult_dictText',
+          scopedSlots: { customRender: 'submissionResult' }
         },
         {
           title:'班组确认',
           align:"center",
-          dataIndex: 'teamConfirm'
+          dataIndex: 'teamConfirm',
+          scopedSlots: { customRender: 'teamConfirm' }
         },
         {
           title:'备注',
           align:"center",
-          dataIndex: 'remark'
+          dataIndex: 'remark',
+          scopedSlots: { customRender: 'remark' }
         },
         {
           title:'送检状态',
           align:"center",
-          dataIndex: 'submissionStatus_dictText'
+          width:100,
+          dataIndex: 'submissionStatus_dictText',
+          scopedSlots: { customRender: 'submissionStatus' }
         },
         {
           title:'送回日期',
           align:"center",
-          dataIndex: 'submissionReturnDate'
+          dataIndex: 'submissionReturnDate',
+          scopedSlots: { customRender: 'submissionReturnDate' }
         },
         {
-          title: '操作',
-          dataIndex: 'action',
+          title:'有效日期',
           align:"center",
-          fixed:"right",
-          width:147,
-          scopedSlots: { customRender: 'fk' }
-        }
+          dataIndex: 'submissionEffectiveDate'
+        },
+        // {
+        //   title: '操作',
+        //   dataIndex: 'action',
+        //   align:"center",
+        //   fixed:"right",
+        //   width:147,
+        //   scopedSlots: { customRender: 'fk' }
+        // }
       ],
       url: {
         list: "/cmmsSubmissionEquipment/cmmsSubmissionEquipment/list",
-
+        fk: "/cmmsSubmissionEquipment/cmmsSubmissionEquipment/fk",
+        deviceList: "cmmsSubmissionEquipment/cmmsSubmissionEquipment/listByCmmsSubmissionId",
+        queryById: "/cmmsSubmission/cmmsSubmission/queryById",
+        deviceData: "/cmmsSubmissionEquipment/cmmsSubmissionEquipment/voListByCmmsSubmissionId"
       },
     }
   },
   methods: {
+    handleFK(){
+    },
     getSJSBOptions(cmmsSubmissionId) {
       this.csId = cmmsSubmissionId
-      getAction(this.url.list, {cmmsSubmissionId:cmmsSubmissionId}).then((res) => {
-        this.sjsbdataPoint = res.result.records
+      // getAction(this.url.list, {cmmsSubmissionId:cmmsSubmissionId}).then((res) => {
+      //   this.formModel.submissionEquipmentList = res.result.records
+      // })
+      // 获取工单详情
+      getAction(this.url.queryById, {id:cmmsSubmissionId}).then((res) => {
+        console.log(1111,res)
+        this.formModel.submissionEquipmentList = res.result.submissionEquipmentList
+        const b = res.result.uploadFileList.map((res) => {
+          return res.url
+        })
+        this.formModel.uploadFileList = b.join(',')
+      })
+      // 获取设备下拉列表
+      getAction(this.url.deviceList, {cmmsSubmissionId:cmmsSubmissionId}).then((res) => {
+        this.deviceOption = res.result.map((res) => {
+          return {
+            value: res.equipmentid,
+            label: res.equipmentname
+          }
+        })
       })
     },
     getSJSBOptions2() {
       this.queryParam.cmmsSubmissionId = this.csId
-      getAction(this.url.list, this.queryParam).then((res) => {
-        this.sjsbdataPoint = res.result.records
+      getAction(this.url.deviceData, this.queryParam).then((res) => {
+        this.formModel.submissionEquipmentList = res.result
       })
     },
     getSJSBOptions3() {
       this.queryParam = {}
       this.queryParam.cmmsSubmissionId = this.csId
-      getAction(this.url.list, this.queryParam).then((res) => {
-        this.sjsbdataPoint = res.result.records
+      getAction(this.url.deviceData, this.queryParam).then((res) => {
+        this.formModel.submissionEquipmentList = res.result
+      })
+    },
+    submitForm () {
+      const that = this;
+      // 触发表单验证
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          that.confirmLoading = true;
+          let httpurl = '';
+          let method = '';
+          httpurl+=this.url.fk;
+          method = 'put';
+          // if(!this.model.id){
+          //   httpurl+=this.url.add;
+          //   method = 'post';
+          // }else{
+          //   httpurl+=this.url.edit;
+          //   method = 'put';
+          // }
+          if (this.formModel.uploadFileList.length != 0) {
+            const a  = this.formModel.uploadFileList.split(',')
+            this.formModel.uploadFileList = a.map((res) => {
+              return {
+                url: res
+              }
+            })
+          }else{
+            this.formModel.uploadFileList = []
+          }
+          this.formModel.id = this.csId
+          console.log(this.formModel)
+          httpAction(httpurl,this.formModel,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>
 <style scoped>
-@import '~@assets/less/common.less';
+/* @import '~@assets/less/common.less'; */
+@import "~@/assets/less/uStyle.less";
 </style>

+ 3 - 3
src/views/module_cmms/submission/modulesFK/SubmissionEquipmentModalFK.vue

@@ -1,15 +1,15 @@
 <template>
-  <j-modal
+  <u-modal
     :title="title"
     :width="width"
     :visible="visible"
-    switchFullscreen
+    contentFull
     @ok="handleOk"
     :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
     @cancel="handleCancel"
     cancelText="关闭">
     <SubmissionEquipmentFormFK ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></SubmissionEquipmentFormFK>
-  </j-modal>
+  </u-modal>
 </template>
 
 <script>

+ 134 - 109
src/views/module_cmms/upkeep/UpkeepList.vue

@@ -21,10 +21,20 @@
               </a-form-item>
             </a-col>
             <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="负责人">
+              <a-form-item label="负责人" v-if="url.status == 1">
                 <j-dict-select-tag v-model="queryParam.chargeruser" placeholder="请选择负责人" dictCode="sys_user,realname,id"/>
               </a-form-item>
             </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="地点">
+                <a-input placeholder="请输入地点" v-model="queryParam.address"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="状态">
+                <j-dict-select-tag v-model="queryParam.status" placeholder="请选择状态" dictCode="upkeep_state"/>
+              </a-form-item>
+            </a-col>
           </template>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
@@ -98,7 +108,7 @@
           </a-button>
         </template>
 
-        <span slot="action" slot-scope="text, record">
+        <span slot="action" slot-scope="text, record" v-if="url.status == 2">
           <a @click="handleEdit(record)">反馈</a>
           <!-- <a @click="handleEdit(record)">编辑</a> -->
 
@@ -138,123 +148,138 @@
     components: {
       UpkeepModal
     },
+    props: {
+      url: {
+        type: Object,
+        default: function(){
+            return {} // 使用工厂函数返回默认值
+        }
+      },
+      columns: {
+        type: Array,
+        default: function(){
+            return [] // 使用工厂函数返回默认值
+        }
+      },
+    },
     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: 'upkeepcode'
-          },
-          // {
-          //   title:'保养名称(标题)',
-          //   align:"center",
-          //   dataIndex: 'upkeepname'
-          // },
-          // {
-          //   title:'保养计划ID',
-          //   align:"center",
-          //   dataIndex: 'upkeepplanid'
-          // },
-          // {
-          //   title:'保养工作项目ID',
-          //   align:"center",
-          //   dataIndex: 'upkeepprojid'
-          // },
-          // {
-          //   title:'工作项目名称',
-          //   align:"center",
-          //   dataIndex: 'projectname'
-          // },
-          {
-            title:'计划名称',
-            align:"center",
-            dataIndex: 'planname'
-          },
-          {
-            title:'地点',
-            align:"center",
-            dataIndex: 'address'
-          },
-          // {
-          //   title:'厂商名称',
-          //   align:"center",
-          //   dataIndex: 'supplier'
-          // },
-          // {
-          //   title:'厂商电话',
-          //   align:"center",
-          //   dataIndex: 'suppliertel'
-          // },
-          // {
-          //   title:'联系人',
-          //   align:"center",
-          //   dataIndex: 'linker'
-          // },
-          // {
-          //   title:'联系人电话',
-          //   align:"center",
-          //   dataIndex: 'linkertel'
-          // },
-          {
-            title:'负责人',
-            align:"center",
-            dataIndex: 'chargeruser_dictText'
-          },
-          // {
-          //   title:'描述',
-          //   align:"center",
-          //   dataIndex: 'upkeepdesc'
-          // },
-          {
-            title:'状态',
-            align:"center",
-            dataIndex: 'status_dictText'
-          },
-          {
-            title:'备注',
-            align:"center",
-            dataIndex: 'remark'
-          },
-          // {
-          //   title:'处理意见',
-          //   align:"center",
-          //   dataIndex: 'opinion'
-          // },
-          {
-            title: '操作',
-            dataIndex: 'action',
-            align:"center",
-            fixed:"right",
-            width:147,
-            scopedSlots: { customRender: 'action' }
-          }
-        ],
-        url: {
-          list: "/cmmsUpkeep/cmmsUpkeep/list",
-          delete: "/cmmsUpkeep/cmmsUpkeep/delete",
-          deleteBatch: "/cmmsUpkeep/cmmsUpkeep/deleteBatch",
-          exportXlsUrl: "/cmmsUpkeep/cmmsUpkeep/exportXls",
-          importExcelUrl: "cmmsUpkeep/cmmsUpkeep/importExcel",
+        // columns: [
+        //   {
+        //     title: '#',
+        //     dataIndex: '',
+        //     key:'rowIndex',
+        //     width:60,
+        //     align:"center",
+        //     customRender:function (t,r,index) {
+        //       return parseInt(index)+1;
+        //     }
+        //   },
+        //   {
+        //     title:'保养工单编号',
+        //     align:"center",
+        //     dataIndex: 'upkeepcode'
+        //   },
+        //   // {
+        //   //   title:'保养名称(标题)',
+        //   //   align:"center",
+        //   //   dataIndex: 'upkeepname'
+        //   // },
+        //   // {
+        //   //   title:'保养计划ID',
+        //   //   align:"center",
+        //   //   dataIndex: 'upkeepplanid'
+        //   // },
+        //   // {
+        //   //   title:'保养工作项目ID',
+        //   //   align:"center",
+        //   //   dataIndex: 'upkeepprojid'
+        //   // },
+        //   // {
+        //   //   title:'工作项目名称',
+        //   //   align:"center",
+        //   //   dataIndex: 'projectname'
+        //   // },
+        //   {
+        //     title:'计划名称',
+        //     align:"center",
+        //     dataIndex: 'planname'
+        //   },
+        //   {
+        //     title:'地点',
+        //     align:"center",
+        //     dataIndex: 'address'
+        //   },
+        //   // {
+        //   //   title:'厂商名称',
+        //   //   align:"center",
+        //   //   dataIndex: 'supplier'
+        //   // },
+        //   // {
+        //   //   title:'厂商电话',
+        //   //   align:"center",
+        //   //   dataIndex: 'suppliertel'
+        //   // },
+        //   // {
+        //   //   title:'联系人',
+        //   //   align:"center",
+        //   //   dataIndex: 'linker'
+        //   // },
+        //   // {
+        //   //   title:'联系人电话',
+        //   //   align:"center",
+        //   //   dataIndex: 'linkertel'
+        //   // },
+        //   {
+        //     title:'负责人',
+        //     align:"center",
+        //     dataIndex: 'chargeruser_dictText'
+        //   },
+        //   // {
+        //   //   title:'描述',
+        //   //   align:"center",
+        //   //   dataIndex: 'upkeepdesc'
+        //   // },
+        //   {
+        //     title:'状态',
+        //     align:"center",
+        //     dataIndex: 'status_dictText'
+        //   },
+        //   {
+        //     title:'备注',
+        //     align:"center",
+        //     dataIndex: 'remark'
+        //   },
+        //   // {
+        //   //   title:'处理意见',
+        //   //   align:"center",
+        //   //   dataIndex: 'opinion'
+        //   // },
+        //   {
+        //     title: '操作',
+        //     dataIndex: 'action',
+        //     align:"center",
+        //     fixed:"right",
+        //     width:147,
+        //     scopedSlots: { customRender: 'action' }
+        //   }
+        // ],
+        // url: {
+        //   list: "/cmmsUpkeep/cmmsUpkeep/list",
+        //   delete: "/cmmsUpkeep/cmmsUpkeep/delete",
+        //   deleteBatch: "/cmmsUpkeep/cmmsUpkeep/deleteBatch",
+        //   exportXlsUrl: "/cmmsUpkeep/cmmsUpkeep/exportXls",
+        //   importExcelUrl: "cmmsUpkeep/cmmsUpkeep/importExcel",
           
-        },
+        // },
         dictOptions:{},
         superFieldList:[],
       }
     },
     created() {
+      console.log(777,this.url)
     this.getSuperFieldList();
     },
     computed: {

+ 262 - 0
src/views/module_cmms/upkeep/index.vue

@@ -0,0 +1,262 @@
+<template>
+    <a-tabs default-active-key="1" @change="callback" class="card-container">
+        <a-tab-pane key="1" tab="我的下发" force-render>
+            <upkeep-list :key="timer1" :url="url1" :columns="columns1"></upkeep-list>
+        </a-tab-pane>
+        <a-tab-pane key="2" tab="我的操作" force-render>
+            <upkeep-list :key="timer2" :url="url2" :columns="columns2"></upkeep-list>
+        </a-tab-pane>
+    </a-tabs>
+</template>
+
+<script>
+
+import UpkeepList from './UpkeepList.vue'
+
+export default ({
+    components: {
+        UpkeepList
+    },
+    data() {
+        return {
+            timer1: '',
+            timer2: '',
+            url1: {
+                list: "/cmmsUpkeep/cmmsUpkeep/selectMyArrangeList",
+                delete: "/cmmsUpkeep/cmmsUpkeep/delete",
+                deleteBatch: "/cmmsUpkeep/cmmsUpkeep/deleteBatch",
+                exportXlsUrl: "/cmmsUpkeep/cmmsUpkeep/exportXls",
+                importExcelUrl: "cmmsUpkeep/cmmsUpkeep/importExcel",
+                status: 1
+            },
+            url2: {
+                list: "/cmmsUpkeep/cmmsUpkeep/selectMyOperateList",
+                delete: "/cmmsUpkeep/cmmsUpkeep/delete",
+                deleteBatch: "/cmmsUpkeep/cmmsUpkeep/deleteBatch",
+                exportXlsUrl: "/cmmsUpkeep/cmmsUpkeep/exportXls",
+                importExcelUrl: "cmmsUpkeep/cmmsUpkeep/importExcel",
+                status: 2
+            },
+            columns1: [
+                {
+                    title: '#',
+                    dataIndex: '',
+                    key:'rowIndex',
+                    width:60,
+                    align:"center",
+                    customRender:function (t,r,index) {
+                    return parseInt(index)+1;
+                    }
+                },
+                {
+                    title:'保养工单编号',
+                    align:"center",
+                    dataIndex: 'upkeepcode'
+                },
+                // {
+                //   title:'保养名称(标题)',
+                //   align:"center",
+                //   dataIndex: 'upkeepname'
+                // },
+                // {
+                //   title:'保养计划ID',
+                //   align:"center",
+                //   dataIndex: 'upkeepplanid'
+                // },
+                // {
+                //   title:'保养工作项目ID',
+                //   align:"center",
+                //   dataIndex: 'upkeepprojid'
+                // },
+                // {
+                //   title:'工作项目名称',
+                //   align:"center",
+                //   dataIndex: 'projectname'
+                // },
+                {
+                    title:'计划名称',
+                    align:"center",
+                    dataIndex: 'planname'
+                },
+                {
+                    title:'设备',
+                    align:"center",
+                    dataIndex: 'equipmentid_dictText'
+                },
+                {
+                    title:'地点',
+                    align:"center",
+                    dataIndex: 'address'
+                },
+                // {
+                //   title:'厂商名称',
+                //   align:"center",
+                //   dataIndex: 'supplier'
+                // },
+                // {
+                //   title:'厂商电话',
+                //   align:"center",
+                //   dataIndex: 'suppliertel'
+                // },
+                // {
+                //   title:'联系人',
+                //   align:"center",
+                //   dataIndex: 'linker'
+                // },
+                // {
+                //   title:'联系人电话',
+                //   align:"center",
+                //   dataIndex: 'linkertel'
+                // },
+                {
+                    title:'负责人',
+                    align:"center",
+                    dataIndex: 'chargeruser_dictText'
+                },
+                // {
+                //   title:'描述',
+                //   align:"center",
+                //   dataIndex: 'upkeepdesc'
+                // },
+                {
+                    title:'状态',
+                    align:"center",
+                    dataIndex: 'status_dictText'
+                },
+                {
+                    title:'备注',
+                    align:"center",
+                    dataIndex: 'remark'
+                },
+                // {
+                //   title:'处理意见',
+                //   align:"center",
+                //   dataIndex: 'opinion'
+                // },
+            ],
+            columns2: [
+                {
+                    title: '#',
+                    dataIndex: '',
+                    key:'rowIndex',
+                    width:60,
+                    align:"center",
+                    customRender:function (t,r,index) {
+                    return parseInt(index)+1;
+                    }
+                },
+                {
+                    title:'保养工单编号',
+                    align:"center",
+                    dataIndex: 'upkeepcode'
+                },
+                // {
+                //   title:'保养名称(标题)',
+                //   align:"center",
+                //   dataIndex: 'upkeepname'
+                // },
+                // {
+                //   title:'保养计划ID',
+                //   align:"center",
+                //   dataIndex: 'upkeepplanid'
+                // },
+                // {
+                //   title:'保养工作项目ID',
+                //   align:"center",
+                //   dataIndex: 'upkeepprojid'
+                // },
+                // {
+                //   title:'工作项目名称',
+                //   align:"center",
+                //   dataIndex: 'projectname'
+                // },
+                {
+                    title:'计划名称',
+                    align:"center",
+                    dataIndex: 'planname'
+                },
+                {
+                    title:'设备',
+                    align:"center",
+                    dataIndex: 'equipmentid_dictText'
+                },
+                {
+                    title:'地点',
+                    align:"center",
+                    dataIndex: 'address'
+                },
+                // {
+                //   title:'厂商名称',
+                //   align:"center",
+                //   dataIndex: 'supplier'
+                // },
+                // {
+                //   title:'厂商电话',
+                //   align:"center",
+                //   dataIndex: 'suppliertel'
+                // },
+                // {
+                //   title:'联系人',
+                //   align:"center",
+                //   dataIndex: 'linker'
+                // },
+                // {
+                //   title:'联系人电话',
+                //   align:"center",
+                //   dataIndex: 'linkertel'
+                // },
+                // {
+                //     title:'负责人',
+                //     align:"center",
+                //     dataIndex: 'chargeruser_dictText'
+                // },
+                // {
+                //   title:'描述',
+                //   align:"center",
+                //   dataIndex: 'upkeepdesc'
+                // },
+                {
+                    title:'状态',
+                    align:"center",
+                    dataIndex: 'status_dictText'
+                },
+                {
+                    title:'备注',
+                    align:"center",
+                    dataIndex: 'remark'
+                },
+                // {
+                //   title:'处理意见',
+                //   align:"center",
+                //   dataIndex: 'opinion'
+                // },
+                {
+                    title: '操作',
+                    dataIndex: 'action',
+                    align:"center",
+                    fixed:"right",
+                    width:147,
+                    scopedSlots: { customRender: 'action' }
+                }
+            ],
+        }
+    },
+    methods: {
+        callback(key) {
+            if (key == 1) {
+                // 我的下发
+                this.timer1 = new Date().getTime()
+            } else if (key == 2) {
+                // 我的操作
+                this.timer2 = new Date().getTime()
+            } 
+        },
+    },
+})
+</script>
+
+<style scoped>
+::v-deep .ant-card-body{
+    padding-top: 10px !important;
+}
+</style>

+ 1 - 1
src/views/module_cmms/upkeepPlan/modules/UpkeepPlanForm.vue

@@ -122,7 +122,7 @@
               </a-col>
             </a-row>
           </div>
-          <div style="height: 100%;width:8%;padding-top:0.3%;">
+          <div style="height: 100%;width:8%;padding-top:0.25%;">
               <a-button type="primary" icon="search" />
           </div>
         </div>

+ 68 - 3
src/views/module_tpm/equipment/EquipmentList.vue

@@ -153,6 +153,9 @@
 
     <!-- <tpm-equipment-modal ref="modalForm" @ok="modalFormOk"></tpm-equipment-modal> -->
     <equipment-modal ref="modalForm" @ok="modalFormOk"></equipment-modal>
+
+    <!-- 详情 -->
+    <equipment-detail ref="equipmentDetail"></equipment-detail>
   </a-card>
 </template>
 
@@ -163,12 +166,14 @@
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
   import EquipmentModal from './modules/EquipmentModal.vue'
+  import EquipmentDetail from './modules/EquipmentDetail.vue'
 
   export default {
     name: 'EquipmentList',
     mixins:[JeecgListMixin, mixinDevice],
     components: {
-        EquipmentModal
+        EquipmentModal,
+        EquipmentDetail
     },
     data () {
       return {
@@ -176,7 +181,7 @@
         // 表头
         columns: [
           {
-            title: '#',
+            title: '序号',
             dataIndex: '',
             key:'rowIndex',
             width:60,
@@ -188,7 +193,8 @@
           {
             title:'设备名称',
             align:"center",
-            dataIndex: 'equipmentname'
+            dataIndex: 'equipmentname',
+            customCell: this.customCellDetail
           },
           {
             title:'设备分类',
@@ -217,6 +223,51 @@
             dataIndex: 'spaceid_dictText'
           },
           {
+            title:'周期',
+            align:"center",
+            dataIndex: 'equipmentCycle'
+          },
+          {
+            title:'周期单位',
+            align:"center",
+            dataIndex: 'cycleUnit_dictText'
+          },
+          {
+            title:'出厂编号',
+            align:"center",
+            dataIndex: 'factoryNo'
+          },
+          {
+            title:'出厂日期',
+            align:"center",
+            dataIndex: 'productDate'
+          },
+          {
+            title:'启用日期',
+            align:"center",
+            dataIndex: 'activeDate'
+          },
+          {
+            title:'责任部门',
+            align:"center",
+            dataIndex: 'responseDepartment'
+          },
+          {
+            title:'负责人',
+            align:"center",
+            dataIndex: 'responsePerson'
+          },
+          {
+            title:'领用人',
+            align:"center",
+            dataIndex: 'recipient'
+          },
+          {
+            title:'管理状态',
+            align:"center",
+            dataIndex: 'manageStatus_dictText'
+          },
+          {
             title: '操作',
             dataIndex: 'action',
             align:"center",
@@ -246,6 +297,20 @@
       },
     },
     methods: {
+      customCellDetail(record){
+        return {
+          style: {
+            'color': "#1890ff",
+            'cursor': "pointer",
+          },
+          on: { 
+            // 点击事件
+            click: (event) => {
+              this.$refs.equipmentDetail.detail(record);
+            },
+          },
+        };
+      },
       initDictConfig(){
       },
       getSuperFieldList(){

+ 212 - 0
src/views/module_tpm/equipment/modules/EquipmentDetail.vue

@@ -0,0 +1,212 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    @close="close"
+    destroyOnClose
+    :visible="visible"
+    class="equipment-detail-drawer"
+    >
+    <a-spin :spinning="confirmLoading" style="height: 100%;">
+      <div class="u-flex-jab equipment-detail-container">
+        <!-- 基础信息详情 -->
+        <div class="base-info-container">
+          <a-descriptions title="" layout="vertical" bordered size="middle" :column="2" class="equiment-info">
+            <a-descriptions-item label="设备编号" :span="2">
+              {{detailData.equipmentcode}}
+            </a-descriptions-item>
+            <a-descriptions-item label="设备名称" :span="2">
+              {{detailData.equipmentname}}
+            </a-descriptions-item>
+            <a-descriptions-item label="设备分类" :span="2">
+              {{detailData.equipmenttreeid_dictText}}
+            </a-descriptions-item>
+            <a-descriptions-item label="规格型号" :span="2">
+              {{detailData.spec}}
+            </a-descriptions-item>
+            <a-descriptions-item label="安装地点" :span="2">
+              {{detailData.address}}
+            </a-descriptions-item>
+            <a-descriptions-item label="区域" :span="2">
+              {{detailData.spaceid_dictText}}
+            </a-descriptions-item>
+            <a-descriptions-item label="周期" :span="2">
+              {{detailData.equipmentCycle}}
+            </a-descriptions-item>
+            <a-descriptions-item label="周期单位" :span="2">
+              {{detailData.cycleUnit_dictText}}
+            </a-descriptions-item>
+            <a-descriptions-item label="出厂编号">
+              {{detailData.factoryNo}}
+            </a-descriptions-item>
+            <a-descriptions-item label="出厂日期">
+              {{detailData.productDate}}
+            </a-descriptions-item>
+            <a-descriptions-item label="启用日期">
+              {{detailData.activeDate}}
+            </a-descriptions-item>
+            <a-descriptions-item label="责任部门">
+              {{detailData.responseDepartment}}
+            </a-descriptions-item>
+            <a-descriptions-item label="负责人">
+              {{detailData.responsePerson}}
+            </a-descriptions-item>
+            <a-descriptions-item label="领用人">
+              {{detailData.recipient}}
+            </a-descriptions-item>
+            <a-descriptions-item label="管理状态">
+              {{detailData.manageStatus_dictText}}
+            </a-descriptions-item>
+          </a-descriptions>
+        </div>
+        <!-- 巡检详情 -->
+        <a-tabs default-active-key="1" @change="callback" class="equipment-cmms-tabs">
+          <a-tab-pane key="1" tab="Tab 1">
+            <a-table
+              ref="table"
+              size="middle"
+              :scroll="{x:true}"
+              bordered
+              rowKey="id"
+              :columns="columns"
+              :dataSource="logData"
+              class="equipment-cmms-table">
+
+              <span slot="status" slot-scope="text, record">
+                <a-tag v-if="record.status === '0'" color="orange">{{ text }}</a-tag>
+                <a-tag v-if="record.status === '1' || record.priority === '2'" color="blue">{{ text }}</a-tag>
+                <a-tag v-if="record.status === '3'">{{ text }}</a-tag>
+              </span>
+
+            </a-table>
+          </a-tab-pane>
+          <a-tab-pane key="2" tab="Tab 2" force-render>
+            Content of Tab Pane 2
+          </a-tab-pane>
+          <a-tab-pane key="3" tab="Tab 3">
+            Content of Tab Pane 3
+          </a-tab-pane>
+        </a-tabs>
+        
+      </div>
+    </a-spin>
+
+  </a-drawer>
+</template>
+
+<script>
+  import { httpAction, getAction } from '@/api/manage'
+  export default {
+    name: 'RepairManageDetail',
+    data () {
+      return {
+        title:"详情",
+        width:'100%',
+        visible: false,
+        confirmLoading: false, // 加载中
+        detailData: {}, // 详情
+        logData: [], // 操作日志表格数据
+        // 表头
+        columns: [
+          // {
+          //   title: '序号',
+          //   dataIndex: '',
+          //   key:'rowIndex',
+          //   width:60,
+          //   align:"center",
+          //   customRender:function (t,r,index) {
+          //     return parseInt(index)+1;
+          //   }
+          // },
+          {
+            title:'节点名称',
+            align:"center",
+            dataIndex: 'nodename'
+          },
+          {
+            title:'日期',
+            align:"center",
+            dataIndex: 'handledate'
+          },
+          {
+            title:'处理意见',
+            align:"center",
+            dataIndex: 'opinion'
+          },
+          {
+            title:'备注',
+            align:"center",
+            dataIndex: 'remark'
+          },
+        ],
+      }
+    },
+    methods: {
+      detail (record) {
+        console.log(record)
+        this.detailData = record
+        this.visible = true
+        this.title = record.equipmentname
+        // this.title = record.repairname + ' 详情'
+        // this.confirmLoading = true
+        // getAction('/cmmsRepair/cmmsRepair/queryById',{id:record.id}).then((res)=>{
+        //   if(res.success){
+        //     this.detailData = res.result
+        //     this.logData = res.result.nodeList
+        //   }else{
+        //     this.$message.warning(res.message);
+        //   }
+        // }).finally(() => {
+        //   this.confirmLoading = false;
+        // })
+      },
+      close () {
+        this.visible = false;
+      },
+      callback(key) {
+        console.log(key);
+      },
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  @import '~@/assets/less/uStyle.less';
+</style>
+<style lang="less" scoped>
+  .equipment-detail-drawer{
+    height: 100vh;
+    overflow: hidden;
+    /deep/ .ant-drawer-body{
+      height: calc(100vh - 55px);
+      overflow: hidden;
+      padding: 20px;
+      background-color: #f5f5f5;
+    }
+    .base-info-container{
+      width: calc(50% - 6px);
+      height: calc(100vh - 55px - 40px);
+      overflow: auto;
+      background-color: #fff;
+      padding: 12px;
+      border-radius: 4px;
+      margin-right: 6px;
+      .equiment-info{
+      }
+    }
+    .equipment-cmms-tabs{
+      
+    }
+    .equipment-cmms-table{
+      width: calc(50% - 6px);
+      height: calc(100vh - 55px - 40px);
+      overflow: auto;
+      background-color: #fff;
+      padding: 12px;
+      border-radius: 4px;
+      margin-left: 6px;
+    }
+  }
+</style>

+ 45 - 0
src/views/module_tpm/equipment/modules/EquipmentForm.vue

@@ -59,6 +59,51 @@
               </j-tree-select>
             </a-form-model-item>
           </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="周期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentCycle">
+              <a-input-number v-model="model.equipmentCycle" placeholder="请输入周期" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="周期单位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cycleUnit">
+              <j-dict-select-tag type="list" v-model="model.cycleUnit" dictCode="cycle_unit" placeholder="请选择周期单位(0年、1月、2日)" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="出厂编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryNo">
+              <a-input v-model="model.factoryNo" placeholder="请输入出厂编号"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="出厂日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productDate">
+              <j-date placeholder="请选择出厂日期"  v-model="model.productDate" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="启用日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="activeDate">
+              <j-date placeholder="请选择启用日期"  v-model="model.activeDate" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="责任部门" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="responseDepartment">
+              <a-input v-model="model.responseDepartment" placeholder="请输入责任部门"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="负责人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="responsePerson">
+              <a-input v-model="model.responsePerson" placeholder="请输入负责人"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="领用人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="recipient">
+              <a-input v-model="model.recipient" placeholder="请输入领用人"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="管理状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="manageStatus">
+              <j-dict-select-tag type="list" v-model="model.manageStatus" dictCode="manage_status" placeholder="请选择管理状态(0送检中、1在用、2限用、3禁用)" />
+            </a-form-model-item>
+          </a-col>
         </a-row>
       </a-form-model>
     </j-form-container>