bzkf3 2 jaren geleden
bovenliggende
commit
2be4a507c8

+ 23 - 54
src/components/TreeNav/index.vue

@@ -1,38 +1,21 @@
 <template>
   <div class="left-tree">
-    <el-button
-      class="add-btn"
-      :style="{
-        display: status ? 'none' : '',
-        margin: '10px 10px',
-      }"
-      type="primary"
-      icon="el-icon-plus"
-      @click="updateTreeNode('add')"
-      >新增
+    <el-button class="add-btn" :style="{
+      display: status ? 'none' : '',
+      margin: '10px 10px',
+    }" type="primary" icon="el-icon-plus" @click="updateTreeNode('add')">新增
     </el-button>
 
     <el-tree :data="tree.data" :default-expand-all="true">
       <template #default="{ node, data }">
-        <span
-          class="custom-tree-node"
-          :class="{ 'tree-node-checked': data.id === tree.checked_id }"
-        >
+        <span class="custom-tree-node" :class="{ 'tree-node-checked': data.id === tree.checked_id }">
           <span class="tree-node-label" @click="renderTable(data)">
             <i class="el-icon-school"></i> {{ node.label }}
           </span>
           <span class="tree-node-options">
-            <a @click="updateTreeNode('edit', data)"
-              ><i class="el-icon-edit-outline"></i
-            ></a>
-            <el-popconfirm
-              confirm-button-text="确定"
-              cancel-button-text="取消"
-              icon="el-icon-info"
-              icon-color="red"
-              title="确定删除此节点及其子节点吗?"
-              @confirm="removeNode(node, data)"
-            >
+            <a @click="updateTreeNode('edit', data)"><i class="el-icon-edit-outline"></i></a>
+            <el-popconfirm confirm-button-text="确定" cancel-button-text="取消" icon="el-icon-info" icon-color="red"
+              title="确定删除此节点及其子节点吗?" @confirm="removeNode(node, data)">
               <a slot="reference"><i class="el-icon-delete"></i></a>
             </el-popconfirm>
           </span>
@@ -43,26 +26,14 @@
     <!--    @closed="dialog_init"-->
     <!--    @open="form_clear_validate"-->
 
-    <el-dialog
-      :title="dialog.title"
-      :close-on-click-modal="false"
-      :visible.sync="dialog.visible"
-      v-if="dialog.visible"
-      :destroy-on-close="true"
-      width="800px"
-    >
+    <el-dialog :title="dialog.title" :close-on-click-modal="false" :visible.sync="dialog.visible" v-if="dialog.visible"
+      :destroy-on-close="true" width="800px">
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="24" v-if="dialog.type === 'add'">
             <el-form-item label="上级节点" prop="pid">
-              <el-cascader
-                :options="tree.data"
-                :props="{ checkStrictly: true }"
-                clearable
-                filterable
-                placeholder="若不选默认添加为根节点"
-                v-model="form.pid"
-              ></el-cascader>
+              <el-cascader :options="tree.data" :props="{ checkStrictly: true }" clearable filterable
+                placeholder="" v-model="form.pid"></el-cascader>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -77,9 +48,7 @@
           </el-col>
           <el-col :span="24">
             <el-form-item>
-              <el-button type="primary" @click="onSubmit('form')"
-                >提交</el-button
-              >
+              <el-button type="primary" @click="onSubmit('form')">提交</el-button>
               <el-button @click="onReset('form')">重置</el-button>
             </el-form-item>
           </el-col>
@@ -147,13 +116,13 @@ export default {
         delTreeNode: hdlx_delete,
       },
     };
