浏览代码

预案演练:网点预案管理web页面提交

xujie 1 年之前
父节点
当前提交
4e7e3921af

+ 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'
+  })
+}
+

+ 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>