From 6b9795ba4e3e36347b1d7dc71051768286af874a Mon Sep 17 00:00:00 2001
From: “linengliang” <vanSuperEnergy@163.com>
Date: 星期二, 14 十一月 2023 17:41:49 +0800
Subject: [PATCH] 质量隐患确认,故障单

---
 src/views/eam/QuanlityConfirmList.vue                               |  313 ++++++++++
 src/views/eam/modules/malfunctionRepair/EquipmentList.vue           |   54 +
 src/views/eam/modules/QuanlityConfirmForm.vue                       |  158 +++++
 src/views/eam/modules/FaultInfoForm.vue                             |  473 ++++++++++++++++
 src/views/eam/modules/QuanlityConfirmModal.vue                      |   60 ++
 src/views/eam/FaultInfoList.vue                                     |  447 +++++++++++++++
 src/views/eam/modules/FaultInfoModal.vue                            |   61 ++
 src/views/eam/MalfunctionRepair.vue                                 |    5 
 src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue |  125 ++-
 9 files changed, 1,645 insertions(+), 51 deletions(-)

diff --git a/src/views/eam/FaultInfoList.vue b/src/views/eam/FaultInfoList.vue
new file mode 100644
index 0000000..28ac680
--- /dev/null
+++ b/src/views/eam/FaultInfoList.vue
@@ -0,0 +1,447 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col
+            :xl='6'
+            :lg='7'
+            :md='8'
+            :sm='24'
+          >
+            <a-form-item label='鍗曟嵁鍙�'>
+              <j-input
+                placeholder='鍗曟嵁鍙锋绱�'
+                v-model='queryParam.num'
+              ></j-input>
+            </a-form-item>
+          </a-col>
+          <a-col
+            :xl='6'
+            :lg='7'
+            :md='8'
+            :sm='24'
+          >
+            <a-form-item label='鏄惁宸茬‘璁ょ粨鏋�'>
+              <j-dict-select-tag
+                allow-clear
+                placeholder=""
+                :triggerChange="true"
+                dictCode="is_product"
+                v-model='queryParam.isConfirm'
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 鏌ヨ鍖哄煙-END -->
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <div class="table-operator">
+      <a-button
+                type='primary'
+                @click='searchQuery'
+                icon='search'
+              >鏌ヨ</a-button>
+              <a-button
+                type='primary'
+                @click='searchReset'
+                icon='reload'
+                style='margin-left: 8px'
+              >閲嶇疆</a-button>
+      <!-- <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('璁惧浜嬫晠鐧昏')">瀵煎嚭</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">瀵煎叆</a-button>
+      </a-upload> -->
+      <!-- 楂樼骇鏌ヨ鍖哄煙 -->
+      <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button>
+      </a-dropdown> -->
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�
+        <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            涓嬭浇
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)" v-if="record.isConfirm!=='yes'">褰曞叆</a>
+
+          <a-divider type="vertical" />
+          <a @click="handleDetail(record)">璇︽儏</a>
+          <a-divider type="vertical" />
+          <a-popconfirm
+            title="纭缁撴灉鍚庝笉鍙啀褰曞叆锛岀‘璁ゅ悧?"
+            @confirm="() => handleConfirm(record)"
+          >
+            <a v-if="record.isConfirm!=='yes'">纭</a>
+          </a-popconfirm>
+        </span>
+
+      </a-table>
+    </div>
+
+    <fault-info-modal ref="modalForm" @ok="modalFormOk"></fault-info-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import FaultInfoModal from './modules/FaultInfoModal'
+import { putAction } from '../../api/manage'
+
+  export default {
+    name: 'FaultInfoList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      FaultInfoModal
+    },
+    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: 'num'
+          },
+          {
+            title:'璐ㄩ噺闅愭偅纭鍗�',
+            align:"center",
+            dataIndex: 'quanlityId_dictText'
+          },
+          {
+            title:'鐢熶骇鍗曚綅',
+            align:"center",
+            dataIndex: 'departId'
+          },
+          {
+            title:'璁惧鍚嶇О',
+            align:"center",
+            dataIndex: 'equipName'
+          },
+          {
+            title:'璁惧鍨嬪彿',
+            align:"center",
+            dataIndex: 'equipModel'
+          },
+          {
+            title:'缁熶竴缂栧彿',
+            align:"center",
+            dataIndex: 'equipNum'
+          },
+          {
+            title:'宸ュ尯',
+            align:"center",
+            dataIndex: 'area1'
+          },
+          {
+            title:'鍗曞厓/宸ユ',
+            align:"center",
+            dataIndex: 'area2'
+          },
+          {
+            title:'缁翠慨璐圭敤',
+            align:"center",
+            dataIndex: 'cost'
+          },
+          {
+            title:'鎿嶄綔鑰�',
+            align:"center",
+            dataIndex: 'operator_dictText'
+          },
+          {
+            title:'鍑虹敓骞存湀',
+            align:"center",
+            dataIndex: 'birthday'
+          },
+          {
+            title:'宸ヤ綔鏃堕棿',
+            align:"center",
+            dataIndex: 'workStartTime'
+          },
+          // {
+          //   title:'鎿嶄綔鍛樻槸鍚︽湁鎿嶄綔璇�',
+          //   align:"center",
+          //   dataIndex: 'isCertificate'
+          // },
+          // {
+          //   title:'鏄惁鏂數閲嶅惎',
+          //   align:"center",
+          //   dataIndex: 'isOutage'
+          // },
+          // {
+          //   title:'鍔犲伐杩囩▼涓殑鍙樺姩鍥犵礌',
+          //   align:"center",
+          //   dataIndex: 'factor'
+          // },
+          // {
+          //   title:'鍏蜂綋鏇存敼鍐呭',
+          //   align:"center",
+          //   dataIndex: 'modifyContent'
+          // },
+          // {
+          //   title:'鍙戠敓浜嬫晠鏃惰澶囨墍鎵ц鐨勭▼搴�',
+          //   align:"center",
+          //   dataIndex: 'equipmentProcess'
+          // },
+          // {
+          //   title:'鍙戠敓浜嬫晠鏃剁殑鐜拌薄',
+          //   align:"center",
+          //   dataIndex: 'phenomenon'
+          // },
+          // {
+          //   title:'閲囧彇鎺柦1',
+          //   align:"center",
+          //   dataIndex: 'method1'
+          // },
+          // {
+          //   title:'閲囧彇鎺柦2',
+          //   align:"center",
+          //   dataIndex: 'method2'
+          // },
+          // {
+          //   title:'閲囧彇鎺柦3',
+          //   align:"center",
+          //   dataIndex: 'method3'
+          // },
+          // {
+          //   title:'浜嬫晠鎵�閫犳垚鐨勭粨鏋�',
+          //   align:"center",
+          //   dataIndex: 'result'
+          // },
+          // {
+          //   title:'寮�濮嬫鏌ユ椂闂�',
+          //   align:"center",
+          //   dataIndex: 'startCheckTime',
+          //   customRender:function (text) {
+          //     return !text?"":(text.length>10?text.substr(0,10):text)
+          //   }
+          // },
+          // {
+          //   title:'鍙戠敓浜嬫晠鍚庤澶囩殑鐘舵��',
+          //   align:"center",
+          //   dataIndex: 'equipmentStatus'
+          // },
+          // {
+          //   title:'缁翠慨浜哄憳瀵逛簨鏁呯殑鍒嗘瀽',
+          //   align:"center",
+          //   dataIndex: 'anlysis'
+          // },
+          // {
+          //   title:'缁翠慨浜哄憳妫�鏌ョ粨鏋�',
+          //   align:"center",
+          //   dataIndex: 'checkResult'
+          // },
+          // {
+          //   title:'浜嬫晠鍘熷洜鍒嗘瀽杩囩▼涓墍閲囧彇鐨勭浉鍏宠涓�',
+          //   align:"center",
+          //   dataIndex: 'active'
+          // },
+          // {
+          //   title:'寤鸿閲囧彇鐨勬帾鏂藉強鏃堕棿鑺傜偣',
+          //   align:"center",
+          //   dataIndex: 'suggest'
+          // },
+          // {
+          //   title:'浜嬫晠鍙戠敓鍘熷洜鍒嗘瀽鐨勬牳瀵�',
+          //   align:"center",
+          //   dataIndex: 'judgment'
+          // },
+          // {
+          //   title:'涓嶅悓鐨勬剰瑙佸強鍒嗘瀽',
+          //   align:"center",
+          //   dataIndex: 'differentJudgment'
+          // },
+          // {
+          //   title:'鏁存敼鎺柦',
+          //   align:"center",
+          //   dataIndex: 'updateMethod'
+          // },
+          // {
+          //   title:'浜嬫晠缁撹',
+          //   align:"center",
+          //   dataIndex: 'finalResult'
+          // },
+          // {
+          //   title:'缁翠慨璐d换浜�',
+          //   align:"center",
+          //   dataIndex: 'engineer'
+          // },
+          // {
+          //   title:'鎶�鏈礋璐d汉',
+          //   align:"center",
+          //   dataIndex: 'mechanic'
+          // },
+          // {
+          //   title:'宸ラ暱',
+          //   align:"center",
+          //   dataIndex: 'workLeader'
+          // },
+          // {
+          //   title:'涓績涓讳换',
+          //   align:"center",
+          //   dataIndex: 'centerLeader'
+          // },
+          // {
+          //   title:'缁勯暱',
+          //   align:"center",
+          //   dataIndex: 'teamLeader'
+          // },
+          // {
+          //   title:'缁翠慨绔欑珯闀�',
+          //   align:"center",
+          //   dataIndex: 'repairLeader'
+          // },
+          // {
+          //   title:'绠$悊瀹や笟鍔$粡鐞�',
+          //   align:"center",
+          //   dataIndex: 'equipLeader'
+          // },
+          // {
+          //   title:'杩愯淇濋殰閮ㄤ富绠¢瀵�',
+          //   align:"center",
+          //   dataIndex: 'guaranteeLeader'
+          // },
+          {
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/li/faultInfo/list",
+          delete: "/li/faultInfo/delete",
+          deleteBatch: "/li/faultInfo/deleteBatch",
+          exportXlsUrl: "/li/faultInfo/exportXls",
+          importExcelUrl: "li/faultInfo/importExcel",
+          confirm: "li/faultInfo/confirm"
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'num',text:'缂栫爜'})
+        fieldList.push({type:'string',value:'qId',text:'璐ㄩ噺闅愭偅纭鍗旾D'})
+        fieldList.push({type:'string',value:'cost',text:'缁翠慨璐圭敤'})
+        fieldList.push({type:'string',value:'isCertificate',text:'鎿嶄綔鍛樻槸鍚︽湁鎿嶄綔璇�'})
+        fieldList.push({type:'string',value:'isOutage',text:'鏄惁鏂數閲嶅惎'})
+        fieldList.push({type:'string',value:'factor',text:'鍔犲伐杩囩▼涓殑鍙樺姩鍥犵礌'})
+        fieldList.push({type:'string',value:'modifyContent',text:'鍏蜂綋鏇存敼鍐呭'})
+        fieldList.push({type:'string',value:'equipmentProcess',text:'鍙戠敓浜嬫晠鏃惰澶囨墍鎵ц鐨勭▼搴�'})
+        fieldList.push({type:'string',value:'phenomenon',text:'鍙戠敓浜嬫晠鏃剁殑鐜拌薄'})
+        fieldList.push({type:'string',value:'method1',text:'閲囧彇鎺柦1'})
+        fieldList.push({type:'string',value:'method2',text:'閲囧彇鎺柦2'})
+        fieldList.push({type:'string',value:'method3',text:'閲囧彇鎺柦3'})
+        fieldList.push({type:'string',value:'result',text:'浜嬫晠鎵�閫犳垚鐨勭粨鏋�'})
+        fieldList.push({type:'date',value:'startCheckTime',text:'寮�濮嬫鏌ユ椂闂�'})
+        fieldList.push({type:'string',value:'equipmentStatus',text:'鍙戠敓浜嬫晠鍚庤澶囩殑鐘舵��'})
+        fieldList.push({type:'string',value:'anlysis',text:'缁翠慨浜哄憳瀵逛簨鏁呯殑鍒嗘瀽'})
+        fieldList.push({type:'string',value:'checkResult',text:'缁翠慨浜哄憳妫�鏌ョ粨鏋�'})
+        fieldList.push({type:'string',value:'active',text:'浜嬫晠鍘熷洜鍒嗘瀽杩囩▼涓墍閲囧彇鐨勭浉鍏宠涓�'})
+        fieldList.push({type:'string',value:'suggest',text:'寤鸿閲囧彇鐨勬帾鏂藉強鏃堕棿鑺傜偣'})
+        fieldList.push({type:'string',value:'judgment',text:'浜嬫晠鍙戠敓鍘熷洜鍒嗘瀽鐨勬牳瀵�'})
+        fieldList.push({type:'string',value:'differentJudgment',text:'涓嶅悓鐨勬剰瑙佸強鍒嗘瀽'})
+        fieldList.push({type:'string',value:'updateMethod',text:'鏁存敼鎺柦'})
+        fieldList.push({type:'string',value:'finalResult',text:'浜嬫晠缁撹'})
+        fieldList.push({type:'string',value:'operater',text:'鎿嶄綔鑰�'})
+        fieldList.push({type:'string',value:'engineer',text:'缁翠慨璐d换浜�'})
+        fieldList.push({type:'string',value:'mechanic',text:'鎶�鏈礋璐d汉'})
+        fieldList.push({type:'string',value:'workLeader',text:'宸ラ暱'})
+        fieldList.push({type:'string',value:'centerLeader',text:'涓績涓讳换'})
+        fieldList.push({type:'string',value:'teamLeader',text:'缁勯暱'})
+        fieldList.push({type:'string',value:'repairLeader',text:'缁翠慨绔欑珯闀�'})
+        fieldList.push({type:'string',value:'equipLeader',text:'绠$悊瀹や笟鍔$粡鐞�'})
+        fieldList.push({type:'string',value:'guaranteeLeader',text:'杩愯淇濋殰閮ㄤ富绠¢瀵�'})
+        this.superFieldList = fieldList
+      },
+      handleConfirm(record) {
+      putAction(this.url.confirm, record).then(res => {
+        if (res.result) {
+          this.$message.success('纭鎴愬姛');
+          this.loadData();
+        } else {
+          this.$message.error('纭鍑虹幇寮傚父')
+        }
+      })
+    },
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git a/src/views/eam/MalfunctionRepair.vue b/src/views/eam/MalfunctionRepair.vue
index 5227684..2fe7603 100644
--- a/src/views/eam/MalfunctionRepair.vue
+++ b/src/views/eam/MalfunctionRepair.vue
@@ -286,6 +286,11 @@
           dataIndex: 'isStopName',
         },
         {
+          title: '鏄惁鍦ㄥ姞宸ラ浂浠�',
+          align: "center",
+          dataIndex: 'errUda1_dictText',
+        },
+        {
           title: '鍒涘缓浜�',
           align: "center",
           dataIndex: 'createBy'
diff --git a/src/views/eam/QuanlityConfirmList.vue b/src/views/eam/QuanlityConfirmList.vue
new file mode 100644
index 0000000..098dcff
--- /dev/null
+++ b/src/views/eam/QuanlityConfirmList.vue
@@ -0,0 +1,313 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col
+            :xl='6'
+            :lg='7'
+            :md='8'
+            :sm='24'
+          >
+            <a-form-item label='鍗曟嵁鍙�'>
+              <j-input
+                placeholder='鍗曟嵁鍙锋绱�'
+                v-model='queryParam.num'
+              ></j-input>
+            </a-form-item>
+          </a-col>
+          <a-col
+            :xl='6'
+            :lg='7'
+            :md='8'
+            :sm='24'
+          >
+            <a-form-item label='淇濋殰淇濅慨鍗�'>
+              <j-input
+                placeholder='鏁呴殰鎶ヤ慨鍗曟绱�'
+                v-model='queryParam.reportNum'
+              ></j-input>
+            </a-form-item>
+          </a-col>
+          <a-col
+            :xl='6'
+            :lg='7'
+            :md='8'
+            :sm='24'
+          >
+            <a-form-item label='缁熶竴缂栧彿'>
+              <j-input
+                placeholder='缁熶竴缂栧彿妫�绱�'
+                v-model='queryParam.equipmentNum'
+              ></j-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 鏌ヨ鍖哄煙-END -->
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+    <div class="table-operator">
+              <a-button
+                type='primary'
+                @click='searchQuery'
+                icon='search'
+              >鏌ヨ</a-button>
+              <a-button
+                type='primary'
+                @click='searchReset'
+                icon='reload'
+                style='margin-left: 8px'
+              >閲嶇疆</a-button>
+      <!-- <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> -->
+      <!-- <a-button type="primary" icon="download" @click="handleExportXls('浜у搧璐ㄩ噺闅愭偅纭')">瀵煎嚭</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+        <a-button type="primary" icon="import">瀵煎叆</a-button>
+      </a-upload> -->
+      <!-- 楂樼骇鏌ヨ鍖哄煙 -->
+      <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button>
+      </a-dropdown> -->
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�
+        <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            涓嬭浇
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <a @click="handleEdit(record)" :disabled="record.isConfirm==='yes'">纭</a>
+
+          <!-- <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a @click="handleDetail(record)">璇︽儏</a>
+              </a-menu-item>
+              <a-menu-item>
+                <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">
+                  <a>鍒犻櫎</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown> -->
+        </span>
+
+      </a-table>
+    </div>
+
+    <quanlity-confirm-modal ref="modalForm" @ok="modalFormOk"></quanlity-confirm-modal>
+  </a-card>
+</template>
+
+<script>
+
+  import '@/assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import QuanlityConfirmModal from './modules/QuanlityConfirmModal'
+
+  export default {
+    name: 'QuanlityConfirmList',
+    mixins:[JeecgListMixin, mixinDevice],
+    components: {
+      QuanlityConfirmModal
+    },
+    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: 'num',
+            width:200
+          },
+          {
+            title:'鏁呴殰鎶ヤ慨鍗�',
+            align:"center",
+            dataIndex: 'reportNum',
+            width:200
+          },
+          {
+            title:'璁惧鍚嶇О',
+            align:"center",
+            dataIndex: 'equipmentName',
+            width:200
+          },
+          {
+            title:'璁惧鍨嬪彿',
+            align:"center",
+            dataIndex: 'equipmentModel',
+            width:200
+          },
+          {
+            title:'缁熶竴缂栧彿',
+            align:"center",
+            dataIndex: 'equipmentNum',
+            width:200
+          },
+          {
+            title:'鍔犲伐闆朵欢鍙�',
+            align:"center",
+            dataIndex: 'partNumber',
+            width:200
+          },
+          {
+            title:'鎵规鍙�',
+            align:"center",
+            dataIndex: 'batchNo',
+            width:200
+          },
+          {
+            title:'浠舵暟',
+            align:"center",
+            dataIndex: 'quantity',
+            width:100
+          },
+          {
+            title:'鎿嶄綔鍛�',
+            align:"center",
+            dataIndex: 'operator_dictText',
+            width:100
+          },
+          {
+            title:'鏄惁宸茬‘璁�',
+            align:"center",
+            dataIndex: 'isConfirm_dictText'
+            ,
+            width:100
+          },
+          {
+            title:'纭棰嗗',
+            align:"center",
+            dataIndex: 'leader_dictText'
+            ,
+            width:100
+          },
+          {
+            title:'棰嗗纭鏃堕棿',
+            align:"center",
+            dataIndex: 'confirmTime',
+            customRender:function (text) {
+              return !text?"":(text.length>10?text.substr(0,10):text)
+            },
+            width:200
+          },
+          {
+            title:'浜у搧鎹熷け鎯呭喌',
+            align:"center",
+            dataIndex: 'condition',
+            width:100
+          },
+          {
+            title:'鎹熷け鎯呭喌鍒嗘瀽',
+            align:"center",
+            dataIndex: 'conditionAnalysis',
+            width:200
+          },
+          {
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/li/quanlityConfirm/list",
+          delete: "/li/quanlityConfirm/delete",
+          deleteBatch: "/li/quanlityConfirm/deleteBatch",
+          exportXlsUrl: "/li/quanlityConfirm/exportXls",
+          importExcelUrl: "li/quanlityConfirm/importExcel",
+          
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'reportId',text:'鏁呴殰鎶ヤ慨鍗旾D'})
+        fieldList.push({type:'string',value:'condition',text:'浜у搧鎹熷け鎯呭喌'})
+        fieldList.push({type:'string',value:'conditionAnalysis',text:'鎹熷け鎯呭喌鍒嗘瀽'})
+        fieldList.push({type:'string',value:'partNumber',text:'闆朵欢鍙�'})
+        fieldList.push({type:'string',value:'batchNo',text:'鎵规鍙�'})
+        fieldList.push({type:'int',value:'qunatity',text:'浠舵暟'})
+        fieldList.push({type:'string',value:'leader',text:'纭棰嗗'})
+        fieldList.push({type:'date',value:'confirmTime',text:'棰嗗纭鏃堕棿'})
+        fieldList.push({type:'string',value:'isConfirm',text:'鏄惁宸茬‘璁�'})
+        this.superFieldList = fieldList
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git a/src/views/eam/modules/FaultInfoForm.vue b/src/views/eam/modules/FaultInfoForm.vue
new file mode 100644
index 0000000..7f900ac
--- /dev/null
+++ b/src/views/eam/modules/FaultInfoForm.vue
@@ -0,0 +1,473 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-divider
+            orientation="center"
+            style="font-size: large;font-style: italic;color: #66aeed;"
+          > 琛ㄥご </a-divider>
+          <a-col :span="8">
+            <a-form-model-item label="鐢熶骇鍗曚綅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="鐢熶骇鍗曚綅"
+                :triggerChange="true"
+                dictCode="sys_depart,depart_name,id,del_flag='0'"
+                v-model="model.departId"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="宸ュ尯" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="area1">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="宸ュ尯" 
+                :triggerChange="true"
+                dictCode="mom_base_area,name,id,del_flag='0'"
+                v-model="model.area1"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鎿嶄綔鑰�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operater">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="璇疯緭鍏ユ搷浣滆��"
+                :triggerChange="true"
+                dictCode="sys_user,realname,id,del_flag='0'"
+                v-model="model.operater"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="璁惧鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eName">
+              <a-input v-model="model.equipName" placeholder="璁惧鍚嶇О"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍗曞厓/宸ユ" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="area2">
+              <a-input v-model="model.area2" placeholder="鍗曞厓/宸ユ"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍑虹敓骞存湀" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="birthday">
+              <j-date placeholder="鍑虹敓骞存湀" v-model="model.birthday" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="璁惧鍨嬪彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eModel">
+              <a-input v-model="model.equipModel" placeholder="璇疯緭鍏ヨ澶囧瀷鍙�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="浜嬫晠鍙戠敓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="faultTime">
+              <j-date placeholder="璇疯緭鍏ヤ簨鏁呭彂鐢熸椂闂�" v-model="model.faultTime" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鎶�鏈瓑绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="level">
+              <a-input v-model="model.level" placeholder="璇疯緭鍏ユ妧鏈瓑绾�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+           <a-col :span="8">
+            <a-form-model-item label="缁熶竴缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eNum">
+              <a-input v-model="model.equipNum" placeholder="璇疯緭鍏ョ粺涓�缂栧彿"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="缁翠慨璐圭敤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cost">
+              <a-input v-model="model.cost" placeholder="璇疯緭鍏ョ淮淇垂鐢�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="宸ヤ綔鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workStartTime">
+              <j-date  placeholder="璇疯緭鍏ュ伐浣滄椂闂�" v-model="model.workStartTime" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-divider
+            orientation="center"
+            style="font-size: large;font-style: italic;color: #66aeed;"
+          > 鎿嶄綔鑰呭~鍐欎簨鏁呭彂鐢熺粡杩� </a-divider>
+          <a-col :span="8">
+            <a-form-model-item label="鎿嶄綔鍛樻槸鍚︽湁鎿嶄綔璇�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isCertificate">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="璇疯緭鍏ユ搷浣滃憳鏄惁鏈夋搷浣滆瘉"
+                :triggerChange="true"
+                dictCode="is_product"
+                v-model="model.isCertificate"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="浜嬫晠鍙戠敓鍚庢槸鍚︽柇鐢甸噸鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isOutage">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="璇疯緭鍏ユ槸鍚︽柇鐢甸噸鍚�"
+                :triggerChange="true"
+                dictCode="is_product"
+                v-model="model.isOutage"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍔犲伐杩囩▼涓殑鍙樺姩鍥犵礌" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factor">
+              <j-multi-select-tag
+                allow-clear
+                placeholder="璇疯緭鍏ュ姞宸ヨ繃绋嬩腑鐨勫彉鍔ㄥ洜绱�"
+                dictCode="fault_change_factor"
+                v-model="model.factor" 
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍏蜂綋鏇存敼鍐呭" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="modifyContent">
+              <a-textarea v-model="model.modifyContent" rows="4" placeholder="璇疯緭鍏ュ叿浣撴洿鏀瑰唴瀹�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍙戠敓浜嬫晠鏃惰澶囨墍鎵ц鐨勭▼搴�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentProcess">
+              <a-textarea v-model="model.equipmentProcess" rows="4" placeholder="璇疯緭鍏ュ彂鐢熶簨鏁呮椂璁惧鎵�鎵ц鐨勭▼搴�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍙戠敓浜嬫晠鏃剁殑鐜拌薄" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phenomenon">
+              <a-textarea v-model="model.phenomenon" rows="4" placeholder="璇疯緭鍏ュ彂鐢熶簨鏁呮椂鐨勭幇璞�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="閲囧彇鎺柦1" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="method1">
+              <a-textarea v-model="model.method1" rows="4" placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�1" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="閲囧彇鎺柦2" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="method2">
+              <a-textarea v-model="model.method2" rows="4" placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�2" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="閲囧彇鎺柦3" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="method3">
+              <a-textarea v-model="model.method3" rows="4" placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�3" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="浜嬫晠鎵�閫犳垚鐨勭粨鏋�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="result">
+              <a-input v-model="model.result" placeholder="璇疯緭鍏ヤ簨鏁呮墍閫犳垚鐨勭粨鏋�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="宸ラ暱" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workLeader">
+              <a-input v-model="model.workLeader" placeholder="璇疯緭鍏ュ伐闀�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="涓績涓讳换" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="centerLeader">
+              <a-input v-model="model.centerLeader" placeholder="璇疯緭鍏ヤ腑蹇冧富浠�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-divider
+            orientation="center"
+            style="font-size: large;font-style: italic;color: #66aeed;"
+          > 缁翠慨浜哄憳杩涜浜嬫晠鍒嗘瀽 </a-divider>
+          <a-col :span="8">
+            <a-form-model-item label="寮�濮嬫鏌ユ椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="startCheckTime">
+              <j-date placeholder="璇烽�夋嫨寮�濮嬫鏌ユ椂闂�" v-model="model.startCheckTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍙戠敓浜嬫晠鍚庤澶囩殑鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentStatus">
+              <a-input v-model="model.equipmentStatus" placeholder="璇疯緭鍏ュ彂鐢熶簨鏁呭悗璁惧鐨勭姸鎬�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="缁翠慨浜哄憳瀵逛簨鏁呯殑鍒嗘瀽" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="anlysis">
+              <a-textarea v-model="model.anlysis" rows="4" placeholder="璇疯緭鍏ョ淮淇汉鍛樺浜嬫晠鐨勫垎鏋�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="缁翠慨浜哄憳妫�鏌ョ粨鏋�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="checkResult">
+              <a-textarea v-model="model.checkResult" rows="4" placeholder="璇疯緭鍏ョ淮淇汉鍛樻鏌ョ粨鏋�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="浜嬫晠鍘熷洜鍒嗘瀽杩囩▼涓墍閲囧彇鐨勭浉鍏宠涓�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="active">
+              <a-textarea v-model="model.active" rows="4" placeholder="璇疯緭鍏ヤ簨鏁呭師鍥犲垎鏋愯繃绋嬩腑鎵�閲囧彇鐨勭浉鍏宠涓�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="寤鸿閲囧彇鐨勬帾鏂藉強鏃堕棿鑺傜偣" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="suggest">
+              <a-textarea v-model="model.suggest" rows="4" placeholder="璇疯緭鍏ュ缓璁噰鍙栫殑鎺柦鍙婃椂闂磋妭鐐�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="缁翠慨璐d换浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="engineer">
+              <a-input v-model="model.engineer" placeholder="璇疯緭鍏ョ淮淇矗浠讳汉"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="缁勯暱" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="teamLeader">
+              <a-input v-model="model.teamLeader" placeholder="璇疯緭鍏ョ粍闀�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="缁翠慨绔欑珯闀�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairLeader">
+              <a-input v-model="model.repairLeader" placeholder="璇疯緭鍏ョ淮淇珯绔欓暱"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-divider
+            orientation="center"
+            style="font-size: large;font-style: italic;color: #66aeed;"
+          > 璁惧鎶�鏈笓瀹舵剰瑙� </a-divider>
+          <a-col :span="8">
+            <a-form-model-item label="浜嬫晠鍙戠敓鍘熷洜鍒嗘瀽鐨勬牳瀵�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="judgment">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="璇疯緭鍏ヤ簨鏁呭彂鐢熷師鍥犲垎鏋愮殑鏍稿"
+                :triggerChange="true"
+                dictCode="opinion"
+                v-model="model.judgment"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="涓嶅悓鐨勬剰瑙佸強鍒嗘瀽" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="differentJudgment">
+              <a-textarea v-model="model.differentJudgment" rows="4" placeholder="璇疯緭鍏ヤ笉鍚岀殑鎰忚鍙婂垎鏋�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鏁存敼鎺柦" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="updateMethod">
+              <a-textarea v-model="model.updateMethod" rows="4" placeholder="璇疯緭鍏ユ暣鏀规帾鏂�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="浜嬫晠缁撹" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="finalResult">
+              <a-textarea v-model="model.finalResult" rows="4" placeholder="璇疯緭鍏ヤ簨鏁呯粨璁�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鎶�鏈礋璐d汉" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mechanic">
+              <a-input v-model="model.mechanic" placeholder="璇疯緭鍏ユ妧鏈礋璐d汉"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="绠$悊瀹や笟鍔$粡鐞�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipLeader">
+              <a-input v-model="model.equipLeader" placeholder="璇疯緭鍏ョ鐞嗗涓氬姟缁忕悊"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="杩愯淇濋殰閮ㄤ富绠¢瀵�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="guaranteeLeader">
+              <a-input v-model="model.guaranteeLeader" placeholder="璇疯緭鍏ヨ繍琛屼繚闅滈儴涓荤棰嗗"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'FaultInfoForm',
+    components: {
+    },
+    props: {
+      //琛ㄥ崟绂佺敤
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 10 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 14 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+          num:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          area1:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          operater:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          eName:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          area2:[
+            { required: true, message: '蹇呭~!' },
+          ],  
+          birthday:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          eModel:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          faultTime:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          level:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          eNum:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          cost:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          workStartTime:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          isCertificate:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          isOutage:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          factor:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          modifyContent:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          equipmentProcess:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          phenomenon:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          method1:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          method2:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          method3:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          result:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          workLeader:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          centerLeader:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          startCheckTime:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          equipmentStatus:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          anlysis:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          checkResult:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          active:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          suggest:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          engineer:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          teamLeader:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          repairLeader:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          differentJudgment:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          updateMethod:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          finalResult:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          mechanic:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          equipLeader:[
+            { required: true, message: '蹇呭~!' },
+          ],
+          guaranteeLeader:[
+            { required: true, message: '蹇呭~!' },
+          ],
+        },
+        url: {
+          add: "/li/faultInfo/add",
+          edit: "/li/faultInfo/edit",
+          queryById: "/li/faultInfo/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //澶囦唤model鍘熷鍊�
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/modules/FaultInfoModal.vue b/src/views/eam/modules/FaultInfoModal.vue
new file mode 100644
index 0000000..1aa4e9a
--- /dev/null
+++ b/src/views/eam/modules/FaultInfoModal.vue
@@ -0,0 +1,61 @@
+<template>
+  <j-modal
+    :title="'璁惧浜嬫晠鐧昏琛�'"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    :fullscreen="true"
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴">
+    <fault-info-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></fault-info-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import FaultInfoForm from './FaultInfoForm'
+  export default {
+    name: 'FaultInfoModal',
+    components: {
+      FaultInfoForm
+    },
+    data () {
+      return {
+        title:'璁惧浜嬫晠鐧昏琛�',
+        width:1500,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/modules/QuanlityConfirmForm.vue b/src/views/eam/modules/QuanlityConfirmForm.vue
new file mode 100644
index 0000000..8bf741f
--- /dev/null
+++ b/src/views/eam/modules/QuanlityConfirmForm.vue
@@ -0,0 +1,158 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <!-- <a-col :span="24">
+            <a-form-model-item label="鏁呴殰鎶ヤ慨鍗旾D" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reportId">
+              <a-input v-model="model.reportId" placeholder="璇疯緭鍏ユ晠闅滄姤淇崟ID"  ></a-input>
+            </a-form-model-item>
+          </a-col> -->
+          <a-col :span="24">
+            <a-form-model-item label="浜у搧鎹熷け鎯呭喌" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="condition">
+              <j-dict-select-tag
+                allow-clear
+                placeholder="璇疯緭鍏ヤ骇鍝佹崯澶辨儏鍐�" 
+                :triggerChange="true"
+                dictCode="is_product"
+                v-model="model.condition"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鎹熷け鎯呭喌鍒嗘瀽" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="conditionAnalysis">
+              <a-textarea v-model="model.conditionAnalysis" rows="4" placeholder="璇疯緭鍏ユ崯澶辨儏鍐靛垎鏋�" />
+            </a-form-model-item>
+          </a-col>
+          <!-- <a-col :span="24">
+            <a-form-model-item label="闆朵欢鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partNumber">
+              <a-input v-model="model.partNumber" placeholder="璇疯緭鍏ラ浂浠跺彿"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鎵规鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batchNo">
+              <a-input v-model="model.batchNo" placeholder="璇疯緭鍏ユ壒娆″彿"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="浠舵暟" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="qunatity">
+              <a-input-number v-model="model.qunatity" placeholder="璇疯緭鍏ヤ欢鏁�" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="纭棰嗗" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leader">
+              <a-input v-model="model.leader" placeholder="璇疯緭鍏ョ‘璁ら瀵�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="棰嗗纭鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmTime">
+              <j-date placeholder="璇烽�夋嫨棰嗗纭鏃堕棿" v-model="model.confirmTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鏄惁宸茬‘璁�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isConfirm">
+              <a-input v-model="model.isConfirm" placeholder="璇疯緭鍏ユ槸鍚﹀凡纭"  ></a-input>
+            </a-form-model-item>
+          </a-col> -->
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@/api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'QuanlityConfirmForm',
+    components: {
+    },
+    props: {
+      //琛ㄥ崟绂佺敤
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+          conditionAnalysis:[
+            { required: true, message: '璇疯緭鍏ユ崯澶辨儏鍐靛垎鏋�!' },
+            { min: 1, max: 1000, message: '闀垮害涓嶈秴杩� 1000 涓瓧绗�', trigger: 'blur' },
+          ],
+          condition:[
+            { required: true, message: '璇烽�夋嫨浜у搧鏄惁鏈夋崯澶�!' },
+          ]
+        },
+        url: {
+          add: "/li/quanlityConfirm/add",
+          edit: "/li/quanlityConfirm/edit",
+          queryById: "/li/quanlityConfirm/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //澶囦唤model鍘熷鍊�
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+              this.model.isConfirm = "yes";
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+         
+        })
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/modules/QuanlityConfirmModal.vue b/src/views/eam/modules/QuanlityConfirmModal.vue
new file mode 100644
index 0000000..6b178ca
--- /dev/null
+++ b/src/views/eam/modules/QuanlityConfirmModal.vue
@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴">
+    <quanlity-confirm-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></quanlity-confirm-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import QuanlityConfirmForm from './QuanlityConfirmForm'
+  export default {
+    name: 'QuanlityConfirmModal',
+    components: {
+      QuanlityConfirmForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/modules/malfunctionRepair/EquipmentList.vue b/src/views/eam/modules/malfunctionRepair/EquipmentList.vue
index 73a3350..ad90fc4 100644
--- a/src/views/eam/modules/malfunctionRepair/EquipmentList.vue
+++ b/src/views/eam/modules/malfunctionRepair/EquipmentList.vue
@@ -11,6 +11,53 @@
   >
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
+        <div class="table-page-search-wrapper">
+          <a-form
+            layout="inline"
+            @keyup.enter.native="searchQuery"
+          >
+            <a-row :gutter="24">
+              <a-col
+                :md="6"
+                :sm="8"
+              >
+                <a-form-item label="鍗曟嵁鍙�">
+                  <a-input
+                    placeholder="璇疯緭鍏ュ崟鎹彿妫�绱�"
+                    v-model="queryParam.num"
+                  ></a-input>
+                </a-form-item>
+              </a-col>
+
+              <a-col
+                :md="6"
+                :sm="8"
+              >
+                <a-form-item label="璁惧鍚嶇О">
+                  <a-input
+                    placeholder="璇疯緭鍏ヨ澶囧悕绉版绱�"
+                    v-model="queryParam.name"
+                  ></a-input>
+                </a-form-item>
+              </a-col>
+              <a-col
+                :md="6"
+                :sm="8"
+              >
+                <a-button
+                  type="primary"
+                  @click="searchQuery"
+                  icon="search"
+                >鏌ヨ</a-button>
+                <a-button
+                  @click="searchReset"
+                  icon="reload"
+                  style="margin-left:8px;"
+                >閲嶇疆</a-button>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
         <a-table
           ref="table"
           size="middle"
@@ -123,13 +170,6 @@
 
 
   methods: {
-
-    searchQuery() {
-      this.loadData(1);
-    },
-    searchReset() {
-      this.loadData(1)
-    },
     list() {
       this.selectedRowKeys = [];
       this.selectedRowRecord = [];
diff --git a/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue b/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue
index 5394b39..95e4210 100644
--- a/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue
+++ b/src/views/eam/modules/malfunctionRepair/MalfunctionRepaireModal.vue
@@ -39,7 +39,6 @@
                 v-decorator="['isStop', validatorRules.isStop]"
               />
             </a-form-item>
-
           </a-col>
         </a-row>
         <a-row :gutter="24">
@@ -174,37 +173,6 @@
             </a-form-item>
           </a-col>
         </a-row>
-        <!-- <a-row :gutter="24">
-          <a-col :span="24/2">
-            <a-form-item
-              label="绱ф�ョ▼搴�"
-              :labelCol="labelCol"
-              :wrapperCol="wrapperCol"
-            >
-              <j-dict-select-tag
-                allow-clear
-                :disabled="disableSubmit"
-                :placeholder="disableSubmit?'':'璇烽�夋嫨绱ф�ョ▼搴�'"
-                :triggerChange="true"
-                dictCode="urgency"
-                v-decorator="['urgency', validatorRules.urgency]"
-              />
-            </a-form-item>
-          </a-col> -->
-          <!-- <a-col :span="24/2" v-show="false">
-            <a-form-item
-              label="鏁呴殰鍘熷洜"
-              :labelCol="labelCol"
-              :wrapperCol="wrapperCol"
-            >
-            <a-input
-                :disabled="disableSubmit"
-                enter-button
-                v-decorator="['faultReason', validatorRules.faultReason]"
-              />
-            </a-form-item>
-          </a-col> -->
-        <!-- </a-row> -->
         <a-row :gutter="24">
           <a-col :span="24/2">
             <a-form-item
@@ -237,22 +205,67 @@
             </a-form-item>
           </a-col>
         </a-row>
-        <!-- <a-row :gutter="24">
-          <a-col :span="24/2">
+        <a-row :gutter="24">
+         <a-col :span="24/2">
             <a-form-item
-              label="鏁呴殰鐓х墖"
+              label="鏄惁鍦ㄥ姞宸ラ浂浠�"
               :labelCol="labelCol"
               :wrapperCol="wrapperCol"
             >
-              <j-image-upload
-                :disabled="disableSubmit"
-                :isMultiple="true"
-                v-decorator="['photo', {}]"
-              ></j-image-upload>
-
+              <j-dict-select-tag
+                allow-clear
+                :placeholder="disableSubmit?'':'璇烽�夋嫨鏄惁鍦ㄥ姞宸ラ浂浠�'"
+                :triggerChange="true"
+                @change="(e) => statusChange(e)"
+                dictCode="is_product"
+                v-decorator="['errUda1', validatorRules.errUda1]"
+              />
             </a-form-item>
           </a-col>
-        </a-row> -->
+          <a-col :span="24/2"  v-if="workingStatus">
+            <a-form-item
+              label="鍔犲伐闆朵欢鍙�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <a-input
+                allow-clear
+                :placeholder="disableSubmit?'':'璇疯緭鍏ュ姞宸ラ浂浠跺彿'"
+                v-decorator="['partNumber', validatorRules.partNumber ]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :span="24/2" v-if="workingStatus">
+            <a-form-item
+              label="鎵规鍙�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <a-input
+                allow-clear
+                :placeholder="disableSubmit?'':'璇疯緭鍏ユ壒娆″彿'"
+                v-decorator="['batchNo', validatorRules.batchNo ]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24/2"  v-if="workingStatus">
+            <a-form-item
+              label="浠舵暟"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <a-input-number
+                allow-clear
+                style="width: 100%;"
+                :placeholder="disableSubmit?'':'璇疯緭鍏ヤ欢鏁�'"
+                :min="1"
+                v-decorator="['quantity', validatorRules.quantity]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
       </a-form>
     </a-spin>
 
@@ -346,6 +359,26 @@
             { max: 1000, min:1,message: '鏈�澶氬彲鎻忚堪1000瀛�!' },
           ]
         },
+        errUda1:{
+          rules: [
+            { required: true, message: '璇烽�夋嫨鏄惁鍦ㄥ姞宸ラ浂浠�!' },
+          ]
+        },
+        partNumber:{
+          rules: [
+            { required: true, message: '璇疯緭鍏ラ浂浠跺浘鍙�!' },
+          ]
+        },
+        batchNo:{
+          rules: [
+            { required: true, message: '璇疯緭鍏ユ壒娆″彿!' },
+          ]
+        },
+        quantity:{
+          rules: [
+            { required: true, message: '璇疯緭鍏ヤ欢鏁�!' },
+          ]
+        }
       },
       url: {
         add: "/eam/equipmentReportRepair/add",
@@ -354,6 +387,7 @@
         getNum:'/eam/sysIdentity/getNumNew'
       },
       dataSource: [],
+      workingStatus:false
     }
   },
 
@@ -372,6 +406,7 @@
       getAction(this.url.getNum,param).then(res=>{
           if(res.success){
              modelDefault.num = res.result;
+             this.workingStatus = false;
              modelDefault.faultTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss');
              that.edit(modelDefault);
           }
@@ -384,7 +419,7 @@
       that.model = Object.assign({}, record);
       that.visible = true;
       that.$nextTick(() => {
-        that.form.setFieldsValue(pick(that.model, 'num', 'isStop', 'equipmentId', 'equipmentNum', 'equipmentName', 'equipmentModel', 'equipmentSpecification', 'urgency', 'useDepartId', 'departName', 'faultDescription', 'faultTime', 'remark', "photo"));
+        that.form.setFieldsValue(pick(that.model,'errUda1' ,'num', 'isStop', 'equipmentId', 'equipmentNum', 'equipmentName', 'equipmentModel', 'equipmentSpecification', 'urgency', 'useDepartId', 'departName', 'faultDescription', 'faultTime', 'remark', "photo"));
       });
       if (record.id) {
         this.codeDisable = true;
@@ -445,7 +480,9 @@
       let record = data.record;
       this.form.setFieldsValue({ equipmentName: record.name, equipmentId: record.id, equipmentNum: record.num, equipmentModel: record.model, equipmentSpecification: record.specification, useDepartId: record.useId, departName: record.useId_dictText });
     },
-
+    statusChange(val){
+      this.workingStatus=val==='no'?false:true;
+    }
   },
 }
 </script>

--
Gitblit v1.9.3