whj 1 year ago
parent
commit
d9c79e92de

+ 101 - 135
src/views/check/checkstandard/CheckStandard.vue

@@ -6,41 +6,29 @@
           <a-row :gutter="48">
             <a-col :md="6" :sm="24">
               <a-form-item label="编码/名称">
-                <a-input v-model="queryParam.keyword" placeholder="编码/名称"/>
+                <a-input v-model="queryParam.keyword" placeholder="编码/名称" />
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="设备新号">
-                <a-input v-model="queryParam.sbNo" placeholder="请输入设备新号"/>
+                <a-input v-model="queryParam.sbNo" placeholder="请输入设备新号" />
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="设备名称">
-                <a-input v-model="queryParam.sbName" placeholder="请输入设备名称"/>
+                <a-input v-model="queryParam.sbName" placeholder="请输入设备名称" />
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="设备类型">
-                <a-tree-select
-                  style="width: 100%"
-                  :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
-                  :treeData="treeData"
-                  :treeNodeFilterProp="'title'"
-                  :showSearch="true"
-                  v-model="queryParam.typeId"
-                  placeholder="请选择"
-                >
+                <a-tree-select style="width: 100%" :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }" :treeData="treeData" :treeNodeFilterProp="'title'" :showSearch="true" v-model="queryParam.typeId" placeholder="请选择">
                 </a-tree-select>
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
               <a-form-item label="设备等级">
                 <a-select mode="multiple" v-model="queryParam.sbLevelList" placeholder="请选择">
-                  <a-select-option
-                    v-for="(label,value) in sbLevelMap"
-                    :key="value"
-                    :label="label"
-                    :value="parseInt(value)">{{ label }}
+                  <a-select-option v-for="(label,value) in sbLevelMap" :key="value" :label="label" :value="parseInt(value)">{{ label }}
                   </a-select-option>
                 </a-select>
               </a-form-item>
@@ -48,11 +36,7 @@
             <a-col :md="6" :sm="24">
               <a-form-item label="维护等级">
                 <a-select mode="multiple" v-model="queryParam.levelList" placeholder="请选择">
-                  <a-select-option
-                    v-for="(label,value) in levelMap"
-                    :key="value"
-                    :label="label"
-                    :value="parseInt(value)">{{ label }}
+                  <a-select-option v-for="(label,value) in levelMap" :key="value" :label="label" :value="parseInt(value)">{{ label }}
                   </a-select-option>
                 </a-select>
               </a-form-item>
@@ -60,11 +44,7 @@
             <a-col :md="6" :sm="24">
               <a-form-item label="计划周期">
                 <a-select mode="multiple" v-model="queryParam.periodTypeList" placeholder="请选择">
-                  <a-select-option
-                    v-for="(label,value) in periodTypeMap"
-                    :key="value"
-                    :label="label"
-                    :value="parseInt(value)">{{ label }}
+                  <a-select-option v-for="(label,value) in periodTypeMap" :key="value" :label="label" :value="parseInt(value)">{{ label }}
                   </a-select-option>
                 </a-select>
               </a-form-item>
@@ -79,79 +59,57 @@
         </a-form>
       </div>
 
-      <div class="table-operator">
-        <a-button
-          v-if="($auth('check-spot-standards-add') || $auth('check-polling-standards-add'))"
-          type="primary"
-          icon="plus"
-          @click="$refs.baseModal.base()">新增
+      <a-space class="table-operator">
+        <a-button v-if="($auth('check-spot-standards-add') || $auth('check-polling-standards-add'))" type="primary" icon="plus" @click="$refs.baseModal.base()">新增
+        </a-button>
+        <a-button v-if="($auth('check-spot-standards-add') || $auth('check-polling-standards-add'))" type="primary" icon="plus" @click="handleBatchAdd">批量新增
         </a-button>
         <!-- <a-button style="margin-left:8px;" type="primary" @click="doImport">
           <a-icon type="upload"/>
           新增导入
         </a-button> -->
-        <a-button style="margin-left:8px;" type="primary" @click="doImportOldVersion">
-          <a-icon type="upload"/>
+        <a-button type="primary" @click="doImportOldVersion">
+          <a-icon type="upload" />
           导入
         </a-button>
         <!-- <a-button style="margin-left:8px;" type="primary" @click="doImportByUpdate">
           <a-icon type="upload"/>
           修改导入
         </a-button> -->