-    const validatePID = (rule, value, callback) => {
-      if (this.treeType === "zzjg" && !value) {
-        callback(new Error("组织架构不可为空"));
-      } else {
-        callback();
-      }
-    };
+    // const validatePID = (rule, value, callback) => {
+    //   if (this.treeType === "zzjg" && !value) {
+    //     callback(new Error("组织架构不可为空"));
+    //   } else {
+    //     callback();
+    //   }
+    // };
     return {
       common_data,
       // 弹出层
@@ -175,8 +144,8 @@ export default {
       // 表单验证规则
       rules: {
         pid: [
-          // {required: true, message: '上级节点不可为空'},
-          { validator: validatePID, trigger: "blur" },
+          { required: true, message: '上级节点不可为空' },
+          // { validator: validatePID, trigger: "blur" },
         ],
         name: [{ required: true, message: "名称不可为空" }],
         sort: [
@@ -378,7 +347,7 @@ export default {
   right: 0;
 }
 
-.custom-tree-node:hover > .tree-node-options {
+.custom-tree-node:hover>.tree-node-options {
   display: inline-block;
 }
 </style>

+ 11 - 1
src/utils/index.js

@@ -118,5 +118,15 @@ export function param2Obj(url) {
 
 
 export function getPreviewLink(url) {
-  return `https://view.officeapps.live.com/op/view.aspx?src=${url}`
+  const ext = url.split('.').pop()
+  switch (ext) {
+    case 'doc':
+    case 'docx':
+    case 'xls':
+    case 'xlsx':
+    case 'ppt':
+    case 'pptx':
+      return 'https://view.officeapps.live.com/op/view.aspx?src=' + url
+  }
+  return url
 }

+ 1 - 0
src/utils/request.js

@@ -23,6 +23,7 @@ service.interceptors.request.use(
         site: 'qqyxt',
         client: 'web',
         api: 'json',
+        issubmit: '1',
         // from: 'backend',
       },
       config.data || {}

+ 16 - 21
src/views/hdlb/hdjg/add/index.vue

@@ -14,7 +14,7 @@
                         <el-form-item label="联系方式" prop="hb_lxfs">
                             <el-input v-model="form.hb_lxfs" style="width: 100%;"></el-input>
                         </el-form-item>
-                        <el-form-item label="活动类型" prop="hb_hdlx">
+                        <!-- <el-form-item label="活动类型" prop="hb_hdlx">
                             <el-cascader
                                 v-model="form.hb_hdlx"
                                 :props="{ multiple: true, emitPath: false }"
@@ -24,7 +24,7 @@
                                 :options="hdlxOptions"
                                 placeholder
                             ></el-cascader>
-                        </el-form-item>
+                        </el-form-item> -->
                         <el-form-item label="标题" prop="hb_title">
                             <el-input v-model="form.hb_title" style="width: 100%;"></el-input>
                         </el-form-item>
@@ -32,16 +32,10 @@
                             <Tinymce v-model="form.hb_content" :height="300"></Tinymce>
                         </el-form-item>
                         <el-form-item label="其他附件">
-                            <FileUpload
-                                :full.sync="form.hb_files"
-                                multiple
-                                :limit="5"
-                                accept=".doc, .docx, .ppt, .pptx, .xls, .xlsx, .pps, .wps, .pdf, .txt"
-                            >
-                                <div
-                                    slot="tip"
-                                    class="el-upload__tip"
-                                >支持文件类型:doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、.pps、.wps、.pdf、.txt文件格式。</div>
+                            <FileUpload :full.sync="form.hb_files" multiple :limit="5"
+                                accept=".jpg(.jpeg),.png,.gif,.doc,.docx,.ppt,.pptx,.xls,.xlsx,.pdf,.mp4">
+                                <div slot="tip" class="el-upload__tip">支持文件类型:
+                                    .jpg(.jpeg)、.png、.gif、.doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、.pdf、.mp4文件格式。</div>
                             </FileUpload>
                         </el-form-item>
 
@@ -125,14 +119,14 @@ export default defineComponent({
             });
         }
 
-        const hdlxOptions = ref([])
+        // const hdlxOptions = ref([])
 
-        function handleQueryHdlx(value) {
-            queryHdlxApi({ keyword: value }).then(res => {
-                hdlxOptions.value = res.data.one_info
-            })
-        }
-        handleQueryHdlx()
+        // function handleQueryHdlx(value) {
+        //     queryHdlxApi({ keyword: value }).then(res => {
+        //         hdlxOptions.value = res.data.one_info
+        //     })
+        // }
+        // handleQueryHdlx()
 
 
         return {
@@ -142,7 +136,7 @@ export default defineComponent({
             handleSubmit,
             handleCancel,
             // handleQueryHdlx,
-            hdlxOptions,
+            // hdlxOptions,
 
         }
     }
@@ -158,8 +152,9 @@ export default defineComponent({
         border-bottom: 1px solid #dcdfe6;
         color: #606266;
     }
+
     .form_wrapper {
         padding: 16px;
     }
 }
-</style>
+</style>

+ 9 - 21
src/views/hdlb/hdjg/edit/index.vue

@@ -2,14 +2,7 @@
     <div class="_wrapper">
         <div class="title">修改活动结果</div>
         <div class="form_wrapper" v-loading="loading">
-            <el-form
-                v-if="!loading"
-                ref="formRef"
-                :model="form"
-                label-width="180px"
-                size="small"
-                :rules="rules"
-            >
+            <el-form v-if="!loading" ref="formRef" :model="form" label-width="180px" size="small" :rules="rules">
                 <el-row>
                     <el-col :span="24">
                         <el-form-item label="作者单位" prop="hb_hzdw">
@@ -21,7 +14,7 @@
                         <el-form-item label="联系方式" prop="hb_lxfs">
                             <el-input v-model="form.hb_lxfs" style="width: 100%;"></el-input>
                         </el-form-item>
-                        <el-form-item label="活动类型" prop="hb_hdlx">
+                        <!-- <el-form-item label="活动类型" prop="hb_hdlx">
                             <el-cascader
                                 v-model="form.hb_hdlx"
                                 :props="{ multiple: true, emitPath: false }"
@@ -31,7 +24,7 @@
                                 :options="hdlxOptions"
                                 placeholder
                             ></el-cascader>
-                        </el-form-item>
+                        </el-form-item> -->
                         <el-form-item label="标题" prop="hb_title">
                             <el-input v-model="form.hb_title" style="width: 100%;"></el-input>
                         </el-form-item>
@@ -39,16 +32,10 @@
                             <Tinymce v-model="form.hb_content" :height="300"></Tinymce>
                         </el-form-item>
                         <el-form-item label="其他附件">
-                            <FileUpload
-                                :full.sync="form.hb_files"
-                                multiple
-                                :limit="5"
-                                accept=".doc, .docx, .ppt, .pptx, .xls, .xlsx, .pps, .wps, .pdf, .txt"
-                            >
-                                <div
-                                    slot="tip"
-                                    class="el-upload__tip"
-                                >支持文件类型:doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、.pps、.wps、.pdf、.txt文件格式。</div>
+                            <FileUpload :full.sync="form.hb_files" multiple :limit="5"
+                                accept=".jpg(.jpeg),.png,.gif,.doc,.docx,.ppt,.pptx,.xls,.xlsx,.pdf,.mp4">
+                                <div slot="tip" class="el-upload__tip">支持文件类型:
+                                    .jpg(.jpeg)、.png、.gif、.doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、.pdf、.mp4文件格式。</div>
                             </FileUpload>
                         </el-form-item>
 
@@ -185,8 +172,9 @@ export default defineComponent({
         border-bottom: 1px solid #dcdfe6;
         color: #606266;
     }
+
     .form_wrapper {
         padding: 16px;
     }
 }
-</style>
+</style>

+ 1 - 1
src/views/hdlb/index.vue

@@ -67,7 +67,7 @@
         <el-table :data="tableData" tooltip-effect="dark" style="width: 100%">
           <el-table-column type="selection" width="55"></el-table-column>
           <el-table-column label="活动名称" show-overflow-tooltip width="auto" prop="hhg_name"></el-table-column>
-          <el-table-column label="批次" width="100" prop="hhg_src_id"></el-table-column>
+          <!-- <el-table-column label="批次" width="100" prop="hhg_src_id"></el-table-column> -->
           <el-table-column label="活动类型" show-overflow-tooltip width="300" prop="hhg_cate">
             <template slot-scope="scope">{{
                 scope.row.cate_info.reduce((p, c) => `${p} ${c.hh_name}`, "")

+ 2 - 2
src/views/mhgl/dmbwh/index.vue

@@ -46,14 +46,14 @@
             </template>
           </el-table-column>
 
-          <el-table-column label="是否启用">
+          <el-table-column label="是否启用" width="140">
             <template slot-scope="scope">
               <el-switch v-model="scope.row.sfqy" active-value="1" inactive-value="0"
                 @change="singleSwitch($event, scope.row)" v-if="scope.row.pid !== '0'" />
             </template>
           </el-table-column>
 
-          <el-table-column label="操作">
+          <el-table-column label="操作" width="180">
             <template slot-scope="scope" v-if="scope.row.pid !== '0'">
               <el-link type="primary" @click="codeEdit(scope.$index, scope.row)">编辑</el-link>
               <span style="color: #409eff; margin: 0 10px">|</span>

+ 7 - 2
src/views/xtgl/hdlxgl/api.js

@@ -1,11 +1,11 @@
 import request from '@/utils/request'
-export const org_list_tree = (data={}) =>
+export const org_list_tree = (data = {}) =>
   request({
     url: 'user/org/list_tree',
     data,
   })
 
-export const hdlx_list_tree = (data={}) =>
+export const hdlx_list_tree = (data = {}) =>
   request({
     url: 'hdpb/hdlx/list_tree',
     data,
@@ -30,6 +30,11 @@ export const hdlx_add = (data = {}) =>
     url: 'hdpb/hdlx/add',
     data,
   })
+export const hdlx_delete = (data = {}) =>
+  request({
+    url: 'hdpb/hdlx/delete',
+    data
+  })
 export const user_list = (data = {}) =>
   request({
     url: 'user/main/index',

+ 268 - 0
src/views/xtgl/hdlxgl/index copy.vue

@@ -0,0 +1,268 @@
+<template>
+  <div>
+    <el-row>
+      <el-col :span="24">
+        <tree-nav
+          ref="tree"
+          @renderTable="updateDeptId"
+          treeType="hdlxgl"
+        ></tree-nav>
+      </el-col>
+      <!-- <el-col :span="19">
+        <el-container>
+          <el-header>
+            <div>
+              <el-input
+                placeholder="请输入搜索关键字"
+                suffix-icon="el-icon-search"
+                v-model="searchText"
+                style="width: 200px"
+              ></el-input>
+              <el-button
+                type="primary"
+                @click="tableParams.keyword = searchText"
+                >搜索</el-button
+              >
+            </div>
+            <div>
+              <el-button type="primary" @click="downloadExcel"
+                >下载导入类别模板</el-button
+              >
+              <el-upload
+                class="upload-demo"
+                :action="import_url"
+                :show-file-list="false"
+                :data="import_data"
+                :on-success="import_success"
+                style="display: inline-block; margin: 0 10px"
+              >
+                <el-button type="primary">导入类别</el-button>
+              </el-upload>
+              <el-button type="danger" @click="delAdmin">批量删除</el-button>
+            </div>
+          </el-header>
+          <el-main>
+            <el-table
+              ref="multipleTable"
+              :data="tableData"
+              tooltip-effect="dark"
+              style="width: 100%"
+              @selection-change="(val) => (this.activeTableChecked = val)"
+            >
+              <el-table-column type="selection" width="55"></el-table-column>
+              <el-table-column label="姓名">
+                <template slot-scope="scope">{{
+                  scope.row.user_name
+                }}</template>
+              </el-table-column>
+              <el-table-column label="用户名">
+                <template slot-scope="scope">{{
+                  scope.row.user_realname
+                }}</template>
+              </el-table-column>
+              <el-table-column label="手机号">
+                <template slot-scope="scope">{{
+                  scope.row.user_phone
+                }}</template>
+              </el-table-column>
+              <el-table-column label="部门">
+                <template slot-scope="scope">
+                  {{
+                    scope.row.org.dept_full.reduce(function (path, data) {
+                      return (path += "/" + data.dept_name || "");
+                    }, "")
+                  }}
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="120">
+                <template slot-scope="scope">
+                  <el-link type="warning" @click="delSingleAdmin(scope.row)"
+                    >删除</el-link
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-main>
+        </el-container>
+      </el-col> -->
+    </el-row>
+  </div>
+</template>
+
+<script>
+import TreeNav from "@/components/TreeNav/index.vue";
+
+import {
+  hdlx_detail,
+  hdlx_list_tree,
+  hdlx_members_manage,
+  org_list_tree,
+} from "./api";
+import axios from "axios";
+
+import { useUserStore } from "@/stores/user";
+const { token } = useUserStore();
+
+export default {
+  components: {
+    TreeNav,
+  },
+  watch: {
+    // 监听传参改变
+    tableParams: {
+      handler(newData) {
+        this.renderTable(newData);
+      },
+      immediate: true,
+      deep: true,
+    },
+  },
+  data() {
+    return {
+      deptOptions: [], // 部门组织级联
+      hdlxOptions: [], // 活动类型级联
+      searchText: "",
+      tableData: [],
+      // total_rows: 0,
+      userDialogVisible: false,
+      user_org: {
+        uo_user_name: "",
+      },
+      tableParams: {
+        hh_id: "",
+        keyword: "",
+      },
+      activeUserId: "",
+      activeTableChecked: [],
+      dialogType: "",
+      // 导入导出
+      import_url: window.globalVariables.api + "hdpb/hdlx/import_template",
+      import_data: {},
+    };
+  },
+  created() {
+    this.loadingCascadeData();
+  },
+  methods: {
+    import_success() {
+      this.$message.success("导入成功");
+      this.$refs.tree.getTreeData();
+    },
+    downloadExcel() {
+      const download_url = `${window.globalVariables.api}hdlx_tpl.xlsx?token=${token}&api=json`;
+      let tagA = document.createElement("a");
+      tagA.download = download_url;
+      tagA.href = download_url;
+      tagA.click();
+    },
+    loadingCascadeData() {
+      org_list_tree().then((res) => {
+        if (res.code === "1") {
+          this.deptOptions = res.data.one_info;
+        }
+      });
+      hdlx_list_tree().then((res) => {
+        if (res.code === "1") {
+          this.hdlxOptions = res.data.one_info;
+        }
+      });
+    },
+    updateDeptId(data) {
+      this.activeDeptName = data.msg.label;
+      this.tableParams.hh_id = data.msg.id;
+    },
+    renderTable(data = this.tableParams) {
+      hdlx_detail(data).then((res) => {
+        if (res.code === "1") {
+          this.tableData = res.data.one_info.members;
+          // this.total_rows = res.data.total_rows * 1
+        }
+      });
+    },
+    // 获取用户多选列表
+    getCheckedUsers() {
+      const checkedDatas = this.activeTableChecked;
+      if (checkedDatas.length <= 0) {
+        this.$message.info("请勾选需要操作的用户");
+        return false;
+      }
+      let user_id_list = [];
+      checkedDatas.forEach((item) => {
+        item.user_id ? user_id_list.push(item.user_id) : null;
+      });
+      return user_id_list;
+    },
+    delAdmin() {
+      let user_id_list = this.getCheckedUsers();
+      if (user_id_list) {
+        this.$confirm("此操作将删除多个管理员, 是否继续?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(() => {
+            const data = {
+              hhg_id: this.tableParams.hh_id,
+              type: "del",
+              user_ids: this.getCheckedUsers().toString(),
+            };
+            hdlx_members_manage(data).then((res) => {
+              if (res.code === "1") {
+                this.$message.success("删除成功");
+                this.renderTable();
+              }
+            });
+          })
+          .catch(() => {
+            this.$message({
+              type: "info",
+              message: "已取消删除",
+            });
+          });
+      }
+    },
+    delSingleAdmin(row) {
+      console.log(row);
+      this.$confirm(
+        `此操作将删除\"管理员\"${row.user_realname}, 是否继续?`,
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(() => {
+          const data = {
+            hh_id: this.tableParams.hh_id,
+            type: "del",
+            user_ids: row.user_id,
+          };
+          hdlx_members_manage(data).then((res) => {
+            if (res.code === "1") {
+              this.$message.success("删除成功");
+              this.renderTable();
+            }
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+header {
+  display: flex;
+  justify-content: space-between;
+}
+
+::v-deep .el-cascader {
+  display: block;
+}
+</style>

+ 174 - 250
src/views/xtgl/hdlxgl/index.vue

@@ -1,268 +1,192 @@
 <template>
   <div>
-    <el-row>
-      <el-col :span="24">
-        <tree-nav
-          ref="tree"
-          @renderTable="updateDeptId"
-          treeType="hdlxgl"
-        ></tree-nav>
-      </el-col>
-      <!-- <el-col :span="19">
-        <el-container>
-          <el-header>
-            <div>
-              <el-input
-                placeholder="请输入搜索关键字"
-                suffix-icon="el-icon-search"
-                v-model="searchText"
-                style="width: 200px"
-              ></el-input>
-              <el-button
-                type="primary"
-                @click="tableParams.keyword = searchText"
-                >搜索</el-button
-              >
-            </div>
-            <div>
-              <el-button type="primary" @click="downloadExcel"
-                >下载导入类别模板</el-button
-              >
-              <el-upload
-                class="upload-demo"
-                :action="import_url"
-                :show-file-list="false"
-                :data="import_data"
-                :on-success="import_success"
-                style="display: inline-block; margin: 0 10px"
-              >
-                <el-button type="primary">导入类别</el-button>
-              </el-upload>
-              <el-button type="danger" @click="delAdmin">批量删除</el-button>
-            </div>
-          </el-header>
-          <el-main>
-            <el-table
-              ref="multipleTable"
-              :data="tableData"
-              tooltip-effect="dark"
-              style="width: 100%"
-              @selection-change="(val) => (this.activeTableChecked = val)"
-            >
-              <el-table-column type="selection" width="55"></el-table-column>
-              <el-table-column label="姓名">
-                <template slot-scope="scope">{{
-                  scope.row.user_name
-                }}</template>
-              </el-table-column>
-              <el-table-column label="用户名">
-                <template slot-scope="scope">{{
-                  scope.row.user_realname
-                }}</template>
-              </el-table-column>
-              <el-table-column label="手机号">
-                <template slot-scope="scope">{{
-                  scope.row.user_phone
-                }}</template>
-              </el-table-column>
-              <el-table-column label="部门">
-                <template slot-scope="scope">
-                  {{
-                    scope.row.org.dept_full.reduce(function (path, data) {
-                      return (path += "/" + data.dept_name || "");
-                    }, "")
-                  }}
-                </template>
-              </el-table-column>
-              <el-table-column label="操作" width="120">
-                <template slot-scope="scope">
-                  <el-link type="warning" @click="delSingleAdmin(scope.row)"
-                    >删除</el-link
-                  >
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-main>
-        </el-container>
-      </el-col> -->
-    </el-row>
+    <el-button type="primary" @click="handleAdd('0')">新增</el-button>
+
+    <el-table :data="tableData" tooltip-effect="dark" style="width: 100%" row-key="id" default-expand-all>
+      <el-table-column label="类型名称" prop="label">
+        <template slot-scope="scope">
+          <span :class="{ text_bold: scope.row.pid === '0' }">{{ scope.row.label }}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="操作" width="200">
+        <template slot-scope="scope">
+          <el-link type="primary" @click="handleAdd(scope.row.id)">新增</el-link>
+          <span style="color: #409eff; margin: 0 10px">|</span>
+          <el-link type="primary" @click="handleEdit(scope.row)">编辑</el-link>
+          <span style="color: #409eff; margin: 0 10px">|</span>
+          <el-link type="primary" @click="handleDel(scope.row)">删除</el-link>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <el-dialog title="活动类型管理" :visible.sync="dialogFormVisible">
+      <el-form :model="dialogForm" :rules="rules" ref="dialogFormRef">
+        <!-- <el-form-item label="所属类型" prop="hh_pid">
+          <el-cascader v-model="dialogForm.hh_pid" :options="tableData">
+          </el-cascader>
+        </el-form-item> -->
+        <el-form-item label="类型名称" prop="hh_name">
+          <el-input v-model="dialogForm.hh_name" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="排序" prop="hh_sort">
+          <el-input v-model="dialogForm.hh_sort" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="onSubmit('dialogForm')">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import TreeNav from "@/components/TreeNav/index.vue";
+import { defineComponent, ref } from '@vue/composition-api';
+import { hdlx_list_tree, hdlx_delete, hdlx_add, hdlx_edit } from './api'
+import { Message } from 'element-ui';
+export default defineComponent({
+  setup() {
+    const tableData = ref([]);
 
-import {
-  hdlx_detail,
-  hdlx_list_tree,
-  hdlx_members_manage,
-  org_list_tree,
-} from "./api";
-import axios from "axios";
+    const handleQuery = () => {
+      hdlx_list_tree().then(res => {
+        tableData.value = res.data.one_info;
+      })
+    }
+    handleQuery()
 
-import { useUserStore } from "@/stores/user";
-const { token } = useUserStore();
+    let dialogMode = undefined //'add'|'edit'
+    function handleAdd(pid) {
+      dialogMode = 'add'
+      dialogForm.value = {
+        hh_pid: pid,
+        hh_name: '',
+        hh_sort: '1',
+      }
+      dialogFormVisible.value = true;
+    }
 
-export default {
-  components: {
-    TreeNav,
-  },
-  watch: {
-    // 监听传参改变
-    tableParams: {
-      handler(newData) {
-        this.renderTable(newData);
-      },
-      immediate: true,
-      deep: true,
-    },
-  },
-  data() {
-    return {
-      deptOptions: [], // 部门组织级联
-      hdlxOptions: [], // 活动类型级联
-      searchText: "",
-      tableData: [],
-      // total_rows: 0,
-      userDialogVisible: false,
-      user_org: {
-        uo_user_name: "",
-      },
-      tableParams: {
-        hh_id: "",
-        keyword: "",
-      },
-      activeUserId: "",
-      activeTableChecked: [],
-      dialogType: "",
-      // 导入导出
-      import_url: window.globalVariables.api + "hdpb/hdlx/import_template",
-      import_data: {},
-    };
-  },
-  created() {
-    this.loadingCascadeData();
-  },
-  methods: {
-    import_success() {
-      this.$message.success("导入成功");
-      this.$refs.tree.getTreeData();
-    },
-    downloadExcel() {
-      const download_url = `${window.globalVariables.api}hdlx_tpl.xlsx?token=${token}&api=json`;
-      let tagA = document.createElement("a");
-      tagA.download = download_url;
-      tagA.href = download_url;
-      tagA.click();
-    },
-    loadingCascadeData() {
-      org_list_tree().then((res) => {
-        if (res.code === "1") {
-          this.deptOptions = res.data.one_info;
-        }
-      });
-      hdlx_list_tree().then((res) => {
-        if (res.code === "1") {
-          this.hdlxOptions = res.data.one_info;
-        }
-      });
-    },
-    updateDeptId(data) {
-      this.activeDeptName = data.msg.label;
-      this.tableParams.hh_id = data.msg.id;
-    },
-    renderTable(data = this.tableParams) {
-      hdlx_detail(data).then((res) => {
-        if (res.code === "1") {
-          this.tableData = res.data.one_info.members;
-          // this.total_rows = res.data.total_rows * 1
-        }
-      });
-    },
-    // 获取用户多选列表
-    getCheckedUsers() {
-      const checkedDatas = this.activeTableChecked;
-      if (checkedDatas.length <= 0) {
-        this.$message.info("请勾选需要操作的用户");
-        return false;
+    function handleEdit(row) {
+      dialogMode = 'edit'
+      dialogForm.value = {
+        hh_id: row.id,
+        // hh_pid: row.pid,
+        hh_name: row.label,
+        hh_sort: row.sort,
       }
-      let user_id_list = [];
-      checkedDatas.forEach((item) => {
-        item.user_id ? user_id_list.push(item.user_id) : null;
-      });
-      return user_id_list;
-    },
-    delAdmin() {
-      let user_id_list = this.getCheckedUsers();
-      if (user_id_list) {
-        this.$confirm("此操作将删除多个管理员, 是否继续?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
+      dialogFormVisible.value = true;
+    }
+
+    function handleDel(row) {
+      this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        hdlx_delete({
+          hh_id: row.id
+        }).then(res => {
+          if (res.code === '1') {
+            Message({
+              type: 'success',
+              message: '删除成功!'
+            });
+            handleQuery()
+          } else { }
         })
-          .then(() => {
-            const data = {
-              hhg_id: this.tableParams.hh_id,
-              type: "del",
-              user_ids: this.getCheckedUsers().toString(),
-            };
-            hdlx_members_manage(data).then((res) => {
-              if (res.code === "1") {
-                this.$message.success("删除成功");
-                this.renderTable();
+      }).catch(() => {
+        Message.info('已取消删除')
+      })
+    }
+
+    const dialogFormVisible = ref(false);
+    const dialogForm = ref({
+      hh_pid: '',
+      hh_name: '',
+      hh_sort: '1'
+    });
+    const rules = {
+      hh_pid: [
+        { required: true, message: '请选择所属类型', trigger: 'submit' },
+
+      ],
+      hh_name: [
+        { required: true, message: '请输入类型名称', trigger: 'submit' },
+      ],
+      hh_sort: [
+        { required: true, message: '请输入排序', trigger: 'submit' },
+      ],
+    };
+
+    const dialogFormRef = ref()
+    function onSubmit() {
+      console.log('dialogFormRef :>> ', dialogFormRef);
+      dialogFormRef.value.validate(valid => {
+        if (valid) {
+          if (dialogMode === 'add') {
+            hdlx_add({ hdpb_hdlx: dialogForm.value }).then(res => {
+              if (res.code === '1') {
+                Message({
+                  type: 'success',
+                  message: '新增成功!'
+                });
+                dialogFormVisible.value = false;
+                handleQuery()
+              } else { }
+            })
+          } else if (dialogMode === 'edit') {
+            hdlx_edit({
+              hh_id: dialogForm.value.hh_id,
+              hdpb_hdlx: {
+                hh_name: dialogForm.value.hh_name,
+                hh_sort: dialogForm.value.hh_sort,
               }
-            });
-          })
-          .catch(() => {
-            this.$message({
-              type: "info",
-              message: "已取消删除",
-            });
-          });
-      }
-    },
-    delSingleAdmin(row) {
-      console.log(row);
-      this.$confirm(
-        `此操作将删除\"管理员\"${row.user_realname}, 是否继续?`,
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
+            }).then(res => {
+              if (res.code === '1') {
+                Message({
+                  type: 'success',
+                  message: '编辑成功!'
+                });
+                dialogFormVisible.value = false;
+                handleQuery()
+              } else { }
+            })
+          }
+        } else {
+          return false;
         }
-      )
-        .then(() => {
-          const data = {
-            hh_id: this.tableParams.hh_id,
-            type: "del",
-            user_ids: row.user_id,
-          };
-          hdlx_members_manage(data).then((res) => {
-            if (res.code === "1") {
-              this.$message.success("删除成功");
-              this.renderTable();
-            }
-          });
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "已取消删除",
-          });
-        });
-    },
-  },
-};
+      });
+      // this.$refs.dialogFormRef.validate(valid => {
+      //   if (valid) {
+      //     this.$refs.dialogFormRef.resetFields();
+      //     this.dialogFormVisible = false;
+      //   } else {
+      //     return false;
+      //   }
+      // });
+    }
+
+
+    return {
+      tableData,
+      handleAdd,
+      handleEdit,
+      handleDel,
+      dialogFormRef,
+      dialogForm,
+      rules,
+      dialogFormVisible,
+      onSubmit
+    }
+  }
+})
 </script>
 
-<style lang="scss" scoped>
-header {
-  display: flex;
-  justify-content: space-between;
-}
 
-::v-deep .el-cascader {
-  display: block;
+<style lang="scss">
+.text_bold {
+  font-weight: bold;
+  font-size: 15px;
 }
 </style>

+ 2 - 2
src/views/xtgl/pfmb/edit/index.vue

@@ -58,8 +58,8 @@
                         </el-form-item>
                         <el-form-item label="属性" prop="hp_attrib" v-if="currentMode === 'add'">
                             <el-radio-group v-model="rightForm.hp_attrib">
-                                <el-radio label="0">目录</el-radio>
-                                <el-radio label="1">评分项</el-radio>
+                                <el-radio label="0">目录设置</el-radio>
+                                <el-radio label="1">细则设置</el-radio>
                             </el-radio-group>
                         </el-form-item>
                         <template v-if="rightForm.hp_attrib === '1'">

+ 74 - 122
src/views/xtgl/zjk/index.vue

@@ -1,14 +1,15 @@
 <template>
   <div>
     <el-row>
-      <el-col :span="5">
+      <el-col :span="8">
         <tree-nav @renderTable="updateDeptId" treeType="zjk"></tree-nav>
       </el-col>
-      <el-col :span="19">
+      <el-col :span="16">
         <el-container>
           <el-main>
-            <div class="position:relative">
+            <div style="margin-bottom: 20px;">
               <el-button type="primary" @click="showDialog('add')" class="el-icon-plus">新增</el-button>
+              <el-button type="primary" @click="" class="el-icon-plus" v-show="activeName === 'waipin'">导入</el-button>
 
               <div style="
                   position: absolute;
@@ -23,96 +24,41 @@
             </div>
 
             <el-tabs v-model="activeName" @tab-click="(instance) => (tableParams.type = instance.name)">
-              <el-tab-pane label="外聘" name="waipin">
-                <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%">
-                  <el-table-column type="selection" width="55"></el-table-column>
-                  <el-table-column label="用户名">
-                    <template slot-scope="scope">{{
-                        scope.row.user_name
-                    }}</template>
-                  </el-table-column>
-                  <el-table-column label="姓名">
-                    <template slot-scope="scope">{{
-                        scope.row.user_realname
-                    }}</template>
-                  </el-table-column>
-                  <el-table-column label="部门">
-                    <template slot-scope="scope">
-                      {{
-                          scope.row.org_info.dept_full.reduce(function (
-                            path,
-                            data
-                          ) {
-                            return (path += "/" + data.dept_name || "");
-                          },
-                            "")
-                      }}
-                    </template>
-                  </el-table-column>
-                  <el-table-column label="角色">
-                    <template slot-scope="scope">{{
-                        scope.row.user_role_name
-                    }}</template>
-                  </el-table-column>
-                  <!-- <el-table-column label="管理活动类型" width="200" :show-overflow-tooltip="true">
-                    <template slot-scope="scope">
-                      {{
-                          scope.row.my_cates.hh_ids_full.reduce(function (
-                            result,
-                            item
-                          ) {
-                            return (result += item.hh_name + ",");
-                          },
-                            "")
-                      }}
-                    </template>
-                  </el-table-column> -->
-                  <el-table-column label="账号类型">
-                    <template slot-scope="scope">{{
-                        scope.row.user_level === "1" ? "普通账号" : "临时账号"
-                    }}</template>
-                  </el-table-column>
-                  <el-table-column label="操作" width="120">
-                    <template slot-scope="scope">
-                      <el-link type="primary" @click="delUser(scope.row.user_id)">删除</el-link>
-                      <span style="color: #409eff; margin: 0 10px">|</span>
-                      <el-link type="primary" @click="showDialog('edit', scope.row)">编辑</el-link>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </el-tab-pane>
-              <el-tab-pane label="本地" name="bendi">
-                <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%">
-                  <el-table-column type="selection" width="55"></el-table-column>
-                  <el-table-column label="用户名">
-                    <template slot-scope="scope">{{
-                        scope.row.user_name
-                    }}</template>
-                  </el-table-column>
-                  <el-table-column label="姓名">
-                    <template slot-scope="scope">{{
-                        scope.row.user_realname
-                    }}</template>
-                  </el-table-column>
-                  <el-table-column label="部门">
-                    <template slot-scope="scope">
-                      {{
-                          scope.row.org_info.dept_full.reduce(function (
-                            path,
-                            data
-                          ) {
-                            return (path += "/" + data.dept_name || "");
-                          },
-                            "")
-                      }}
-                    </template>
-                  </el-table-column>
-                  <el-table-column label="角色">
-                    <template slot-scope="scope">{{
-                        scope.row.user_role_name
-                    }}</template>
-                  </el-table-column>
-                  <!-- <el-table-column label="管理活动类型" width="200" :show-overflow-tooltip="true">
+              <el-tab-pane label="外聘" name="waipin"> </el-tab-pane>
+              <el-tab-pane label="本地" name="bendi"></el-tab-pane>
+            </el-tabs>
+
+            <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%">
+              <!-- <el-table-column type="selection" width="55"></el-table-column> -->
+              <el-table-column label="用户名" width="160">
+                <template slot-scope="scope">{{
+                    scope.row.user_name
+                }}</template>
+              </el-table-column>
+              <el-table-column label="姓名" width="160">
+                <template slot-scope="scope">{{
+                    scope.row.user_realname
+                }}</template>
+              </el-table-column>
+              <el-table-column label="部门" width="auto" show-overflow-tooltip>
+                <template slot-scope="scope">
+                  {{
+                      scope.row.org_info.dept_full.reduce(function (
+                        path,
+                        data
+                      ) {
+                        return (path += "/" + data.dept_name || "");
+                      },
+                        "")
+                  }}
+                </template>
+              </el-table-column>
+              <el-table-column label="角色" width="100">
+                <template slot-scope="scope">{{
+                    scope.row.user_role_name
+                }}</template>
+              </el-table-column>
+              <!-- <el-table-column label="管理活动类型" width="200" :show-overflow-tooltip="true">
                     <template slot-scope="scope">
                       {{
                           scope.row.my_cates.hh_ids_full.reduce(function (
@@ -125,21 +71,19 @@
                       }}
                     </template>
                   </el-table-column> -->
-                  <el-table-column label="账号类型">
-                    <template slot-scope="scope">{{
-                        scope.row.user_level === "1" ? "普通账号" : "临时账号"
-                    }}</template>
-                  </el-table-column>
-                  <el-table-column label="操作" width="120">
-                    <template slot-scope="scope">
-                      <el-link type="primary" @click="delUser(scope.row.user_id)">删除</el-link>
-                      <span style="color: #409eff; margin: 0 10px">|</span>
-                      <el-link type="primary" @click="showDialog('edit', scope.row)">编辑</el-link>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </el-tab-pane>
-            </el-tabs>
+              <el-table-column label="账号类型" width="100">
+                <template slot-scope="scope">{{
+                    scope.row.user_level === "1" ? "普通账号" : "临时账号"
+                }}</template>
+              </el-table-column>
+              <el-table-column label="操作" width="120">
+                <template slot-scope="scope">
+                  <el-link type="primary" @click="delUser(scope.row.user_id)">删除</el-link>
+                  <span style="color: #409eff; margin: 0 10px">|</span>
+                  <el-link type="primary" @click="showDialog('edit', scope.row)">编辑</el-link>
+                </template>
+              </el-table-column>
+            </el-table>
           </el-main>
           <el-footer style="text-align: right">
             <el-pagination background hide-on-single-page layout="prev, pager, next" :page-size="tableParams.limit"
@@ -167,14 +111,14 @@
               <el-input v-model="user_main.user_realname"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <!-- <el-col :span="12">
             <el-form-item label="账号类型" prop="user_level">
               <el-select v-model="user_main.user_level" placeholder="请选择">
                 <el-option label="临时账号" value="0"></el-option>
                 <el-option label="普通账号" value="1"></el-option>
               </el-select>
             </el-form-item>
-          </el-col>
+          </el-col> -->
           <el-col :span="24">
             <el-form-item label="部门" prop="dept_id">
               <el-cascader :options="deptOptions" :props="{ checkStrictly: true, emitPath: false }" clearable filterable
@@ -229,13 +173,13 @@ export default {
     TreeNav,
   },
   data() {
-    const validatePass = (rule, value, callback) => {
-      if (this.dialogType === "add" && value.trim() === "") {
-        callback(new Error("请输入密码"));
-      } else {
-        callback();
-      }
-    };
+    // const validatePass = (rule, value, callback) => {
+    //   if (this.dialogType === "add" && value.trim() === "") {
+    //     callback(new Error("请输入密码"));
+    //   } else {
+    //     callback();
+    //   }
+    // };
     return {
       roleList: [], // 角色列表
       deptOptions: [], // 部门组织级联
@@ -256,16 +200,23 @@ export default {
       },
       form_rules: {
         user_name: [
-          { required: true, message: "请输入用户名", trigger: "blur" },
+          { required: true, message: "请输入用户名", trigger: "submit" },
+          { message: "用户名包含非法字符", trigger: "submit", pattern: '^[a-zA-Z0-9_]+$' },
+          { min: 3, message: "用户名长度不小于 3 个字符", trigger: "submit" },
+        ],
+        user_password: [
+          // { validator: validatePass, trigger: "submit" },
+          { required: true, message: "请输入密码", trigger: "submit" },
+          // { message: "用户名包含非法字符", trigger: "submit", pattern: '^[a-zA-Z0-9_]+$' },
+          { min: 6, message: "密码长度不小于 6 个字符", trigger: "submit" },
         ],
-        user_password: [{ validator: validatePass, trigger: "blur" }],
         user_realname: [
-          { required: true, message: "请输入用户姓名", trigger: "blur" },
+          { required: true, message: "请输入用户姓名", trigger: "submit" },
         ],
         user_level: [
-          { required: true, message: "请选择账号类型", trigger: "change" },
+          { required: true, message: "请选择账号类型", trigger: "submit" },
         ],
-        dept_id: [{ required: true, message: "请选择部门", trigger: "change" }],
+        dept_id: [{ required: true, message: "请选择部门", trigger: "submit" }],
       },
       activeDeptName: "",
       activeTableChecked: [],
@@ -357,6 +308,7 @@ export default {
             _this.user_main[key] = data[key];
           }
         });
+        _this.user_main['user_password'] = data['user_password_origin']
       }
       this.dialogType = type;
       this.userDialogVisible = true;

+ 8 - 8
src/views/xtgl/zzjg/index.vue

@@ -1,11 +1,11 @@
 <template>
   <div>
     <el-row>
-      <el-col :span="5">
+      <el-col :span="8">
         <tree-nav @renderTable="updateDeptId" treeType="zzjg" status="hidden">
         </tree-nav>
       </el-col>
-      <el-col :span="19">
+      <el-col :span="16">
         <el-container>
           <el-main>
             <el-row style="position: relative">
@@ -61,18 +61,18 @@
             </el-row>
             <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
               @selection-change="changeChecked">
-              <el-table-column type="selection" width="55"></el-table-column>
-              <el-table-column label="用户名">
+              <!-- <el-table-column type="selection" width="55"></el-table-column> -->
+              <el-table-column label="用户名" width="160">
                 <template slot-scope="scope">{{
                     scope.row.user_name
                 }}</template>
               </el-table-column>
-              <el-table-column label="姓名">
+              <el-table-column label="姓名"  width="160">
                 <template slot-scope="scope">{{
                     scope.row.user_realname
                 }}</template>
               </el-table-column>
-              <el-table-column label="部门">
+              <el-table-column label="部门"  width="auto" show-overflow-tooltip>
                 <template slot-scope="scope">
                   {{
                       scope.row.org_info.dept_full.reduce(function (path, data) {
@@ -81,7 +81,7 @@
                   }}
                 </template>
               </el-table-column>
-              <el-table-column label="角色">
+              <el-table-column label="角色" width="100">
                 <template slot-scope="scope">{{
                     scope.row.user_role_name
                 }}</template>
@@ -99,7 +99,7 @@
                   }}
                 </template>
               </el-table-column> -->
-              <el-table-column label="账号类型">
+              <el-table-column label="账号类型" width="100">
                 <template slot-scope="scope">{{
                     scope.row.user_level === "1" ? "普通账号" : "临时账号"
                 }}</template>