Эх сурвалжийг харах

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc_web into V0.0.2

jiawuxian 2 жил өмнө
parent
commit
06c1212abb

+ 44 - 0
src/api/core/letter.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询列表介绍信
+export function listLetter(query) {
+  return request({
+    url: '/core/letter/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询详细介绍信
+export function getLetter(id) {
+  return request({
+    url: '/core/letter/' + id,
+    method: 'get'
+  })
+}
+
+// 新增介绍信
+export function addLetter(data) {
+  return request({
+    url: '/core/letter',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改介绍信
+export function updateLetter(data) {
+  return request({
+    url: '/core/letter',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除介绍信
+export function delLetter(id) {
+  return request({
+    url: '/core/letter/' + id,
+    method: 'delete'
+  })
+}

+ 282 - 0
src/views/core/letter/dialog.addletter.vue

@@ -0,0 +1,282 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom :title="'录入介绍信'" :close="onHide" :visible.sync="isShow" width="960px">
+      <div class="page-body">
+        <el-form ref="form" :model="formData" :rules="formDataRules" label-width="100px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item prop="letterName" label="介绍信名称">
+                <el-input v-model="formData.letterName" placeholder="请输入介绍信名称" :length="200"/>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="12">
+              <el-form-item label="接待机构" prop="orgId">
+                <org-tree-select
+                  v-model="formData.orgId"
+                  ref="orgTreeSelect"
+                >
+                </org-tree-select>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="12">
+              <el-form-item  prop="startTime" label="有效开始时间">
+                <el-date-picker required v-model="formData.startTime" :picker-options="startDatepickerOptions"
+                                type="date" placeholder="选择日期"  @change="startDateChanged">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="endTime" label="培训结束时间">
+                <el-date-picker required v-model="formData.endTime" :picker-options="endDatepickerOptions" @change="endDateChanged"
+                                type="date" placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+<!--          <el-form-item label="介绍信文件" prop="letterFile">
+            <file-upload v-model="formData.letterFile"/>
+          </el-form-item>-->
+          <el-form-item label="介绍信文件" prop="letterFile">
+            <K-file-upload ref="upload" :defaultValue="formFileListDefualtValue" v-model="formData.letterFile"/>
+          </el-form-item>
+
+          <el-form-item label="备注" prop="checkRemark">
+            <el-input v-model="formData.checkRemark" type="textarea" placeholder="请输入内容" />
+          </el-form-item>
+          <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+              <el-button
+                type="primary"
+                plain
+                icon="el-icon-plus"
+                size="mini"
+                @click="handleAddUser"
+              >新增人员</el-button>
+            </el-col>
+          </el-row>
+
+          <el-table v-loading="loading" :data="formData.userInfos">
+            <el-table-column label="人员姓名" align="center" prop="userName" />
+            <el-table-column label="单位" align="center" prop="companyName" />
+            <el-table-column label="证据号码" align="center" prop="idCard">
+            </el-table-column>
+            <el-table-column label="证件" align="center" prop="imgFile" >
+              <template slot-scope="scope">
+                <img width="50" height="50" :src="scope.row.imgFile">
+              </template>
+            </el-table-column>>
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+              <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                @click="editUser(scope.row)"
+              >编辑</el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  @click="remove(scope.row)"
+                >移除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-form>
+      </div>
+
+      <DialogCom title="添加出入人员" :visible.sync="open" width="800px" append-to-body @close="onHideUser">
+        <el-form ref="formUser" :model="userInfo" :rules="userInfoRules" label-width="80px">
+          <el-form-item label="人员姓名" prop="userName">
+            <el-input v-model="userInfo.userName" placeholder="请输入姓名" />
+          </el-form-item>
+          <el-form-item label="单位" prop="companyName">
+            <el-input v-model="userInfo.companyName" placeholder="请输入单位" />
+          </el-form-item>
+          <el-form-item label="证件号码" prop="idCard">
+            <el-input v-model="userInfo.idCard" placeholder="请输入证件号码" />
+          </el-form-item>
+          <el-form-item prop="imgFile" label="上传图片">
+            <imgUpload ref="uploadimage" type="alone" :value="userInfo.imgFile"
+                       @input="imageListChanged"></imgUpload>
+          </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitUser">确 定</el-button>
+          <el-button @click="onHideUser">取 消</el-button>
+        </div>
+      </DialogCom>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="onHide">取 消</el-button>
+      </div>
+    </DialogCom>
+  </div>
+
+</template>
+<script>
+import {mapState, mapMutations} from "vuex";
+import { listLetter, getLetter, delLetter, addLetter, updateLetter } from "@/api/core/letter";
+import OrgTreeSelect from "@/components/orgTreeSelect";
+import KFileUpload from "@/components/K-FileUpload/index.vue";
+import dayjs from "dayjs";
+import imgUpload from "@/components/ImageUpload";
+export default {
+  components: {OrgTreeSelect,KFileUpload,imgUpload},
+  data() {
+    const params = this.$route.params;
+    return {
+      id: params ? params.id : null,
+      isShow: false,
+      formData: this.reset(),
+      formDataRules: {
+        letterName: [{required: true, message: "请输入介绍信名称"}],
+        orgId: [{required: true, message: "请选择接待机构"}],
+        startTime: [{required: true,  message: "请选择有效开始时间"}],
+        endTime: [{required: true, message: "请选择有效结束时间"}],
+        userInfos:[{required: true, message: "请添加出入人员"}],
+      },
+      userInfoRules: {
+        userName: [{required: true, message: "请输入姓名"}],
+        companyName: [{required: true, message: "请输入单位"}],
+        idCard: [{required: true, message: "请输入证件号码"}],
+      },
+      startDatepickerOptions: {
+        disabledDate:this.endDisabledDate,
+      },
+      endDatepickerOptions: {
+        disabledDate: this.endDisabledDate,
+      },
+      formFileListDefualtValue: [],
+      open: false,
+      userInfo:this.resetUserInfo(),
+      imageList:[]
+    };
+  },
+  dicts: ['letter_status'],
+  props: {},
+  watch: {},
+  created() {
+  },
+  computed: {
+    ...mapState(["loginUser", "org",]),
+
+  },
+  methods: {
+    ...mapMutations([]),
+    reset(other = {}) {
+      return {
+        letterName:null,
+        orgId:null,
+        startTime: null,
+        endTime: null,
+        checkRemark: null,
+        fileList: [],
+        userInfos:[],
+        ...other,
+      };
+    },
+    resetUserInfo(){
+      return {
+        userName: null,
+        companyName:null,
+        idCard:null,
+        imgFile:null,
+      }
+    },
+
+    async show(id, other = {}) {
+      this.isShow = true;
+    },
+    handleAddUser() {
+      this.open = true;
+    },
+    imageListChanged(list) {
+      this.userInfo.imgFile = list;
+    },
+    endDisabledDate(time) {
+      //小于开始日期禁止选择
+      let startDate = new Date();
+      startDate.setTime(startDate.getTime() - 3600 * 1000 * 24);
+      if (this.formData.trainingStartDateTime) {
+        startDate = new Date(dayjs(this.formData.trainingStartDateTime).format('YYYY-MM-DD'));
+        startDate.setTime(startDate.getTime() - 3600 * 1000 * 24);
+      }
+      return time.getTime() < new Date(startDate).getTime()
+
+    },
+    startDateChanged(time) {
+      if (dayjs(this.formData.startTime).isAfter(dayjs(this.formData.endTime))) {
+        this.formData.endTime = this.formData.startTime;
+      }
+    },
+    endDateChanged(time) {
+      if (dayjs(this.formData.startTime).isAfter(dayjs(this.formData.endTime))) {
+        this.formData.startTime = this.formData.endTime;
+      }
+    },
+    onHide() {
+      this.isShow = false;
+      this.formData = this.reset();
+    },
+    onHideUser() {
+      this.open = false;
+      this.imageList=[];
+      this.userInfo = this.resetUserInfo();
+    },
+    submitUser(){
+      this.$refs["formUser"].validate(valid => {
+          if (valid) {
+            this.open = false;
+            console.log("================",this.userInfo);
+            this.formData.userInfos.push(this.userInfo);
+            this.userInfo = this.resetUserInfo();
+            this.imageList=[];
+          }})
+    },
+    submitForm(){
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if(this.formData.userInfos.length<=0){
+            this.$message.error("请添加人员");
+            return;
+          }
+          console.log("================",this.formData);
+          if (this.formData.id != null) {
+            updateLetter(this.formData).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.isShow = false;
+              this.formData = this.reset();
+              this.getList();
+            });
+          } else {
+            addLetter(this.formData).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.isShow = false;
+              this.formData = this.reset();
+              this.getList();
+            });
+          }
+
+        }})
+    },
+    editUser(row){
+      this.open = true;
+      this.userInfo = row;
+    },
+    remove(row){
+      console.log("================",row);
+      this.formData.userInfos.splice(this.formData.userInfos.indexOf(row),1);
+    }
+
+  },
+  mounted() {
+  },
+};
+</script>
+
+
+
+

+ 232 - 0
src/views/core/letter/index.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="介绍信名称" prop="letterName">
+        <el-input
+          v-model="queryParams.letterName"
+          placeholder="请输入介绍信名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="checkStatus">
+        <el-select v-model="queryParams.checkStatus" placeholder="请选择状态" clearable>
+          <el-option
+            v-for="dict in dict.type.letter_status"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </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="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['core:letter:add']"
+        >录入介绍信</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="letterList" @selection-change="handleSelectionChange">
+      <el-table-column label="介绍信名称" align="center" prop="letterName" />
+      <el-table-column label="介绍信有效期" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ scope.row.startTime}}~{{scope.row.endTime}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="接待机构" align="center" prop="checkStatus" />
+      <el-table-column label="创建机构" align="center" prop="checkStatus" />
+      <el-table-column label="状态" align="center" prop="checkStatus" />
+      <el-table-column label="备注" align="center" prop="checkRemark" />
+      <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="['core:letter:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['core:letter: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"
+    />
+    <dialog-add-letter ref="dialogAddLetter" @success="handleQuery(true)"></dialog-add-letter>
+  </div>
+</template>
+
+<script>
+import { listLetter, getLetter, delLetter, addLetter, updateLetter } from "@/api/core/letter";
+import dialogAddLetter from "./dialog.addletter";
+
+export default {
+  components: {dialogAddLetter},
+  dicts: ['letter_status'],
+  name: "Letter",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 介绍信表格数据
+      letterList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        letterName: null,
+        checkStatus: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询介绍信列表 */
+    getList() {
+      this.loading = true;
+      listLetter(this.queryParams).then(response => {
+        this.letterList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        letterName: null,
+        startTime: null,
+        endTime: null,
+        letterFile: null,
+        orgId: null,
+        orgPath: null,
+        orgName: null,
+        checkUser: null,
+        checkTime: null,
+        checkStatus: null,
+        checkRemark: null,
+        createBy: null,
+        createTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    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
+    },
+    /** 新增按钮操作 */
+    handleAdd(id) {
+      this.$refs["dialogAddLetter"].show(id,{});
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getLetter(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改介绍信";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateLetter(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addLetter(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除介绍信编号为"' + ids + '"的数据项?').then(function() {
+        return delLetter(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/letter/export', {
+        ...this.queryParams
+      }, `letter_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 6 - 4
src/views/resumption/plan/dialog.edit.vue

@@ -176,14 +176,13 @@
             </el-col>
 
             <el-col :span="6">
-              <el-form-item prop="count" label="履职次数:" v-if="false">
+              <el-form-item prop="count" label="履职次数:" >
                 <el-input-number
-                  :disabled="getPlanExec()"
                   style="margin-left: 10px"
                   v-model="formData.count"
                   controls-position="right"
                   @change="handleChange"
-                  :min="1"
+                  :min="parentCount"
                   :max="9"
                 ></el-input-number>
               </el-form-item>
@@ -292,6 +291,7 @@ export default {
     // let o=statusOptions;
     // debugger
     return {
+      parentCount: 1,
       buildTime: null,
       isSubmitting: false,
       defaultSelect: [],
@@ -613,7 +613,7 @@ export default {
         tableData: null,
         itemList: null,
         planExec: null,
-        count: 0,
+        count: 1,
         note: null,
         planCreateOrgId: null,
         planCreateOrgName: null,
@@ -684,6 +684,7 @@ export default {
       this.getRolesByOrg();
     },
     async show(id, other = {}) {
+      this.parentCount =1;
       this.tempBuildTaskNow = false;
       this.buildTime = null;
       this.id = id;
@@ -693,6 +694,7 @@ export default {
       // console.log(id);
       if (id !== undefined) {
         await api.get(id).then((res) => {
+          this.parentCount = res.data.parentCount;
           // console.log(res, "res");
           this.tableData = res.data.itemList;
         });

+ 4 - 0
src/views/resumption/plan/index.vue

@@ -291,6 +291,7 @@
                 v-hasPermi="['system:user:edit']"
                 >编辑</el-button
               >
+              <el-divider direction="vertical" v-if="eqOrg(r.row)"></el-divider>
               <el-button
                 v-if="eqOrg2(r.row)"
                 size="mini"
@@ -300,6 +301,7 @@
                 v-hasPermi="['system:user:remove']"
                 >删除</el-button
               >
+              <el-divider direction="vertical"  v-if="eqOrg2(r.row)"></el-divider>
               <el-button
                 size="mini"
                 type="text"
@@ -309,6 +311,7 @@
                 v-hasPermi="['system:user:remove']"
                 >下发</el-button
               >
+              <el-divider direction="vertical" v-if="checkCanPublish(r.row)"></el-divider>
               <el-button
                 size="mini"
                 type="text"
@@ -318,6 +321,7 @@
                 v-hasPermi="['system:user:remove']"
                 >下发</el-button
               >
+              <el-divider direction="vertical" v-if="newcheckCanPublish(r.row)"></el-divider>
               <el-button
                 size="mini"
                 type="text"

+ 1 - 3
src/views/safetyBook/aqbwbndjh/index.vue

@@ -73,7 +73,6 @@
           <el-table-column
             label="记录人"
             align="left"
-            width="160"
             prop="userName"
           >
 
@@ -81,14 +80,13 @@
           <el-table-column
             label="记录时间"
             align="center"
-            width="120"
+            width="160"
             prop="date"
           />
          
 
           <el-table-column
             label="操作"
-            width="180"
             fixed="right"
             align="center"
             class-name="small-padding fixed-width"

+ 42 - 2
src/views/system/user/index.vue

@@ -503,6 +503,7 @@
         :on-progress="handleFileUploadProgress"
         :on-success="handleFileSuccess"
         :auto-upload="false"
+        :before-upload="beforeUpload"
         drag
       >
         <i class="el-icon-upload"></i>
@@ -548,6 +549,7 @@ import { deptTreeSelect } from "@/api/system/public";
 import tableList from "@/mixins/tableList";
 import { getInfo } from "@/api/login";
 import { getRoles } from "@/api/system/public";
+import request from "@/utils/request";
 export default {
   name: "User",
   dicts: [
@@ -798,7 +800,7 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.queryParams.roleId=null;
+      this.queryParams.roleId = null;
       this.resetForm("queryForm");
       this.queryParams.onlyManager = false;
       this.handleQuery();
@@ -1006,7 +1008,7 @@ export default {
       this.download(
         "system/user/export",
         {
-          template:true,
+          template: true,
         },
         `人员信息管理-模板文件.xlsx`
       );
@@ -1036,6 +1038,8 @@ export default {
     // 文件上传中处理
     handleFileUploadProgress(event, file, fileList) {
       this.upload.isUploading = true;
+      console.log(file, "file");
+      console.log(fileList, "fileList");
     },
     // 文件上传成功处理
     handleFileSuccess(response, file, fileList) {
@@ -1051,8 +1055,44 @@ export default {
       );
       this.getList();
     },
+    beforeUpload(file) {
+      // file 为上传的文件对象
+      console.log(file, "file");
+      // 返回 false 可以阻止文件上传
+      // 创建 FormData 对象
+      const formData = new FormData();
+      // 添加文件到 FormData
+      formData.append("file", file);
+      request
+        .post("/system/user/importData", formData, {
+          headers: {
+            "Content-Type": "multipart/form-data",
+          },
+        })
+        .then((response) => {
+          // 在接收到后端响应时执行的逻辑
+          // console.log(response,"response");
+          this.upload.open = false;
+          this.upload.isUploading = false;
+          this.$refs.upload.clearFiles();
+          this.$alert(
+            "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+              response.msg +
+              "</div>",
+            "导入结果",
+            { dangerouslyUseHTMLString: true }
+          );
+          this.getList();
+        })
+        .catch((error) => {
+          // 在请求失败时执行的逻辑
+          // console.log(error,"error");
+        });
+      return false;
+    },
     // 提交上传文件
     submitFileForm() {
+      // console.log(this.$refs.upload.getFile(),"this.$refs.upload")
       this.$refs.upload.submit();
     },
   },