Bladeren bron

隐患问题代码

jiawuxian 2 jaren geleden
bovenliggende
commit
fad4a9722b
4 gewijzigde bestanden met toevoegingen van 474 en 17 verwijderingen
  1. 71 0
      src/api/question/list.js
  2. 17 17
      src/plugins/download.js
  3. 130 0
      src/views/question/list/dialog.vue
  4. 256 0
      src/views/question/list/index.vue

+ 71 - 0
src/api/question/list.js

@@ -0,0 +1,71 @@
+import request from "@/utils/request";
+
+// 查询列表隐患问题清单
+export function listQuestion(query) {
+  return request({
+    url: "/core/question/list",
+    method: "get",
+    params: query,
+  });
+}
+
+// 查询详细隐患问题清单
+export function getQuestion(id) {
+  return request({
+    url: "/core/question/" + id,
+    method: "get",
+  });
+}
+
+// 新增隐患问题清单
+export function addQuestion(data) {
+  return request({
+    url: "/core/question",
+    method: "post",
+    data: data,
+  });
+}
+
+// 修改隐患问题清单
+export function updateQuestion(data) {
+  return request({
+    url: "/core/question",
+    method: "put",
+    data: data,
+  });
+}
+
+// 删除隐患问题清单
+export function delQuestion(id) {
+  return request({
+    url: "/core/question/" + id,
+    method: "delete",
+  });
+}
+
+// 问题确认
+export function confirm(data) {
+  return request({
+    url: "/core/question/confirm/" + data.id,
+    method: "put",
+    data,
+  });
+}
+
+// 异议审批
+export function confirmDissent(data) {
+  return request({
+    url: "/core/question/confirmDissent/" + data.id,
+    method: "put",
+    data,
+  });
+}
+
+// 整改
+export function reform(id) {
+  return request({
+    url: "/core/question/reform/" + data.id,
+    method: "put",
+    data,
+  });
+}

+ 17 - 17
src/plugins/download.js

@@ -1,29 +1,30 @@
-import axios from 'axios'
-import { Message } from 'element-ui'
-import { saveAs } from 'file-saver'
-import { getToken } from '@/utils/auth'
-import errorCode from '@/utils/errorCode'
+import axios from "axios";
+import { Message } from "element-ui";
+import { saveAs } from "file-saver";
+import { getToken } from "@/utils/auth";
+import errorCode from "@/utils/errorCode";
 import { blobValidate } from "@/utils/ruoyi";
 
-const baseURL = process.env.VUE_APP_BASE_API
+const baseURL = process.env.VUE_APP_BASE_API;
 
 export default {
   zip(url, name) {
-    var url = baseURL + url
+    var seperator = !baseURL.endsWith("/") && !url.startsWith("/") ? "/" : "";
+    var url = baseURL + seperator + url;
     axios({
-      method: 'get',
+      method: "get",
       url: url,
-      responseType: 'blob',
-      headers: { 'Authorization': 'Bearer ' + getToken() }
+      responseType: "blob",
+      headers: { Authorization: "Bearer " + getToken() },
     }).then((res) => {
       const isBlob = blobValidate(res.data);
       if (isBlob) {
-        const blob = new Blob([res.data], { type: 'application/zip' })
-        this.saveAs(blob, name)
+        const blob = new Blob([res.data], { type: "application/zip" });
+        this.saveAs(blob, name);
       } else {
         this.printErrMsg(res.data);
       }
-    })
+    });
   },
   saveAs(text, name, opts) {
     saveAs(text, name, opts);
@@ -31,8 +32,7 @@ export default {
   async printErrMsg(data) {
     const resText = await data.text();
     const rspObj = JSON.parse(resText);
-    const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
+    const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
     Message.error(errMsg);
-  }
-}
-
+  },
+};

+ 130 - 0
src/views/question/list/dialog.vue

