Просмотр исходного кода

Merge remote-tracking branch 'origin/demo_' into demo_

hfxc226 2 лет назад
Родитель
Сommit
a2d5889172

+ 34 - 0
src/api/fill/gather.js

@@ -125,3 +125,37 @@ export function exportFillGather (parameter) {
     responseType: 'blob'
   })
 }
+
+/**
+ * query list func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getQueryUser (parameter) {
+  return axios({
+    url: '/upms/users/query/user/' + parameter,
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * add func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function addFillTasks (parameter) {
+  return axios({
+    url: '/fill/tasks',
+    method: 'POST',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}

+ 56 - 4
src/api/fill/task.js

@@ -34,7 +34,23 @@ export function addFillGatherTask (parameter) {
     data: parameter
   })
 }
-
+/**
+ * add func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function fillGatherTask (parameter) {
+  return axios({
+    url: '/fill/tasks/fill/' + parameter.id,
+    method: 'PUT',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}
 /**
  * update func
  * parameter: { }
@@ -48,8 +64,45 @@ export function updateFillGatherTask (parameter) {
     data: parameter
   })
 }
-
-
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function pauseFillGatherTask (parameter) {
+  return axios({
+    url: '/fill/tasks/pause/' + parameter.id,
+    method: 'PUT',
+    data: parameter
+  })
+}
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function dispatchFillGatherTask (parameter) {
+  return axios({
+    url: '/fill/tasks/dispatch/' + parameter.id,
+    method: 'PUT',
+    data: parameter
+  })
+}
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function overtimeFillGatherTask (parameter) {
+  return axios({
+    url: '/fill/tasks/overtime/' + parameter.id,
+    method: 'PUT',
+    data: parameter
+  })
+}
 /**
  * fetch single func
  * parameter: { }
@@ -110,7 +163,6 @@ export function deleteFillGatherTask (parameter) {
   })
 }
 
-
 /**
  * export file
  * parameter: { }

+ 129 - 0
src/api/fill/update-record.js

@@ -0,0 +1,129 @@
+import { axios } from '@/utils/request'
+import { stringify } from 'qs'
+
+/**
+ * page func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getFillUpdateRecordPage(parameter) {
+  return axios({
+    url: '/fill/updates/page?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * add func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function addFillUpdateRecord(parameter) {
+  return axios({
+    url: '/fill/updates',
+    method: 'POST',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}
+
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function updateFillUpdateRecord(parameter) {
+  return axios({
+    url: '/fill/updates/' + parameter.id,
+    method: 'PUT',
+    data: parameter
+  })
+}
+
+
+/**
+ * fetch single func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function fetchFillUpdateRecord(parameter) {
+  return axios({
+    url: '/fill/updates/' + parameter.id,
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * query list func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function queryFillUpdateRecord(parameter) {
+  return axios({
+    url: '/fill/updates?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * delete batch func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function deleteFillUpdateRecords(parameter) {
+  return axios({
+    url: '/fill/updates',
+    method: 'DELETE',
+    data: parameter
+  })
+}
+
+/**
+ * delete single func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function deleteFillUpdateRecord(parameter) {
+  return axios({
+    url: '/fill/updates/' + parameter.id,
+    method: 'DELETE',
+    data: parameter
+  })
+}
+
+
+/**
+ * export file
+ * parameter: { }
+ * @param parameter :
+  * @returns {*}
+ */
+export function exportFillUpdateRecord(parameter) {
+  return axios({
+    url: '/fill/updates/export?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}

+ 2 - 1
src/router/generator-platform-routers.js

@@ -197,9 +197,10 @@ const constantRouterComponents = {
   'RepairReason': () => import('@/views/repair/repair-reason/RepairReason'),
   // 生产商
   'FirmProducer': () => import('@/views/firm/producer/FirmProducer'),
-  // 日常管理
+  // 巡检管理
   'FillInfo': () => import('@/views/fill/info/FillInfo'),
   'FillGather': () => import('@/views/fill/gather/FillGather'),
+  'FillGatherTask': () => import('@/views/fill/task/FillGatherTask'),
   'SbInspectionFill': () => import('@/views/sb/inspection-fill/SbInspectionFill'),
   'MySbInspectionFill': () => import('@/views/sb/inspection-fill/MySbInspectionFill'),
   'ZGSbInspectionFill': () => import('@/views/sb/inspection-fill/ZGSbInspectionFill'),

+ 14 - 1
src/utils/dict.js

@@ -159,6 +159,7 @@ DictCache.TYPE = {
   SPARE_PART_USED_SOURCE: 'SPARE_PART_USED_SOURCE', // 1 维修 2 保养
   REMOTE_MEASURE: 'REMOTE_MEASURE', // 设备遥测
   REMOTE_DEGREE: 'REMOTE_DEGREE', // 设备电度
+  FILL_GATHER_TASK_STATUS: 'FILL_GATHER_TASK_STATUS', // 巡检任务状态
   /* 审批单 */
   ACTIVITI_FORM_STATUS: 'ACTIVITI_FORM_STATUS', // 申请单状态
 
@@ -986,6 +987,11 @@ DictCache.VALUE = {
     'NORMAL': 1, // 正常
     'STOP': 2 // 停机
 
+  },
+  QUERY_ROLE_TYPE: {
+    'IPQC': 1, // 巡检人
+    'DIRCTOR': 2 // 巡检主管
+
   },
   SYS_DEPT_CODE: {
     DEFAULT: 'DEFAULT',
@@ -1486,7 +1492,14 @@ DictCache.COLOR = {
     3: 'success', // 已完成
     4: 'error'// 已过期
   },
-
+  FILL_GATHER_TASK_STATUS: {
+    0: 'warning', // 待接单
+    1: 'processing', // 巡检中
+    2: 'success', // 巡检完成
+    3: 'error', // 巡检超时
+    4: 'warning', // 巡检延时
+    5: 'warning'// 巡检暂停
+  },
   /**
    * 盘点计划状态
    */

+ 9 - 3
src/views/fill/gather/FillGather.vue

@@ -59,13 +59,13 @@
           <operation-button
             v-if="$auth('fill-gathers-edit')"
             @click="handleConfigEdit(record)"
-          >配置列表</operation-button>
+          >生成任务</operation-button>
         </template>
       </span>
     </s-table>
     <base-form ref="baseModal" @ok="handleOk"/>
     <detail ref="detailModal"/>
-    <fill-gather-info-select-modal ref="fillGatherInfoSelectModal" />
+    <create-task-form ref="createTaskModal" />
   </a-card>
 </template>
 
@@ -73,6 +73,7 @@
 import { STable, Ellipsis } from '@/components'
 import BaseForm from './modules/BaseForm'
 import Detail from './modules/Detail'
+import CreateTaskForm from './modules/CreateTaskForm'
 import FillGatherInfoSelectModal from '@/views/fill/gather-info/modules/FillGatherInfoSelectModal'
 import { getFillGatherPage, deleteFillGathers, fetchFillGather, exportFillGather } from '@/api/fill/gather'
 
@@ -83,6 +84,7 @@ export default {
     Ellipsis,
     BaseForm,
     Detail,
+    CreateTaskForm,
     FillGatherInfoSelectModal
   },
   data () {
@@ -218,7 +220,10 @@ export default {
       })
     },
     handleConfigEdit (record) {
-      this.$refs.fillGatherInfoSelectModal.base({}, { gatherId: record.id })
+      fetchFillGather({ id: record.id }).then(res => {
+        const modal = this.$refs.createTaskModal
+        modal.base(res.data)
+      })
     },
     handleEdit (record) {
       fetchFillGather({ id: record.id }).then(res => {
@@ -227,6 +232,7 @@ export default {
       })
     },
     handleView (record) {
+      console.log(this.loadData())
       fetchFillGather({ id: record.id }).then(res => {
         const modal = this.$refs.detailModal
         modal.base(res.data)

+ 34 - 7
src/views/fill/gather/modules/BaseForm.vue

@@ -97,11 +97,12 @@
               v-decorator="['infoIds']"
             >
               <br />
-              <div v-for="option in options " :key="option.id">
-                <a-checkbox style="display: inline-block;width:500px;" :value="option.id">
-                  <span >{{ option.name }}---{{ option.remark }}</span>
+              <br />
+
+              <div v-for="(option,i) in options " :key="option.id">
+                <a-checkbox class="checkbox" :class="i==(options.length-1) ?'border':''" :value="option.id">
+                  <div >{{ option.name }} —— {{ option.remark }}</div>
                 </a-checkbox>
-                <br />
               </div>
             </a-checkbox-group>
           </a-form-item>
@@ -110,8 +111,8 @@
     </a-form>
     <template slot="footer">
       <a-button v-show="content == 1" :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
-      <a-button v-show="content == 0" :loading="confirmLoading" type="primary" @click="content++">下一步</a-button>
-      <a-button v-show="content == 1" :loading="confirmLoading" type="primary" @click="content--">上一步</a-button>
+      <a-button v-show="content == 0" type="primary" @click="content++">下一步</a-button>
+      <a-button v-show="content == 1" type="primary" @click="content--">上一步</a-button>
     </template>
   </a-modal>
 </template>
@@ -175,6 +176,9 @@ export default {
       this.confirmLoading = true
       validateFieldsAndScroll((errors, values) => {
         if (errors) {
+          Object.values(errors).map(item => {
+            this.$message.error(item.errors[0].message)
+          })
           this.confirmLoading = false
           return
         }
@@ -211,5 +215,28 @@ export default {
 }
 </script>
 <style lang="less" scoped>
-
+  .checkbox{
+    display: flex;
+    align-items: center;
+    width:500px;
+    padding:10px;
+    border: 1px solid #ccc;
+    border-bottom:none;
+    // /deep/.ant-checkbox{
+    //   top: -0.5em;
+    // }
+  div{
+    display: inline-block;
+    width:440px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    &:hover {
+      white-space:normal;
+    }
+  }
+  }
+.border{
+  border-bottom: 1px solid #ccc;
+}
 </style>

+ 224 - 0
src/views/fill/gather/modules/CreateTaskForm.vue

@@ -0,0 +1,224 @@
+<template>
+  <a-modal
+    title="生成任务"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+  >
+    <a-form :form="form">
+      <row-list :col="1" v-show="false">
+        <row-item>
+          <a-form-item>
+            <a-input v-decorator="['gatherId']" type="hidden"/>
+          </a-form-item>
+        </row-item>
+      </row-list>
+      <a-row type="flex">
+        <a-col :sm="20" >
+          <a-form-item
+            label="巡检任务名称"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input v-decorator="['name', {rules: [{required: true, message: '巡检任务名称不能为空'}]}]" />
+          </a-form-item>
+        </a-col>
+
+        <a-col :sm="20" >
+          <a-form-item
+            label="巡检人"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-select v-decorator="['checker', {rules: [{required: true, message: '巡检人不能为空'}]}]">
+              <a-select-option
+                v-for="item in ipqcMap"
+                :key="item.userId"
+                :label="item.realName"
+                :value="item.userId">
+                {{ item.realName }}
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :sm="20" >
+          <a-form-item
+            label="巡检主管"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-select v-decorator="['checkLeader', {rules: [{required: true, message: '巡检主管不能为空'}]}]">
+              <a-select-option
+                v-for="item in directorMap"
+                :key="item.userId"
+                :label="item.realName"
+                :value="item.userId">
+                {{ item.realName }}
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :sm="20" >
+          <a-form-item
+            label="巡检设备"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            {{ sbIds.length }}台
+            <a-button style="width: 30% ;float: right;" type="primary" @click="handleSbSelect">选择</a-button>
+          </a-form-item>
+        </a-col>
+        <a-col :sm="20" >
+          <a-form-item
+            label="巡检内容项"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            {{ infoNum }}个
+            <a-button style="width: 30% ;float: right;" type="primary" @click="handleInfoSelect">查看</a-button>
+          </a-form-item>
+        </a-col>
+        <a-col :sm="20" >
+          <a-form-item
+            label="巡检频次"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input-number
+              :min="0"
+              :formatter="value => `${value}天`"
+              :parser="value => value.replace('天', '')"
+              v-decorator="['period', {rules: [{required: true, message: '巡检频次不能为空'}]}]"/>
+          </a-form-item>
+        </a-col>
+        <a-col :sm="20" >
+          <a-form-item
+            label="要求时间"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input-number
+              :min="0"
+              :formatter="value => `${value}小时`"
+              :parser="value => value.replace('小时', '')"
+              v-decorator="['requireHour', {rules: [{required: true, message: '要求时间不能为空'}]}]"/>
+          </a-form-item>
+        </a-col>
+        <a-col :sm="20" >
+          <a-form-item
+            label="超时预警时间"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input-number
+              :min="0"
+              :formatter="value => `${value}小时`"
+              :parser="value => value.replace('小时', '')"
+              v-decorator="['warningHour', {rules: [{required: true, message: '超时预警时间不能为空'}]}]"/>
+          </a-form-item>
+        </a-col>
+      </a-row>
+    </a-form>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+    </template>
+    <sb-info-select-modal ref="sbInfoSelectModal" type="checkbox" @selected="handleSbSelectd"/>
+    <info-select-modal ref="infoSelectModal"/>
+
+  </a-modal>
+</template>
+
+<script>
+import { getQueryUser, addFillTasks } from '@/api/fill/gather'
+import SbInfoSelectModal from './SbInfoSelectModal'
+import InfoSelectModal from './InfoSelectModal'
+
+export default {
+  name: 'BaseFillGather',
+  data () {
+    return {
+      form: this.$form.createForm(this),
+      visible: false,
+      ipqcMap: [],
+      model: {},
+      sbIds: [],
+      directorMap: [],
+      infoNum: 0,
+      confirmLoading: false
+    }
+  },
+  components: {
+    SbInfoSelectModal,
+    InfoSelectModal
+  },
+  created () {
+    this.getUser()
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      this.model = record
+      this.infoNum = record.fillInfos.length
+      console.log(this.infoNum)
+      const { form: { setFieldsValue } } = this
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign({
+          gatherId: record.id,
+          period: record.period,
+          warningHour: 2
+        }))
+      })
+    },
+    // 获取巡检人与巡检主管信息
+    getUser () {
+      getQueryUser(this.DictCache.VALUE.QUERY_ROLE_TYPE.IPQC).then(res => {
+        this.ipqcMap = res.data
+      })
+      getQueryUser(this.DictCache.VALUE.QUERY_ROLE_TYPE.DIRCTOR).then(res => {
+        this.directorMap = res.data
+      })
+    },
+    handleSbSelect () {
+      this.$refs.sbInfoSelectModal.base({}, {})
+    },
+    handleInfoSelect () {
+      this.$refs.infoSelectModal.base(this.model)
+    },
+    handleSbSelectd (keys, rows) {
+      this.sbIds = keys
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      // this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          Object.values(errors).map(item => {
+            this.$message.error(item.errors[0].message)
+          })
+          this.confirmLoading = false
+        } else if (this.sbIds.length === 0) {
+          console.log(values)
+          this.$message.error('巡检设备不能为空!')
+          return
+        }
+        values.sbIds = this.sbIds
+        console.log(values)
+        addFillTasks(values).then(res => {
+          this.$message.success('创建成功!')
+          this.handleCancel()
+        })
+      })
+    },
+    handleCancel (values) {
+      this.visible = false
+      this.form.resetFields()
+      this.$emit('ok', values)
+    }
+
+  }
+}
+</script>
+<style lang="less" scoped>
+
+</style>

+ 84 - 0
src/views/fill/gather/modules/InfoSelectModal.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-modal
+    title="巡检任务项"
+    :width="1300"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    class="ant-modal2"
+    @cancel="handleCancel"
+  >
+    <a-card :bordered="false">
+      <a-table
+        ref="table"
+        size="default"
+        rowKey="id"
+        bordered
+        :columns="columns"
+        :data-source="loadData"
+        :pagination="false"
+      >
+      </a-table>
+    </a-card>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">返回</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { STable } from '@/components'
+export default {
+  name: 'FillInfoList',
+  components: {
+    STable
+  },
+  data () {
+    return {
+      confirmLoading: false,
+      columns: [
+        {
+          title: '巡检项名称',
+          dataIndex: 'name'
+        },
+        {
+          title: '类型',
+          dataIndex: 'type',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.typeMap, text)
+          }
+        },
+        {
+          title: '备注',
+          dataIndex: 'remark'
+        },
+        {
+          title: '创建人名称',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '创建日期',
+          dataIndex: 'createdTime'
+        }
+      ],
+      // 下拉框map
+      typeMap: {},
+      loadData: [],
+      visible: false
+    }
+  },
+  created () {
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.FILL_INFO_TYPE)
+    console.log(this.typeMap)
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      this.loadData = record.fillInfos
+    },
+    handleCancel () {
+      this.visible = false
+      this.$emit('ok')
+    }
+  }
+}
+</script>

