| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047 | <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="planName">                <el-input                  v-model="queryParams.planName"                  placeholder="请输入关键字"                  maxlength="50"                  clearable                  @keyup.enter.native="handleQuery"                />              </el-form-item>              <el-form-item label="机构类型" prop="orgType">                <el-select                  style="width: 100%"                  v-model="queryParams.orgType"                  placeholder="请选择机构类型"                  clearable                  @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="roleId">                <el-select                  v-model="queryParams.roleId"                  placeholder="请选择用户角色"                  clearable                >                  <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="planCycle">                <el-select                  style="width: 100%"                  v-model="queryParams.planCycle"                  placeholder="请选择任务周期"                  clearable                >                  <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="planStatus">                <el-select                  style="width: 100%"                  v-model="queryParams.planStatus"                  placeholder="请选择任务状态"                  clearable                >                  <el-option                    v-for="dict in dict.type.edu_plan_status"                    :key="dict.value"                    :label="dict.label"                    :value="`${dict.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"              :enabledCheckOrgTypes="parseInt(form.orgType)"            :disabled="form.isComplete"                          >          </org-tree-select>        </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",    "sys_access_cycle",    "sys_normal_disable",    "plan_status",    "is_full",    "edu_plan_status",    "monitor_org",  ],  name: "Plan",  components: {    orgTree,    DialogThreeState,    OrgTreeSelect,  },  data() {    return {      startDatepickerOptions: {        disabledDate(time) {          const date = new Date();          date.setTime(date.getTime() - 3600 * 1000 * 24);          return time.getTime() < date;        },      },      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,        planName: null,        orgId: null,        orgPath: null,        orgName: null,        orgType: null,        roleId: null,        planCycle: null,        planFrequency: null,        planStatus: null,        description: null,        isDeleted: null,        isDistribute: null,        checkSub: false,      },      // 表单参数      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: "4",        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();      allRole().then((response) => {        this.roleList = response.data;      });      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>
 |