Prechádzať zdrojové kódy

Merge branch 'V0.0.8' of http://10.87.21.221:8000/jzyd_yyds/soc_web into V0.0.8

zhulu 1 rok pred
rodič
commit
5632531475

+ 1 - 1
.env.development

@@ -20,7 +20,7 @@ ENV = 'development'
 # VUE_APP_BASE_API = 'http://10.87.23.62:8080'
 #  VUE_APP_BASE_API = 'http://localhost:8080'
 # 开发环境v
-VUE_APP_BASE_API = 'http://10.87.23.46:8081'
+VUE_APP_BASE_API = 'http://10.87.23.42:8081'
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
 

+ 53 - 0
src/api/core/drill/drillDictionaryBranch.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询列表预案演练库
+export function listDrillDictionaryBranch(query) {
+  return request({
+    url: '/core/drillDictionaryBranch/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询详细预案演练库
+export function getDrillDictionaryBranch(id) {
+  return request({
+    url: '/core/drillDictionaryBranch/detail/' + id,
+    method: 'get'
+  })
+}
+
+// 新增预案演练库
+export function addDrillDictionaryBranch(data) {
+  return request({
+    url: '/core/drillDictionaryBranch/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改预案演练库
+export function updateDrillDictionaryBranch(data) {
+  return request({
+    url: '/core/drillDictionaryBranch/edit',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除预案演练库
+export function delDrillDictionaryBranch(id) {
+  return request({
+    url: '/core/drillDictionaryBranch/remove/' + id,
+    method: 'delete'
+  })
+}
+
+// 查询预案演练库列表
+export function initList() {
+  return request({
+    url: '/core/drillDictionaryBranch/listData',
+    method: 'get'
+  })
+}
+

+ 56 - 0
src/api/reminder/reminder.js

@@ -0,0 +1,56 @@
+import request from '@/utils/request'
+
+
+// 分页接口
+export function list(data) {
+  return request({
+    url: '/core/reminder/list',
+    method: 'post',
+    data: data
+  })
+}
+
+// 详情
+export function detail(id) {
+  return request({
+    url: '/core/reminder/config/' + id,
+    method: 'get'
+  })
+}
+
+// 编辑/新增
+export function edit(data) {
+  return request({
+    url: '/core/reminder/config',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除配置
+export function del(id) {
+  return request({
+    url: '/core/reminder/del' + id,
+    method: 'delete'
+  })
+}
+
+//根据业务类型查询对应计划
+export function queryPlanBySendModule(sendModule) {
+  return request({
+    url: "/core/reminder/queryPlanBySendModule/" + sendModule,
+    method: "get",
+    // params: query
+  });
+}
+
+//根据计划获取计划内可用时间单位
+export function selectTimeUnit(sendModule, planId) {
+  return request({
+    url: "/core/reminder/calculateTimeUnit/" + sendModule + "/" + planId,
+    method: "get",
+    // params: query
+  });
+}
+
+

+ 9 - 2
src/api/system/version.js

@@ -47,9 +47,16 @@ export function updateVersion(data) {
 // 版本包下载
 export function downloadFile(id,fileName) {
 	return exportFile(
-		'/system/version/download/'+id,
+		'/system/version/download/'+fileName,
 	   null,
 	   'get',
 	  fileName,null,null
 	)
-  }
+}
+
+export function getAllPackageName() {
+  return request({
+    url: '/system/version/getAllPackageName',
+    method: 'get'
+  })
+}

+ 14 - 0
src/components/K-FileUpload/index.vue

@@ -74,6 +74,11 @@ export default {
       type: Array,
       default: () => ["pdf", "jpg", "png", "bmp", "zip", "rar", "7z"],
     },
+    // 文件类型, 例如['png', 'jpg', 'jpeg']
+    packageName: {
+      type: Array,
+      default: () => [],
+    },
     // 是否显示提示
     isShowTip: {
       type: Boolean,
@@ -168,6 +173,15 @@ export default {
     handleBeforeUpload(file) {
       // 校检文件类型
       if (this.fileType) {
+        if (this.packageName.length > 0){
+          const validateFileName = file.name;
+          for (let i = 0; i < this.packageName.length; i++) {
+            if (validateFileName === this.packageName[i]){
+              this.$modal.msgError(`已存在名为 `+this.packageName[i]+` 的文件,请重新上传!`);
+              return false;
+            }
+          }
+        }
         const fileName = file.name.split('.');
         const fileExt = fileName[fileName.length - 1];
         const isTypeOk = this.fileType.indexOf(fileExt) >= 0;

+ 149 - 0
src/views/core/drill/drillDictionaryBranch/dialog.info.vue

@@ -0,0 +1,149 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom title="预案详情" :visible.sync="isShow" width="1000px" append-to-body>
+      <div class="page-body">
+        <el-descriptions
+          class="contentArea"
+          :column="2"
+          size="medium"
+          border
+          :contentStyle="content_style"
+          :label-style="labelStyle"
+        >
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="机构名称">
+            {{ formData.orgName }}
+          </el-descriptions-item>
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="演练项目">
+            {{
+              getLabel(dict.type.core_drill_type, formData.drillType, "未知")
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="演练场景">
+            {{ formData.drillProjects }}
+          </el-descriptions-item>
+          <el-descriptions-item
+            labelClassName="gx_info_label"
+            span="2"
+            label="预设案由"
+          >
+            <p class="text-content text_nbsp"> {{ formData.defaultCause }}</p>
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="创建人">
+            {{ formData.createUserName }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="创建时间">
+            {{ formData.createTime }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="修改人">
+            {{ formData.updateUserName }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="修改时间">
+            {{ formData.updateTime }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">关闭</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
+
+<script>
+import { mapState, mapMutations } from "vuex";
+import { getDrillDictionaryBranch } from "@/api/core/drill/drillDictionaryBranch";
+import { getLabel } from "@/views/commonOption";
+export default {
+  components: { },
+  dicts: ["drill_task_status", "core_drill_type"],
+  data() {
+    const params = this.$route.params;
+    return {
+      id: params ? params.id : null,
+      isShow: false,
+      formData: this.reset(),
+      drillTypeOptions: [],
+      formFileListDefaultValue: [],
+      labelStyle: {
+        color: "#000",
+        "text-align": "center",
+        height: "40px",
+        "min-width": "150px",
+        "word-break": "keep-all",
+      },
+      content_style: {
+        "text-align": "left",
+        "min-width": "300px",
+        "word-break": "break-all",
+      },
+      iconClasses: ["icon-rate-face-1", "icon-rate-face-2", "icon-rate-face-3"], // 等同于 { 2: 'icon-rate-face-1', 4: { value: 'icon-rate-face-2', excluded: true }, 5: 'icon-rate-face-3' }
+    };
+  },
+  props: {},
+  watch: {},
+  computed: {
+    ...mapState(["loginUser"]),
+  },
+  methods: {
+    ...mapMutations([]),
+    getLabel,
+    reset(other = {}) {
+      return {
+        id: null,
+        drillType: null,
+        defaultCause: null,
+        drillProjects: null,
+        ...other,
+      };
+    },
+    async refresh(id, other) {
+      if (!id) {
+        this.reset(other);
+      } else {
+        getDrillDictionaryBranch(id).then((response) => {
+          this.formData = response.data;
+          this.loading = false;
+      });
+        // getDrillTask(id).then((response) => {
+        //   this.formData = response.data;
+        //   this.formFileListDefaultValue = response.data.fileList;
+        //   this.formData.signImageList = this.getSingImageList();
+        //   this.loading = false;
+        // });
+      }
+    },
+    async show(id, other = {}) {
+      this.id = id;
+      await this.refresh(id, other);
+      this.isShow = true;
+    },
+    // 事件
+    onHide() {
+      this.isShow = false;
+    },
+    // initDrillTypeOptions() {
+    //   initList().then((response) => {
+    //     this.drillTypeOptions = response;
+    //   });
+    // },
+    // 事件
+    //apimark//
+  },
+  mounted() {},
+};
+</script>
+
+<style lang="scss" scoped>
+.text-content{
+  margin: 0;
+  max-height: 500px;
+  overflow: auto;
+}
+.el-descriptions__body{
+  margin-bottom: 0px;
+}
+.el-descriptions__body .el-descriptions__table{
+  width: auto;
+}
+</style>

+ 491 - 0
src/views/core/drill/drillDictionaryBranch/index.vue

@@ -0,0 +1,491 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="10">
+      <!--机构数据-->
+      <!-- <el-col :span="4" :xs="24">
+        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
+                  @click="clickTreeNode" wholeTree></org-tree>
+      </el-col> -->
+      <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="编号" prop="id">
+            <el-input v-model="queryParams.id" placeholder="请输入编号" clearable
+                      @keyup.enter.native="handleQuery"/>
+          </el-form-item> -->
+              <el-form-item label="机构名称">
+                <org-tree
+                  v-model="queryParams.orgId"
+                  @defaultKey="getDefaultKey"
+                  @checkChange="checkChange"
+                  @click="clickTreeNode"
+                  ref="orgTree"
+                ></org-tree>
+              </el-form-item>
+              <el-form-item label="演练场景" prop="drillProjects">
+                <el-input
+                  v-model="queryParams.drillProjects"
+                  placeholder="请输入关键字"
+                  clearable
+                  @keyup.enter.native="handleQuery"
+                />
+              </el-form-item>
+              <el-form-item label="演练项目" prop="drillType">
+                <el-select
+                  v-model="queryParams.drillType"
+                  placeholder="请选择演练项目"
+                  clearable
+                >
+                  <el-option
+                    v-for="dict in dict.type.core_drill_type"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  />
+                </el-select>
+              </el-form-item>
+              <!-- <el-form-item>
+
+          </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"
+                >搜索
+                </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:drillDictionaryBranch:add']"
+                >新增预案
+                </el-button>
+              </el-col>
+              <!--          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['core:drillDictionaryBranch:export']"
+            >导出
+            </el-button>
+          </el-col>-->
+              <right-toolbar
+                :showSearch.sync="showSearch"
+                @queryTable="getList"
+              ></right-toolbar>
+            </el-row>
+          </div>
+          <el-table
+            border
+            height="646"
+            size="small"
+            v-loading="loading"
+            :data="drillDictionaryBranchList"
+            @selection-change="handleSelectionChange"
+          >
+            <el-table-column type="index" label="序号" align="center" width="60" prop="no">
+              <template slot-scope="scope">
+                {{
+                  (queryParams.pageNum - 1) * queryParams.pageSize +
+                  scope.$index +
+                  1
+                }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="机构名称"
+              align="center"
+              width="250"
+              prop="orgName"
+            />
+
+            <el-table-column
+              label="演练项目"
+              align="center"
+              width="180"
+              prop="drillType"
+            >
+              <template slot-scope="scope">
+                <dict-tag
+                  :options="dict.type.core_drill_type"
+                  :value="scope.row.drillType"
+                />
+              </template>
+            </el-table-column>
+            <!--            <el-table-column
+                          label="演练类型"
+                          align="left"
+                          align="center"
+                          width="180"
+                          prop="drillType"
+                        >
+                          <template slot-scope="scope">
+                            <dict-tag
+                              :options="dict.type.core_drill_category"
+                              :value="scope.row.drillCategory"
+                            />
+                          </template>
+                        </el-table-column>-->
+            <el-table-column label="演练场景" scoped-slot="drillProjects" align="center" width="180"
+                             prop="drillProjects">
+              <template slot-scope="scope">
+                <div class="ellipsis" :title="scope.row.drillProjects">{{ scope.row.drillProjects }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="预设案由"
+              scoped-slot="defaultCause"
+              :show-overflow-tooltip="true"
+              align="center"
+              prop="defaultCause"
+            >
+            </el-table-column>
+            <el-table-column
+              label="操作"
+              align="center"
+              width="200"
+              class-name="small-padding fixed-width"
+            >
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-view"
+                  @click="handleDetail(scope.row.id)"
+                  v-hasPermi="['core:drillDictionaryBranch:detail']"
+                  >详情
+                </el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit-outline"
+                  v-if="canEdit(scope.row)"
+                  @click="handleUpdate(scope.row)"
+                  v-hasPermi="['core:drillDictionaryBranch:edit']"
+                >编辑
+                </el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  v-if="canDelete(scope.row)"
+                  @click="handleDelete(scope.row)"
+                  v-hasPermi="['core:drillDictionaryBranch: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="1000px"
+      append-to-body
+      :close="cancel"
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+        <el-form-item label="演练项目" prop="drillType" style="width: 100%">
+          <el-select
+            v-model="form.drillType"
+            placeholder="请选择演练项目"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="dict in dict.type.core_drill_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <!--    <el-form-item label="演练类型" prop="drillCategory" style="width: 100%">
+             <el-select
+               v-model="form.drillCategory"
+               placeholder="请选择演练类型"
+               style="width: 100%"
+             >
+               <el-option
+                 v-for="dict in dict.type.core_drill_category"
+                 :key="dict.value"
+                 :label="dict.label"
+                 :value="dict.value"
+               ></el-option>
+             </el-select>
+           </el-form-item>-->
+        <el-form-item label="演练场景" prop="drillProjects">
+          <el-input v-model="form.drillProjects" maxlength="50" placeholder="请输入演练场景"/>
+        </el-form-item>
+        <el-form-item label="预设案由" prop="defaultCause">
+          <k-textarea
+            v-model="form.defaultCause"
+            :length="2000"
+            :row="20"
+            show-word-limit
+            placeholder="请输入预设案由"
+          />
+        </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>
+    <dialog-info ref="infoDialog" @success="handleQuery()"></dialog-info>
+  </div>
+</template>
+
+<script>
+import {
+  listDrillDictionaryBranch,
+  getDrillDictionaryBranch,
+  delDrillDictionaryBranch,
+  addDrillDictionaryBranch,
+  updateDrillDictionaryBranch,
+} from "@/api/core/drill/drillDictionaryBranch";
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
+import BtnTip from "@/components/btnTip";
+import tableList from "@/mixins/tableList";
+import {queryKnowledgeList} from "@/api/core/edu/knowledge";
+import KTextarea from "@/components/common/textarea.vue";
+import {mapGetters} from "vuex";
+import DialogInfo from "./dialog.info";
+
+export default {
+  name: "DrillDictionaryBranch",
+  components: {OrgTree, BtnTip, KTextarea,DialogInfo},
+  dicts: ["core_drill_type", "core_drill_category"],
+  mixins: [tableList],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 预案演练库表格数据
+      drillDictionaryBranchList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        drillType: null,
+        drillTypeName: null,
+        drillProjects: null,
+        defaultCause: null,
+        checkSub: true,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        drillType: [{required: true, message: "请选择演练项目"}],
+        drillCategory: [{required: true, message: "请选中演练类型"}],
+        defaultCause: [{required: true, message: "请输入预设案由"}],
+        drillProjects: [{required: true, message: "请输入演练场景"}],
+      },
+    };
+  },
+  computed: {
+    ...mapGetters(["orgId"]),
+  },
+  created() {
+    // this.getList();
+  },
+  methods: {
+    /** 查询预案演练库列表 */
+    getList() {
+      this.loading = true;
+      listDrillDictionaryBranch(this.queryParams).then((response) => {
+        this.drillDictionaryBranchList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orgId: this.queryParams.orgId,
+        drillType: null,
+        drillProjects: null,
+        defaultCause: null,
+        checkSub: true,
+      };
+      this.resetForm("form");
+    },
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.handleQuery();
+    },
+    initKnowledgeList() {
+      queryKnowledgeList().then((response) => {
+        this.knowledgeList = response;
+      });
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.$refs["orgTree"].setSelectTop();
+      this.queryParams.checkSub = true;
+      this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub)
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "新增预案";
+    },
+    canEdit(row) {
+      return row.orgId == this.$store.getters.orgId;
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getDrillDictionaryBranch(id).then((response) => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "编辑预案";
+      });
+    },
+    handleDetail(id) {
+      this.$refs["infoDialog"].show(id, {});
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateDrillDictionaryBranch(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addDrillDictionaryBranch(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    canDelete(row) {
+      return row.orgId == this.$store.getters.orgId;
+    },
+
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id;
+      this.$modal
+        .confirm("是否确认删除?")
+        .then(function () {
+          return delDrillDictionaryBranch(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "core/drillDictionaryBranch/export",
+        {
+          ...this.queryParams,
+        },
+        `drillDictionaryBranch_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
+<style>
+.ellipsis {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+</style>

+ 241 - 553
src/views/core/reminder/index.vue

@@ -79,8 +79,8 @@
                   icon="el-icon-search"
                   size="mini"
                   @click="handleQuery"
-                  v-hasPermi="['core:accessPlan:list']"
-                  >搜索
+                  v-hasPermi="['core:reminder:list']"
+                >搜索
                 </el-button>
               </el-col>
               <el-col :span="1.5">
@@ -89,7 +89,8 @@
                   icon="el-icon-refresh"
                   size="mini"
                   @click="resetQuery"
-                  >重置</el-button
+                >重置
+                </el-button
                 >
               </el-col>
               <el-col :span="1.5">
@@ -98,8 +99,8 @@
                   icon="el-icon-plus"
                   size="mini"
                   @click="handleAdd"
-                  v-hasPermi="['core:accessPlan:add']"
-                  >新增短信提醒配置
+                  v-hasPermi="['core:reminder:edit']"
+                >新增短信提醒配置
                 </el-button>
               </el-col>
               <right-toolbar
@@ -113,7 +114,7 @@
             height="600"
             size="small"
             v-loading="loading"
-            :data="planList"
+            :data="configList"
             row-key="id"
           >
             <el-table-column
@@ -124,75 +125,51 @@
             >
               <template slot-scope="scope">
                 <span>{{
-                  (queryParams.pageNum - 1) * queryParams.pageSize +
-                  scope.$index +
-                  1
-                }}</span>
+                    (queryParams.pageNum - 1) * queryParams.pageSize +
+                    scope.$index +
+                    1
+                  }}</span>
               </template>
             </el-table-column>
             <el-table-column
-              width="140"
-              label="任务名称"
+              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"
+              prop="reminderType"
             >
               <template slot-scope="scope">
                 <dict-tag
-                  :options="dict.type.sys_org_type"
-                  :value="scope.row.orgType"
+                  :options="dict.type.reminder_type"
+                  :value="scope.row.reminderType"
                 />
               </template>
             </el-table-column>
-            <el-table-column label="调阅人员" align="center" prop="roleName" />
-
             <el-table-column
-              label="任务周期"
+              label="业务类型"
               align="center"
-              key="planCycle"
-              prop="planCycle"
+              prop="sendModule"
             >
               <template slot-scope="scope">
                 <dict-tag
-                  :options="dict.type.sys_access_cycle"
-                  :value="scope.row.planCycle"
+                  :options="dict.type.reminder_business_type"
+                  :value="scope.row.sendModule"
                 />
               </template>
             </el-table-column>
-            <el-table-column
-              label="任务次数"
-              align="center"
-              prop="planFrequency"
-            />
 
-            <el-table-column
-              label="任务状态"
-              align="center"
-              key="planStatus"
-              prop="planStatus"
-            >
+            <el-table-column label="计划名称" align="center" prop="planName"/>
+
+            <el-table-column label="对比时间" align="center" prop="compareTimeType">
               <template slot-scope="scope">
-                <dict-tag
-                  :options="dict.type.edu_plan_status"
-                  :value="scope.row.planStatus"
-                />
+                {{ getCompareTimeLabel(scope.row.compareTimeType) }}
+              </template>
+            </el-table-column>
+            <el-table-column label="提醒时间" align="center" prop="reminderTime"/>
+            <el-table-column label="时间单位" align="center" prop="timeUnitText"/>
+
+
+            <el-table-column label="启用状态" align="center" key="compareTimeType" prop="compareTimeType">
+              <template slot-scope="scope">
+                <span>{{ scope.row.enabled ? '启用' : '停用' }}</span>
               </template>
             </el-table-column>
 
@@ -207,52 +184,19 @@
                 <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']"
-                  >编辑
+                  v-hasPermi="['core:reminder: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']"
-                  >删除
+                  v-hasPermi="['core:reminder:remove']"
+                >删除
                 </el-button>
               </template>
             </el-table-column>
@@ -268,166 +212,135 @@
       </el-col>
     </el-row>
 
-    <!-- 添加或修改监控调阅计划对话框 -->
-    <DialogCom :title="title" :visible.sync="open" width="500px" append-to-body>
+    <!-- 添加或修改短信提醒配置对话框 -->
+    <DialogCom :title="title" :visible.sync="open" width="600px" 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-form-item label="提醒类型" prop="reminderType">
           <el-select
-          :disabled="form.isEdit || form.isComplete"
             style="width: 100%"
-            v-model="form.orgType"
-            placeholder="请选择机构类型"
-            @change="changeSelect"
+            v-model="form.reminderType"
+            placeholder="请选择提醒类型"
+            @change="checkReminderType()"
+            clearable
           >
             <el-option
-              v-for="dict in dict.type.monitor_org"
+              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="planCycle">
+        <el-form-item label="业务类型" prop="sendModule">
           <el-select
-          :disabled="form.isEdit || form.isComplete"
             style="width: 100%"
-            v-model="form.planCycle"
-            placeholder="请选择调阅周期"
-            @change="planCycleChanged"
+            v-model="form.sendModule"
+            placeholder="请选择业务类型"
+            clearable
+            @change="selectPlan(form.sendModule)"
           >
             <el-option
-              v-for="dict in dict.type.sys_access_cycle"
+              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="roleId">
+
+        <el-form-item label="业务计划" prop="planId">
           <el-select
-          :disabled="form.isEdit || form.isComplete"
             style="width: 100%"
-            v-model="form.roleId"
-            placeholder="请选择用户角色"
-            @change="changeSelectOrgType"
+            v-model="form.planId"
+            placeholder="请选择业务计划"
+            @change="selectTimeUnit(form.sendModule, form.planId)"
           >
             <el-option
-              v-for="item in roleList"
-              :key="item.id"
-              :label="item.roleName"
-              :value="item.id"
-
+              v-for="item in planList"
+              :key="item.planId"
+              :label="item.planName"
+              :value="item.planId"
             ></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"
+        <el-form-item label="对比时间" prop="compareTimeType">
+          <el-select
+            style="width: 100%"
+            v-model="form.compareTimeType"
+            placeholder="请选择对比时间"
+            clearable
           >
-            默认从下个周期生成任务,
-            <br />
-            勾选后从当前周期立即生成任务
-          </el-checkbox>
-        </el-form-item> -->
-        <el-form-item
-          prop="startTime"
-          v-if="form.planCycle == 0"
-          label="开始日期"
-        >
-          <el-date-picker
+            <el-option
+              v-for="item in compareTimeOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+
+          </el-select>
+        </el-form-item>
+        <el-form-item label="时间单位" prop="timeUnit">
+          <el-select
             style="width: 100%"
-            v-model="form.startTime"
-            @change="startDateChanged"
-            :picker-options="startDatepickerOptions"
-            align="right"
-            type="date"
-            placeholder="选择开始日期"
-            :disabled="form.isEdit || form.isComplete"
+            v-model="form.timeUnit"
+            placeholder="请选择时间单位"
+            clearable
           >
-          </el-date-picker>
+            <el-option
+              v-for="item in timeUnitList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="提醒时间" prop="reminderTime">
+          <template>
+            <el-input-number
+              style="width: 100%"
+              v-model="form.reminderTime"
+              :min="1"
+              placeholder="请输入提醒时间"
+            ></el-input-number>
+          </template>
         </el-form-item>
-        <el-form-item
-          prop="endTime"
-          v-if="form.planCycle == 0"
-          label="结束日期"
-        >
-          <el-date-picker
+
+        <el-form-item label="提醒角色" prop="roleIdList">
+          <el-select
+            :multiple="true"
             style="width: 100%"
-            v-model="form.endTime"
-            :picker-options="endDatepickerOptions"
-            align="right"
-            type="date"
-            placeholder="选择结束日期"
-            :disabled="form.isEdit || form.isComplete"
+            v-model="form.roleIdList"
+            placeholder="请选择提醒角色"
           >
-          </el-date-picker>
+            <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 v-show="form.orgType" label="调阅机构" prop="planExecOrgIdList">
-        <org-tree-select
-            v-model="form.planExecOrgIdList"
-            :queryData="form.orgType"
+
+        <el-form-item label="提醒机构" prop="orgIdList">
+          <org-tree-select
+            v-model="form.orgIdList"
+            :queryData="4"
             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 label="是否启用" prop="enable">
+          <el-switch
+            v-model="form.enabled"
+            active-color="#13ce66"
+            inactive-color="#ff4949">
+          </el-switch>
         </el-form-item>
+
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -435,29 +348,20 @@
 
       </div>
     </DialogCom>
-    <DialogThreeState ref="DialogThreeState"> </DialogThreeState>
+    <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 {list, detail, edit, del, queryPlanBySendModule, selectTimeUnit} from "@/api/reminder/reminder";
 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 {deptTreeSelect} from "@/api/system/public";
+import {mapGetters} from "vuex";
 import DialogThreeState from "@/components/message/threeStateMessageBox.vue";
-import * as api from "@/api/core/accessPlan";
+import {allRole} from "@/api/system/role";
+
 export default {
   dicts: [
     'sys_org_type',
@@ -475,13 +379,6 @@ export default {
 
   data() {
     return {
-      startDatepickerOptions: {
-        disabledDate(time) {
-          const date = new Date();
-          date.setTime(date.getTime() - 3600 * 1000 * 24);
-          return time.getTime() < date;
-        },
-      },
       enabledOptions: [{
         label: "启用",
         value: true
@@ -489,10 +386,14 @@ export default {
         label: "禁用",
         value: false
       }],
+      compareTimeOptions: [{
+        label: "计划开始时间",
+        value: 0
+      }, {
+        label: "计划结束时间",
+        value: 1
+      }],
 
-      endDatepickerOptions: {
-        disabledDate: this.disabledDate,
-      },
       // 遮罩层
       loading: true,
       // 选中数组
@@ -507,11 +408,12 @@ export default {
       // 总条数
       total: 0,
       // 监控调阅计划表格数据
+      configList: [],
       planList: [],
+      timeUnitList: [],
       check: null,
       //角色列表
       roleList: [],
-      allRoleList:[],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -521,39 +423,45 @@ export default {
         pageNum: 1,
         pageSize: 10,
         reminderType: null,
-        remindBusinessType: null,
         sendModule: null,
         enabled: null,
-
       },
       // 表单参数
       form: {
-        isEdit: null,
-        parentOrgId: null,
-        isComplete: null,
-        parentFrequency: null,
+        configId: null,
+        reminderType: null,
+        sendModule: null,
+        planId: null,
+        compareTimeType: null,
+        timeUnit: null,
+        reminderTime: null,
+        roleIdList: [],
+        orgIdList: [],
+        enabled: null,
       },
-      isEdit: null,
-      isComplete: null,
       // 表单校验
       rules: {
-        planName: [
-          { required: true, message: "请输入任务名称", trigger: "change" },
+        reminderType: [
+          {required: true, message: "请输入提醒类型", trigger: "change"},
+        ],
+        sendModule: [
+          {required: true, message: "请选择业务类型", trigger: "change"},
         ],
-        orgType: [
-          { required: true, message: "请选择机构类型", trigger: "change" },
+        planId: [
+          {required: true, message: "请选择提醒角色", trigger: "change"},
         ],
-        planCycle: [
-          { required: true, message: "请选择调阅周期", trigger: "change" },
+        compareTimeType: [
+          {required: true, message: "请选择对比时间", trigger: "change"},
         ],
-        roleId: [
-          { required: true, message: "请选择调阅人员", trigger: "change" },
+        timeUnit: [
+          {required: true, message: "请选择时间单位", trigger: "change"},
         ],
-        planFrequency: [
-          { required: true, message: "请选择调阅频次", trigger: "change" },
+        reminderTime: [
+          {required: true, message: "请输入提醒时间", trigger: "change"},
+        ],
+        roleIdList: [
+          {required: true, message: "请选择提醒角色", trigger: "change"},
         ],
-        startTime: [{ required: true, message: "请选择开始日期" }],
-        endTime: [{ required: true, message: "请选择结束日期" }],
       },
       initNum: null,
       issue: null,
@@ -565,17 +473,47 @@ export default {
   },
 
   created() {
-    allRole().then((response) => {
-      this.roleList = response.data;
-      this.allRoleList=response.data;
-    });
+    this.initRoleList()
   },
 
   methods: {
-    numChange(value) {
-      if (value <= 0) this.form.planFrequency = 0;
-      if (value <= this.initNum) this.form.planFrequency = this.initNum;
-      //value = parseInt(value);
+    initRoleList() {
+      allRole().then((response) => {
+        this.roleList = response.data;
+      });
+    },
+    checkReminderType() {
+      if (this.form.reminderType == 0) {
+        this.form.compareTimeType = 1;
+        this.compareTimeOptions = [{
+          label: "计划结束时间",
+          value: 1
+        }];
+      } else {
+        this.form.compareTimeType = null;
+        this.compareTimeOptions = [
+          {
+            label: "计划开始时间",
+            value: 0
+          },
+          {
+            label: "计划结束时间",
+            value: 1
+          }
+        ];
+      }
+    }
+    ,
+    selectPlan(sendModule) {
+      queryPlanBySendModule(sendModule).then((response) => {
+        this.planList = response.data;
+      });
+    },
+
+    selectTimeUnit(sendModule, planId) {
+      selectTimeUnit(sendModule, planId).then((response) => {
+        this.timeUnitList = response.data;
+      });
     },
 
     getPageIndex($index) {
@@ -584,18 +522,21 @@ export default {
         (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
       );
     },
+    getCompareTimeLabel(compareTimeTypeValue) {
+      const option = this.compareTimeOptions.find(
+        (option) => option.value == compareTimeTypeValue
+      );
+      return option ? option.label : '未知类型'; // 如果未找到对应选项,返回默认提示
+    },
     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;
+      list(this.queryParams).then((response) => {
+        this.configList = response.rows;
+        this.total = response.total;
         this.loading = false;
       });
     },
@@ -607,23 +548,15 @@ export default {
     // 表单重置
     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,
+        configId: null,
+        reminderType: null,
+        sendModule: null,
+        planId: null,
+        compareTimeType: null,
+        timeUnit: null,
+        roleIdList: [],
+        orgIdList: [],
+        enabled: true,
       };
       this.resetForm("form");
     },
@@ -636,32 +569,8 @@ export default {
       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;
@@ -669,26 +578,9 @@ export default {
     },
     // 节点单击事件
     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) => {
@@ -704,9 +596,7 @@ export default {
       this.queryParams.checkSub = false;
       this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub)
       this.handleQuery();
-      allRole().then((response) => {
-        this.roleList = response.data;
-      });
+      this.initRoleList();
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
@@ -720,119 +610,30 @@ export default {
       this.reset();
       this.issue = null;
       this.open = true;
-      this.title = "新增监控调阅任务";
+      this.title = "新增短信提醒配置";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids;
-      getPlan(id).then((response) => {
+      const id = row.configId
+      detail(id).then((response) => {
+
+        this.selectPlan(response.data.sendModule)
+        this.selectTimeUnit(response.data.sendModule, response.data.planId)
         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;
-        });
+        this.title = "编辑短信提醒配置";
       });
     },
     /** 提交按钮 */
     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();
-            });
-          }
+          edit(this.form).then((response) => {
+            this.$modal.msgSuccess("提交成功");
+            this.open = false;
+            this.getList();
+          });
         }
       });
     },
@@ -842,12 +643,12 @@ export default {
       const names = row.planName || this.names;
       let msg = "";
       if (row.planStatus == 1) {
-    if(row.planCycle==1){
-      msg = "本次删除将强制删除今日所有任务?";
-    }else{
-      msg = "本次删除将强制删除当前任务时间及以后所有任务";
-    }
-      }else {
+        if (row.planCycle == 1) {
+          msg = "本次删除将强制删除今日所有任务?";
+        } else {
+          msg = "本次删除将强制删除当前任务时间及以后所有任务";
+        }
+      } else {
         msg = '是否确认删除名称为"' + row.planName + '"的任务?';
       }
       // this.$modal
@@ -883,121 +684,8 @@ export default {
           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(

+ 175 - 171
src/views/system/version/index.vue

@@ -9,16 +9,16 @@
 						style="width: 240px"
 						@keyup.enter.native="handleQuery"/>
 			</el-form-item>
-  
+
 			<el-form-item label="平台" prop="type">
 			  <el-select v-model="queryParams.type" clearable placeholder="请选择平台" style="width: 240px">
 				<el-option v-for="dict in dict.type.sys_version_type" :key="dict.value" :label="dict.label"
 						   :value="dict.value"/>
 			  </el-select>
 			</el-form-item>
-  
+
 		  </el-form>
-  
+
 		  <el-row :gutter="10">
 			<el-col :span="1.5">
 			  <el-button icon="el-icon-search" size="mini" type="primary" @click="handleQuery"
@@ -30,17 +30,17 @@
 			  >重置
 			  </el-button>
 			</el-col>
-  
+
 			<el-col :span="1.5">
 			  <el-button v-hasPermi="['system:version:add']" icon="el-icon-plus" size="mini" type="primary"
 						 @click="handleAdd">新增
 			  </el-button>
 			</el-col>
-  
+
 			<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
 		  </el-row>
 		</div>
-  
+
 		<el-table
 		  v-loading="loading"
 		  :data="versionList"
@@ -93,13 +93,13 @@
 			</template>
 		  </el-table-column>
 		</el-table>
-  
+
 		<pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNum" :total="total"
 					@pagination="getList"/>
-  
+
 	  </div>
-  
-  
+
+
 	  <!-- 添加或修改版本号对话框 -->
 	  <DialogCom :title="title" :visible.sync="open" append-to-body width="750px">
 		<el-form ref="form" :model="form" :rules="rules" label-width="100px">
@@ -129,7 +129,7 @@
 			<el-form-item label="强制更新" prop="isForce">
 				<el-checkbox v-model="form.isForce"></el-checkbox>
 			</el-form-item>
-	
+
 			<el-form-item v-if="form.type!=='3'" label="上传文件" ref="files" prop="fileList">
               <K-file-upload
                 ref="upload"
@@ -137,6 +137,7 @@
                 v-model="form.fileList"
                 :limit="1"
                 :fileType="['apk']"
+                :packageName="packageNameList"
 				:fileSize="50"
                 @input="fileListChanged"
               />
@@ -157,192 +158,196 @@
 	  </DialogCom>
 	</div>
   </template>
-  
+
   <script>
   import {
-	listVersion,
-	getVersionDetail,
-	addVersion,
-	updateVersion,
-	downloadFile
+    listVersion,
+    getVersionDetail,
+    addVersion,
+    updateVersion,
+    downloadFile,
+    getAllPackageName
   } from "@/api/system/version";
   import KFileUpload from "@/components/K-FileUpload/index.vue";
   import KTextarea from "@/components/common/textarea.vue";
 
   export default {
-	name: "Version",
-	components: {KFileUpload,KTextarea},
-	dicts: ['sys_version_type','sys_true_false'],
-	data() {
-	  return {
-		// 遮罩层
-		loading: true,
-		formFileListDefualtValue: [],
-		// 选中数组
-		ids: [],
-		// 非单个停用
-		single: true,
-		// 非多个停用
-		multiple: true,
-		// 显示搜索条件
-		showSearch: true,
-		// 总条数
-		total: 0,
-		// 表数据
-		versionList: [],
-		// 弹出层标题
-		title: "",
-		// 是否显示弹出层
-		open: false,
-		// 日期范围
-		dateRange: [],
-		// 查询参数
-		queryParams: {
-		  pageNum: 1,
-		  pageSize: 10,
-		  version: null,
-		  type: null
-		},
-		// 表单参数
-		form: {},
-		defaultProps: {
-		  children: "children",
-		  label: "name"
-		},
-		// 表单校验
-		rules: {
-		  version: [
-			{required: true, message: "版本号不能为空", trigger: "blur"},
-			{validator: validatorVersion, trigger: "blur"}
-		  ],
-		  type: [
-			{required: true, message: "请选择机构类型", trigger: "blur"}
-		  ],
-		  isUse: [
-			{required: true, message: "请输入使用", trigger: "blur"}
-		  ],
-		  isForce: [
-			{required: true, message: "请输入强制更新", trigger: "blur"}
-		  ],
-		  note: [
-			{required: true, message: "请输入说明", trigger: "blur"}
-		  ]
-		},
-	  };
-	},
-	created() {
-	  this.getList();
-	},
-	methods: {
-	  fileListChanged(list) {
-        this.$refs.files.clearValidate();
+    name: "Version",
+    components: {KFileUpload,KTextarea},
+    dicts: ['sys_version_type','sys_true_false'],
+    data() {
+      return {
+      // 遮罩层
+      loading: true,
+      formFileListDefualtValue: [],
+      // 选中数组
+      ids: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 表数据
+      versionList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+        packageNameList:[],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        version: null,
+        type: null
       },
-	  selectedType() {
-        this.$refs["form"].clearValidate(["type"]);
+      // 表单参数
+      form: {},
+      defaultProps: {
+        children: "children",
+        label: "name"
       },
-	  handleSelectionChange(selection) {
-        this.$emit('handleSelectionChange', selection)
+      // 表单校验
+      rules: {
+        version: [
+        {required: true, message: "版本号不能为空", trigger: "blur"},
+        {validator: validatorVersion, trigger: "blur"}
+        ],
+        type: [
+        {required: true, message: "请选择机构类型", trigger: "blur"}
+        ],
+        isUse: [
+        {required: true, message: "请输入使用", trigger: "blur"}
+        ],
+        isForce: [
+        {required: true, message: "请输入强制更新", trigger: "blur"}
+        ],
+        note: [
+        {required: true, message: "请输入说明", trigger: "blur"}
+        ]
       },
-	  async downloadVersionFile(row) {
-		if(row.type === 3){
-			return;
-		}
-		
-		await downloadFile(row.id,row.packageName);
+      };
+    },
+    created() {
+      this.getList();
+    },
+      methods: {
+      fileListChanged(list) {
+          this.$refs.files.clearValidate();
+        },
+      selectedType() {
+          this.$refs["form"].clearValidate(["type"]);
+        },
+      handleSelectionChange(selection) {
+          this.$emit('handleSelectionChange', selection)
+        },
+      async downloadVersionFile(row) {
+      if(row.type === 3){
+        return;
+      }
+
+		  await downloadFile(row.id,row.packageName);
 
       },
-	  getPageIndex($index) {
-		//表格序号
-		return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
-  
-	  },
-	  /** 查询角色列表 */
-	  getList() {
-		this.loading = true;
-		listVersion(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-			this.versionList= response.rows;
-			this.total = response.total;
-			this.loading = false;
-		  }
-		);
-	  },
-	  
-	  // 取消按钮
-	  cancel() {
-		this.open = false;
-		this.reset();
-	  },
-	  // 表单重置
-	  reset() {
-		this.formFileListDefualtValue = [],
-		this.form = {
-			version: null,
-			type: null,
-			note: null,
-			isUse: false,
-			isForce: false
-		};
-		this.resetForm("form");
-	  },
-	  /** 搜索按钮操作 */
-	  handleQuery() {
-		this.queryParams.pageNum = 1;
-		this.getList();
-	  },
-	  /** 重置按钮操作 */
-	  resetQuery() {
-		this.dateRange = [];
-		this.resetForm("queryForm");
-		this.handleQuery();
-	  },
-	  /** 新增按钮操作 */
-	  handleAdd() {
-		this.reset();
-		this.open = true;
-		this.title = "新增版本号";
-	  },
-	  /** 修改按钮操作 */
-	  handleUpdate(row) {
-		this.reset();
-		const id = row.id;
-		getVersionDetail(id).then(response => {
-		  	this.form = response.data;
-		  	let file = {url:this.form.path,name:this.form.packageName};
-        	let fileList = [];
-        	fileList.push(JSON.stringify(file));
-        	this.form.fileList = fileList;
-        	this.formFileListDefualtValue = fileList;
-			this.form.type = this.form.type + '';
-		  	this.open = true;
-		  	this.title = "编辑版本号";
-		});
-	  },
-	  /** 提交按钮 */
-	  submitForm: function () {
-		this.$refs["form"].validate(valid => {
-		  if (valid) {
-			if(this.form.type !== `3` &&  this.form.fileList.length === 0){
+	    getPageIndex($index) {
+		    //表格序号
+		    return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
+	    },
+	    /** 查询角色列表 */
+	    getList() {
+		    this.loading = true;
+		    listVersion(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+			    this.versionList= response.rows;
+			    this.total = response.total;
+			    this.loading = false;
+		    }
+		    );
+        getAllPackageName().then(response => {
+          this.packageNameList=response.data;
+        });
+	    },
+
+      // 取消按钮
+	    cancel() {
+		    this.open = false;
+		    this.reset();
+	    },
+	    // 表单重置
+	    reset() {
+		    this.formFileListDefualtValue = [],
+		    this.form = {
+          version: null,
+          type: null,
+          note: null,
+          isUse: false,
+          isForce: false
+		    };
+        this.resetForm("form");
+	    },
+	    /** 搜索按钮操作 */
+	    handleQuery() {
+		    this.queryParams.pageNum = 1;
+		    this.getList();
+	    },
+	    /** 重置按钮操作 */
+	    resetQuery() {
+        this.dateRange = [];
+        this.resetForm("queryForm");
+        this.handleQuery();
+	    },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "新增版本号";
+	    },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id;
+        getVersionDetail(id).then(response => {
+          this.form = response.data;
+          let file = {url:this.form.path,name:this.form.packageName};
+            let fileList = [];
+            fileList.push(JSON.stringify(file));
+            this.form.fileList = fileList;
+            this.formFileListDefualtValue = fileList;
+			      this.form.type = this.form.type + '';
+		  	    this.open = true;
+		  	    this.title = "编辑版本号";
+		    });
+	    },
+	    /** 提交按钮 */
+	    submitForm: function () {
+		    this.$refs["form"].validate(valid => {
+		    if (valid) {
+			    if(this.form.type !== `3` &&  this.form.fileList.length === 0){
             	this.$modal.msgError("请上传文件!");
             	throw new Error("请上传文件!");
             }
-			if (this.form.type !== `3`) {
-				let file = JSON.parse(this.form.fileList[0]);
+			    if (this.form.type !== `3`) {
+				    let file = JSON.parse(this.form.fileList[0]);
             	this.form.path = file.url;
             	this.form.packageName = file.name;
-			}
-			if (this.form.id != undefined) {
+			  }
+			  if (this.form.id != undefined) {
 			  	updateVersion(this.form).then(response => {
 					this.$modal.msgSuccess("处理成功");
 					this.open = false;
 					this.getList();
 			  	});
-			} else {
+			  } else {
 			  	addVersion(this.form).then(response => {
 					this.$modal.msgSuccess("处理成功");
 					this.open = false;
 					this.getList();
 			  	});
-			}
+			  }
 		  }
 		});
 	  }
@@ -367,4 +372,3 @@
 	display: -webkit-box !important;
   }
   </style>
-