+ 296 - 0
src/views/fill/gather/modules/SbInfoSelectModal.vue

@@ -0,0 +1,296 @@
+<template>
+  <a-modal
+    :title="modalTitle"
+    :width="1300"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    class="ant-modal2"
+    @cancel="handleCancel"
+  >
+    <a-card :bordered="false">
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/编码"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <div class="table-operator" style="margin-bottom: 8px;">
+      </div>
+
+      <s-table
+        ref="table"
+        size="default"
+        rowKey="id"
+        :columns="columns"
+        :data="loadData"
+        :alert="options.alert"
+        :customRow="options.customRow"
+        :rowSelection="options.rowSelection"
+        :scroll="{ x: 1300, y: BaseTool.Constant.scrollY }"
+        showPagination="auto"
+      >
+        <span slot="status" slot-scope="text">
+          <badge :status="DictCache.COLOR.SB_INFO_STATUS[text]" :text="statusMap[text]" />
+        </span>
+      </s-table>
+    </a-card>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
+      <a-button :loading="confirmLoading" type="primary" @click="handleSelect()">选择</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import { getSbInfoPage, getSbInfoTree } from '@/api/sb/info'
+
+export default {
+  name: 'SbInfoSelectModal',
+  components: {
+    STable,
+    Ellipsis
+  },
+  props: {
+    type: {
+      type: String,
+      default: 'radio'
+    },
+    selectedRowKey: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    selectedRow: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    }
+  },
+  data () {
+    return {
+      confirmLoading: false,
+      mdl: {},
+      modalTitle: null,
+      visible: false,
+      // 查询参数
+      queryParam: {
+      },
+      extraQueryParam: {
+      },
+      depreciationTypeMap: {},
+      levelMap: {},
+      statusMap: {},
+      unitMap: {},
+      useTypeMap: {},
+      sourceTypeMap: {},
+      treeData: [],
+      // 表头
+      columns: [
+        {
+          title: '设备名称',
+          checked: true,
+          dataIndex: 'name'
+        },
+        {
+          title: '设备编号',
+          dataIndex: 'no',
+          checked: true
+        },
+        {
+          title: '型号',
+          checked: true,
+          dataIndex: 'model'
+        },
+        {
+          title: '设备类型',
+          dataIndex: 'type',
+          checked: true,
+          width: 200,
+          customRender: (text, record, index) => {
+            return record.typeName
+          }
+        },
+        {
+          title: '设备等级',
+          dataIndex: 'level',
+          checked: true,
+          width: 200,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Object.getField(this.levelMap, text)
+          }
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          checked: true,
+          width: 200,
+          scopedSlots: { customRender: 'status' }
+        },
+        {
+          title: '备注',
+          dataIndex: 'remark',
+          width: 200
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          align: 'center',
+          fixed: 'right',
+          scopedSlots: { width: 200, customRender: 'action' }
+        }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          ...this.extraQueryParam,
+          dataScope: {
+            sortBy: 'asc',
+            sortName: 'no'
+          }
+        }
+        return getSbInfoPage(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: true,
+      isCreated: false
+    }
+  },
+  created () {
+    this.tableOption()
+    this.depreciationTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_DEPRECIATIONTYPE)
+    this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_LEVEL)
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STATUS)
+    this.unitMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_UNIT)
+    this.sourceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBTYPE_SOURCETYPE)
+    this.useTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_UES_TYPE)
+  },
+  methods: {
+    tableOption () {
+      this.setTree()
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            type: this.type,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          },
+          customRow: (record) => {
+            return {
+              on: { // 事件
+                click: (event) => { // 点击行
+                  // 选择对象
+                  this.mySelect([record.id], [record])
+                },
+                dblclick: (event) => {
+                  this.mySelect([record.id], [record])
+                  this.handleSelect()
+                }
+              }
+            }
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    handleOk () {
+      this.setTree()
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = Array.from(new Set([...selectedRowKeys, ...this.selectedRowKeys]))
+      this.selectedRows = Array.from(new Set([...selectedRows, ...this.selectedRows]))
+    },
+    resetSearchForm () {
+      this.queryParam = {
+      }
+      this.$refs.table.refresh(true)
+    },
+    /**
+     * 设置设备类型树
+     */
+    setTree (record = {}) {
+      getSbInfoTree({ id: record.id }).then(res => {
+        this.treeData = res.data
+      })
+    },
+    base (record, queryParam = {}) {
+      this.visible = true
+      this.modalTitle = '选择设备'
+      this.extraQueryParam = queryParam
+      if (this.isCreated) {
+        console.log(this.$refs.table)
+        this.$refs.table.clearSelected()
+        this.options.rowSelection.type = this.type
+        this.handleOk()
+      } else {
+        this.tableOption()
+        this.isCreated = true
+      }
+      // this.mySelect(this.selectedRowKeys, this.selectedRows)
+    },
+    handleCancel () {
+      this.visible = false
+      this.confirmLoading = false
+    },
+    handleSelect () {
+      if (this.selectedRowKeys.length === 0) {
+        this.$message.warn('请至少选择一项信息')
+      } else {
+        this.confirmLoading = true
+        this.$emit('selected', this.selectedRowKeys, this.selectedRows)
+        this.confirmLoading = false
+        this.visible = false
+        this.selectedRowKeys = []
+        this.selectedRows = []
+      }
+    },
+    mySelect (selectedRowKeys, selectedRows) {
+      this.$refs.table.updateSelect([...selectedRowKeys, ...this.selectedRowKeys], [...selectedRows, ...this.selectedRows])
+      this.$refs.table.rowSelection.onChange(selectedRowKeys, selectedRows)
+    }
+  }
+}
+</script>