-        <a-button
-          style="margin-left: 8px"
-          v-if="($auth('check-spot-standards-export')||$auth('check-polling-standards-export'))"
-          type="primary"
-          icon="download"
-          @click="doExport">导出
+        <a-button v-if="($auth('check-spot-standards-export')||$auth('check-polling-standards-export'))" type="primary" icon="download" @click="doExport">导出
         </a-button>
-        <a-button :confirmLoading="confirmLoading" style="margin-left:8px;" type="primary" @click="doUpdateNo">
-          <a-icon type="upload"/>
+        <a-button :confirmLoading="confirmLoading" type="primary" @click="doUpdateNo">
+          <a-icon type="upload" />
           初始化编码
         </a-button>
         <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && ($auth('check-spot-standards-del')||$auth('check-polling-standards-del'))">
           <a-menu slot="overlay">
             <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
               <a-menu-item key="1">
-                <a-icon type="delete"/>
+                <a-icon type="delete" />
                 <a>删除</a></a-menu-item>
             </a-popconfirm>
           </a-menu>
-          <a-button style="margin-left: 8px">
+          <a-button>
             批量操作
-            <a-icon type="down"/>
+            <a-icon type="down" />
           </a-button>
         </a-dropdown>
-      </div>
+      </a-space>
 
-      <s-table
-        ref="table"
-        size="default"
-        rowKey="id"
-        :columns="columns"
-        :scroll="{x: 1500, y: BaseTool.Constant.scrollY }"
-        :data="loadData"
-        :alert="options.alert"
-        :rowSelection="options.rowSelection"
-        showPagination="auto"
-      >
+      <s-table ref="table" size="default" rowKey="id" :columns="columns" :scroll="{x: 1500, y: BaseTool.Constant.scrollY }" :data="loadData" :alert="options.alert" :rowSelection="options.rowSelection" showPagination="auto">
         <span slot="enable" slot-scope="text">
-          <badge
-            :status="DictCache.COLOR.YES_NO[text]"
-            :text="enableMap[text]" />
+          <badge :status="DictCache.COLOR.YES_NO[text]" :text="enableMap[text]" />
         </span>
         <span slot="action" slot-scope="record">
           <template>
             <a @click="handleView(record)">查看</a>
-            <a-divider type="vertical"/>
+            <a-divider type="vertical" />
             <a @click="handleViewCheckJob(record)">保养任务</a>
-            <a-divider type="vertical"/>
+            <a-divider type="vertical" />
             <a v-if="($auth('check-spot-standards-edit')||$auth('check-polling-standards-edit'))" @click="handleEdit(record)">修改</a>
-            <a-divider type="vertical"/>
-            <a-popconfirm
-              v-if="($auth('check-spot-standards-del')||$auth('check-polling-standards-del'))"
-              title="是否要删除该条数据?"
-              @confirm="batchDelete(record.id)">
+            <a-divider type="vertical" />
+            <a-popconfirm v-if="($auth('check-spot-standards-del')||$auth('check-polling-standards-del'))" title="是否要删除该条数据?" @confirm="batchDelete(record.id)">
               <a>删除</a>
             </a-popconfirm>
             <a-divider type="vertical" />
@@ -160,16 +118,18 @@
         </span>
       </s-table>
     </div>
-    <detail-standard-check-job ref="detailSbCheckJobModal" @ok="handleOk"/>
-    <base-form ref="baseModal" :check-type="checkType" @ok="handleOk"/>
-    <detail ref="detailModal"/>
-    <import-form-update ref="importModal" @ok="handleOk"/>
+    <detail-standard-check-job ref="detailSbCheckJobModal" @ok="handleOk" />
+    <base-form ref="baseModal" :check-type="checkType" @ok="handleOk" />
+    <BatchBaseForm ref="batchBaseForm" :check-type="checkType" @ok="handleOk" />
+    <detail ref="detailModal" />
+    <import-form-update ref="importModal" @ok="handleOk" />
   </a-card>
 </template>
 
 <script>
 import { STable, Ellipsis } from '@/components'
 import BaseForm from './modules/BaseForm'