@@ -0,0 +1,130 @@
+<template>
+  <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form-item label="隐患所属机构" prop="orgId">
+        <el-input v-model="form.orgId" placeholder="请输入隐患所属机构" />
+      </el-form-item>
+      <el-form-item label="隐患所属机构名称" prop="orgName">
+        <el-input v-model="form.orgName" placeholder="请输入隐患所属机构名称" />
+      </el-form-item>
+      <el-form-item label="隐患所属机构path" prop="orgPath">
+        <el-input v-model="form.orgPath" placeholder="请输入隐患所属机构path" />
+      </el-form-item>
+      <el-form-item label="来源任务id" prop="srcTaskId">
+        <el-input v-model="form.srcTaskId" placeholder="请输入来源任务id" />
+      </el-form-item>
+      <el-form-item label="来源任务名称" prop="srcTaskName">
+        <el-input v-model="form.srcTaskName" placeholder="请输入来源任务名称" />
+      </el-form-item>
+      <el-form-item label="检查内容">
+        <editor v-model="form.checkContent" :min-height="192" />
+      </el-form-item>
+      <el-form-item label="隐患描述" prop="questionDesc">
+        <el-input v-model="form.questionDesc" placeholder="请输入隐患描述" />
+      </el-form-item>
+      <el-form-item label="提出人id" prop="submitorId">
+        <el-input v-model="form.submitorId" placeholder="请输入提出人id" />
+      </el-form-item>
+      <el-form-item label="提出人名称" prop="submitorName">
+        <el-input v-model="form.submitorName" placeholder="请输入提出人名称" />
+      </el-form-item>
+      <el-form-item label="发现时间" prop="submitTime">
+        <el-date-picker
+          clearable
+          v-model="form.submitTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择发现时间"
+        >
+        </el-date-picker>
+      </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>
+  </el-dialog>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+    };
+  },
+  methods:{
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orgId: null,
+        orgName: null,
+        orgPath: null,
+        srcType: null,
+        srcTaskId: null,
+        srcTaskName: null,
+        checkContent: null,
+        questionDesc: null,
+        submitorId: null,
+        submitorName: null,
+        submitTime: null,
+        confirmStatus: null,
+        reformStatus: null,
+        createTime: null,
+        updateTime: null,
+        createBy: null,
+        updateBy: null
+      };
+      this.resetForm("form");
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateQuestion(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addQuestion(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加隐患问题清单";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getQuestion(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改隐患问题清单";
+      });
+    },
+  }
+};
+</script>

+ 256 - 0
src/views/question/list/index.vue

@@ -0,0 +1,256 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <el-col :span="4" :xs="24">
+        <org-tree
+          v-model="queryParams.orgId"
+          @defaultKey="getDefaultKey"
+          @checkChange="checkChange"
+          @click="clickTreeNode"
+        ></org-tree>
+      </el-col>
+      <el-col :span="20" :xs="24">
+        <el-form
+          :model="queryParams"
+          ref="queryForm"
+          size="small"
+          :inline="true"
+          v-show="showSearch"
+          label-width="68px"
+        >
+          <el-form-item label="隐患所属机构" prop="orgId">
+            <el-input
+              v-model="queryParams.orgId"
+              placeholder="请输入隐患所属机构"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="发现时间" prop="submitTime">
+            <el-date-picker
+              clearable
+              v-model="queryParams.submitTime"
+              type="date"
+              value-format="yyyy-MM-dd"
+              placeholder="请选择发现时间"
+            >
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery"
+              >搜索</el-button
+            >
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+              >重置</el-button
+            >
+          </el-form-item>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-download"
+              size="mini"
+              @click="handleExport"
+              v-hasPermi="['system:question:export']"
+              >导出</el-button
+            >
+          </el-col>
+          <right-toolbar
+            :showSearch.sync="showSearch"
+            @queryTable="getList"
+          ></right-toolbar>
+        </el-row>
+
+        <el-table
+          v-loading="loading"
+          :data="questionList"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="${comment}" align="center" prop="id" />
+          <el-table-column
+            label="隐患所属机构名称"
+            align="center"
+            prop="orgName"
+          />
+          <el-table-column
+            label="来源任务名称"
+            align="center"
+            prop="srcTaskName"
+          />
+          <el-table-column
+            label="检查内容"
+            align="center"
+            prop="checkContent"
+          />
+          <el-table-column
+            label="隐患描述"
+            align="center"
+            prop="questionDesc"
+          />
+          <el-table-column
+            label="提出人名称"
+            align="center"
+            prop="submitorName"
+          />
+          <el-table-column
+            label="发现时间"
+            align="center"
+            prop="submitTime"
+            width="180"
+          >
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.submitTime, "{y}-{m}-{d}") }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="确认状态。0未确认,1提出异议,2已确认,3已关闭"
+            align="center"
+            prop="confirmStatus"
+          />
+          <el-table-column
+            label="整改状态。5未整改,6已整改"
+            align="center"
+            prop="reformStatus"
+          />
+          <el-table-column
+            label="操作"
+            align="center"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['system:question:edit']"
+                >修改</el-button
+              >
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['system:question: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"
+        />
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import {
+  listQuestion,
+  getQuestion,
+  delQuestion,
+  addQuestion,
+  updateQuestion,
+} from "@/api/question/list.js";
+
+export default {
+  name: "Question",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 隐患问题清单表格数据
+      questionList: [],
+
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orgId: null,
+        submitTime: null,
+        confirmStatus: null,
+        reformStatus: null,
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询隐患问题清单列表 */
+    getList() {
+      this.loading = true;
+      listQuestion(this.queryParams).then((response) => {
+        this.questionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm('是否确认删除隐患问题清单编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delQuestion(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/question/export",
+        {
+          ...this.queryParams,
+        },
+        `question_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>