+ 154 - 70
src/views/fill/task/FillGatherTask.vue

@@ -1,48 +1,52 @@
 <template>
-  <a-card :bordered='false'>
-    <div v-show='visible'>
-      <div class='table-page-search-wrapper' @keyup.enter='handleEnter'>
-        <a-form layout='inline'>
-          <a-row :gutter='48' v-show='advanced'>
-            <a-col :md='6' :sm='24'>
-              <a-form-item label='关键字'>
-                <a-input v-model='queryParam.keyword' placeholder='请输入名称/类型名称' />
+  <a-card :bordered="false">
+    <div v-show="visible">
+      <div class="table-page-search-wrapper" @keyup.enter="handleEnter">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称" />
               </a-form-item>
             </a-col>
-          </a-row>
-          <a-row :gutter='48'>
-            <a-col :md='24 || 24' :sm='24' style='text-align: right'>
-                            <span class='table-page-search-submitButtons'>
-                              <a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
-                              <a-button style='margin-left: 8px' @click='resetSearchForm'>重置</a-button>
-                              <a @click='()=>{ this.advanced = !this.advanced}' style='margin-left: 8px'>
-                                  {{ advanced ? '收起' : '展开' }}
-                                  <a-icon :type="advanced ? 'up' : 'down'" />
-                              </a>
-                            </span>
+            <!-- </a-row>
+          <a-row :gutter="48"> -->
+            <a-col :md="6" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+                <!-- <a @click="()=>{ this.advanced = !this.advanced}" style="margin-left: 8px">
+                  {{ advanced ? '收起' : '展开' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a> -->
+              </span>
             </a-col>
           </a-row>
         </a-form>
       </div>
 
-      <div class='table-operator' style='margin-bottom: 8px;'>
+      <div class="table-operator" style="margin-bottom: 8px;">
         <a-row>
-          <a-col :md='16'>
-            <a-button v-if="$auth('fill-fills-add')" type='primary' icon='plus' @click='handleAdd()'>新增</a-button>
-            <a-button style='margin-left: 8px' v-if="$auth('fill-fills-export')" type='primary' icon='download'
-                      @click='doExport'>导出
+          <a-col :md="16">
+            <a-button v-if="$auth('fill-fills-add')" type="primary" icon="plus" @click="handleAdd()">新增</a-button>
+            <a-button
+              style="margin-left: 8px"
+              v-if="$auth('fill-fills-export')"
+              type="primary"
+              icon="download"
+              @click="doExport">导出
             </a-button>
             <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('fill-fills-del')">
-              <a-menu slot='overlay'>
-                <a-popconfirm title='是否要删除所选数据?' @confirm='batchDelete()'>
-                  <a-menu-item key='1'>
-                    <a-icon type='delete' />
+              <a-menu slot="overlay">
+                <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
+                  <a-menu-item key="1">
+                    <a-icon type="delete" />
                     <a>删除</a></a-menu-item>
                 </a-popconfirm>
               </a-menu>
-              <a-button style='margin-left: 8px'>
+              <a-button style="margin-left: 8px">
                 批量操作
-                <a-icon type='down' />
+                <a-icon type="down" />
               </a-button>
             </a-dropdown>
           </a-col>
@@ -50,64 +54,105 @@
       </div>
 
       <s-table
-        ref='table'
-        size='default'
-        rowKey='id'
-        :columns='columns'
-        :data='loadData'
-        :alert='options.alert'
-        :rowSelection='options.rowSelection'
-        showPagination='auto'
+        ref="table"
+        size="default"
+        rowKey="id"
+        bordered
+        :columns="columns"
+        :data="loadData"
+        :alert="options.alert"
+        :rowSelection="options.rowSelection"
+        showPagination="auto"
+        :scroll="{x: 1500, y: BaseTool.Constant.scrollY}"
       >
-                <span slot='action' slot-scope='record'>
-                  <template>
-                    <a @click='handleView(record)'>查看</a>
-                    <operation-button
-                      v-if="$auth('fill-fills-edit')" @click='handleEdit(record)'
-                    >修改</operation-button>
-                    <operation-button
-                      v-if="$auth('fill-fills-del')"
-                      :type='2'
-                      title='是否要删除该条数据?'
-                      @confirm='batchDelete(record.id)'>删除</operation-button>
-                  </template>
-                </span>
+        <span slot="status" slot-scope="status">
+          <badge :status="DictCache.COLOR.FILL_GATHER_TASK_STATUS[status]" :text="statusMap[status]" />
+        </span>
+        <span slot="action" slot-scope="record">
+          <template>
+            <a @click="handleView(record)">查看</a>
+            <operation-button
+              @click="handleEdit(record)"
+            >填报</operation-button>
+            <operation-button
+              :type="2"
+              title="是否要转派该任务"
+              @confirm="handleDispatch(record)"
+            >转派</operation-button>
+            <operation-button
+              :type="2"
+              title="是否要延时该任务"
+              @confirm="handleOvertime(record)"
+            >延时</operation-button>
+
+            <operation-button
+              v-if="record.status===5"
+              :type="2"
+              title="是否取消暂停要该任务"
+              @confirm="handlePause(record)"
+            >取消暂停</operation-button>
+            <operation-button
+              v-else
+              :type="2"
+              title="是否暂停要该任务"
+              @confirm="handlePause(record)"
+            >暂停</operation-button>
+            <operation-button
+              v-if="$auth('fill-fills-del')"
+              :type="2"
+              title="是否要删除该条数据?"
+              @confirm="batchDelete(record.id)">删除</operation-button>
+          </template>
+        </span>
       </s-table>
     </div>
-    <base-form ref='baseModal' @ok='handleOk' />
-    <detail ref='detailModal' @ok='handleOk' />
+    <base-form ref="baseModal" @ok="handleOk" />
+    <dispatch-form ref="dispatchModal" @ok="handleOk" />
+    <overtime-form ref="overtimeModal" @ok="handleOk" />
+    <pause-form ref="pauseModal" @ok="handleOk" />
+    <detail ref="detailModal" @ok="handleOk" />
   </a-card>
 </template>
 
 <script>
 import { STable, Ellipsis } from '@/components'
 import BaseForm from './modules/BaseForm'
+import DispatchForm from './modules/DispatchForm'
+import OvertimeForm from './modules/OvertimeForm'
+import PauseForm from './modules/PauseForm'
+
 import Detail from './modules/Detail'
 import {
   getFillGatherTaskPage,
   deleteFillGatherTasks,
+  pauseFillGatherTask,
   fetchFillGatherTask,
   exportFillGatherTask
 } from '@/api/fill/task'
 
 export default {
-  name: 'FillGatherTaskList',
+  name: 'FillGatherTask',
   components: {
     STable,
     Ellipsis,
     BaseForm,
+    PauseForm,
+    DispatchForm,
+    OvertimeForm,
     Detail
   },
-  data() {
+  data () {
     return {
       advanced: false,
       visible: true,
       // 查询参数
       queryParam: {},
+      statusMap: {},
       // 表头
       columns: [
         {
           title: '序号',
+          width: 70,
           dataIndex: 'index',
           customRender: (text, record, index) => {
             return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
@@ -115,50 +160,63 @@ export default {
         },
         {
           title: '巡检人',
+          width: 100,
           dataIndex: 'checker'
         },
         {
           title: '巡检主管',
+          width: 100,
           dataIndex: 'checkLeader'
         },
         {
           title: '巡检开始时间',
+          width: 150,
           dataIndex: 'createdTime'
         },
         {
           title: '任务创建人',
+          width: 100,
           dataIndex: 'createdUserName'
         },
         {
           title: '待完成数量',
+          width: 100,
           dataIndex: 'waitNum'
         },
         {
           title: '巡检总数量',
+          width: 100,
           dataIndex: 'totalNum'
         },
         {
-          title: '0 待接单 1 巡检中 2 完成  3 延迟  4 暂停',
-          dataIndex: 'status'
+          title: '任务状态',
+          width: 100,
+          dataIndex: 'status',
+          scopedSlots: { customRender: 'status' }
         },
         {
           title: '要求时间',
+          width: 100,
           dataIndex: 'requireHour'
         },
         {
           title: '超时预警时间',
+          width: 100,
           dataIndex: 'warningHour'
         },
         {
           title: '累计延时时间',
+          width: 100,
           dataIndex: 'lateHistoryHours'
         },
         {
           title: '变更记录',
+          width: 200,
           dataIndex: 'recordJson'
         },
         {
           title: '任务名称',
+          width: 100,
           dataIndex: 'name'
         },
         {
@@ -190,7 +248,8 @@ export default {
 
       options: {
         alert: {
-          show: true, clear: () => {
+          show: true,
+          clear: () => {
             this.selectedRowKeys = []
           }
         },
@@ -202,16 +261,19 @@ export default {
       optionAlertShow: false
     }
   },
-  created() {
+  created () {
     // 下拉框map
     this.tableOption()
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.FILL_GATHER_TASK_STATUS)
+    console.log(this.statusMap)
   },
   methods: {
-    tableOption() {
+    tableOption () {
       if (!this.optionAlertShow) {
         this.options = {
           alert: {
-            show: true, clear: () => {
+            show: true,
+            clear: () => {
               this.selectedRowKeys = []
             }
           },
@@ -235,7 +297,7 @@ export default {
         this.optionAlertShow = false
       }
     },
-    batchDelete(id) {
+    batchDelete (id) {
       let ids = []
       if (this.BaseTool.String.isBlank(id)) {
         const length = this.selectedRows.length
@@ -253,38 +315,60 @@ export default {
         this.$refs.table.clearSelected()
       })
     },
-    handleAdd() {
+    handleDispatch (record) {
+      this.visible = false
+      const modal = this.$refs.dispatchModal
+      modal.base(record)
+    },
+    handleOvertime (record) {
+      this.visible = false
+      const modal = this.$refs.overtimeModal
+      modal.base(record)
+    },
+    handlePause (record) {
+      if (record.status === 5) {
+        this.visible = false
+        const modal = this.$refs.pauseModal
+        modal.base(record)
+        return
+      }
+      pauseFillGatherTask({ pauseType: 1, id: record.id }).then(res => {
+        this.$message.success('暂停成功!')
+        this.handleOk()
+      })
+    },
+    handleAdd () {
       this.visible = false
       const modal = this.$refs.baseModal
       modal.base()
     },
-    handleEdit(record) {
+    handleEdit (record) {
       this.visible = false
       fetchFillGatherTask({ id: record.id }).then(res => {
         const modal = this.$refs.baseModal
         modal.base(res.data)
       })
     },
-    handleView(record) {
+    handleView (record) {
       this.visible = false
       fetchFillGatherTask({ id: record.id }).then(res => {
         const modal = this.$refs.detailModal
         modal.base(res.data)
       })
     },
-    handleOk(values) {
+    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)
     },
-    doExport() {
+    doExport () {
       const parameter = {
         ...this.queryParam
       }
@@ -292,7 +376,7 @@ export default {
         this.BaseTool.Util.downLoadExportExcel(file)
       })
     },
-    handleEnter() {
+    handleEnter () {
       this.$refs.table.refresh(true)
     }
   }

+ 140 - 232
src/views/fill/task/modules/BaseForm.vue

@@ -1,238 +1,146 @@
 <template>
-    <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
-        <a-row :gutter="48" slot="extra">
-            <a-col :md="48" :sm="48">
-              <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" type="default" @click="handleCancel()">返回</a-button>
-              </span>
-            </a-col>
-        </a-row>
-        <a-form :form="form">
-
-            <a-form-item v-show="false">
-                <a-input v-decorator="['id']" 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
-                                            v-decorator="['checker', {rules: [{required: true, message: '巡检人不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="巡检主管"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input
-                                            v-decorator="['checkLeader', {rules: [{required: true, message: '巡检主管不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                                                                                                                                                                                                                                        <row-item>
-
-                            <a-form-item
-                                    label="待完成数量"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['waitNum', {rules: [{required: true, message: '待完成数量不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="巡检总数量"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['totalNum', {rules: [{required: true, message: '巡检总数量不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="0 待接单 1 巡检中 2 完成  3 延迟  4 暂停"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['status', {rules: [{required: true, message: '0 待接单 1 巡检中 2 完成  3 延迟  4 暂停不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="要求时间"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['requireHour', {rules: [{required: true, message: '要求时间不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="超时预警时间"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['warningHour', {rules: [{required: true, message: '超时预警时间不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="累计延时时间"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input-number
-                                            style="width: 100%"
-                                            :min="0"
-                                            :formatter="BaseTool.Amount.formatter"
-                                            :parser="BaseTool.Amount.parser"
-                                            v-decorator="['lateHistoryHours', {rules: [{required: true, message: '累计延时时间不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="变更记录"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                            </a-form-item>
-                        </row-item>
-                                                                                <row-item>
-
-                            <a-form-item
-                                    label="任务名称"
-                                    :labelCol="BaseTool.Constant.labelCol"
-                                    :wrapperCol="BaseTool.Constant.wrapperCol"
-                            >
-                                                                    <a-input
-                                            v-decorator="['name', {rules: [{required: true, message: '任务名称不能为空'}]}]"/>
-                                                            </a-form-item>
-                        </row-item>
-                                                </row-list>
-        </a-form>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </a-card>
+  <a-card :bordered="false" v-show="visible" class="card" title="填报">
+    <a-row :gutter="48" slot="extra">
+      <a-col :md="48" :sm="48">
+        <span style="float: right">
+          <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+          <a-button style="margin-left: 8px" :loading="confirmLoading" type="primary" @click="save()">确认</a-button>
+          <a-button style="margin-left: 8px" type="default" @click="handleCancel()">返回</a-button>
+        </span>
+      </a-col>
+    </a-row>
+    <div class="tables">
+      <div style="text-align:center;padding-bottom:10px;font-size:32px;">时代思康仪表巡检记录表</div>
+      <table>
+        <thead border="1px">
+          <tr>
+            <td rowspan="2" width="100px">序号</td>
+            <td rowspan="2" width="150px">车间</td>
+            <td rowspan="2" width="150px">设备名称</td>
+            <td rowspan="2" width="150px">设备编号</td>
+            <td rowspan="2" width="150px">填报时间</td>
+            <td :colspan="ListForm[0].content.length">项目内容项</td>
+            <td rowspan="2" width="150px">是否填报</td>
+          </tr>
+          <tr>
+            <td v-for="item in ListForm[0].content" :key="item.name">{{ item.name }}</td>
+          </tr>
+        </thead>
+        <tbody>
+          <tr v-for="(item,i) in ListForm" :key="item.id">
+            <td>{{ i+1 }}</td>
+            <td>{{ item.positionName }}</td>
+            <td>{{ item.sbName }}</td>
+            <td>{{ item.sbNo }}</td>
+            <td>{{ item.updateTime }}</td>
+            <td v-for="li in item.content" :key="li.name">
+              <!-- <span v-if="item.status === 1" @dblclick="item.status =2"> {{ li.fillValue }}</span> -->
+              <a-input v-if="li.type === 1 " v-model="li.fillValue" />
+              <a-select v-else-if="li.type === 2" v-model="li.fillValue" style="min-width:100px;">
+                <a-select-option v-for="val in JSON.parse(li.selectValue)" :key="val.value" :value="val.value">
+                  {{ val.value }}
+                </a-select-option>
+              </a-select>
+            </td>
+            <td>
+              <a-icon v-show="item.status === 1" type="check" style="color:#87d068;font-size: 26px;" />
+            </td>
+          </tr>
+        </tbody>
+      </table>
+      <a-pagination style="float:right;margin:10px;" :default-current="1" :total="10" />
+    </div>
+  </a-card>
 </template>
 
 <script>
-    import pick from 'lodash.pick'
-    import {addFillGatherTask, updateFillGatherTask } from '@/api/fill/task'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        export default {
-        name: 'BaseFillGatherTask',
-        data () {
-            return {
-                confirmLoading: false,
-                modalTitle: null,
-                form: this.$form.createForm(this),
-                visible: false,
-            // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        }
-        },
-        props: {},
-        created () {
-            // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-        methods: {
-            base (record) {
-                this.visible = true
-                // 如果是空标识添加
-                if (this.BaseTool.Object.isBlank(record)) {
-                    this.modalTitle = '添加'
-                    return
-                }
-                this.modalTitle = '编辑'
-                const {form: {setFieldsValue}} = this
-                // 日期处理
-                                this.$nextTick(() => {
-                    setFieldsValue(Object.assign(pick(record, [
-                                                                                    'id',
-                                                                                                                'checker',
-                                                                                                                'checkLeader',
-                                                                                                                                                                                                                                                                                                                                                                                                                                        'waitNum',
-                                                                                                                'totalNum',
-                                                                                                                'status',
-                                                                                                                'requireHour',
-                                                                                                                'warningHour',
-                                                                                                                'lateHistoryHours',
-                                                                                                                'recordJson',
-                                                                                                                'name',
-                                                    ])))
-                })
-            },
-            save () {
-                const {form: {validateFieldsAndScroll}} = this
-                this.confirmLoading = true
-                validateFieldsAndScroll((errors, values) => {
-                    if (errors) {
-                        this.confirmLoading = false
-                        return
-                    }
-                    // 日期处理
-                                        if (this.BaseTool.String.isBlank(values.id)) {
-                        addFillGatherTask(values)
-                                .then(() => {
-                                    this.handleCancel(values)
-                                }).catch(() => {
-                            this.confirmLoading = false
-                        })
-                    } else {
-                        updateFillGatherTask(values)
-                                .then(() => {
-                                    this.handleCancel(values)
-                                }).catch(() => {
-                            this.confirmLoading = false
-                        })
-                    }
-                })
-            },
-            handleCancel (values) {
-                this.visible = false
-                this.confirmLoading = false
-                this.form.resetFields()
-                if (this.BaseTool.Object.isNotBlank(values)) {
-                    this.$emit('ok', values)
-                } else {
-                    this.$emit('ok')
-                }
-            }
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
+import { fillGatherTask } from '@/api/fill/task'
+export default {
+  name: 'BaseFillGatherTask',
+  data () {
+    return {
+      confirmLoading: false,
+      visible: false,
+      ListForm: [],
+      id: ''
+      // 下拉框map
     }
+  },
+  props: {},
+  created () {
+    // 下拉框map
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      this.id = record.id
+      this.ListForm = record.details.map(item => {
+        item.content = JSON.parse(item.content)
+        item.content = item.content.map(val => {
+          val.fillValue = val.fillValue ? val.fillValue : ''
+          return val
+        })
+        return item
+      })
+      console.log(this.ListForm)
+    },
+    save () {
+      const detail = this.ListForm.map(item => {
+        return {
+          id: item.id,
+          content: JSON.stringify(item.content)
+        }
+      })
+      const params = {
+        id: this.id,
+        details: detail
+      }
+      fillGatherTask(params).then(res => {
+        console.log(res)
+        this.handleCancel()
+      })
+    },
+    handleConfirm (id) {
+      console.log(id)
+    },
+    handleCancel () {
+      this.visible = false
+      // this.ListForm = []
+      this.$emit('ok')
+    }
+  }
+}
 </script>
+<style lang="less" scoped>
+  // table,table tr th, table tr td { border:1px solid #666; }
+  // table {  min-height: 25px; line-height: 25px; text-align: center; border-collapse: collapse;}
+  // td {
+  //   padding: 5px 10px;
+  // }
+  .tables{
+  margin: 20px 0px;
+  width: 100%;
+  overflow-x:auto;
+  table {
+        min-width:100%;
+        margin: 0 auto;
+        border: 1px solid #D6D6D6;
+        border-collapse: collapse;
+        font-size: 16px;
+        font-weight: 400;
+        table-layout:fixed;
+    }
+    th{
+      color: #FFFFFF;
+      background: #3762FC;
+      min-width:150px;
+    }
+    th,
+    td {
+        border: 1px solid #D6D6D6;
+        text-align: center;
+        padding: 5px 10px;
+        white-space: nowrap;
+    }
+}
+</style>

+ 110 - 0
src/views/fill/task/modules/DispatchForm.vue

@@ -0,0 +1,110 @@
+<template>
+  <a-modal
+    title="转派"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+  >
+    <a-form :form="form">
+      <a-form-item>
+        <a-input v-decorator="['id']" type="hidden"/>
+      </a-form-item>
+      <a-form-item
+        label="巡检人"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-select v-decorator="['anotherChecker', {rules: [{required: true, message: '巡检人不能为空'}]}]">
+          <a-select-option
+            v-for="item in ipqcMap"
+            :key="item.userId"
+            :label="item.realName"
+            :value="item.userId">
+            {{ item.realName }}
+          </a-select-option>
+        </a-select>
+      </a-form-item>
+      <a-form-item
+        label="要求时间"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-input-number
+          :min="0"
+          :formatter="value => `${value}小时`"
+          :parser="value => value.replace('小时', '')"
+          v-decorator="['requireHour', {rules: [{required: true, message: '要求时间不能为空'}]}]"/>
+      </a-form-item>
+    </a-form>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">提交</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { getQueryUser } from '@/api/fill/gather'
+
+import { dispatchFillGatherTask } from '@/api/fill/task'
+import RowList from '@/components/custom/RowList.vue'
+
+export default {
+  components: { RowList },
+  name: 'BaseFillGather',
+  data () {
+    return {
+      confirmLoading: false,
+      form: this.$form.createForm(this),
+      visible: false,
+      // 下拉框map
+      ipqcMap: {}
+    }
+  },
+  created () {
+    this.getUser()
+  },
+  methods: {
+    base (record) {
+      console.log(record)
+      this.visible = true
+      const { form: { setFieldsValue } } = this
+      // 日期处理
+
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign(pick(record, [
+          'id'
+        ])))
+      })
+    },
+    getUser () {
+      getQueryUser(this.DictCache.VALUE.QUERY_ROLE_TYPE.IPQC).then(res => {
+        this.ipqcMap = res.data
+      })
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        console.log(values)
+        dispatchFillGatherTask(values).then(res => {
+          this.handleCancel()
+        })
+        // 日期处理
+      })
+    },
+    handleCancel () {
+      this.visible = false
+      this.$emit('ok')
+    }
+
+  }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 311 - 312
src/views/fill/task/modules/FillGatherTaskSelectModal.vue

@@ -1,328 +1,327 @@
 <template>
-    <a-modal
-            :title="modalTitle"
-            :width="1000"
-            :visible="visible"
-            :confirmLoading="confirmLoading"
-            class="ant-modal2"
-            @cancel="handleCancel"
-    >
-        <a-card :bordered="false">
-            <div class="table-page-search-wrapper">
-                <a-form layout="inline">
-                    <a-row :gutter="48">
-                        <a-col :md="6" :sm="24">
-                            <a-form-item label="关键字">
-                                <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称"/>
-                            </a-form-item>
-                        </a-col>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <a-col :md="6 || 24" :sm="24">
-                            <span class="table-page-search-submitButtons">
-                                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
-                                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
-                                <a @click="()=>{ this.advanced = !this.advanced}" style="margin-left: 8px">
-                                  {{ advanced ? '收起' : '展开' }}
-                                  <a-icon :type="advanced ? 'up' : 'down'"/>
-                                </a>
-                            </span>
-                        </a-col>
-                    </a-row>
-                </a-form>
-            </div>
+  <a-modal
+    :title="modalTitle"
+    :width="1000"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    class="ant-modal2"
+    @cancel="handleCancel"
+  >
+    <a-card :bordered="false">
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6 || 24" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+                <a @click="()=>{ this.advanced = !this.advanced}" style="margin-left: 8px">
+                  {{ advanced ? '收起' : '展开' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
 
-            <div class="table-operator">
-            </div>
+      <div class="table-operator">
+      </div>
 
-            <s-table
-                    ref="table"
-                    size="default"
-                    rowKey="id"
-                    :columns="columns"
-                    :data="loadData"
-                    :alert="options.alert"
-                    :customRow="options.customRow"
-                    :rowSelection="options.rowSelection"
-                    showPagination="auto"
-            >
-                <span slot="action" slot-scope="record1">
-                  <template>
-                    <a @click="handleView(record1)">查看</a>
-                  </template>
-                </span>
-            </s-table>
-            <detail ref="detailModal"/>
-        </a-card>
-        <template slot="footer">
-            <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
-            <a-button :loading="confirmLoading" type="primary" @click="handleSelect()">确定</a-button>
-        </template>
-    </a-modal>
+      <s-table
+        ref="table"
+        size="default"
+        rowKey="id"
+        :columns="columns"
+        :data="loadData"
+        :alert="options.alert"
+        :customRow="options.customRow"
+        :rowSelection="options.rowSelection"
+        showPagination="auto"
+      >
+        <span slot="action" slot-scope="record1">
+          <template>
+            <a @click="handleView(record1)">查看</a>
+          </template>
+        </span>
+      </s-table>
+      <detail ref="detailModal"/>
+    </a-card>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
+      <a-button :loading="confirmLoading" type="primary" @click="handleSelect()">确定</a-button>
+    </template>
+  </a-modal>
 </template>
 
 <script>
-    import { STable, Ellipsis } from '@/components'
-    import Detail from './Detail'
-    import { getFillGatherTaskPage, fetchFillGatherTask } from '@/api/fill/task'
+import { STable, Ellipsis } from '@/components'
+import Detail from './Detail'
+import { getFillGatherTaskPage, fetchFillGatherTask } from '@/api/fill/task'
 
-    export default {
-        name: 'FillGatherTaskSelectModal',
-        components: {
-            STable,
-            Ellipsis,
-            Detail
+export default {
+  name: 'FillGatherTaskSelectModal',
+  components: {
+    STable,
+    Ellipsis,
+    Detail
+  },
+  props: {
+    type: {
+      type: String,
+      default: 'radio'
+    },
+    selectedRowKey: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    selectedRow: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    }
+  },
+  data () {
+    return {
+      advanced: false,
+      confirmLoading: false,
+      mdl: {},
+      modalTitle: null,
+      visible: false,
+      record: null,
+      // 查询参数
+      queryParam: {
+      },
+      extraQueryParam: {
+      },
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
         },
-        props: {
-            type: {
-                type: String,
-                default: 'radio'
-            },
-            selectedRowKey: {
-                type: Array,
-                default: () => {
-                    return []
-                }
-            },
-            selectedRow: {
-                type: Array,
-                default: () => {
-                    return []
-                }
-            }
+        {
+          title: '巡检人',
+          dataIndex: 'checker'
         },
-        data () {
-            return {
-                advanced: false,
-                confirmLoading: false,
-                mdl: {},
-                modalTitle: null,
-                visible: false,
-                record: null,
-                // 查询参数
-                queryParam: {
-                },
-                extraQueryParam: {
-                },
-                // 表头
-                columns: [
-                    {
-                        title: '序号',
-                        dataIndex: 'index',
-                        customRender: (text, record, index) => {
-                            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
-                        }
-                    },
-                                                                                                                                                {
-                                title: '巡检人',
-                                dataIndex: 'checker'
-                            },
-                                                                                                                                                        {
-                                title: '巡检主管',
-                                dataIndex: 'checkLeader'
-                            },
-                                                                                                                                                        {
-                                title: '巡检开始时间',
-                                dataIndex: 'createdTime'
-                            },
-                                                                                                                                                                                                                                                {
-                                title: '任务创建人',
-                                dataIndex: 'createdUserName'
-                            },
-                                                                                                                                                                                                                                                    {
-                                    title: '待完成数量',
-                                    dataIndex: 'waitNum',
-                                    customRender: (text, record, index) => {
-                                        return this.BaseTool.Amount.formatter(text)
-                                    }                                ,
-                                },
-                                                                                                                                                            {
-                                    title: '巡检总数量',
-                                    dataIndex: 'totalNum',
-                                    customRender: (text, record, index) => {
-                                        return this.BaseTool.Amount.formatter(text)
-                                    }                                ,
-                                },
-                                                                                                                                                            {
-                                    title: '0 待接单 1 巡检中 2 完成  3 延迟  4 暂停',
-                                    dataIndex: 'status',
-                                    customRender: (text, record, index) => {
-                                        return this.BaseTool.Amount.formatter(text)
-                                    }                                ,
-                                },
-                                                                                                                                                            {
-                                    title: '要求时间',
-                                    dataIndex: 'requireHour',
-                                    customRender: (text, record, index) => {
-                                        return this.BaseTool.Amount.formatter(text)
-                                    }                                ,
-                                },
-                                                                                                                                                            {
-                                    title: '超时预警时间',
-                                    dataIndex: 'warningHour',
-                                    customRender: (text, record, index) => {
-                                        return this.BaseTool.Amount.formatter(text)
-                                    }                                ,
-                                },
-                                                                                                                                                            {
-                                    title: '累计延时时间',
-                                    dataIndex: 'lateHistoryHours',
-                                    customRender: (text, record, index) => {
-                                        return this.BaseTool.Amount.formatter(text)
-                                    }                                ,
-                                },
-                                                                                                                                                        {
-                                title: '变更记录',
-                                dataIndex: 'recordJson'
-                            },
-                                                                                                                                                        {
-                                title: '任务名称',
-                                dataIndex: 'name'
-                            },
-                                                                                            {
-                        title: '操作',
-                        key: 'action',
-                        width: '200px',
-                        align: 'center',
-                        scopedSlots: { customRender: 'action' }
-                    }
-                ],
-                // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            // 加载数据方法 必须为 Promise 对象
-                loadData: parameter => {
-                    parameter = {
-                        ...parameter,
-                        ...this.queryParam,
-                        ...this.extraQueryParam,
-                        dataScope: {
-                            sortBy: 'desc',
-                            sortName: 'update_time'
-                        }
-                    }
-                    return getFillGatherTaskPage(Object.assign(parameter, this.queryParam))
-                            .then(res => {
-                                return res.data
-                            })
-                },
-                selectedRowKeys: [],
-                selectedRows: [],
+        {
+          title: '巡检主管',
+          dataIndex: 'checkLeader'
+        },
+        {
+          title: '巡检开始时间',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '任务创建人',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '待完成数量',
+          dataIndex: 'waitNum',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '巡检总数量',
+          dataIndex: 'totalNum',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '0 待接单 1 巡检中 2 完成  3 延迟  4 暂停',
+          dataIndex: 'status',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '要求时间',
+          dataIndex: 'requireHour',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '超时预警时间',
+          dataIndex: 'warningHour',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '累计延时时间',
+          dataIndex: 'lateHistoryHours',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '变更记录',
+          dataIndex: 'recordJson'
+        },
+        {
+          title: '任务名称',
+          dataIndex: 'name'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 下拉框map
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          ...this.extraQueryParam,
+          dataScope: {
+            sortBy: 'desc',
+            sortName: 'update_time'
+          }
+        }
+        return getFillGatherTaskPage(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
 
-                options: {
-                    alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
-                    rowSelection: {
-                        selectedRowKeys: this.selectedRowKeys,
-                        onChange: this.onSelectChange
-                    }
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false,
+      isCreated: false
+    }
+  },
+  created () {
+    // 下拉框map
+  },
+  methods: {
+    tableOption () {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            type: this.type,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          },
+          customRow: (record) => {
+            return {
+              on: { // 事件
+                click: (event) => { // 点击行
+                  // 选择对象
+                  this.mySelect([record.id], [record])
                 },
-                optionAlertShow: false,
-                isCreated: false
-            }
-        },
-        created () {
-            // 下拉框map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
-        methods: {
-            tableOption () {
-                if (!this.optionAlertShow) {
-                    this.options = {
-                        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
-                        rowSelection: {
-                            selectedRowKeys: this.selectedRowKeys,
-                            onChange: this.onSelectChange,
-                            type: this.type,
-                            getCheckboxProps: record => ({
-                                props: {
-                                    disabled: false,
-                                    name: record.id
-                                }
-                            })
-                        },
-                        customRow: (record) => {
-                            return {
-                                on: { // 事件
-                                    click: (event) => { // 点击行
-                                        // 选择对象
-                                        this.mySelect([record.id], [record])
-                                    },
-                                    dblclick: (event) => {
-                                        this.mySelect([record.id], [record])
-                                        this.handleSelect()
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    this.optionAlertShow = true
-                } else {
-                    this.options = {
-                        alert: false,
-                        rowSelection: null
-                    }
-                    this.optionAlertShow = false
-                }
-            },
-            handleView (record) {
-                fetchFillGatherTask({ id: record.id }).then(res => {
-                    const modal = this.$refs.detailModal
-                    modal.base(res.data)
-                })
-            },
-            handleOk () {
-                this.$refs.table.refresh()
-            },
-            onSelectChange (selectedRowKeys, selectedRows) {
-                this.selectedRowKeys = selectedRowKeys
-                this.selectedRows = selectedRows
-            },
-            resetSearchForm () {
-                this.queryParam = {
-                }
-                this.$refs.table.refresh(true)
-            },
-            base (record, queryParam = {}) {
-                this.visible = true
-                this.modalTitle = '选择信息'
-                this.extraQueryParam = queryParam
-                this.record = record
-                if (this.isCreated) {
-                    this.$refs.table.clearSelected()
-                    this.options.rowSelection.type = this.type
-                    this.handleOk()
-                } else {
-                    this.tableOption()
-                    this.isCreated = true
-                }
-            },
-            handleCancel () {
-                this.visible = false
-                this.confirmLoading = false
-            },
-            handleSelect () {
-                if (this.selectedRowKeys.length === 0) {
-                    this.$message.warn('请至少选择一项信息')
-                } else {
-                    this.confirmLoading = true
-                    this.$emit('selected', this.record, this.selectedRowKeys, this.selectedRows)
-                    this.confirmLoading = false
-                    this.visible = false
+                dblclick: (event) => {
+                  this.mySelect([record.id], [record])
+                  this.handleSelect()
                 }
-            },
-            mySelect (selectedRowKeys, selectedRows) {
-                if (this.type === 'radio') {
-                    this.$refs.table.updateSelect(selectedRowKeys, selectedRows)
-                            this.$refs.table.rowSelection.onChange(selectedRowKeys, selectedRows)
-                } else {
-                    let mySelectedRowKeys
-                    let mySelectedRows = this.selectedRows.filter(item => item.id !== selectedRowKeys[0])
-                    if (this.selectedRowKeys.includes(selectedRowKeys[0])) {
-                        mySelectedRowKeys = this.selectedRowKeys.filter(item => item !== selectedRowKeys[0])
-                    } else {
-                        mySelectedRowKeys = [...selectedRowKeys, ...this.selectedRowKeys]
-                        mySelectedRows = [...mySelectedRows, ...selectedRows]
-                    }
-                    this.$refs.table.updateSelect(mySelectedRowKeys, mySelectedRows)
-                            this.$refs.table.rowSelection.onChange(mySelectedRowKeys, mySelectedRows)
-                }
-
+              }
             }
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    handleView (record) {
+      fetchFillGatherTask({ id: record.id }).then(res => {
+        const modal = this.$refs.detailModal
+        modal.base(res.data)
+      })
+    },
+    handleOk () {
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm () {
+      this.queryParam = {
+      }
+      this.$refs.table.refresh(true)
+    },
+    base (record, queryParam = {}) {
+      this.visible = true
+      this.modalTitle = '选择信息'
+      this.extraQueryParam = queryParam
+      this.record = record
+      if (this.isCreated) {
+        this.$refs.table.clearSelected()
+        this.options.rowSelection.type = this.type
+        this.handleOk()
+      } else {
+        this.tableOption()
+        this.isCreated = true
+      }
+    },
+    handleCancel () {
+      this.visible = false
+      this.confirmLoading = false
+    },
+    handleSelect () {
+      if (this.selectedRowKeys.length === 0) {
+        this.$message.warn('请至少选择一项信息')
+      } else {
+        this.confirmLoading = true
+        this.$emit('selected', this.record, this.selectedRowKeys, this.selectedRows)
+        this.confirmLoading = false
+        this.visible = false
+      }
+    },
+    mySelect (selectedRowKeys, selectedRows) {
+      if (this.type === 'radio') {
+        this.$refs.table.updateSelect(selectedRowKeys, selectedRows)
+        this.$refs.table.rowSelection.onChange(selectedRowKeys, selectedRows)
+      } else {
+        let mySelectedRowKeys
+        let mySelectedRows = this.selectedRows.filter(item => item.id !== selectedRowKeys[0])
+        if (this.selectedRowKeys.includes(selectedRowKeys[0])) {
+          mySelectedRowKeys = this.selectedRowKeys.filter(item => item !== selectedRowKeys[0])
+        } else {
+          mySelectedRowKeys = [...selectedRowKeys, ...this.selectedRowKeys]
+          mySelectedRows = [...mySelectedRows, ...selectedRows]
         }
+        this.$refs.table.updateSelect(mySelectedRowKeys, mySelectedRows)
+        this.$refs.table.rowSelection.onChange(mySelectedRowKeys, mySelectedRows)
+      }
     }
+  }
+}
 </script>

+ 85 - 0
src/views/fill/task/modules/OvertimeForm.vue

@@ -0,0 +1,85 @@
+<template>
+  <a-modal
+    title="转派"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+  >
+    <a-form :form="form">
+      <a-form-item>
+        <a-input v-decorator="['id']" type="hidden"/>
+      </a-form-item>
+      <a-form-item
+        label="延时时间"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-input-number
+          :min="0"
+          :formatter="value => `${value}小时`"
+          :parser="value => value.replace('小时', '')"
+          v-decorator="['extrahours', {rules: [{required: true, message: '要求时间不能为空'}]}]"/>
+      </a-form-item>
+    </a-form>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">提交</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+
+import { overtimeFillGatherTask } from '@/api/fill/task'
+
+export default {
+  name: 'BaseFillGather',
+  data () {
+    return {
+      confirmLoading: false,
+      form: this.$form.createForm(this),
+      visible: false
+      // 下拉框map
+    }
+  },
+  created () {
+  },
+  methods: {
+    base (record) {
+      console.log(record)
+      this.visible = true
+      const { form: { setFieldsValue } } = this
+      // 日期处理
+
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign(pick(record, [
+          'id'
+        ])))
+      })
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        console.log(values)
+        overtimeFillGatherTask(values).then(res => {
+          this.handleCancel()
+        })
+        // 日期处理
+      })
+    },
+    handleCancel () {
+      this.visible = false
+      this.$emit('ok')
+    }
+
+  }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 96 - 0
src/views/fill/task/modules/PauseForm.vue

@@ -0,0 +1,96 @@
+<template>
+  <a-modal
+    title="转派"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+  >
+    <a-form :form="form">
+      <a-form-item>
+        <a-input v-decorator="['id']" type="hidden"/>
+      </a-form-item>
+      <a-form-item
+        label="要求时间"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-input-number
+          :min="0"
+          :formatter="value => `${value}小时`"
+          :parser="value => value.replace('小时', '')"
+          v-decorator="['requireHour', {rules: [{required: true, message: '要求时间不能为空'}]}]"/>
+      </a-form-item>
+    </a-form>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">提交</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { getQueryUser } from '@/api/fill/gather'
+
+import { pauseFillGatherTask } from '@/api/fill/task'
+import RowList from '@/components/custom/RowList.vue'
+
+export default {
+  components: { RowList },
+  name: 'BaseFillGather',
+  data () {
+    return {
+      confirmLoading: false,
+      form: this.$form.createForm(this),
+      visible: false,
+      // 下拉框map
+      ipqcMap: {}
+    }
+  },
+  created () {
+    this.getUser()
+  },
+  methods: {
+    base (record) {
+      console.log(record)
+      this.visible = true
+      const { form: { setFieldsValue } } = this
+      // 日期处理
+
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign(pick(record, [
+          'id'
+        ])))
+      })
+    },
+    getUser () {
+      getQueryUser(this.DictCache.VALUE.QUERY_ROLE_TYPE.IPQC).then(res => {
+        this.ipqcMap = res.data
+      })
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        values.pauseType = 2
+        console.log(values)
+        pauseFillGatherTask(values).then(res => {
+          this.handleCancel()
+        })
+        // 日期处理
+      })
+    },
+    handleCancel () {
+      this.visible = false
+      this.$emit('ok')
+    }
+
+  }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 272 - 0
src/views/fill/update-record/FillUpdateRecord.vue

@@ -0,0 +1,272 @@
+<template>
+  <a-card :bordered='false'>
+    <div v-show='visible'>
+      <div class='table-page-search-wrapper' @keyup.enter='handleEnter'>
+        <a-form layout='inline'>
+          <a-row :gutter='48' v-show='advanced'>
+            <a-col :md='6' :sm='24'>
+              <a-form-item label='关键字'>
+                <a-input v-model='queryParam.keyword' placeholder='请输入名称/类型名称' />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter='48'>
+            <a-col :md='24 || 24' :sm='24' style='text-align: right'>
+                            <span class='table-page-search-submitButtons'>
+                              <a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
+                              <a-button style='margin-left: 8px' @click='resetSearchForm'>重置</a-button>
+                              <a @click='()=>{ this.advanced = !this.advanced}' style='margin-left: 8px'>
+                                  {{ advanced ? '收起' : '展开' }}
+                                  <a-icon :type="advanced ? 'up' : 'down'" />
+                              </a>
+                            </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <div class='table-operator' style='margin-bottom: 8px;'>
+        <a-row>
+          <a-col :md='16'>
+            <a-button v-if="$auth('fill-fills-add')" type='primary' icon='plus' @click='handleAdd()'>新增</a-button>
+            <a-button style='margin-left: 8px' v-if="$auth('fill-fills-export')" type='primary' icon='download'
+                      @click='doExport'>导出
+            </a-button>
+            <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('fill-fills-del')">
+              <a-menu slot='overlay'>
+                <a-popconfirm title='是否要删除所选数据?' @confirm='batchDelete()'>
+                  <a-menu-item key='1'>
+                    <a-icon type='delete' />
+                    <a>删除</a></a-menu-item>
+                </a-popconfirm>
+              </a-menu>
+              <a-button style='margin-left: 8px'>
+                批量操作
+                <a-icon type='down' />
+              </a-button>
+            </a-dropdown>
+          </a-col>
+        </a-row>
+      </div>
+
+      <s-table
+        ref='table'
+        size='default'
+        rowKey='id'
+        :columns='columns'
+        :data='loadData'
+        :alert='options.alert'
+        :rowSelection='options.rowSelection'
+        showPagination='auto'
+      >
+                <span slot='action' slot-scope='record'>
+                  <template>
+                    <a @click='handleView(record)'>查看</a>
+                    <operation-button
+                      v-if="$auth('fill-fills-edit')" @click='handleEdit(record)'
+                    >修改</operation-button>
+                    <operation-button
+                      v-if="$auth('fill-fills-del')"
+                      :type='2'
+                      title='是否要删除该条数据?'
+                      @confirm='batchDelete(record.id)'>删除</operation-button>
+                  </template>
+                </span>
+      </s-table>
+    </div>
+    <base-form ref='baseModal' @ok='handleOk' />
+    <detail ref='detailModal' @ok='handleOk' />
+  </a-card>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import BaseForm from './modules/BaseForm'
+import Detail from './modules/Detail'
+import {
+  getFillUpdateRecordPage,
+  deleteFillUpdateRecords,
+  fetchFillUpdateRecord,
+  exportFillUpdateRecord
+} from '@/api/fill/update-record'
+
+export default {
+  name: 'FillUpdateRecordList',
+  components: {
+    STable,
+    Ellipsis,
+    BaseForm,
+    Detail
+  },
+  data() {
+    return {
+      advanced: false,
+      visible: true,
+      // 查询参数
+      queryParam: {},
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
+        },
+        {
+          title: '巡检人',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '记录时间',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '巡检任务ID',
+          dataIndex: 'taskId'
+        },
+        {
+          title: '备注',
+          dataIndex: 'remark'
+        },
+        {
+          title: '延迟小时',
+          dataIndex: 'lateHour'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 下拉框map
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          dataScope: {
+            sortBy: 'desc',
+            sortName: 'update_time'
+          }
+        }
+        return getFillUpdateRecordPage(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: {
+          show: true, clear: () => {
+            this.selectedRowKeys = []
+          }
+        },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false
+    }
+  },
+  created() {
+    // 下拉框map
+    this.tableOption()
+  },
+  methods: {
+    tableOption() {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: {
+            show: true, clear: () => {
+              this.selectedRowKeys = []
+            }
+          },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    batchDelete(id) {
+      let ids = []
+      if (this.BaseTool.String.isBlank(id)) {
+        const length = this.selectedRows.length
+        if (length === 0) {
+          this.$message.info('请选择要删除的记录')
+          return
+        }
+        ids = this.selectedRows.map(item => item.id)
+      } else {
+        ids = [id]
+      }
+      deleteFillUpdateRecords(ids).then(res => {
+        this.$message.info('删除成功')
+        this.handleOk()
+        this.$refs.table.clearSelected()
+      })
+    },
+    handleAdd() {
+      this.visible = false
+      const modal = this.$refs.baseModal
+      modal.base()
+    },
+    handleEdit(record) {
+      this.visible = false
+      fetchFillUpdateRecord({ id: record.id }).then(res => {
+        const modal = this.$refs.baseModal
+        modal.base(res.data)
+      })
+    },
+    handleView(record) {
+      this.visible = false
+      fetchFillUpdateRecord({ id: record.id }).then(res => {
+        const modal = this.$refs.detailModal
+        modal.base(res.data)
+      })
+    },
+    handleOk(values) {
+      this.visible = true
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm() {
+      this.queryParam = {}
+      this.$refs.table.refresh(true)
+    },
+    doExport() {
+      const parameter = {
+        ...this.queryParam
+      }
+      exportFillUpdateRecord(parameter).then(file => {
+        this.BaseTool.Util.downLoadExportExcel(file)
+      })
+    },
+    handleEnter() {
+      this.$refs.table.refresh(true)
+    }
+  }
+}
+</script>

+ 136 - 0
src/views/fill/update-record/modules/BaseForm.vue

@@ -0,0 +1,136 @@
+<template>
+    <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
+        <a-row :gutter="48" slot="extra">
+            <a-col :md="48" :sm="48">
+              <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" type="default" @click="handleCancel()">返回</a-button>
+              </span>
+            </a-col>
+        </a-row>
+        <a-form :form="form">
+
+            <a-form-item v-show="false">
+                <a-input v-decorator="['id']" type="hidden"/>
+                                                                                                                                                                                                                                                                                                                                                            </a-form-item>
+
+            <row-list :col="2">
+                                                                                                                                                                                                                                                                                                                        <row-item>
+
+                            <a-form-item
+                                    label="巡检任务ID"
+                                    :labelCol="BaseTool.Constant.labelCol"
+                                    :wrapperCol="BaseTool.Constant.wrapperCol"
+                            >
+                                                                    <a-input
+                                            v-decorator="['taskId', {rules: [{required: true, message: '巡检任务ID不能为空'}]}]"/>
+                                                            </a-form-item>
+                        </row-item>
+                                                                                <row-item>
+
+                            <a-form-item
+                                    label="备注"
+                                    :labelCol="BaseTool.Constant.labelCol"
+                                    :wrapperCol="BaseTool.Constant.wrapperCol"
+                            >
+                                                                    <a-input
+                                            v-decorator="['remark', {rules: [{required: true, message: '备注不能为空'}]}]"/>
+                                                            </a-form-item>
+                        </row-item>
+                                                                                <row-item>
+
+                            <a-form-item
+                                    label="延迟小时"
+                                    :labelCol="BaseTool.Constant.labelCol"
+                                    :wrapperCol="BaseTool.Constant.wrapperCol"
+                            >
+                                                                    <a-input-number
+                                            style="width: 100%"
+                                            :min="0"
+                                            :formatter="BaseTool.Amount.formatter"
+                                            :parser="BaseTool.Amount.parser"
+                                            v-decorator="['lateHour', {rules: [{required: true, message: '延迟小时不能为空'}]}]"/>
+                                                            </a-form-item>
+                        </row-item>
+                                                </row-list>
+        </a-form>
+                                                                                                                                                                                                                                                                                                                                                                                                                        </a-card>
+</template>
+
+<script>
+    import pick from 'lodash.pick'
+    import {addFillUpdateRecord, updateFillUpdateRecord } from '@/api/fill/update-record'
+                                                                                                                                                                                                                                                                                                                                                                                                                        export default {
+        name: 'BaseFillUpdateRecord',
+        data () {
+            return {
+                confirmLoading: false,
+                modalTitle: null,
+                form: this.$form.createForm(this),
+                visible: false,
+            // 下拉框map
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        }
+        },
+        props: {},
+        created () {
+            // 下拉框map
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+        methods: {
+            base (record) {
+                this.visible = true
+                // 如果是空标识添加
+                if (this.BaseTool.Object.isBlank(record)) {
+                    this.modalTitle = '添加'
+                    return
+                }
+                this.modalTitle = '编辑'
+                const {form: {setFieldsValue}} = this
+                // 日期处理
+                                this.$nextTick(() => {
+                    setFieldsValue(Object.assign(pick(record, [
+                                                                                    'id',
+                                                                                                                                                                                                                                                                                                                                                                                                                                        'taskId',
+                                                                                                                'remark',
+                                                                                                                'lateHour',
+                                                    ])))
+                })
+            },
+            save () {
+                const {form: {validateFieldsAndScroll}} = this
+                this.confirmLoading = true
+                validateFieldsAndScroll((errors, values) => {
+                    if (errors) {
+                        this.confirmLoading = false
+                        return
+                    }
+                    // 日期处理
+                                        if (this.BaseTool.String.isBlank(values.id)) {
+                        addFillUpdateRecord(values)
+                                .then(() => {
+                                    this.handleCancel(values)
+                                }).catch(() => {
+                            this.confirmLoading = false
+                        })
+                    } else {
+                        updateFillUpdateRecord(values)
+                                .then(() => {
+                                    this.handleCancel(values)
+                                }).catch(() => {
+                            this.confirmLoading = false
+                        })
+                    }
+                })
+            },
+            handleCancel (values) {
+                this.visible = false
+                this.confirmLoading = false
+                this.form.resetFields()
+                if (this.BaseTool.Object.isNotBlank(values)) {
+                    this.$emit('ok', values)
+                } else {
+                    this.$emit('ok')
+                }
+            }
+                                                                                                                                                                                                                                                                                                            }
+    }
+</script>

+ 67 - 0
src/views/fill/update-record/modules/Detail.vue

@@ -0,0 +1,67 @@
+<template>
+    <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
+        <a-row :gutter="48" slot="extra">
+            <a-col :md="48" :sm="48">
+              <span class="table-page-search-submitButtons" style="float: right">
+                <a-button style="margin-left: 8px" type="default" @click="handleCancel()">返回</a-button>
+              </span>
+            </a-col>
+        </a-row>
+        <detail-list title="" :col="2">
+                                                                                                    <detail-list-item term="巡检人ID">{{ model.createdUserId }}</detail-list-item>
+                                                                                                                                                                    <detail-list-item term="主管ID">{{ model.updateUserId }}</detail-list-item>
+                                                                                                            <detail-list-item term="更新人">{{ model.updateUserName }}</detail-list-item>
+                                                                                                            <detail-list-item term="更新时间">{{ model.updateTime }}</detail-list-item>
+                                                                                                            <detail-list-item term="巡检任务ID">{{ model.taskId }}</detail-list-item>
+                                                                                                            <detail-list-item term="备注">{{ model.remark }}</detail-list-item>
+                                                                                                            <detail-list-item term="延迟小时">{{ model.lateHour }}</detail-list-item>
+                                                        </detail-list>
+    </a-card>
+</template>
+
+<script>
+    import DetailList from '@/components/tools/DetailList'
+    const DetailListItem = DetailList.Item
+
+    export default {
+        name: 'FillUpdateRecordDetail',
+        components: {
+            DetailList,
+            DetailListItem
+        },
+        data () {
+            return {
+                confirmLoading: false,
+                mdl: {},
+                modalTitle: null,
+                visible: false,
+                // 下拉框map
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            model: {
+                                                                                                                    'createdUserId': null,
+                                                                                                                                                                                        'updateUserId': null,
+                                                                                                'updateUserName': null,
+                                                                                                'updateTime': null,
+                                                                                                'taskId': null,
+                                                                                                'remark': null,
+                                                                                                'lateHour': null,
+                                                            }
+            }
+        },
+        created () {
+            // 下拉框map
+            
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+        methods: {
+            base (record) {
+                this.visible = true
+                this.modalTitle = '详情'
+                this.model = record
+            },
+            handleCancel () {
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok')
+            }
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        }
+    }
+</script>

+ 285 - 0
src/views/fill/update-record/modules/FillUpdateRecordSelectModal.vue

@@ -0,0 +1,285 @@
+<template>
+    <a-modal
+            :title="modalTitle"
+            :width="1000"
+            :visible="visible"
+            :confirmLoading="confirmLoading"
+            class="ant-modal2"
+            @cancel="handleCancel"
+    >
+        <a-card :bordered="false">
+            <div class="table-page-search-wrapper">
+                <a-form layout="inline">
+                    <a-row :gutter="48">
+                        <a-col :md="6" :sm="24">
+                            <a-form-item label="关键字">
+                                <a-input v-model="queryParam.keyword" placeholder="请输入名称/类型名称"/>
+                            </a-form-item>
+                        </a-col>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <a-col :md="6 || 24" :sm="24">
+                            <span class="table-page-search-submitButtons">
+                                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+                                <a @click="()=>{ this.advanced = !this.advanced}" style="margin-left: 8px">
+                                  {{ advanced ? '收起' : '展开' }}
+                                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                                </a>
+                            </span>
+                        </a-col>
+                    </a-row>
+                </a-form>
+            </div>
+
+            <div class="table-operator">
+            </div>
+
+            <s-table
+                    ref="table"
+                    size="default"
+                    rowKey="id"
+                    :columns="columns"
+                    :data="loadData"
+                    :alert="options.alert"
+                    :customRow="options.customRow"
+                    :rowSelection="options.rowSelection"
+                    showPagination="auto"
+            >
+                <span slot="action" slot-scope="record1">
+                  <template>
+                    <a @click="handleView(record1)">查看</a>
+                  </template>
+                </span>
+            </s-table>
+            <detail ref="detailModal"/>
+        </a-card>
+        <template slot="footer">
+            <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
+            <a-button :loading="confirmLoading" type="primary" @click="handleSelect()">确定</a-button>
+        </template>
+    </a-modal>
+</template>
+
+<script>
+    import { STable, Ellipsis } from '@/components'
+    import Detail from './Detail'
+    import { getFillUpdateRecordPage, fetchFillUpdateRecord } from '@/api/fill/update-record'
+
+    export default {
+        name: 'FillUpdateRecordSelectModal',
+        components: {
+            STable,
+            Ellipsis,
+            Detail
+        },
+        props: {
+            type: {
+                type: String,
+                default: 'radio'
+            },
+            selectedRowKey: {
+                type: Array,
+                default: () => {
+                    return []
+                }
+            },
+            selectedRow: {
+                type: Array,
+                default: () => {
+                    return []
+                }
+            }
+        },
+        data () {
+            return {
+                advanced: false,
+                confirmLoading: false,
+                mdl: {},
+                modalTitle: null,
+                visible: false,
+                record: null,
+                // 查询参数
+                queryParam: {
+                },
+                extraQueryParam: {
+                },
+                // 表头
+                columns: [
+                    {
+                        title: '序号',
+                        dataIndex: 'index',
+                        customRender: (text, record, index) => {
+                            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+                        }
+                    },
+                                                                                                                                                                                            {
+                                title: '巡检人',
+                                dataIndex: 'createdUserName'
+                            },
+                                                                                                                                                        {
+                                title: '记录时间',
+                                dataIndex: 'createdTime'
+                            },
+                                                                                                                                                                                                                                                                                            {
+                                title: '巡检任务ID',
+                                dataIndex: 'taskId'
+                            },
+                                                                                                                                                        {
+                                title: '备注',
+                                dataIndex: 'remark'
+                            },
+                                                                                                                                                            {
+                                    title: '延迟小时',
+                                    dataIndex: 'lateHour',
+                                    customRender: (text, record, index) => {
+                                        return this.BaseTool.Amount.formatter(text)
+                                    }                                ,
+                                },
+                                                                                            {
+                        title: '操作',
+                        key: 'action',
+                        width: '200px',
+                        align: 'center',
+                        scopedSlots: { customRender: 'action' }
+                    }
+                ],
+                // 下拉框map
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            // 加载数据方法 必须为 Promise 对象
+                loadData: parameter => {
+                    parameter = {
+                        ...parameter,
+                        ...this.queryParam,
+                        ...this.extraQueryParam,
+                        dataScope: {
+                            sortBy: 'desc',
+                            sortName: 'update_time'
+                        }
+                    }
+                    return getFillUpdateRecordPage(Object.assign(parameter, this.queryParam))
+                            .then(res => {
+                                return res.data
+                            })
+                },
+                selectedRowKeys: [],
+                selectedRows: [],
+
+                options: {
+                    alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+                    rowSelection: {
+                        selectedRowKeys: this.selectedRowKeys,
+                        onChange: this.onSelectChange
+                    }
+                },
+                optionAlertShow: false,
+                isCreated: false
+            }
+        },
+        created () {
+            // 下拉框map
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+        methods: {
+            tableOption () {
+                if (!this.optionAlertShow) {
+                    this.options = {
+                        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+                        rowSelection: {
+                            selectedRowKeys: this.selectedRowKeys,
+                            onChange: this.onSelectChange,
+                            type: this.type,
+                            getCheckboxProps: record => ({
+                                props: {
+                                    disabled: false,
+                                    name: record.id
+                                }
+                            })
+                        },
+                        customRow: (record) => {
+                            return {
+                                on: { // 事件
+                                    click: (event) => { // 点击行
+                                        // 选择对象
+                                        this.mySelect([record.id], [record])
+                                    },
+                                    dblclick: (event) => {
+                                        this.mySelect([record.id], [record])
+                                        this.handleSelect()
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    this.optionAlertShow = true
+                } else {
+                    this.options = {
+                        alert: false,
+                        rowSelection: null
+                    }
+                    this.optionAlertShow = false
+                }
+            },
+            handleView (record) {
+                fetchFillUpdateRecord({ id: record.id }).then(res => {
+                    const modal = this.$refs.detailModal
+                    modal.base(res.data)
+                })
+            },
+            handleOk () {
+                this.$refs.table.refresh()
+            },
+            onSelectChange (selectedRowKeys, selectedRows) {
+                this.selectedRowKeys = selectedRowKeys
+                this.selectedRows = selectedRows
+            },
+            resetSearchForm () {
+                this.queryParam = {
+                }
+                this.$refs.table.refresh(true)
+            },
+            base (record, queryParam = {}) {
+                this.visible = true
+                this.modalTitle = '选择信息'
+                this.extraQueryParam = queryParam
+                this.record = record
+                if (this.isCreated) {
+                    this.$refs.table.clearSelected()
+                    this.options.rowSelection.type = this.type
+                    this.handleOk()
+                } else {
+                    this.tableOption()
+                    this.isCreated = true
+                }
+            },
+            handleCancel () {
+                this.visible = false
+                this.confirmLoading = false
+            },
+            handleSelect () {
+                if (this.selectedRowKeys.length === 0) {
+                    this.$message.warn('请至少选择一项信息')
+                } else {
+                    this.confirmLoading = true
+                    this.$emit('selected', this.record, this.selectedRowKeys, this.selectedRows)
+                    this.confirmLoading = false
+                    this.visible = false
+                }
+            },
+            mySelect (selectedRowKeys, selectedRows) {
+                if (this.type === 'radio') {
+                    this.$refs.table.updateSelect(selectedRowKeys, selectedRows)
+                            this.$refs.table.rowSelection.onChange(selectedRowKeys, selectedRows)
+                } else {
+                    let mySelectedRowKeys
+                    let mySelectedRows = this.selectedRows.filter(item => item.id !== selectedRowKeys[0])
+                    if (this.selectedRowKeys.includes(selectedRowKeys[0])) {
+                        mySelectedRowKeys = this.selectedRowKeys.filter(item => item !== selectedRowKeys[0])
+                    } else {
+                        mySelectedRowKeys = [...selectedRowKeys, ...this.selectedRowKeys]
+                        mySelectedRows = [...mySelectedRows, ...selectedRows]
+                    }
+                    this.$refs.table.updateSelect(mySelectedRowKeys, mySelectedRows)
+                            this.$refs.table.rowSelection.onChange(mySelectedRowKeys, mySelectedRows)
+                }
+
+            }
+        }
+    }
+</script>

+ 2 - 2
src/views/sb/info/modules/SbInfoSelectModal.vue

@@ -16,7 +16,7 @@
                 <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/编码"/>
               </a-form-item>
             </a-col>
-<!--            <a-col :md="8" :sm="24">
+            <!--            <a-col :md="8" :sm="24">
               <a-form-item label="上层设备类型">
                 <a-tree-select
                   style="width: 100%"
@@ -280,7 +280,7 @@ export default {
       this.modalTitle = '选择设备'
       this.extraQueryParam = queryParam
       if (this.isCreated) {
-        this.setTree()
+        console.log(this.$refs.table)
         this.$refs.table.clearSelected()
         this.options.rowSelection.type = this.type
         this.handleOk()