+import BatchBaseForm from './modules/BatchBaseForm'
 import Detail from './modules/Detail'
 import ImportFormUpdate from './modules/ImportFormUpdate'
 import {
@@ -177,7 +137,7 @@ import {
   deleteCheckStandards,
   updateCheckStandardNo,
   fetchCheckStandard,
-  exportCheckStandard
+  exportCheckStandard,
 } from '@/api/check/checkstandard'
 import DetailStandardCheckJob from '@/views/check/checkjob/modules/DetailStandardCheckJob'
 import { fetchSbTypeTree } from '@/api/sb/type'
@@ -190,7 +150,8 @@ export default {
     BaseForm,
     Detail,
     ImportFormUpdate,
-    DetailStandardCheckJob
+    DetailStandardCheckJob,
+    BatchBaseForm,
   },
   props: {
     /**
@@ -198,16 +159,16 @@ export default {
      */
     checkType: {
       type: Number,
-      default: 1
-    }
+      default: 1,
+    },
   },
-  data () {
+  data() {
     return {
       // 查询参数
       visible: true,
       confirmLoading: false,
       queryParam: {
-        type: this.checkType
+        type: this.checkType,
       },
       // 表头
       columns: [
@@ -217,33 +178,35 @@ export default {
           width: '100px',
           checked: true,
           customRender: (text, record, index) => {
-            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
-          }
+            return `${
+              (this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1
+            }`
+          },
         },
         {
           title: '设备新号',
           dataIndex: 'sbNo',
           checked: true,
-          width: '100px'
+          width: '100px',
         },
         {
           title: '设备名称',
           dataIndex: 'sbName',
           checked: true,
-          width: '150px'
+          width: '150px',
         },
         {
           title: '标准编码',
           dataIndex: 'no',
           checked: true,
-          width: '150px'
-        }, /*
+          width: '150px',
+        } /*
         {
           title: '部位',
           dataIndex: 'partName',
           checked: true,
           width: '200px'
-        }, */
+        }, */,
         {
           title: '维护等级',
           dataIndex: 'level',
@@ -251,7 +214,7 @@ export default {
           checked: true,
           customRender: (text, record, index) => {
             return this.BaseTool.Table.getMapText(this.levelMap, text)
-          }
+          },
         },
         {
           title: '检查标准',
@@ -268,7 +231,7 @@ export default {
             } else {
               return text
             }
-          }
+          },
         },
         {
           title: '计划周期',
@@ -277,20 +240,20 @@ export default {
           checked: true,
           customRender: (text, record, index) => {
             return text + this.BaseTool.Table.getMapText(this.periodTypeMap, record.periodType)
-          }
+          },
         },
         {
           title: '预计下次执行日期',
           dataIndex: 'nextDate',
           checked: true,
-          width: '200px'
+          width: '200px',
         },
         {
           title: '上次执行日期',
           dataIndex: 'lastDate',
           fixed: 'right',
           checked: true,
-          width: '200px'
+          width: '200px',
         },
         {
           title: '操作',
@@ -299,8 +262,8 @@ export default {
           checked: true,
           fixed: 'right',
           align: 'center',
-          scopedSlots: { customRender: 'action' }
-        }
+          scopedSlots: { customRender: 'action' },
+        },
       ],
       // 下拉框map
       actionTypeMap: {},
@@ -312,17 +275,15 @@ export default {
       treeData: [],
       checkUserTypeMap: {},
       // 加载数据方法 必须为 Promise 对象
-      loadData: parameter => {
+      loadData: (parameter) => {
         parameter = {
           ...parameter,
           ...this.queryParam,
-          dataScope: {
-          }
+          dataScope: {},
         }
-        return getCheckStandardPage(Object.assign(parameter, this.queryParam))
-          .then(res => {
-            return res.data
-          })
+        return getCheckStandardPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          return res.data
+        })
       },
       selectedRowKeys: [],
       selectedRows: [],
@@ -331,17 +292,17 @@ export default {
           show: true,
           clear: () => {
             this.selectedRowKeys = []
-          }
+          },
         },
         rowSelection: {
           selectedRowKeys: this.selectedRowKeys,
-          onChange: this.onSelectChange
-        }
+          onChange: this.onSelectChange,
+        },
       },
-      optionAlertShow: false
+      optionAlertShow: false,
     }
   },
-  created () {
+  created() {
     // 下拉框map
     this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_STANDARD_TYPE)
     this.enableMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
@@ -350,42 +311,42 @@ export default {
     this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_PLAN_LEVEL)
     this.checkUserTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_USER_TYPE)
     this.sbLevelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_LEVEL)
