Эх сурвалжийг харах

Merge branch 'master' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-wt into dengfei

695593266@qq.com 2 сар өмнө
parent
commit
ebb03d25ba

+ 82 - 0
src/api/bpm/components/EnergyPricingScheme/index.js

@@ -0,0 +1,82 @@
+import request from '@/utils/request';
+
+/**
+ * 列表
+ */
+export async function getPage(params) {
+  const res = await request.get(`/ems/price_scheme/page`, { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 详情
+ */
+export async function getById(id) {
+  const res = await request.get(`/ems/price_scheme/getById/${id}`, {});
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 新增
+ */
+export async function save(data) {
+  const res = await request.post(`/ems/price_scheme/save`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 修改
+ */
+export async function update(data) {
+  const res = await request.put(`/ems/price_scheme/update`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+
+/**
+ * 删除
+ */
+export async function deleteList(data) {
+  const res = await request.delete(`/ems/price_scheme/delete`, {
+    data
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 更新状态
+ */
+export async function updateStatus(id, status) {
+  const res = await request.put(`/ems/price_scheme/updateStatus/${id}/${status}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 检查价格方案绑定
+ */
+export async function checkPriceSchemeBind(id) {
+  const res = await request.get(`/ems/price_scheme/checkPriceSchemeBind/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+

+ 67 - 0
src/api/bpm/components/centralizedMeterReading/index.js

@@ -0,0 +1,67 @@
+import request from '@/utils/request';
+
+/**
+ * 列表分页
+ */
+export async function getPage(params) {
+  const res = await request.get(`/ems/remote_meter_reading/page`, { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 保存
+ */
+export async function save(data) {
+  const res = await request.post(`/ems/remote_meter_reading/save`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 修改
+ */
+export async function update(data) {
+  const res = await request.put(`/ems/remote_meter_reading/update`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 删除
+ */
+export async function deleteById(id) {
+  const res = await request.delete(`/ems/remote_meter_reading/delete`, { data: { id } });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 更新发布状态
+ */
+export async function updatePublishStatus(id, publishStatus) {
+  const res = await request.put(`/ems/remote_meter_reading/updatePublishStatus/${id}/${publishStatus}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 根据ID获取详情
+ */
+export async function getById(id) {
+  const res = await request.get(`/ems/remote_meter_reading/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 60 - 0
src/enum/dict.js

@@ -480,3 +480,63 @@ export const recordingMethodList = [
   { label: '按质检项检', value: 1 },
   { label: '按样品检', value: 2 }
 ];
+
+
+
+// 用能单位集合
+export const energyConsumingUnitList = [
+  {
+    value: '1',
+    label: '水',
+    unit: [
+      { value: '1', label: 'm³' },
+      { value: '2', label: 'L' },
+      { value: '3', label: 'T' }
+    ],
+    priceUnit: [
+      { value: '1', label: '元/m³' },
+      { value: '2', label: '元/L' },
+      { value: '3', label: '元/T' }
+    ]
+  },
+  {
+    value: '2',
+    label: '电',
+    unit: [
+      { value: '1', label: 'kWh' },
+      { value: '2', label: 'MW' },
+      { value: '3', label: 'VA' }
+    ],
+    priceUnit: [
+      { value: '1', label: '元/kWh' },
+      { value: '2', label: '元/MWh' },
+      { value: '3', label: '元/VA' }
+    ]
+  },
+  {
+    value: '3',
+    label: '气',
+    unit: [
+      { value: '1', label: 'J' },
+      { value: '2', label: 'kJ' },
+      { value: '3', label: 'MJ' },
+      { value: '4', label: 'GJ' },
+      { value: '5', label: 'm³' }
+    ],
+    priceUnit: [
+      { value: '1', label: '元/J' },
+      { value: '2', label: '元/kJ' },
+      { value: '3', label: '元/MJ' },
+      { value: '4', label: '元/GJ' },
+      { value: '5', label: '元/m³' }
+    ]
+  }
+];
+//时段
+export const priceTypeList = [
+  { value: 0, label: '全时段' },
+  { value: 1, label: '尖时段' },
+  { value: 2, label: '峰时段' },
+  { value: 3, label: '平时段' },
+  { value: 4, label: '谷时段' }
+];

+ 408 - 0
src/views/bpm/handleTask/components/EnergyPricingScheme/energyDialog.vue

@@ -0,0 +1,408 @@
+<template>
+  <div class="dialog-content">
+    <!-- 基础信息 -->
+    <div class="section-title">
+      <span class="title-text">基础信息</span>
+    </div>
+    <el-form
+      ref="formRef"
+      :model="form"
+      :rules="rules"
+      label-width="140px"
+      size="small"
+      class="base-form"
+    >
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item label="用能分类:" prop="energyClassificationName">
+            <el-input
+              v-model="form.energyClassificationName"
+              placeholder=" "
+              disabled
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="能源名称:" prop="energyTypeName">
+            <el-input
+              v-model="form.energyTypeName"
+              placeholder=" "
+              disabled
+              readonly
+            />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8">
+          <el-form-item label="方案编码:" prop="code">
+            <el-input v-model="form.code" placeholder=" " disabled clearable />
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item label="方案名称:" prop="name">
+            <el-input
+              v-model="form.name"
+              placeholder="请输入"
+              disabled
+              clearable
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="费率类型:" prop="schemeType">
+            <el-select
+              v-model="form.schemeType"
+              placeholder="请选择"
+              disabled
+              clearable
+              style="width: 100%"
+            >
+              <el-option label="单一费率" :value="1" />
+              <el-option label="分时费率" :value="2" />
+              <el-option label="阶段费率" :value="3" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="生效日期:" prop="effectiveDate">
+            <el-date-picker
+              disabled
+              v-model="form.effectiveDate"
+              type="date"
+              value-format="yyyy-MM-dd"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item label="价格单位:" prop="priceUnit">
+            <el-select
+              v-model="form.priceUnit"
+              placeholder="请选择"
+              disabled
+              clearable
+              style="width: 100%"
+            >
+              <el-option
+                :label="item.label"
+                :value="item.value"
+                v-for="item in energyConsumingUnitList.find(
+                  (val) => val.value == form.energyClassificationCode
+                )?.priceUnit"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="状态:" prop="status">
+            <el-switch
+              v-model="form.status"
+              :active-value="1"
+              disabled
+              :inactive-value="0"
+              active-color="#409EFF"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+      <el-row :gutter="20">
+        <el-col :span="24">
+          <el-form-item label="备注:">
+            <el-input
+              v-model="form.remark"
+              type="textarea"
+              disabled
+              :rows="2"
+              placeholder="  "
+              clearable
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <!-- 价格方案 -->
+    <div class="section-title">
+      <span class="title-text">价格方案</span>
+    </div>
+
+    <div class="price-table-wrapper" v-if="form.schemeType == 3">
+      <el-table :data="form.detailList" border size="small" style="width: 100%">
+        <el-table-column type="index" label="序号" width="60" align="center" />
+        <el-table-column prop="gradientLevel" label="梯度级别" align="center">
+          <template slot-scope="{ row }">
+            <el-select
+              v-model="row.gradientLevel"
+              placeholder="请选择"
+              style="width: 100%"
+              size="small"
+              disabled
+            >
+              <el-option
+                :label="item.label"
+                :value="item.value"
+                v-for="item in [
+                  { label: '第一档', value: 1 },
+                  { label: '第二档', value: 2 },
+                  { label: '第三档', value: 3 },
+                  { label: '第四档', value: 4 }
+                ]"
+                :key="item.value"
+              />
+            </el-select>
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          prop="minimumAnnualUsage"
+          label="年用量下限"
+          align="center"
+        >
+          <template slot-scope="{ row }">
+            <el-input
+              v-model="row.minimumAnnualUsage"
+              type="number"
+              style="width: 100%"
+              disabled
+            >
+              <template slot="append">{{
+                energyConsumingUnitList
+                  .find((val) => val.value == form.energyClassificationCode)
+                  ?.unit.find((val) => val.value == form.energyUnit)?.label
+              }}</template>
+            </el-input>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="annualUsageLimit"
+          label="年用量上限"
+          align="center"
+        >
+          <template slot-scope="{ row }">
+            <el-input
+              v-model="row.annualUsageLimit"
+              type="number"
+              style="width: 100%"
+              disabled
+            >
+              <template slot="append">{{
+                energyConsumingUnitList
+                  .find((val) => val.value == form.energyClassificationCode)
+                  ?.unit.find((val) => val.value == form.energyUnit)?.label
+              }}</template>
+            </el-input>
+          </template>
+        </el-table-column>
+        <el-table-column prop="price" label="单价" align="center">
+          <template slot-scope="{ row }">
+            <el-input
+              v-model="row.price"
+              type="number"
+              style="width: 100%"
+              disabled
+            >
+              <template slot="append">{{
+                energyConsumingUnitList
+                  .find((val) => val.value == form.energyClassificationCode)
+                  ?.priceUnit.find((val) => val.value == form.priceUnit)?.label
+              }}</template>
+            </el-input>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="price-table-wrapper" v-else>
+      <el-table :data="form.detailList" border size="small" style="width: 100%">
+        <el-table-column type="index" label="序号" width="60" align="center" />
+        <el-table-column prop="priceType" label="时段" align="center">
+          <template slot-scope="{ row }">
+            <el-select
+              v-model="row.priceType"
+              placeholder="请选择"
+              style="width: 100%"
+              size="small"
+              disabled
+            >
+              <el-option
+                :label="item.label"
+                :value="item.value"
+                v-for="item in filteredPriceTypeList"
+                :key="item.value"
+              />
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column prop="timeRange" label="时段范围" align="center">
+          <template slot-scope="{ row }">
+            <el-time-picker
+              v-model="row.timeStart"
+              placeholder="开始"
+              value-format="HH:mm:ss"
+              format="HH:mm:ss"
+              size="small"
+              style="width: 40%"
+              disabled
+            />
+            <span style="margin: 0 5px">至</span>
+            <el-time-picker
+              v-model="row.timeEnd"
+              placeholder="结束"
+              value-format="HH:mm:ss"
+              format="HH:mm:ss"
+              size="small"
+              style="width: 40%"
+              disabled
+            />
+          </template>
+        </el-table-column>
+        <el-table-column prop="price" label="单价" align="center">
+          <template slot-scope="{ row }">
+            <el-input
+              v-model="row.price"
+              type="number"
+              style="width: 100%"
+              disabled
+            >
+              <template slot="append">{{
+                energyConsumingUnitList
+                  .find((val) => val.value == form.energyClassificationCode)
+                  ?.priceUnit.find((val) => val.value == form.priceUnit)?.label
+              }}</template>
+            </el-input>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<script>
+  import { energyConsumingUnitList, priceTypeList } from '@/enum/dict.js';
+  import { getById } from '@/api/bpm/components/EnergyPricingScheme/index.js';
+  const defForm = {
+    energyClassificationCode: '',
+    energyClassificationName: '',
+    energyTypeName: '',
+    energyTypeId: '',
+    code: '',
+    name: '',
+    schemeType: '',
+    effectiveDate: '',
+    energyUnit: '',
+    status: 1,
+    remark: ''
+  };
+  export default {
+    data() {
+      return {
+        energyConsumingUnitList,
+        priceTypeList,
+
+        form: {
+          ...defForm
+        },
+        rules: {
+          energyClassificationCode: [
+            { required: true, message: '请选择用能分类', trigger: 'change' }
+          ],
+          energyTypeName: [
+            { required: true, message: '请选择能源名称', trigger: 'change' }
+          ],
+          name: [
+            { required: true, message: '请输入方案名称', trigger: 'blur' }
+          ],
+          schemeType: [
+            { required: true, message: '请选择费率类型', trigger: 'change' }
+          ],
+          effectiveDate: [
+            { required: true, message: '请选择生效日期', trigger: 'change' }
+          ],
+          priceUnit: [
+            { required: true, message: '请选择价格单位', trigger: 'change' }
+          ],
+          status: [{ required: true, message: '请选择状态', trigger: 'change' }]
+        },
+        priceList: []
+      };
+    },
+    props: {
+      businessId: {
+        default: ''
+      }
+    },
+    created() {
+      this.init();
+    },
+    computed: {
+      // 是否是单一费率
+      isSingleRate() {
+        return this.form.schemeType == 1;
+      },
+      // 是否是分时费率(峰谷费率)
+      isTimeOfUseRate() {
+        return this.form.schemeType == 2;
+      },
+      // 根据费率类型过滤时段列表(阶梯费率时过滤掉全时段)
+      filteredPriceTypeList() {
+        if (this.isSingleRate) {
+          return this.priceTypeList;
+        }
+        return this.priceTypeList.filter((item) => item.value != '0');
+      }
+    },
+    methods: {
+      // 打开弹窗
+      async init() {
+        this.form = await getById(this.businessId);
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .dialog-content {
+    .section-title {
+      padding: 10px 0;
+      margin-bottom: 15px;
+      border-bottom: 1px solid #409eff;
+
+      .title-text {
+        font-size: 14px;
+        font-weight: 600;
+        color: #409eff;
+      }
+    }
+
+    .base-form {
+      margin-bottom: 20px;
+    }
+
+    .price-header {
+      margin-bottom: 10px;
+    }
+
+    .price-table-wrapper {
+      ::v-deep .el-table {
+        .el-input {
+          width: 100%;
+        }
+
+        .el-time-picker {
+          width: 100%;
+        }
+      }
+    }
+
+    ::v-deep .el-form-item__label {
+      color: #606266;
+    }
+  }
+</style>

+ 134 - 0
src/views/bpm/handleTask/components/EnergyPricingScheme/submit.vue

@@ -0,0 +1,134 @@
+<template>
+  <el-col :span="16" :offset="6">
+    <el-form label-width="100px" ref="formRef" :model="form">
+      <el-form-item
+        label="审批建议"
+        style="margin-bottom: 20px"
+        :rules="{
+          required: true,
+          message: '请选择',
+          trigger: 'change'
+        }"
+      >
+        <el-input
+          type="textarea"
+          v-model="form.reason"
+          placeholder="请输入审批建议"
+        />
+      </el-form-item>
+    </el-form>
+    <div style="margin-left: 10%; margin-bottom: 20px; font-size: 14px">
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        v-click-once
+        @click="handleAudit(1)"
+        >通过
+      </el-button>
+
+      <el-button
+        icon="el-icon-circle-close"
+        type="danger"
+        size="mini"
+        v-click-once
+        @click="handleAudit(0)"
+        >驳回
+      </el-button>
+      <el-dropdown
+        @command="(command) => handleCommand(command)"
+        style="margin-left: 30px"
+      >
+        <span class="el-dropdown-link">
+          更多<i class="el-icon-arrow-down el-icon--right"></i>
+        </span>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item command="cancel">作废</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+  </el-col>
+</template>
+
+<script>
+  import { approveTaskWithVariables, rejectTask,cancelTask } from '@/api/bpm/task';
+
+  export default {
+    name: '',
+
+    props: {
+      businessId: {
+        default: ''
+      },
+      taskId: {
+        default: ''
+      },
+      id: {
+        default: ''
+      },
+      taskDefinitionKey: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        visible: false,
+        form: {
+          reason: '同意'
+        },
+       
+      };
+    },
+    created() {},
+    methods: {
+      async handleAudit(status) {
+        await this._approveTaskWithVariables(status);
+      },
+      //更多
+      handleCommand(command) {
+        if (command === 'cancel') {
+          this.$confirm('是否确认作废?', {
+            type: 'warning',
+            cancelButtonText: '取消',
+            confirmButtonText: '确定'
+          })
+            .then(() => {
+              cancelTask({
+                id: this.id,
+                taskId: this.taskId,
+                reason: this.form.reason,
+                businessId: this.businessId
+              })
+                .then(() => {
+                  this.$emit('handleClose');
+                })
+                .catch(() => {
+                  this.$message.error('流程作废失败');
+                });
+            })
+            .catch(() => {});
+        }
+      },
+      async _approveTaskWithVariables(status) {
+        let variables = {
+          pass: !!status
+        };
+        let API = !!status ? approveTaskWithVariables : rejectTask;
+        API({
+          id: this.taskId,
+          reason: this.form.reason,
+          variables
+        }).then((res) => {
+          if (res.data.code != '-1') {
+            this.$emit('handleAudit', {
+              status,
+              title: status === 0 ? '驳回' : ''
+            });
+          }
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 120 - 0
src/views/bpm/handleTask/components/centralizedMeterReading/meterReadingDialog.vue

@@ -0,0 +1,120 @@
+<template>
+  <el-form
+    ref="formRef"
+    :model="form"
+    :rules="rules"
+    label-width="120px"
+    size="small"
+  >
+    <el-form-item label="表计设备名称" prop="substanceId">
+      <el-input
+        v-model="form.substanceName"
+        placeholder="请选择表计设备"
+        readonly
+        disabled
+        @click.native="openMaterialAdd"
+      >
+      </el-input>
+    </el-form-item>
+    <el-form-item label="表计设备编号">
+      <el-input v-model="form.meterEquipmentNumber" disabled></el-input>
+    </el-form-item>
+    <el-form-item label="用能分类">
+      <el-input v-model="form.energyClassificationName" disabled></el-input>
+    </el-form-item>
+    <el-form-item label="能源名称">
+      <el-input v-model="form.energyTypeName" disabled></el-input>
+    </el-form-item>
+    <el-form-item label="表计单位">
+      <el-input v-model="form.unit" disabled></el-input>
+    </el-form-item>
+    <el-form-item label="抄表人" prop="meterReadingName">
+      <el-input
+        v-model="form.meterReadingName"
+        placeholder="请输入抄表人"
+        disabled
+      ></el-input>
+    </el-form-item>
+    <el-form-item label="本期抄表时间" prop="currentMeterReadingTime">
+      <el-date-picker
+        v-model="form.currentMeterReadingTime"
+        type="datetime"
+        placeholder="选择本期抄表时间"
+        value-format="yyyy-MM-dd HH:mm:ss"
+        disabled
+        style="width: 100%"
+      ></el-date-picker>
+    </el-form-item>
+    <el-form-item label="本期抄表数" prop="currentMeterReadingNum">
+      <el-input
+        v-model.number="form.currentMeterReadingNum"
+        type="number"
+        placeholder="请输入本期抄表数"
+        disabled
+      ></el-input>
+    </el-form-item>
+  </el-form>
+</template>
+
+<script>
+  import { getById } from '@/api/bpm/components/centralizedMeterReading/index.js';
+
+  const defForm = {
+    id: '',
+    substanceId: '',
+    substanceName: '',
+    substanceCode: '',
+    meterEquipmentNumber: '',
+    energyClassificationName: '',
+    energyTypeName: '',
+    unit: '',
+    meterReadingName: '',
+    meterReadingId: '',
+    currentMeterReadingTime: '',
+    currentMeterReadingNum: '',
+    meterReadingMethod: 1
+  };
+
+  export default {
+    components: {},
+    data() {
+      return {
+        form: { ...defForm },
+        rules: {
+          substanceId: [
+            { required: true, message: '请选择表计设备', trigger: 'change' }
+          ],
+          meterReadingName: [
+            { required: true, message: '请输入抄表人', trigger: 'blur' }
+          ],
+          currentMeterReadingTime: [
+            { required: true, message: '请选择本期抄表时间', trigger: 'change' }
+          ],
+          currentMeterReadingNum: [
+            { required: true, message: '请输入本期抄表数', trigger: 'blur' }
+          ]
+        }
+      };
+    },
+    props: {
+      businessId: {
+        default: ''
+      }
+    },
+    created() {
+      this.init();
+    },
+    methods: {
+      // 打开弹窗
+      async init() {
+        this.form = await getById(this.businessId);
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  ::v-deep .el-form-item__label {
+    color: #606266;
+  }
+</style>

+ 134 - 0
src/views/bpm/handleTask/components/centralizedMeterReading/submit.vue

@@ -0,0 +1,134 @@
+<template>
+  <el-col :span="16" :offset="6">
+    <el-form label-width="100px" ref="formRef" :model="form">
+      <el-form-item
+        label="审批建议"
+        style="margin-bottom: 20px"
+        :rules="{
+          required: true,
+          message: '请选择',
+          trigger: 'change'
+        }"
+      >
+        <el-input
+          type="textarea"
+          v-model="form.reason"
+          placeholder="请输入审批建议"
+        />
+      </el-form-item>
+    </el-form>
+    <div style="margin-left: 10%; margin-bottom: 20px; font-size: 14px">
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        v-click-once
+        @click="handleAudit(1)"
+        >通过
+      </el-button>
+
+      <el-button
+        icon="el-icon-circle-close"
+        type="danger"
+        size="mini"
+        v-click-once
+        @click="handleAudit(0)"
+        >驳回
+      </el-button>
+      <el-dropdown
+        @command="(command) => handleCommand(command)"
+        style="margin-left: 30px"
+      >
+        <span class="el-dropdown-link">
+          更多<i class="el-icon-arrow-down el-icon--right"></i>
+        </span>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item command="cancel">作废</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+  </el-col>
+</template>
+
+<script>
+  import { approveTaskWithVariables, rejectTask,cancelTask } from '@/api/bpm/task';
+
+  export default {
+    name: '',
+
+    props: {
+      businessId: {
+        default: ''
+      },
+      taskId: {
+        default: ''
+      },
+      id: {
+        default: ''
+      },
+      taskDefinitionKey: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        visible: false,
+        form: {
+          reason: '同意'
+        },
+       
+      };
+    },
+    created() {},
+    methods: {
+      async handleAudit(status) {
+        await this._approveTaskWithVariables(status);
+      },
+      //更多
+      handleCommand(command) {
+        if (command === 'cancel') {
+          this.$confirm('是否确认作废?', {
+            type: 'warning',
+            cancelButtonText: '取消',
+            confirmButtonText: '确定'
+          })
+            .then(() => {
+              cancelTask({
+                id: this.id,
+                taskId: this.taskId,
+                reason: this.form.reason,
+                businessId: this.businessId
+              })
+                .then(() => {
+                  this.$emit('handleClose');
+                })
+                .catch(() => {
+                  this.$message.error('流程作废失败');
+                });
+            })
+            .catch(() => {});
+        }
+      },
+      async _approveTaskWithVariables(status) {
+        let variables = {
+          pass: !!status
+        };
+        let API = !!status ? approveTaskWithVariables : rejectTask;
+        API({
+          id: this.taskId,
+          reason: this.form.reason,
+          variables
+        }).then((res) => {
+          if (res.data.code != '-1') {
+            this.$emit('handleAudit', {
+              status,
+              title: status === 0 ? '驳回' : ''
+            });
+          }
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 7 - 2
src/views/bpm/handleTask/components/saleOrder/invoiceConfirm/detailDialog.vue

@@ -56,7 +56,7 @@
               <fileMain v-model="detailData.sendFiles" type="view"></fileMain>
             </el-form-item>
             <el-form-item
-              label="回执附件:"
+              :label="clientEnvironmentId != 6 ? '契约锁签收回执:' : '回执附件:'"
               prop="repliedFiles"
               style="margin-bottom: 16px"
             >
@@ -98,7 +98,7 @@
             <el-form-item prop="orderNo" label="发货单编码:">
               {{ form.sendNo }}
             </el-form-item>
-            <el-form-item prop="replied" label="是否回执:">
+            <el-form-item prop="replied" :label="clientEnvironmentId != 6 ? '契约锁是否签收:' : '是否回执:'">
               {{ form.replied == 1 ? '是' : '否' }}
             </el-form-item>
 
@@ -573,6 +573,11 @@
         // });
       }
     },
+    computed: {
+      clientEnvironmentId() {
+        return this.$store.state.user.info.clientEnvironmentId;
+      },
+    },
     methods: {
       changeActive(item) {
         this.activeComp = item.key;