Sfoglia il codice sorgente

短信提醒配置页面提交

jingyuanchao 1 anno fa
parent
commit
e4de3ec61c
1 ha cambiato i file con 1014 aggiunte e 0 eliminazioni
  1. 1014 0
      src/views/core/reminder/index.vue

+ 1014 - 0
src/views/core/reminder/index.vue

@@ -0,0 +1,1014 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="10">
+      <!--机构数据-->
+
+      <!--搜索栏-->
+      <el-col :span="24" :xs="24">
+        <div class="main-right-box">
+          <div class="main-search-box">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+            >
+              <el-form-item label="行社名称">
+                <org-tree
+                  v-model="queryParams.orgId"
+                  @defaultKey="getDefaultKey"
+                  @defaultOrg="getDefaultOrg"
+                  @checkChange="checkChange"
+                  @click="clickTreeNode"
+                  :defaultCheckSub="false"
+                  hangsheTree
+                  ref="orgTree"
+                ></org-tree>
+              </el-form-item>
+              <el-form-item label="提醒类型" prop="reminderType">
+                <el-select
+                  style="width: 100%"
+                  v-model="queryParams.reminderType"
+                  placeholder="请选择提醒类型"
+                  clearable
+                >
+                  <el-option
+                    v-for="dict in dict.type.reminder_type"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="`${dict.value}`"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="业务类型" prop="sendModule">
+                <el-select
+                  v-model="queryParams.sendModule"
+                  placeholder="请选择业务类型"
+                  clearable
+                >
+                  <el-option
+                    v-for="dict in dict.type.reminder_business_type"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="`${dict.value}`"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="启用状态" prop="enabled">
+                <el-select
+                  style="width: 100%"
+                  v-model="queryParams.enabled"
+                  placeholder="请选择启用状态"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in enabledOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+
+                </el-select>
+              </el-form-item>
+            </el-form>
+            <el-row :gutter="10">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="mini"
+                  @click="handleQuery"
+                  v-hasPermi="['core:accessPlan:list']"
+                  >搜索
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-refresh"
+                  size="mini"
+                  @click="resetQuery"
+                  >重置</el-button
+                >
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-plus"
+                  size="mini"
+                  @click="handleAdd"
+                  v-hasPermi="['core:accessPlan:add']"
+                  >新增短信提醒配置
+                </el-button>
+              </el-col>
+              <right-toolbar
+                :showSearch.sync="showSearch"
+                @queryTable="getList"
+              ></right-toolbar>
+            </el-row>
+          </div>
+          <el-table
+            border
+            height="600"
+            size="small"
+            v-loading="loading"
+            :data="planList"
+            row-key="id"
+          >
+            <el-table-column
+              label="序号"
+              type="index"
+              align="center"
+              width="80"
+            >
+              <template slot-scope="scope">
+                <span>{{
+                  (queryParams.pageNum - 1) * queryParams.pageSize +
+                  scope.$index +
+                  1
+                }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              width="140"
+              label="任务名称"
+              align="center"
+              prop="planName"
+            />
+            <el-table-column
+              width="140"
+              label="创建机构"
+              align="center"
+              prop="orgName"
+            />
+            <el-table-column
+              width="140"
+              label="行社名称"
+              align="center"
+              prop="organization"
+            />
+            <el-table-column
+              label="机构类型"
+              align="center"
+              key="orgType"
+              prop="orgType"
+            >
+              <template slot-scope="scope">
+                <dict-tag
+                  :options="dict.type.sys_org_type"
+                  :value="scope.row.orgType"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="调阅人员" align="center" prop="roleName" />
+
+            <el-table-column
+              label="任务周期"
+              align="center"
+              key="planCycle"
+              prop="planCycle"
+            >
+              <template slot-scope="scope">
+                <dict-tag
+                  :options="dict.type.sys_access_cycle"
+                  :value="scope.row.planCycle"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="任务次数"
+              align="center"
+              prop="planFrequency"
+            />
+
+            <el-table-column
+              label="任务状态"
+              align="center"
+              key="planStatus"
+              prop="planStatus"
+            >
+              <template slot-scope="scope">
+                <dict-tag
+                  :options="dict.type.edu_plan_status"
+                  :value="scope.row.planStatus"
+                />
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="操作"
+              fixed="right"
+              width="220px"
+              align="center"
+              class-name="small-padding fixed-width"
+            >
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-arrow-down"
+                  v-show="
+                    scope.row.parentId == null &&
+                    scope.row.orgId == isEdit &&
+                    scope.row.isDistribute == 0 &&
+                    (scope.row.planStatus == 0 || scope.row.planStatus == 2)
+                  "
+                  @click="handDistribute(scope.row)"
+                  v-hasPermi="['core:accessPlan:release']"
+                  >下发
+                </el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-top-left"
+                  v-show="
+                    scope.row.orgId == isEdit &&
+                    scope.row.isDistribute == 1 &&
+                    scope.row.planStatus == 1 &&
+                    scope.row.parentId == null
+                  "
+                  @click="handWithdraw(scope.row)"
+                  v-hasPermi="['core:accessPlan:withdraw']"
+                  >撤回
+                </el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit-outline"
+                  @click="handleUpdate(scope.row)"
+                  v-show="scope.row.orgId == isEdit"
+                  v-hasPermi="['core:accessPlan:edit']"
+                  >编辑
+                </el-button>
+
+                <el-button
+                  size="mini"
+                  type="text"
+                  v-if="
+                    scope.row.parentOrgId == isEdit &&
+                    scope.row.parentId == null
+                  "
+                  icon="el-icon-delete"
+                  @click="handleDelete(scope.row)"
+                  v-hasPermi="['core:accessPlan:remove']"
+                  >删除
+                </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <pagination
+            v-show="total > 0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </el-col>
+    </el-row>
+
+    <!-- 添加或修改监控调阅计划对话框 -->
+    <DialogCom :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="任务名称" prop="planName">
+          <el-input
+            v-model="form.planName"
+            placeholder="请输入任务名称"
+            maxlength="50"
+            :disabled="form.isEdit"
+          />
+        </el-form-item>
+
+        <el-form-item label="机构类型" prop="orgType">
+
+          <el-select
+          :disabled="form.isEdit || form.isComplete"
+            style="width: 100%"
+            v-model="form.orgType"
+            placeholder="请选择机构类型"
+            @change="changeSelect"
+          >
+            <el-option
+              v-for="dict in dict.type.monitor_org"
+              :key="dict.value"
+              :label="dict.label"
+              :value="`${dict.value}`"
+
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="调阅周期" prop="planCycle">
+          <el-select
+          :disabled="form.isEdit || form.isComplete"
+            style="width: 100%"
+            v-model="form.planCycle"
+            placeholder="请选择调阅周期"
+            @change="planCycleChanged"
+          >
+            <el-option
+              v-for="dict in dict.type.sys_access_cycle"
+              :key="dict.value"
+              :label="dict.label"
+              :value="`${dict.value}`"
+
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="调阅人员" prop="roleId">
+          <el-select
+          :disabled="form.isEdit || form.isComplete"
+            style="width: 100%"
+            v-model="form.roleId"
+            placeholder="请选择用户角色"
+            @change="changeSelectOrgType"
+          >
+            <el-option
+              v-for="item in roleList"
+              :key="item.id"
+              :label="item.roleName"
+              :value="item.id"
+
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          label="调阅次数"
+          prop="planFrequency"
+          v-if="form.isEdit == true"
+        >
+          <el-input
+            type="number"
+            @change="numChange"
+            v-model.number="form.planFrequency"
+            placeholder="请输入调阅次数"
+            :disabled="form.isComplete"
+          />
+        </el-form-item>
+        <el-form-item
+          label="调阅次数"
+          prop="planFrequency"
+          v-if="form.isEdit == false || form.isEdit == null"
+        >
+          <el-input
+            type="number"
+            :min="1"
+            oninput="if(value<0)value=1"
+            v-model.number="form.planFrequency"
+            placeholder="请输入调阅次数"
+            :disabled="form.isComplete"
+          />
+        </el-form-item>
+        <!-- <el-form-item
+          label="立即生效"
+          prop="immediately"
+          v-if="form.planCycle != 0 && this.issue == null"
+        >
+          <el-checkbox
+            v-model="form.immediately"
+            :disabled="form.isEdit || form.isComplete"
+          >
+            默认从下个周期生成任务,
+            <br />
+            勾选后从当前周期立即生成任务
+          </el-checkbox>
+        </el-form-item> -->
+        <el-form-item
+          prop="startTime"
+          v-if="form.planCycle == 0"
+          label="开始日期"
+        >
+          <el-date-picker
+            style="width: 100%"
+            v-model="form.startTime"
+            @change="startDateChanged"
+            :picker-options="startDatepickerOptions"
+            align="right"
+            type="date"
+            placeholder="选择开始日期"
+            :disabled="form.isEdit || form.isComplete"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          prop="endTime"
+          v-if="form.planCycle == 0"
+          label="结束日期"
+        >
+          <el-date-picker
+            style="width: 100%"
+            v-model="form.endTime"
+            :picker-options="endDatepickerOptions"
+            align="right"
+            type="date"
+            placeholder="选择结束日期"
+            :disabled="form.isEdit || form.isComplete"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item v-show="form.orgType" label="调阅机构" prop="planExecOrgIdList">
+        <org-tree-select
+            v-model="form.planExecOrgIdList"
+            :queryData="form.orgType"
+            ref="orgTreeSelect"
+            :checkShow="true"
+            :disable="true"
+            :disabled="form.isEdit || form.isComplete"
+          >
+          </org-tree-select>
+          <!-- :enabledCheckOrgTypes="parseInt(form.orgType)" -->
+        </el-form-item>
+        <el-form-item label="备注" prop="description">
+          <el-input
+            v-model="form.description"
+            type="textarea"
+            placeholder="请输入备注"
+            maxlength="200"
+            :disabled="form.isEdit || form.isComplete"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+
+      </div>
+    </DialogCom>
+    <DialogThreeState ref="DialogThreeState"> </DialogThreeState>
+  </div>
+</template>
+
+<script>
+import {
+  listPlan,
+  getPlan,
+  delPlan,
+  addPlan,
+  updatePlan,
+  distribute,
+  withdraw,
+} from "@/api/core/accessPlan";
+import OrgTreeSelect from "@/components/orgTreeSelect";
+import { listRole, findRoleByType, getRole, allRole } from "@/api/system/role";
+import tableList from "@/mixins/tableList";
+import orgTree from "@/components/orgTree/orgQuerySelector.vue";
+import { deptTreeSelect } from "@/api/system/public";
+import KFileUpload from "@/components/K-FileUpload/index.vue";
+import { mapGetters } from "vuex";
+import DialogThreeState from "@/components/message/threeStateMessageBox.vue";
+import * as api from "@/api/core/accessPlan";
+export default {
+  dicts: [
+    'sys_org_type',
+    'reminder_business_type',
+    'reminder_type',
+  ],
+
+  name: "reminder",
+
+  components: {
+    orgTree,
+    DialogThreeState,
+    OrgTreeSelect,
+  },
+
+  data() {
+    return {
+      startDatepickerOptions: {
+        disabledDate(time) {
+          const date = new Date();
+          date.setTime(date.getTime() - 3600 * 1000 * 24);
+          return time.getTime() < date;
+        },
+      },
+      enabledOptions: [{
+        label: "启用",
+        value: true
+      }, {
+        label: "禁用",
+        value: false
+      }],
+
+      endDatepickerOptions: {
+        disabledDate: this.disabledDate,
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      names: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 监控调阅计划表格数据
+      planList: [],
+      check: null,
+      //角色列表
+      roleList: [],
+      allRoleList:[],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        reminderType: null,
+        remindBusinessType: null,
+        sendModule: null,
+        enabled: null,
+
+      },
+      // 表单参数
+      form: {
+        isEdit: null,
+        parentOrgId: null,
+        isComplete: null,
+        parentFrequency: null,
+      },
+      isEdit: null,
+      isComplete: null,
+      // 表单校验
+      rules: {
+        planName: [
+          { required: true, message: "请输入任务名称", trigger: "change" },
+        ],
+        orgType: [
+          { required: true, message: "请选择机构类型", trigger: "change" },
+        ],
+        planCycle: [
+          { required: true, message: "请选择调阅周期", trigger: "change" },
+        ],
+        roleId: [
+          { required: true, message: "请选择调阅人员", trigger: "change" },
+        ],
+        planFrequency: [
+          { required: true, message: "请选择调阅频次", trigger: "change" },
+        ],
+        startTime: [{ required: true, message: "请选择开始日期" }],
+        endTime: [{ required: true, message: "请选择结束日期" }],
+      },
+      initNum: null,
+      issue: null,
+    };
+  },
+
+  computed: {
+    ...mapGetters(["orgId"]),
+  },
+
+  created() {
+    allRole().then((response) => {
+      this.roleList = response.data;
+      this.allRoleList=response.data;
+    });
+  },
+
+  methods: {
+    numChange(value) {
+      if (value <= 0) this.form.planFrequency = 0;
+      if (value <= this.initNum) this.form.planFrequency = this.initNum;
+      //value = parseInt(value);
+    },
+
+    getPageIndex($index) {
+      //表格序号
+      return (
+        (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
+      );
+    },
+    getDefaultOrg(org) {
+      this.orgName = org.name;
+    },
+    /** 查询监控调阅计划列表 */
+    getList() {
+      this.loading = true;
+      listPlan(this.queryParams).then((response) => {
+        this.planList = response.data.rows;
+        this.check = response.check;
+        this.isEdit = response.isEdit;
+        this.xf = response.xf;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        planName: null,
+        orgId: null,
+        orgPath: null,
+        orgName: null,
+        orgType: null,
+        roleId: "121",
+        planCycle: "2",
+        planFrequency: 1,
+        planStatus: "0",
+        immediately: false,
+        createTime: null,
+        createBy: null,
+        updateTime: null,
+        updateBy: null,
+        description: null,
+        isDeleted: null,
+      };
+      this.resetForm("form");
+    },
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+    startDateChanged(time) {
+      if (this.form.startTime > this.form.endTime) {
+        this.form.endTime = this.form.startTime;
+      }
+    },
+    planCycleChanged()
+    {
+      if(this.form.planCycle!=0)
+      {
+        this.form.startTime=null;
+        this.form.endTime=null;
+      }
+
+    },
+    disabledDate(time) {
+      //小于开始日期禁止选择
+      let startTime = new Date();
+      startTime.setTime(startTime.getTime() - 3600 * 1000 * 24);
+      if (this.form.startTime) {
+        startTime = new Date(
+          this.formatTime(this.form.startTime, "YYYY-MM-DD")
+        );
+        startTime.setTime(startTime.getTime() - 3600 * 1000 * 24);
+      }
+      return time.getTime() < new Date(startTime).getTime();
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      //this.initPlanRoleList();
+      this.queryParams.orgId = data.id;
+      this.handleQuery();
+    },
+    changeSelectOrgType(val) {
+      getRole(val).then((response) => {
+        this.form.orgType = response.data.orgType;
+      });
+    },
+    changeSelect(val) {
+      if(!val) {
+        this.roleList=this.allRoleList;
+        return;
+      };
+      findRoleByType(val).then((response) => {
+        this.roleList = response;
+        this.queryParams.roleId = null;
+        this.form.roleId = null;
+      });
+    },
+    /** 查询机构树数据 */
+    getDeptTree() {
+      deptTreeSelect().then((response) => {
+        this.deptOptions = response.data;
+
+        this.handleQuery();
+      });
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.orgId = this.orgId;
+      this.queryParams.checkSub = false;
+      this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub)
+      this.handleQuery();
+      allRole().then((response) => {
+        this.roleList = response.data;
+      });
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.names = selection.map((item) => item.planName);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.issue = null;
+      this.open = true;
+      this.title = "新增监控调阅任务";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getPlan(id).then((response) => {
+        this.form = response.data;
+        this.initNum = response.data.parentFrequency;
+        this.issue = response.data.updateBy;
+        this.open = true;
+        this.title = "编辑监控调阅任务";
+        findRoleByType(this.form.orgType).then((response) => {
+          this.roleList = response;
+        });
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          let request = {...this.form};
+          if (request.id != null) {
+            let msg = "";
+            if (request.planStatus == 1) {
+              if(request.isComplete==true){
+              if (request.planCycle==0) {
+                this.$modal
+         .confirm("因存在已完成任务,无周期任务如需修改,请删除后重新下发”。")
+         .then(() => {
+
+                this.open = false;
+                this.getList();
+
+              })
+              }else{
+                msg = "因存在已完成任务,本次修改内容将下周期生效";
+                this.$modal
+              .confirm(msg)
+              .then(function () {
+                return updatePlan(request);
+              })
+              .then(() => {
+                this.$modal.msgSuccess("编辑成功");
+                this.open = false;
+                this.getList();
+
+              })
+              .catch(() => {
+              });
+              }
+
+              }else{
+                if (request.isHaveTask==false) {
+                  msg = "是否确认修改?";
+              this.$modal
+              .confirm(msg)
+              .then(function () {
+                return updatePlan(request);
+              })
+              .then(() => {
+                this.$modal.msgSuccess("编辑成功");
+                this.open = false;
+                this.getList();
+
+              })
+              .catch(() => {
+              });
+                }else{
+                  msg =  "因不存在已完成任务,本次修改内容将立即生效";
+
+              this.$modal
+            .confirm(msg)
+            .then(function () {
+              return updatePlan(request);
+            })
+            .then(() => {
+              this.$modal.msgSuccess("编辑成功");
+              this.open = false;
+              this.getList();
+
+            })
+            .catch(() => {
+            });
+                }
+
+              }
+
+            }else{
+              msg = "是否确认修改?";
+              this.$modal
+              .confirm(msg)
+              .then(function () {
+                return updatePlan(request);
+              })
+              .then(() => {
+                this.$modal.msgSuccess("编辑成功");
+                this.open = false;
+                this.getList();
+
+              })
+              .catch(() => {
+              });
+            }
+
+
+          } else {
+            addPlan(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      const names = row.planName || this.names;
+      let msg = "";
+      if (row.planStatus == 1) {
+    if(row.planCycle==1){
+      msg = "本次删除将强制删除今日所有任务?";
+    }else{
+      msg = "本次删除将强制删除当前任务时间及以后所有任务";
+    }
+      }else {
+        msg = '是否确认删除名称为"' + row.planName + '"的任务?';
+      }
+      // this.$modal
+      //   .confirm("删除计划会清除本周期所有任务,确定执行?")
+      //   .then(function () {
+      //     return delPlan(ids);
+      //   })
+      //   .then(() => {
+      //     this.getList();
+      //     this.$modal.msgSuccess("删除成功");
+      //   })
+      //   .catch(() => {});
+      this.$modal
+        .confirm(msg)
+        .then(() => {
+          // 用户点击了确认按钮
+          console.log("执行操作...");
+          this.loading = true;
+          api
+            .delPlan(row.id)
+            .then(() => {
+              this.getList();
+              this.loading = false;
+              this.$modal.msgSuccess("删除成功");
+            })
+            .catch(() => {
+              this.loading = false;
+            });
+        })
+        .catch(() => {
+          // 用户点击了取消按钮
+          console.log("取消操作...");
+          this.loading = false;
+        });
+    },
+    // handDistribute(row) {
+    //   let msg = "";
+    //   if(row.planStatus==0){
+    //     this.$modal
+    //     .confirm("请选择下发后立即生成或下周期生成任务")
+    //     .then(function () {
+    //       return distribute(row.id);
+    //     })
+    //     .then(() => {
+    //       this.getList();
+    //       this.$modal.msgSuccess("下发成功");
+    //     })
+    //     .catch(() => {});
+    //   }
+
+    // },
+
+    handDistribute(row) {
+      let msg = "";
+      if(row.planStatus==0){
+        if (row.planCycle==0) {
+          this.$modal
+          .confirm("确定下发任务并立即生成任务?")
+          .then(() => {
+            this.distribute(row.id, true);
+          });
+        }else{
+          let   msg = "请选择下发后立即生成或下周期生成任务?";
+        this.$refs["DialogThreeState"].show(
+          msg,
+          (state) => {
+            if (state == 0 || state == 1) {
+              this.distribute(row.id, state == 1);
+            }
+          },
+          {
+            yesText: "立即生成",
+            noText: "下周期",
+            cancelText: "取消",
+          }
+        );
+        }
+
+      }else if(row.planCycle==0 &&row.planStatus==2){
+        this.distribute(row.id, true);
+        // this.$modal
+        // .confirm("确定下发任务并立即生成任务?")
+        //   .then(() => {
+        //     this.distribute(row.id, true);
+        //   });
+      } else{
+        this.$modal
+          .confirm("因存在已完成任务,是否确定从下周期生成任务?")
+          .then(() => {
+            this.distribute(row.id, false);
+          });
+      }
+
+    },
+    distribute(id, immediateEffect) {
+      this.loading = true;
+      api
+        .distribute(id, immediateEffect)
+        .then((response) => {
+          if (response.data == 0) {
+            this.getList();
+            this.loading = false;
+          } else {
+            this.getList();
+            this.loading = false;
+          }
+        })
+        .catch((response) => {
+          this.getList();
+          this.loading = false;
+        });
+    },
+    handWithdraw(row) {
+      getPlan(row.id).then((response) => {
+        console.log("handWithdraw",response)
+          if (response.data.isComplete) {
+            if (row.planCycle==0) {
+            this.$modal
+          .confirm("存在已完成任务,无周期任务不允许撤回,如需删除下发任务请点击“删除”。")
+          .then(() => {
+            this.getList();
+
+          })
+          }else{
+            this.$modal
+          .confirm("因存在已完成任务,撤回后下周期起将不再生成任务")
+          .then(function () {
+            return withdraw(row.id);
+          })
+          .then(() => {
+            this.getList();
+            this.$modal.msgSuccess("撤回成功");
+          })
+          .catch(() => {});
+          }
+
+        }else{
+
+          this.$modal.confirm("因不存在已完成任务,撤回后将删除所有生成任务")
+            .then(function () {
+              return withdraw(row.id);
+            })
+            .then(() => {
+              this.getList();
+              this.$modal.msgSuccess("撤回成功");
+            })
+            .catch(() => {});
+        }
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/plan/export",
+        {
+          ...this.queryParams,
+        },
+        `plan_${new Date().getTime()}.xlsx`
+      );
+    },
+  }
+};
+</script>
+