gaoluyang
9 小时以前 29be8639dc16b5d82bddc6099b1fa5cdca75f77a
src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue
@@ -10,7 +10,7 @@
                  :page="page" :tableLoading="tableLoading"></lims-table>
    </div>
    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-model="usageTableDia"
               title="设备保养计划表" width="80%" @close="closeDialog">
               title="设备使用授权表" width="80%" @close="closeDialog">
      <div style="display: flex;align-items: center;">
        <el-button size="small" type="primary" @click="addTableRow" v-if="operationType !== 'check'">添加</el-button>
        <span style="width: 60px;margin-left: 10px">年份:</span>
@@ -53,7 +53,7 @@
                         clearable filterable multiple
                         :disabled="operationType === 'check'"
                         placeholder="请选择" size="small" style="width: 100%;">
                <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
                </el-option>
              </el-select>
            </template>
@@ -122,13 +122,13 @@
} from "@/api/cnas/resourceDemand/device";
import {selectUserCondition} from "@/api/system/user";
import {mapGetters} from "@/utils/store-compat";
import draftSave from '@/mixins/draftSave'
import {formatListDate} from './dateFormat'
import {saveBlobOrShowError} from '@/utils/saveBlob'
export default {
  name: '',
  // import 引入的组件需要注入到对象中才能使用
  components: {limsTable},
  mixins: [draftSave],
  props: {
    clickNodeVal: {
      type: Object,
@@ -150,9 +150,9 @@
      column: [
        { label: '计划年份', prop: 'impowerYear' },
        { label: '编制人', prop: 'compiler' },
        { label: '编制时间', prop: 'datePreparation' },
        { label: '编制时间', prop: 'datePreparation', formatData: val => formatListDate(val) },
        { label: '授权人', prop: 'audit' },
        { label: '授权日期', prop: 'auditDate' },
        { label: '授权日期', prop: 'auditDate', formatData: val => formatListDate(val) },
        {
          dataType: 'tag',
          label: '授权状态',
@@ -207,7 +207,7 @@
                this.openDia('check', row);
              },
              disabled: (row) => {
                return row.status === 1 || this.userId !== row.auditId;
                return row.status === 1 || this.userId != row.auditId;
              },
            },
            {
@@ -261,6 +261,7 @@
    },
    // 分页切换
    pagination(page) {
      this.page.current = page.page
      this.page.size = page.limit
      this.getTableList()
    },
@@ -321,27 +322,17 @@
        getImpowerDetail({ impowerId: this.impowerId }).then(res => {
          if (res.code === 200) {
            this.form = res.data
            this.deviceImpowerDetails = this.form.deviceImpowerDetails
            this.deviceImpowerDetails = this.form.deviceImpowerDetails || []
            this.deviceImpowerDetails.forEach(item => {
              item['delegatedUserArr'] = item.delegatedUser.split(',')
              item['delegatedUserArr'] = item.delegatedUser ? String(item.delegatedUser).split(',') : []
            })
            this.restoreImpowerDraft()
          }
        }).catch(error => {
          console.error(error)
        })
      } else {
        this.restoreImpowerDraft()
      }
      this.getEquipOptions()
      this.getUserList()
    },
    restoreImpowerDraft() {
      if (this.operationType === 'add' || this.operationType === 'edit') {
        const rid = this.operationType === 'edit' ? this.impowerId : ''
        this.draftRestore('usageAuthorizationForm', 'form', rid, 'usageTableDia')
        this.draftRestore('usageAuthorizationRows', 'deviceImpowerDetails', rid, 'usageTableDia')
      }
    },
    closeDialog () {
      this.usageTableDia = false
@@ -359,17 +350,30 @@
    },
    // 提交新增和修改
    submitForm() {
      if (!this.form.impowerYear) {
        this.$message.warning('请选择年份')
        return
      }
      if (!this.deviceImpowerDetails.length) {
        this.$message.warning('请添加设备')
        return
      }
      const noDelegatee = this.deviceImpowerDetails.find(item => {
        return !Array.isArray(item.delegatedUserArr) || item.delegatedUserArr.length === 0
      })
      if (noDelegatee) {
        this.$message.warning(`请为设备“${noDelegatee.deviceName || ''}”选择被授权人`)
        return
      }
      this.form.deviceImpowerDetails = this.HaveJson(this.deviceImpowerDetails)
      this.form.deviceImpowerDetails.forEach((item) => {
        item.delegatedUser = item.delegatedUserArr.join(',')
        item.delegatedUser = Array.isArray(item.delegatedUserArr) ? item.delegatedUserArr.join(',') : ''
      })
      this.submitFormLoading = true
      if (this.operationType === 'add') {
        addImpower(this.form).then(res => {
          if (res.code == 200) {
            this.$message.success('新增成功')
            this.draftClear('usageAuthorizationForm')
            this.draftClear('usageAuthorizationRows')
            this.usageTableDia = false
            this.refreshTableList()
          }
@@ -381,8 +385,6 @@
        updateImpower(this.form).then(res => {
          if (res.code == 200) {
            this.$message.success('修改成功')
            this.draftClear('usageAuthorizationForm')
            this.draftClear('usageAuthorizationRows')
            this.usageTableDia = false
            this.refreshTableList()
          }
@@ -437,10 +439,12 @@
      })
    },
    openHandleOut (row) {
      this.outLoading = true
      exportDeviceImpower({ impowerId: row.impowerId }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/msword' });
        this.$download.saveAs(blob, '设备使用授权表' + '.docx')
        saveBlobOrShowError(res, '设备使用授权表.docx', 'application/msword')
      }).catch(() => {
        this.outLoading = false
      })
    },
    handleDeleteClick(row) {