-    fetchSbTypeTree().then(res => {
+    fetchSbTypeTree().then((res) => {
       this.treeData = res.data
     })
     this.tableOption()
   },
   methods: {
-    tableOption () {
+    tableOption() {
       if (!this.optionAlertShow) {
         this.options = {
           alert: {
             show: true,
             clear: () => {
               this.selectedRowKeys = []
-            }
+            },
           },
           rowSelection: {
             selectedRowKeys: this.selectedRowKeys,
             onChange: this.onSelectChange,
-            getCheckboxProps: record => ({
+            getCheckboxProps: (record) => ({
               props: {
                 disabled: false,
-                name: record.id
-              }
-            })
-          }
+                name: record.id,
+              },
+            }),
+          },
         }
         this.optionAlertShow = true
       } else {
         this.options = {
           alert: false,
-          rowSelection: null
+          rowSelection: null,
         }
         this.optionAlertShow = false
       }
     },
-    batchDelete (id) {
+    batchDelete(id) {
       let ids = []
       if (this.BaseTool.String.isBlank(id)) {
         const length = this.selectedRows.length
@@ -393,76 +354,81 @@ export default {
           this.$message.info('请选择要删除的记录')
           return
         }
-        ids = this.selectedRows.map(item => item.id)
+        ids = this.selectedRows.map((item) => item.id)
       } else {
         ids = [id]
       }
-      deleteCheckStandards(ids).then(res => {
+      deleteCheckStandards(ids).then((res) => {
         this.$message.info('删除成功')
         this.handleOk()
         this.$refs.table.clearSelected()
       })
     },
-    doUpdateNo (record) {
+    doUpdateNo(record) {
       this.confirmLoading = true
-      updateCheckStandardNo().then(res => {
+      updateCheckStandardNo().then((res) => {
         this.confirmLoading = false
         this.$message.info('编码生成成功')
         this.handleOk()
         this.$refs.table.clearSelected()
       })
     },
-    handleEdit (record) {
+    handleEdit(record) {
       const modal = this.$refs.baseModal
       modal.base(record)
     },
-    handleView (record) {
-      fetchCheckStandard({ id: record.id }).then(res => {
+    handleView(record) {
+      fetchCheckStandard({ id: record.id }).then((res) => {
         const modal = this.$refs.detailModal
         modal.base(res.data)
       })
     },
-    handleViewCheckJob (record) {
+    handleViewCheckJob(record) {
       this.visible = false
       const modal = this.$refs.detailSbCheckJobModal
       modal.base(record)
     },
-    handleCopy (record) {
-      fetchCheckStandard({ id: record.id }).then(res => {
+    handleBatchAdd() {
+      this.visible = false
+      const modal = this.$refs.batchBaseForm
+      modal.base()
+    },
+    handleCopy(record) {
+      fetchCheckStandard({ id: record.id }).then((res) => {
         const modal = this.$refs.baseModal
         res.data.id = null
         modal.base(res.data)
       })
     },
-    handleOk () {
+    handleOk() {
       this.visible = true
       this.$refs.table.refresh()
     },
-    onSelectChange (selectedRowKeys, selectedRows) {
+    onSelectChange(selectedRowKeys, selectedRows) {
       this.selectedRowKeys = selectedRowKeys
       this.selectedRows = selectedRows
     },
-    resetSearchForm () {
+    resetSearchForm() {
       this.queryParam = {}
       this.$refs.table.refresh(true)
     },
-    doImport () {
+    doImport() {
       this.$refs.importModal.base(0)
     },
-    doImportOldVersion () {
+    doImportOldVersion() {
       this.$refs.importModal.base(1)
     },
-    doImportByUpdate () {
+    doImportByUpdate() {
       this.$refs.importModal.base(2)
     },
-    doExport () {
+    doExport() {
       const parameter = {
-        ...this.queryParam
+        ...this.queryParam,
       }
-      exportCheckStandard(parameter).then(file => {
+      exportCheckStandard(parameter).then((file) => {
         this.BaseTool.UPLOAD.downLoadExportExcel(file)
       })
-    }
-  }
+    },
+  },
 }
 </script>

+ 312 - 0
src/views/check/checkstandard/modules/BatchBaseForm.vue

@@ -0,0 +1,312 @@
+<template>
+  <a-card v-show="visible" :title="modalTitle">
+    <template #extra>
+      <span class="table-page-search-submitButtons" style="float: right">
+        <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+        <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
+      </span>
+    </template>
+    <a-form :form="form">
+      <a-form-item v-show="false">
+        <a-input v-decorator="['sbId']" type="hidden" />
+      </a-form-item>
+      <row-list :col="2">
+        <row-item>
+          <a-form-item label="设备编号" :labelCol="BaseTool.Constant.labelCol" :wrapperCol="BaseTool.Constant.wrapperCol">
+            <a-input disabled style="width: 80%" v-decorator="['sbNo', {rules: [{required: true, message: '请选择设备'}]}]" />
+            <a-button type="primary" style="width: 20%" @click="handleSbSelect">选择</a-button>
+          </a-form-item>
+        </row-item>
+      </row-list>
+    </a-form>
+    <div class="table-operator">
+      <a-button style="margin:8px;" type="primary" @click="handleAdd">
+        <a-icon type="plus" />
+        添加
+      </a-button>
+    </div>
+    <a-table :data-source="data" :key="tableKey" :columns="columns" bordered ref="table" :scroll="{x: 1300 }">
+      <span slot="level" slot-scope="text, record">
+        <a-select style="width:100%" @change="(val)=>changeLevel(val,record)" v-model="record.level" placeholder="请选择">
+          <a-select-option v-for="(label,value) in levelMap" :key="value" :label="label" :value="parseInt(value)">{{ label }}
+          </a-select-option>
+        </a-select>
+      </span>
+      <span slot="checkUserType" slot-scope="text, record">
+        <a-select style="width:100%" disabled v-model="record.checkUserType" placeholder="请选择">
+          <a-select-option v-for="(label,value) in checkUserTypeMap" :key="value" :label="label" :value="parseInt(value)">{{ label }}
+          </a-select-option>
+        </a-select>
+      </span>
+      <span slot="period" slot-scope="text, record">
+        <a-input-group compact>
+          <a-input-number style="width: 50%" :min="1" v-model="record.period" />
+          <a-select style="width: 50%" v-model="record.periodType" placeholder="请选择">
+            <a-select-option v-for="(label,value) in periodTypeMap" :key="value" :label="label" :value="parseInt(value)">{{ label }}
+            </a-select-option>
+          </a-select>
+        </a-input-group>
+      </span>
+      <span slot="standardHours" slot-scope="text, record">
+        <a-input v-model="record.standardHours" suffix="小时" />
+      </span>
+      <span slot="sort" slot-scope="text, record">
+        <a-input-number style="width: 100%" :step="1" v-model="record.sort" />
+      </span>
+      <span slot="lastDate" slot-scope="text, record">
+        <a-date-picker style="width: 100%" :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN" v-model="record.lastDate" />
+      </span>
+      <span slot="nextDate" slot-scope="text, record">
+        <a-date-picker style="width: 100%" :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN" v-model="record.nextDate" />
+      </span>
+      <span slot="requirement" slot-scope="text, record">
+        <a-textarea :rows="2" v-model="record.requirement" />
+      </span>
+      <span slot="remark" slot-scope="text, record">
+        <a-textarea :rows="2" v-model="record.remark" />
+      </span>
+      <span slot="action" slot-scope="_,record,index">
+        <a-space>
+          <a @click="handleCopy(record)">复制</a>
+          <a-popconfirm title="是否要删除该条数据?" @confirm="handleDelOne(record,index)">
+            <a>删除</a>
+          </a-popconfirm>
+        </a-space>
+      </span>
+    </a-table>
+    <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd" />
+  </a-card>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'
+import { batch, getBySbId } from '@/api/check/checkstandard'
+export default {
+  components: {
+    SbInfoSelectModal,
+  },
+  data() {
+    return {
+      visible: false,
+      confirmLoading: false,
+      modalTitle: '批量新增',
+      form: this.$form.createForm(this),
+      data: [{}],
+      tableKey: 0,
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          width: '70px',
+          checked: true,
+          customRender: (text, record, index) => {
+            return index + 1
+          },
+        },
+        {
+          title: '编码',
+          dataIndex: 'no',
+          width: '120px',
+          checked: true,
+        },
+        {
+          title: () => {
+            return <span style="color:red">维护等级</span>
+          },
+          dataIndex: 'level',
+          width: '120px',
+          checked: true,
+          scopedSlots: { customRender: 'level' },
+        },
+        {
+          title: '执行人方式',
+          dataIndex: 'checkUserType',
+          checked: true,
+          width: '120px',
+          scopedSlots: { customRender: 'checkUserType' },
+        },
+        {
+          title: () => {
+            return <span style="color:red">计划周期</span>
+          },
+          dataIndex: 'period',
+          width: '160px',
+          checked: true,
+          scopedSlots: { customRender: 'period' },
+        },
+        {
+          title: '标准工时',
+          dataIndex: 'standardHours',
+          checked: true,
+          width: '120px',
+          scopedSlots: { customRender: 'standardHours' },
+        },
+        {
+          title: () => {
+            return <span style="color:red">排序</span>
+          },
+          dataIndex: 'sort',
+          checked: true,
+          width: '80px',
+          scopedSlots: { customRender: 'sort' },
+        },
+        {
+          title: '上次实际执行日期',
+          dataIndex: 'lastDate',
+          checked: true,
+          scopedSlots: { customRender: 'lastDate' },
+          width: '150px',
+        },
+        {
+          title: '下次预计执行日期',
+          dataIndex: 'nextDate',
+          checked: true,
+          scopedSlots: { customRender: 'nextDate' },
+          width: '150px',
+        },
+        {
+          title: '检查项目',
+          dataIndex: 'requirement',
+          checked: true,
+          scopedSlots: { customRender: 'requirement' },
+          width: '300px',
+        },
+        {
+          title: '检查标准',
+          dataIndex: 'remark',
+          checked: true,
+          scopedSlots: { customRender: 'remark' },
+          width: '300px',
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '160px',
+          checked: true,
+          fixed: 'right',
+          align: 'center',
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      levelMap: {},
+      checkUserTypeMap: {},
+      periodTypeMap: {},
+    }
+  },
+  created() {
+    this.paramTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_STANDARD_PARAM_TYPE)
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_STANDARD_TYPE)
+    this.periodTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_PLAN_PERIOD_TYPE)
+    this.actionTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_PLAN_ACTION_TYPE)
+    this.enableMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
+    this.checkUserTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_USER_TYPE)
+    this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_PLAN_LEVEL)
+  },
+  methods: {
+    base() {
+      this.visible = true
+    },
+    handleCancel() {
+      this.data = []
+      this.visible = false
+      this.confirmLoading = false
+      this.$emit('ok')
+      this.form.resetFields()
+    },
+    handleAdd() {
+      this.data.push({})
+    },
+    handleCopy(record) {
+      this.data.push(this.BaseTool.Object.copy(record))
+    },
+    handleDelOne(record, i) {
+      this.data.splice(i, 1)
+    },
+    changeLevel(value, record) {
+      record.checkUserType = value
+      this.tableKey = new Date().getTime()
+    },
+    handleSbSelectd(keys, rows) {
+      const [key] = keys
+      const [row] = rows
+      const {
+        form: { setFieldsValue },
+      } = this
+      this.sbId = key
+      // 日期处理
+      this.$nextTick(() => {
+        setFieldsValue(
+          Object.assign({
+            sbId: key,
+            sbNo: row.no,
+          })
+        )
+      })
+      getBySbId({ sbId: key }).then((res) => {
+        this.data = res.data.list
+      })
+    },
+    handleSbSelect() {
+      this.$refs.sbInfoSelectModal.base()
+    },
+    save() {
+      const {
+        form: { validateFieldsAndScroll },
+      } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        let isReturn = false
+        this.data = this.data.map((item, i) => {
+          if (!item.level) {
+            this.$message.error(`第${i + 1}行维护等级不能为空!`)
+            isReturn = true
+          }
+          if (!item.period) {
+            this.$message.error(`第${i + 1}行计划周期不能为空!`)
+            isReturn = true
+          }
+          if (!item.periodType) {
+            this.$message.error(`第${i + 1}行周期类型不能为空!`)
+            isReturn = true
+          }
+          if (item.sort === null || item.sort === undefined) {
+            this.$message.error(`第${i + 1}行排序不能为空!`)
+            isReturn = true
+          }
+          if (!item.requirement) {
+            this.$message.error(`第${i + 1}行检查项目不能为空!`)
+            isReturn = true
+          }
+          item.nextDate = item.nextDate
+            ? this.BaseTool.Date.formatter(item.nextDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
+            : null
+          item.lastDate = item.lastDate
+            ? this.BaseTool.Date.formatter(item.lastDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
+            : null
+          return item
+        })
+        if (isReturn) {
+          this.confirmLoading = false
+          return
+        }
+        values.list = this.data
+        batch(values)
+          .then(() => {
+            this.handleCancel(values)
+          })
+          .catch(() => {
+            this.confirmLoading = false
+          })
+      })
+    },
+  },
+}
+</script>
+
+<style>
+</style>