Просмотр исходного кода

Merge branch 'dev' of http://www.baoxianzhanggui.com:8090/sxzgd/vue-insagent-pc into dev

@dongkboy 2 лет назад
Родитель
Сommit
2d9e48625c

+ 2 - 2
config/dev.env.js

@@ -5,9 +5,9 @@ const prodEnv = require('./prod.env')
 module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
   ENV_CONFIG:'"dev"',
-  BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',//测试服务器
+  // BASE_URL: '"https://test.baoxianzhanggui.com/web-api"',//测试服务器
   // BASE_URL:'"https://sxzgkj.baoxianzhanggui.com/web-api"'//正式服务器
-  // BASE_URL: '"http://192.168.0.115:8080/"' //凯森
+  BASE_URL: '"http://192.168.0.115:8080/"' //凯森
   // BASE_URL: '"http:///192.168.0.253:8082/"',//田智
   // BASE_URL: '"http:///192.168.0.253:8082/"',//田智
   // BASE_URL: '"http:///192.168.0.36:8080/"',//靖燕龙

+ 49 - 0
src/http/moudules/role.js

@@ -58,4 +58,53 @@ export const findRoleByUserId = (data) => {
       url: '/role/findRoleByUserId',
       method: 'get'
     })
+}
+
+
+// 岗位管理接口
+
+// 列表分页接口
+export const postPage = (params) => {
+    return axios({
+        url: '/sys/position/page',
+        method: 'get',
+        params
+    })
+}
+//新增岗位
+export const postAdd = (data) => {
+    return axios({
+        url: '/sys/position',
+        method: 'post',
+        data
+    })
+}
+//修改岗位
+export const postUpdata = (id,data) => {
+    return axios({
+        url: '/sys/position/'+id,
+        method: 'put',
+        data
+    })
+}
+// 查看岗位信息
+export const postView = (id) => {
+    return axios({
+        url: '/sys/position/'+id,
+        method: 'get',
+    })
+}
+// 删除岗位信息
+export const postDelete = (id) => {
+    return axios({
+        url: '/sys/position/'+id,
+        method: 'DELETE',
+    })
+}
+// 查看全部岗位信息
+export const postViewAll = () => {
+    return axios({
+        url: '/sys/position/all',
+        method: 'get',
+    })
 }

+ 15 - 1
src/views/PeopleManage/Agent/AgentExamine.vue

@@ -197,6 +197,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
             </el-row>
           </el-form>
           <div style="text-align: right">
@@ -679,12 +686,20 @@ export default {
       },
       //影像上传列表
       imagesIdList:[],
+      postOption:[]
+
     };
   },
   created() {
     this.$api.role.findAll().then((res) => {
       this.roles = res.data;
     });
+    this.$api.role.postViewAll().then((res) => {
+      res.data.forEach(ele=>{
+        ele.postId=ele.postId+''
+      })
+      this.postOption = res.data
+    })
     this.findLeftTreeData(); // 获取机构树的数据
   },
   mounted() {
@@ -855,7 +870,6 @@ export default {
           this.formDataDetail = res.data.sysUserInfo
             ? res.data.sysUserInfo
             : {};
-          this.formData.password = "";
         }
       });
       this.dialogTitle = "审核代理人";

+ 21 - 5
src/views/PeopleManage/Agent/AgentManage.vue

@@ -115,12 +115,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item v-if="dialogPassword" label="密码" prop="word">
+                <el-form-item  label="密码" prop="password">
                   <el-input
                     v-model="formData.password"
                     :class="isShow == true ? 'disc' : 'none'"
                   ></el-input>
-                  <i class="el-icon-view icon" @click="isShowFun()"></i>
+                  <i class="el-icon-view icon" @click="isShowFun()" v-if="dialogPassword"></i>
                   <!-- <el-input style="width:200px"  v-model="formData.password" autocomplete="new-password"
                     show-password></el-input> -->
                 </el-form-item>
@@ -160,6 +160,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
               <el-col :span="8">
                 <el-form-item label="推荐人" prop="referrerId">
                   <el-select
@@ -652,7 +659,7 @@ export default {
           },
         ],
         name: [{ required: true, message: "请填写名称", trigger: "blur" }],
-        // password: [{ required: true, message: "请填写密码", trigger: "blur" }],
+        password: [{ required: true, message: "请填写密码", trigger: "blur" }],
         status: [{ required: true, message: "请选择状态", trigger: "change" }],
         // roleId: [{ required: true, message: "请填写角色", trigger: "blur" }],
         identity: [
@@ -700,10 +707,17 @@ export default {
       ),
       roles: JSON.parse(localStorage.getItem("find_all")),
       option: [], //机构列表
-      dialogPassword: true, //密码是否显示
+      dialogPassword: true, //密码是否显示明文
+      postOption:[]
     };
   },
   created() {
+    this.$api.role.postViewAll().then((res) => {
+      res.data.forEach(ele=>{
+        ele.postId=ele.postId+''
+      })
+      this.postOption = res.data
+    })
     // this.$api.role.findAll().then((res) => {
     //   this.roles = res.data
     // })
@@ -909,7 +923,6 @@ export default {
           this.formDataRules.logoutTime = undefined;
         }
         this.formDataDetail = res.data.sysUserInfo ? res.data.sysUserInfo : {};
-        this.formData.password = "";
         this.dialogTitle = "编辑代理人";
         this.dialogVisible = true;
       } else {
@@ -995,6 +1008,9 @@ export default {
             //   });
             //   return false
             // }
+            if(this.formData.positionId){
+                this.formData.positionName=this.postOption.find(val=>val.postId==this.formData.positionId).postName
+              }
             if (this.dialogTitle == "新增代理人") {
               if (!this.formDataDetail.password) {
                 this.formDataDetail.password =

+ 26 - 14
src/views/PeopleManage/Player/PlayerManage.vue

@@ -100,12 +100,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item v-if="dialogPassword" label="密码" prop="word">
+                <el-form-item  label="密码" prop="password">
                   <el-input
                     v-model="formData.password"
                     :class="isShow == true ? 'disc' : 'none'"
                   ></el-input>
-                  <i class="el-icon-view icon" @click="isShowFun()"></i>
+                  <i class="el-icon-view icon" @click="isShowFun()" v-if="dialogPassword"></i>
                   <!-- <el-input style="width:200px"  v-model="formData.password" autocomplete="new-password"
                       show-password></el-input> -->
                 </el-form-item>
@@ -145,6 +145,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
               <el-col :span="8">
                 <el-form-item label="业务员" prop="referrerId">
                   <el-select
@@ -191,6 +198,7 @@ import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
 import tree from "@/components/ztree.vue"; // 机构树组件
 import templateTable from "../../../components/TemplateTable/index.vue";
 import peopleImage from "@/components/PeopleImage/index.vue";
+import mixin from '../mixin' 
 export default {
   components: {
     KtButton,
@@ -198,6 +206,7 @@ export default {
     templateTable,
     peopleImage,
   },
+  mixins: [mixin], 
   data() {
     return {
       activeName: "1", //弹框tab索引
@@ -225,15 +234,15 @@ export default {
           type: "select",
           options: JSON.parse(localStorage.getItem("user_statusoptions")),
         },
-        {
-          label: "角色",
-          prop: "roleId",
-          type: "select",
-          options: [
-            { label: "出单员", value: "19" },
-            { label: "团队长", value: "21" },
-          ],
-        },
+        // {
+        //   label: "角色",
+        //   prop: "roleId",
+        //   type: "select",
+        //   options: [
+        //     { label: "出单员", value: "19" },
+        //     { label: "团队长", value: "21" },
+        //   ],
+        // },
       ],
       tableConfig: {
         columns: [
@@ -296,7 +305,7 @@ export default {
           },
         ],
         name: [{ required: true, message: "请填写名称", trigger: "blur" }],
-        // password: [{ required: true, message: "请填写密码", trigger: "blur" }],
+        password: [{ required: true, message: "请填写密码", trigger: "blur" }],
         status: [{ required: true, message: "请选择状态", trigger: "change" }],
         // roleId: [{ required: true, message: "请填写角色", trigger: "blur" }],
         referrerId: [
@@ -336,7 +345,7 @@ export default {
       ),
       roles: JSON.parse(localStorage.getItem("find_all")),
       option: [], //机构列表
-      dialogPassword: true, //密码是否显示
+      dialogPassword: true, //密码是否显示明文
     };
   },
   created() {
@@ -388,6 +397,7 @@ export default {
       this.pageData.pageNum = 1;
       this.findPage();
     },
+
     //联级选择器触发事件
     handleChange(val) {
       if (val && val.length !== 0) {
@@ -457,7 +467,6 @@ export default {
           });
         res.data.sysUser.status += "";
         this.formData = res.data.sysUser;
-        this.formData.password = "";
         this.dialogTitle = "编辑渠道信息";
         this.dialogVisible = true;
       } else {
@@ -508,6 +517,9 @@ export default {
       this.$refs.formData.validate((valid) => {
         if (valid) {
           this.$confirm("确认提交吗?", "提示", {}).then(() => {
+            if(this.formData.positionId){
+                this.formData.positionName=this.postOption.find(val=>val.postId==this.formData.positionId).postName
+              }
             if (this.dialogTitle == "新增渠道信息") {
               this.$api.user
                 .saveUserInfo({ sysUser: this.formData })

+ 818 - 0
src/views/PeopleManage/Player/PlayerManageteam.vue

@@ -0,0 +1,818 @@
+<template>
+  <div>
+    <el-main ref="elMain" style="padding: 0px">
+      <Split :gutterSize="2" style="height: calc(100vh - 120px)">
+        <!-- 左侧树Start -->
+        <SplitArea :size="leftSplitWidth" :minSize="240">
+          <div>
+            <div>
+              <kt-button
+                style="background-color: #ffc000; border: #ffc000"
+                icon="fa fa-plus"
+                label="添加人员"
+                type="primary"
+                perms="sys:agent:add"
+                @click="handleAddButton"
+              />
+            </div>
+            <el-divider></el-divider>
+            <!-- 左侧树形结构 -->
+            <el-tree
+              :data="ztreeNodes"
+              :props="{ children: 'children', label: 'name' }"
+              node-key="id"
+              :default-expanded-keys="['9']"
+              @node-click="onZTreeClick"
+            ></el-tree>
+          </div>
+        </SplitArea>
+        <!-- 左侧树End -->
+
+        <!-- 右侧列表页面Start -->
+        <SplitArea :size="rightSplitWidth">
+          <templateTable
+            :formList="formList"
+            :searchData.sync="queryFrom"
+            :tableConfig="tableConfig"
+            :data="pageResult"
+            @getList="findPage"
+            @handleSearchList="handleSearchList"
+            :pagination="pageData"
+          >
+          </templateTable>
+        </SplitArea>
+        <!-- 右侧列表页面End -->
+      </Split>
+    </el-main>
+
+    <!-- 新增修改界面 -->
+    <el-dialog
+      :title="dialogTitle"
+      width="60%"
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :before-close="handleDialogBefore"
+      @close="closeDialog"
+      v-dialogDrag
+    >
+      <el-tabs v-model="activeName">
+        <el-tab-pane label="基本信息" name="1">
+          <el-form
+            :model="formData"
+            :rules="formDataRules"
+            ref="formData"
+            :inline="true"
+            label-width="130px"
+            size="small"
+          >
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="机构名称" prop="deptId">
+                  <el-cascader
+                    style="width: 200px"
+                    :options="ztreeNodes"
+                    v-model="formData.deptId"
+                    clearable
+                    :disabled="dialogTitle == '编辑渠道信息'"
+                    :show-all-levels="false"
+                    :props="{
+                      value: 'id',
+                      label: 'name',
+                      checkStrictly: true,
+                    }"
+                    @change="handleChange"
+                  >
+                  </el-cascader> </el-form-item
+              ></el-col>
+              <el-col :span="8">
+                <el-form-item label="员工工号" prop="id">
+                  <el-input v-model="formData.id" disabled></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="手机号" prop="mobile">
+                  <el-input v-model="formData.mobile"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="名称" prop="name">
+                  <el-input v-model="formData.name"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item  label="密码" prop="password">
+                  <el-input
+                    v-model="formData.password"
+                    :class="isShow == true ? 'disc' : 'none'"
+                  ></el-input>
+                  <i class="el-icon-view icon" @click="isShowFun()" v-if="dialogPassword"></i>
+                  <!-- <el-input style="width:200px"  v-model="formData.password" autocomplete="new-password"
+                      show-password></el-input> -->
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="8">
+                <el-form-item label="状态" prop="status">
+                  <el-select
+                    :disabled="dialogTitle == '新增渠道信息'"
+                    style="width: 200px"
+                    v-model="formData.status"
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="val in user_statusoptions"
+                      :label="val.label"
+                      :value="val.value"
+                      :key="val.id"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="角色" prop="roleId">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formData.roleId"
+                    placeholder="请选择"
+                    disabled
+                  >
+                    <el-option
+                      v-for="val in roles"
+                      :label="val.name"
+                      :value="val.id + ''"
+                      :key="val.id"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="业务员" prop="referrerId">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formData.referrerId"
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="val in recommenderOptions"
+                      :label="val.name"
+                      :value="val.id"
+                      :key="val.id"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="业务员工号" prop="referrerName">
+                  <el-input v-model="formData.referrerId" disabled></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <!-- <div style="text-align: right">
+            <el-button
+              size="small"
+              type="primary"
+              style="background-color: #ffc000; border: 1px solid #ffc000"
+              @click="closeDialog"
+              >取消</el-button
+            >
+            <el-button size="small" type="primary" @click="submitForm"
+              >提交</el-button
+            >
+          </div> -->
+          <div style="text-align: right;">
+            <el-button size="small" type="primary" @click="nextStep">下一步</el-button>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane label="详细信息" name="2">
+          <el-form
+            :model="formDataDetail"
+            :rules="formDataRulesDetail"
+            ref="formDataDetail"
+            :inline="true"
+            label-width="130px"
+            size="small"
+          >
+            <el-row>
+              <el-col :span="8">
+                <el-form-item label="开户账号" prop="accountno">
+                  <el-input v-model="formDataDetail.accountno"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="开户行" prop="bankName">
+                  <el-input v-model="formDataDetail.bankName"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="性别" prop="sex">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formDataDetail.sex"
+                    placeholder="请选择"
+                  >
+                    <el-option
+                      v-for="val in sexoptions"
+                      :label="val.label"
+                      :value="val.value"
+                      :key="val.id"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="出生日期" prop="birthday">
+                  <el-date-picker
+                    style="width: 200px"
+                    v-model="formDataDetail.birthday"
+                    type="date"
+                    placeholder="选择日期"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="户籍" prop="koseki">
+                  <el-input v-model="formDataDetail.koseki"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="婚姻状况" prop="maritalStatus">
+                  <el-select
+                    v-model="formDataDetail.maritalStatus"
+                    placeholder="请选择婚姻状况"
+                    style="width: 200px"
+                  >
+                    <el-option label="未婚" value="未婚"></el-option>
+                    <el-option label="已婚" value="已婚"></el-option>
+                    <el-option label="离异" value="离异"></el-option>
+                    <el-option label="再婚" value="再婚"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="民族" prop="nations">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formDataDetail.nations"
+                    placeholder="请选择民族"
+                  >
+                    <el-option
+                      :label="national"
+                      :value="national"
+                      v-for="national in nationalList"
+                      :key="national"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="政治面貌" prop="politicsStatus">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formDataDetail.politicsStatus"
+                    placeholder="请选择"
+                  >
+                    <el-option label="群众" value="群众"></el-option>
+                    <el-option label="共青团员" value="共青团员"></el-option>
+                    <el-option label="中共党员" value="中共党员"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="健康状况" prop="health">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formDataDetail.health"
+                    placeholder="请选择"
+                  >
+                    <el-option label="健康" value="健康"></el-option>
+                    <el-option label="亚健康" value="亚健康"></el-option>
+                    <el-option label="疾病" value="疾病"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="邮政编码" prop="postalCode">
+                  <el-input v-model="formDataDetail.postalCode"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="居住地址" prop="address">
+                  <el-input v-model="formDataDetail.address"></el-input>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="8">
+                <el-form-item label="血型" prop="bloodType">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formDataDetail.bloodType"
+                    placeholder="请选择"
+                  >
+                    <el-option v-for="val in bloodOption" :key="val.value" :label="val.label" :value="val.value"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="学历" prop="education">
+                  <el-select
+                    style="width: 200px"
+                    v-model="formDataDetail.education"
+                    placeholder="请选择"
+                  >
+                    <el-option label="小学" value="小学"></el-option>
+                    <el-option label="初中" value="初中"></el-option>
+                    <el-option label="高中" value="高中"></el-option>
+                    <el-option label="专科" value="专科"></el-option>
+                    <el-option label="本科" value="本科"></el-option>
+                    <el-option label="硕士" value="硕士"></el-option>
+                    <el-option label="博士" value="博士"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="毕业院校" prop="school">
+                  <el-input v-model="formDataDetail.school"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="毕业时间" prop="graduationTime">
+                  <el-date-picker
+                    style="width: 200px"
+                    v-model="formDataDetail.graduationTime"
+                    type="date"
+                    placeholder="选择日期"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="原工作单位" prop="formerEmployer">
+                  <el-input v-model="formDataDetail.formerEmployer"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="入司时间" prop="entryTime">
+                  <el-date-picker
+                    style="width: 200px"
+                    v-model="formDataDetail.entryTime"
+                    type="date"
+                    placeholder="选择日期"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item
+                  label="代理人资格证号"
+                  prop="agentQualificationCode"
+                >
+                  <el-input
+                    v-model="formDataDetail.agentQualificationCode"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="紧急联系人电话" prop="emergencyContactTel">
+                  <el-input
+                    v-model="formDataDetail.emergencyContactTel"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item
+                  label="紧急联系人姓名"
+                  prop="emergencyContactName"
+                >
+                  <el-input
+                    v-model="formDataDetail.emergencyContactName"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <div style="text-align: right">
+            <el-button
+              size="small"
+              type="primary"
+              style="background-color: #ffc000; border: 1px solid #ffc000"
+              @click="closeDialog"
+              >取消</el-button
+            >
+            <el-button size="small" type="primary" @click="activeName = '1'"
+              >上一步</el-button
+            >
+            <el-button size="small" type="primary" @click="submitForm"
+              >提交</el-button
+            >
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </el-dialog>
+  </div>
+</template>
+  
+  <script>
+import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
+import tree from "@/components/ztree.vue"; // 机构树组件
+import templateTable from "../../../components/TemplateTable/index.vue";
+import peopleImage from "@/components/PeopleImage/index.vue";
+import mixin from '../mixin' 
+export default {
+  components: {
+    KtButton,
+    tree,
+    templateTable,
+    peopleImage,
+  },
+  mixins: [mixin], 
+  data() {
+    return {
+      activeName: "1", //弹框tab索引
+      isShow: true, //密码是否显示
+      formList: [
+        //树右侧搜索数据列
+        {
+          label: "工号",
+          prop: "userId",
+          type: "input",
+        },
+        {
+          label: "姓名",
+          prop: "name",
+          type: "input",
+        },
+        {
+          label: "手机号",
+          prop: "mobile",
+          type: "input",
+        },
+        {
+          label: "状态",
+          prop: "status",
+          type: "select",
+          options: JSON.parse(localStorage.getItem("user_statusoptions")),
+        },
+        // {
+        //   label: "角色",
+        //   prop: "roleId",
+        //   type: "select",
+        //   options: [
+        //     { label: "出单员", value: "19" },
+        //     { label: "团队长", value: "21" },
+        //   ],
+        // },
+      ],
+      tableConfig: {
+        columns: [
+          // 数据列
+          { prop: "deptId", label: "部门编码", type: "text" },
+          {
+            prop: "pdeptName",
+            label: "机构名称",
+            type: "text",
+          },
+          { prop: "deptName", label: "部门名称", type: "text" },
+
+          { prop: "userId", label: "工号", type: "text" },
+          { prop: "name", label: "姓名", type: "text" },
+          { prop: "mobile", label: "联系电话", type: "text" },
+          {
+            prop: "roleId",
+            label: "角色",
+            type: "text",
+          },
+          {
+            prop: "status",
+            label: "状态",
+            type: "text",
+          },
+        ],
+        loading: true,
+        isPaginationShow: true,
+        isShowIndex: true,
+        optBtns: [
+          {
+            type: "primary",
+            label: "编辑",
+            icon: "fa fa-edit",
+            click: (row, index) => {
+              return this.handleTableEdit(row);
+            },
+          },
+        ],
+      },
+      recommenderOptions: [],
+      pageData: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      deptId: JSON.parse(localStorage.getItem("user_data")).deptId,
+      formData: {
+        roleId: "19",
+      },
+      formDataRules: {
+        deptId: [{ required: true, message: "请选择机构", trigger: "change" }],
+        mobile: [
+          { required: true, message: "请输入手机号", trigger: "blur" },
+          { min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
+          {
+            pattern:
+              /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
+            message: "请输入正确的手机号",
+            trigger: "blur",
+          },
+        ],
+        name: [{ required: true, message: "请填写名称", trigger: "blur" }],
+        password: [{ required: true, message: "请填写密码", trigger: "blur" }],
+        status: [{ required: true, message: "请选择状态", trigger: "change" }],
+        // roleId: [{ required: true, message: "请填写角色", trigger: "blur" }],
+        referrerId: [
+          { required: true, message: "请选择业务员", trigger: "change" },
+        ],
+      },
+      filterObject: {},
+      peopleid: "",
+      peopledeptid: "",
+      /**Split 开始 */
+      leftSplitWidth: 20,
+      rightSplitWidth: 80,
+      ztreeObj: null,
+      ztreeSetting: {
+        check: {
+          enable: false,
+        },
+        data: {
+          simpleData: {
+            enable: true,
+            pIdKey: "parentId",
+          },
+        },
+        view: {
+          showIcon: false,
+        },
+      },
+      currentTreeNode: null,
+      queryFrom: {}, // 右侧列表查询数据Start
+      pageResult: [],
+      containsSubDeptChecked: true, //是否包含下级机构
+      dialogTitle: "", //弹框title
+      dialogVisible: false, // 新增编辑界面是否显示
+     
+      option: [], //机构列表
+      dialogPassword: true, //密码是否显示明文
+      // postOption:[],
+      formDataDetail: {},
+      formDataRulesDetail: { },
+    };
+  },
+  created() {
+    this.findPage();
+  },
+ 
+  watch: {
+    containsSubDeptChecked() {
+      this.findPage();
+    },
+  },
+  methods: {
+      // 下一步
+      nextStep() {
+        this.$refs.formData.validate((valid) => {
+          if (valid) {
+          this.activeName = "2";
+          }
+        });
+    },
+    onZTreeClick: function (evt, treeId, treeNode) {
+        // 点击事件
+        this.currentTreeNode = evt;
+        this.pageData.deptId = this.currentTreeNode.id;
+        this.pageData.pageNum =1;
+        this.findPage();
+        this.formData.deptId = [];
+        this.platform(treeId);
+        
+      },
+    platform(array) {
+      if (!array.parent) {
+        return;
+      }
+      this.formData.deptId.unshift(array.data.id);
+      this.platform(array.parent);
+    },
+    //联级选择器触发事件
+    handleChange(val) {
+      if (val && val.length !== 0) {
+        this.formData.referrerId = "";
+        this.formData.deptId = val.at(-1);
+        this.$api.user
+          .selectfindByreferrerId({ deptId: this.formData.deptId })
+          .then((res) => {
+            this.recommenderOptions = res.data;
+          });
+      }
+    },
+    // 右侧列表的方法Start
+    findPage(data) {
+      this.tableConfig.loading = true;
+      this.$api.user
+        .findUserList({
+          ...this.pageData,
+          dto: { ...data, deptId: this.deptId, agentFlag: "1" },
+        })
+        .then((res) => {
+          if (res.code == 200 && res.data.records.length > 0) {
+            res.data.records.forEach((val) => {
+              if (val.status && val.status !== "" && val.status !== null) {
+                val.status = this.user_statusoptions.find(
+                  (ele) => ele.value == val.status
+                ).label;
+              }
+              if (val.roleId && val.roleId !== "" && val.roleId !== null) {
+                val.roleId = this.roles.find(
+                  (ele) => ele.id == val.roleId
+                ).name;
+              }
+            });
+          }
+          this.tableConfig.loading = false;
+          this.pageResult = res.data.records;
+          this.pageData.pageNum = res.data.current;
+          this.pageData.pageSize = res.data.size;
+          this.pageData.totalSize = res.data.total;
+        });
+    },
+    isShowFun() {
+      this.isShow = !this.isShow;
+    },
+    handleSearchList(data) {
+      this.findPage(data);
+    },
+    //编辑
+    async handleTableEdit(params) {
+      this.dialogPassword = false;
+      this.dataForm = {
+        SFZ_01: "",
+        SFZ_02: "",
+        Z6Z_00: "",
+        LD_00: "",
+        YP_00: "",
+        DX_00: "",
+      };
+      this.activeName = "1";
+      let res = await this.$api.user.getUserDatail(params.userId);
+      if (res.code == 200) {
+        this.$api.user
+          .selectfindByreferrerId({ deptId: res.data.sysUser.deptId })
+          .then((res) => {
+            this.recommenderOptions = res.data;
+          });
+        res.data.sysUser.status += "";
+        this.formData = res.data.sysUser;
+        this.dialogTitle = "编辑渠道信息";
+        this.formDataDetail = res.data.sysUserInfo ? res.data.sysUserInfo : {};
+        this.dialogVisible = true;
+      } else {
+        this.$message.error(res.msg);
+      }
+    },
+    //添加人员
+    handleAddButton() {
+      //级联渲染部门列表
+      this.$api.user
+        .selectfindByreferrerId({ deptId: this.deptId })
+        .then((res) => {
+          this.recommenderOptions = res.data;
+        });
+      if (this.currentTreeNode == null) {
+        this.$message.info("请选择所属公司或部门");
+        return;
+      }
+      let statusArr = this.user_statusoptions.filter(
+        (item) => item.label == "正常"
+      );
+      this.dialogPassword = true;
+      this.formData = {
+        roleId: "19",
+        status: "",
+        referrerId: "",
+        deptId: this.deptId,
+      };
+      this.formData.status = statusArr.length > 0 ? statusArr[0].value : "";
+      this.activeName = "1";
+      this.dialogTitle = "新增渠道信息";
+      this.formDataDetail = {};
+      this.dialogVisible = true;
+    },
+    // 退出对话框之前确认提示
+    handleDialogBefore(done) {
+      this.$confirm("确认关闭?")
+        .then((_) => {
+          done();
+        })
+        .catch((_) => {});
+    },
+    // 清空数据
+    closeDialog() {
+      this.dialogVisible = false;
+    },
+    // 提交
+    submitForm() {
+      this.$refs.formData.validate((valid) => {
+        if (valid) {
+          this.$confirm("确认提交吗?", "提示", {}).then(() => {
+            if(this.formData.positionId){
+                this.formData.positionName=this.postOption.find(val=>val.postId==this.formData.positionId).postName
+              }
+            if (this.dialogTitle == "新增渠道信息") {
+              this.$api.user
+                .saveUserInfo({ sysUser: this.formData,sysUserInfo: this.formDataDetail})
+                .then((res) => {
+                  if (res.code == 200) {
+                    this.$message({
+                      message: "保存成功",
+                      type: "success",
+                    });
+                    this.dialogVisible = false;
+                    this.$refs["formData"].resetFields();
+                    this.activeName = "1";
+                    this.findPage();
+                  } else {
+                    this.$message({
+                      message: `保存失败,请重新添加,(${res.msg})`,
+                      type: "error",
+                    });
+                  }
+                });
+            } else {
+              this.$api.user
+                .updateUserInfo(this.formData.id, { sysUser: this.formData, sysUserInfo: this.formDataDetail, })
+                .then((res) => {
+                  if (res.code == 200) {
+                    this.$message({
+                      message: "编辑成功",
+                      type: "success",
+                    });
+                    this.dialogVisible = false;
+                    this.$refs["formData"].resetFields();
+                    this.activeName = "1";
+                    this.findPage();
+                  } else {
+                    this.$message({
+                      message: `编辑失败,请重新添加,(${res.msg})`,
+                      type: "error",
+                    });
+                  }
+                });
+            }
+          });
+        }
+      });
+    },
+  },
+};
+</script>
+  
+  <style scoped>
+.el-divider--horizontal {
+  margin: 4px 0;
+}
+
+/* 顶部查询条件样式Start */
+.queryFrom .el-row {
+  margin: 10px 0px;
+}
+
+.queryFrom .el-form-item {
+  margin-bottom: 0px;
+}
+
+.queryFrom .queryButton .el-form-item__content {
+  margin-left: 0px !important;
+}
+.disc {
+  -webkit-text-security: disc;
+  position: relative;
+}
+.none {
+  -webkit-text-security: none;
+  position: relative;
+}
+.icon {
+  color: #ccc;
+  position: absolute;
+  right: 0;
+  top: 10px;
+  text-align: center;
+}
+</style>
+  

+ 14 - 1
src/views/PeopleManage/Staff/StaffExamine.vue

@@ -120,6 +120,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
             </el-row>
           </el-form>
           <div style="text-align: right;">
@@ -475,12 +482,19 @@ export default {
       user_statusoptions: JSON.parse(localStorage.getItem('user_statusoptions')),
       roles: JSON.parse(localStorage.getItem('find_all')),
       option: [], //机构列表
+      postOption:[]
     };
   },
   created() {
     // this.$api.role.findAll().then((res) => {
     //   this.roles = res.data
     // })
+    this.$api.role.postViewAll().then((res) => {
+      res.data.forEach(ele=>{
+        ele.postId=ele.postId+''
+      })
+      this.postOption = res.data
+    })
     this.findLeftTreeData(); // 获取机构树的数据
 
   },
@@ -612,7 +626,6 @@ export default {
           }
           this.formData = res.data.sysUser
           this.formDataDetail = res.data.sysUserInfo ? res.data.sysUserInfo : {}
-          this.formData.password = ''
         }
       })
       this.dialogTitle = "审核后线人员";

+ 22 - 8
src/views/PeopleManage/Staff/StaffManage.vue

@@ -155,10 +155,10 @@
                   <el-input v-model="formData.name"></el-input>
                 </el-form-item>
               </el-col>
-              <el-col v-if="dialogPassword" :span="8">
+              <el-col :span="8">
                 <el-form-item label="密码" prop="password">
                   <el-input  v-model="formData.password" :class="isShow==true?'disc':'none'" ></el-input>
-                  <i class="el-icon-view icon" @click="isShowFun()"></i>
+                  <i class="el-icon-view icon" @click="isShowFun()"  v-if="dialogPassword"></i>
                   <!-- <el-input style="width:200px" v-model="formData.password" autocomplete="new-password"
                     show-password></el-input> -->
                 </el-form-item>
@@ -178,6 +178,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
               <el-col :span="8">
                 <el-form-item label="离职时间" prop="logoutTime">
                   <el-date-picker value-format="yyyy-MM-dd" style="width:200px" v-model="formData.logoutTime" type="date" placeholder="选择日期">
@@ -454,9 +461,9 @@ export default {
           },
         ],
         name: [{ required: true, message: "请填写名称", trigger: "blur" }],
-        // password: [{ required: true, message: "请填写密码", trigger: "blur" }],
         status: [{ required: true, message: "请选择状态", trigger: "change" }],
         roleId: [{ required: true, message: "请填写角色", trigger: "blur" }],
+        password: [{ required: true, message: "请填写密码", trigger: "blur" }],
         identity:
         [{ required: true, message: "请填写身份证号" },
         { validator: validateSfz }], 
@@ -559,13 +566,17 @@ export default {
       },
       //影像上传列表
       imagesIdList:[],
-      dialogPassword:false, //密码是否显示
+      dialogPassword:false, //密码是否显示明文
+      postOption:[]
     };
   },
   created() {
-    // this.$api.role.findAll().then((res) => {
-    //   this.roles = res.data
-    // })
+    this.$api.role.postViewAll().then((res) => {
+      res.data.forEach(ele=>{
+        ele.postId=ele.postId+''
+      })
+      this.postOption = res.data
+    })
     //获取所有下拉框数据(字典)
     // this.getDictItems("sex");
     // this.getDictItems("user_status");
@@ -762,7 +773,7 @@ export default {
           })
         }
         this.formDataDetail = res.data.sysUserInfo?res.data.sysUserInfo:{}
-        this.formData.password = ''
+        // this.formData.password = ''
         this.dialogTitle = "编辑后线人员";
         this.dialogVisible = true;
         this.dialogPassword = false;
@@ -868,6 +879,9 @@ export default {
               //   });
               //   return false
               // }
+              if(this.formData.positionId){
+                this.formData.positionName=this.postOption.find(val=>val.postId==this.formData.positionId).postName
+              }
               if (this.dialogTitle == '新增后线人员') {
                 this.$api.user.saveUserInfo({esmUserImageVo:this.imagesIdList, sysUser: this.formData, sysUserInfo: this.formDataDetail }).then((res) => {
                   if (res.code == 200) {

+ 10 - 60
src/views/PeopleManage/TeamLeader/TeamLeaderExamine.vue

@@ -153,6 +153,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
             </el-row>
           </el-form>
           <div style="text-align: right;">
@@ -351,74 +358,17 @@
 <script>
 import tree from "@/components/ztree.vue"; // 机构树组件
 import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
+import mixin from '../mixin' 
 
 export default {
   components: {
     tree,
     KtCommonTable,
   },
+  mixins: [mixin], 
   data() {
     return {
       activeName: '1',
-      //56个民族
-      nationalList: [
-        "汉族",
-        "壮族",
-        "满族",
-        "回族",
-        "苗族",
-        "维吾尔族",
-        "土家族",
-        "彝族",
-        "蒙古族",
-        "藏族",
-        "布依族",
-        "侗族",
-        "瑶族",
-        "朝鲜族",
-        "白族",
-        "哈尼族",
-        "哈萨克族",
-        "黎族",
-        "傣族",
-        "畲族",
-        "傈僳族",
-        "仡佬族",
-        "东乡族",
-        "高山族",
-        "拉祜族",
-        "水族",
-        "佤族",
-        "纳西族",
-        "羌族",
-        "土族",
-        "仫佬族",
-        "锡伯族",
-        "柯尔克孜族",
-        "达斡尔族",
-        "景颇族",
-        "毛南族",
-        "撒拉族",
-        "布朗族",
-        "塔吉克族",
-        "阿昌族",
-        "普米族",
-        "鄂温克族",
-        "怒族",
-        "京族",
-        "基诺族",
-        "德昂族",
-        "保安族",
-        "俄罗斯族",
-        "裕固族",
-        "乌兹别克族",
-        "门巴族",
-        "鄂伦春族",
-        "独龙族",
-        "塔塔尔族",
-        "赫哲族",
-        "珞巴族",
-      ],
       pageData:{
         pageNum: 1,
         pageSize: 20,
@@ -501,7 +451,6 @@ export default {
       dialogVisible: false, // 新增编辑界面是否显示
       departmentList: [], // 选中公司的所有部门的集合
       deptInfo: {}, //选中机构的基本信息
-      sexoptions: JSON.parse(localStorage.getItem('sexOptions')) ,
       user_statusoptions: JSON.parse(localStorage.getItem('user_statusoptions')) ,
       option: [], //机构列表
     };
@@ -510,6 +459,7 @@ export default {
     this.$api.role.findAll().then((res) => {
       this.roles = res.data
     })
+  
     this.findLeftTreeData(); // 获取机构树的数据
 
   },

+ 23 - 65
src/views/PeopleManage/TeamLeader/TeamLeaderManage.vue

@@ -180,13 +180,13 @@
                   <el-input v-model="formData.name"></el-input>
                 </el-form-item>
               </el-col>
-              <el-col v-if="dialogPassword" :span="8">
+              <el-col  :span="8">
                 <el-form-item label="密码" prop="password">
                   <el-input
                     v-model="formData.password"
                     :class="isShow == true ? 'disc' : 'none'"
                   ></el-input>
-                  <i class="el-icon-view icon" @click="isShowFun()"></i>
+                  <i class="el-icon-view icon" @click="isShowFun()" v-if="dialogPassword"></i>
                   <!-- <el-input style="width:200px" v-model="formData.password" autocomplete="new-password" -->
                   <!-- show-password></el-input> -->
                 </el-form-item>
@@ -225,6 +225,13 @@
                   </el-select>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="岗位" prop="positionId">
+                  <el-select style="width:200px" v-model="formData.positionId" placeholder="请选择">
+                    <el-option v-for="val in postOption" :label="val.postName" :value="val.postId" :key="val.postId"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
               <el-col :span="8">
                 <el-form-item label="离职时间" prop="logoutTime">
                   <el-date-picker
@@ -482,6 +489,7 @@ import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
 import tree from "@/components/ztree.vue"; // 机构树组件
 import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
 import { validateSfz } from "../../../utils/validate.js";
+import mixin from '../mixin' 
 
 export default {
   components: {
@@ -489,69 +497,11 @@ export default {
     tree,
     KtCommonTable,
   },
+  mixins: [mixin], 
   data() {
     return {
       activeName: "1",
       isShow: true,
-      //56个民族
-      nationalList: [
-        "汉族",
-        "壮族",
-        "满族",
-        "回族",
-        "苗族",
-        "维吾尔族",
-        "土家族",
-        "彝族",
-        "蒙古族",
-        "藏族",
-        "布依族",
-        "侗族",
-        "瑶族",
-        "朝鲜族",
-        "白族",
-        "哈尼族",
-        "哈萨克族",
-        "黎族",
-        "傣族",
-        "畲族",
-        "傈僳族",
-        "仡佬族",
-        "东乡族",
-        "高山族",
-        "拉祜族",
-        "水族",
-        "佤族",
-        "纳西族",
-        "羌族",
-        "土族",
-        "仫佬族",
-        "锡伯族",
-        "柯尔克孜族",
-        "达斡尔族",
-        "景颇族",
-        "毛南族",
-        "撒拉族",
-        "布朗族",
-        "塔吉克族",
-        "阿昌族",
-        "普米族",
-        "鄂温克族",
-        "怒族",
-        "京族",
-        "基诺族",
-        "德昂族",
-        "保安族",
-        "俄罗斯族",
-        "裕固族",
-        "乌兹别克族",
-        "门巴族",
-        "鄂伦春族",
-        "独龙族",
-        "塔塔尔族",
-        "赫哲族",
-        "珞巴族",
-      ],
       pageData: {
         pageNum: 1,
         pageSize: 20,
@@ -576,7 +526,7 @@ export default {
           },
         ],
         name: [{ required: true, message: "请填写名称", trigger: "blur" }],
-        // password: [{ required: true, message: "请填写密码", trigger: "blur" }],
+        password: [{ required: true, message: "请填写密码", trigger: "blur" }],
         status: [{ required: true, message: "请选择状态", trigger: "change" }],
         // roleId: [{ required: true, message: "请填写角色", trigger: "blur" }],
         identity: [
@@ -666,16 +616,22 @@ export default {
       dialogVisible: false, // 新增编辑界面是否显示
       departmentList: [], // 选中公司的所有部门的集合
       deptInfo: {}, //选中机构的基本信息
-      sexoptions: JSON.parse(localStorage.getItem("sexOptions")),
       user_statusoptions: JSON.parse(
         localStorage.getItem("user_statusoptions")
       ),
       roles: JSON.parse(localStorage.getItem("find_all")),
       option: [], //机构列表
-      dialogPassword: false, //密码是否显示
+      dialogPassword: false, //密码是否明文
+      postOption:[]
     };
   },
   created() {
+    this.$api.role.postViewAll().then((res) => {
+      res.data.forEach(ele=>{
+        ele.postId=ele.postId+''
+      })
+      this.postOption = res.data
+    })
     // this.$api.role.findAll().then((res) => {
     //   this.roles = res.data
     // })
@@ -887,7 +843,6 @@ export default {
           this.formDataRules.logoutTime = undefined;
         }
         this.formDataDetail = res.data.sysUserInfo ? res.data.sysUserInfo : {};
-        this.formData.password = "";
         this.dialogTitle = "编辑团队长";
         this.dialogVisible = true;
         this.dialogPassword = false;
@@ -986,6 +941,9 @@ export default {
             //   });
             //   return false
             // }
+            if(this.formData.positionId){
+                this.formData.positionName=this.postOption.find(val=>val.postId==this.formData.positionId).postName
+              }
             if (this.dialogTitle == "新增团队长") {
               this.$api.user
                 .saveUserInfo({

+ 130 - 0
src/views/PeopleManage/mixin.js

@@ -0,0 +1,130 @@
+export default { // 导出混入对象
+    data() {
+      return {
+        nationalList: [
+            "汉族",
+            "壮族",
+            "满族",
+            "回族",
+            "苗族",
+            "维吾尔族",
+            "土家族",
+            "彝族",
+            "蒙古族",
+            "藏族",
+            "布依族",
+            "侗族",
+            "瑶族",
+            "朝鲜族",
+            "白族",
+            "哈尼族",
+            "哈萨克族",
+            "黎族",
+            "傣族",
+            "畲族",
+            "傈僳族",
+            "仡佬族",
+            "东乡族",
+            "高山族",
+            "拉祜族",
+            "水族",
+            "佤族",
+            "纳西族",
+            "羌族",
+            "土族",
+            "仫佬族",
+            "锡伯族",
+            "柯尔克孜族",
+            "达斡尔族",
+            "景颇族",
+            "毛南族",
+            "撒拉族",
+            "布朗族",
+            "塔吉克族",
+            "阿昌族",
+            "普米族",
+            "鄂温克族",
+            "怒族",
+            "京族",
+            "基诺族",
+            "德昂族",
+            "保安族",
+            "俄罗斯族",
+            "裕固族",
+            "乌兹别克族",
+            "门巴族",
+            "鄂伦春族",
+            "独龙族",
+            "塔塔尔族",
+            "赫哲族",
+            "珞巴族",
+          ],
+        sexoptions: JSON.parse(localStorage.getItem("sexOptions")),
+        postOption:[],
+        bloodOption:[
+            {
+                label:'A型',
+                value:'A型'
+            }, {
+                label:'B型',
+                value:'B型'
+            }, {
+                label:'O型',
+                value:'O型'
+            }, {
+                label:'AB型',
+                value:'AB型'
+            }, 
+        ],
+        user_statusoptions: JSON.parse(
+            localStorage.getItem("user_statusoptions")
+          ),
+        roles: JSON.parse(localStorage.getItem("find_all")),
+        ztreeNodes: [],
+        }
+      },
+      created() {
+        this.$api.role.postViewAll().then((res) => {
+          res.data.forEach(ele=>{
+            ele.postId=ele.postId+''
+          })
+          this.postOption = res.data
+        })
+    this.findLeftTreeData(); // 获取机构树的数据
+
+      },
+      mounted() {
+        //用像素初始化左边的split的宽度
+        this.changeTreeWidth(240); // 初始化树的宽度
+      },
+   methods:{
+    changeTreeWidth(widthVal) {
+        // 初始化树的宽度
+        this.leftSplitWidth = Math.ceil(
+          (widthVal / this.$refs.elMain.$el.clientWidth) * 100
+        );
+        this.rightSplitWidth = 100 - this.leftSplitWidth;
+      },
+      findLeftTreeData: function () {
+        this.$api.dept.findDeptTree().then((res) => {
+          this.treeDataRecursion(res.data, 2);
+          this.ztreeNodes = res.data;
+        });
+      },
+       //树过滤五级机构递归
+       treeDataRecursion(data, num, one) {
+        data = data || this.ztreeNodes;
+        one = one || 0;
+        one++;
+        for (let i = 0; i < data.length; i++) {
+          if (data[i].comlevel == 5 && data[i].managementSource != num) {
+            data.splice(i, 1);
+            i = i - 1;
+          } else {
+            this.treeDataRecursion(data[i].children, num, one);
+          }
+        }
+      },
+     
+   }
+  }

+ 349 - 0
src/views/Sys/Post/Index.vue

@@ -0,0 +1,349 @@
+<template>
+  <!--布局容器-->
+  <div class="container" style="width: 99%; margin-top: 0px">
+    <templateTable
+      :formList="formList"
+      :searchData.sync="searchData"
+      :tableConfig="tableConfig"
+      :data="tableData"
+      @getList="getList"
+      :btnGroup="btnGroup"
+      @handleSearchList="handleSearchList"
+      :pagination="queryFrom"
+    >
+      <!-- <template slot="operate" slot-scope="scope">
+        <el-button
+              size="mini"
+              type="primary"
+              @click="modifyFun(scope.row)"
+        >修改</el-button>
+        <el-button size="mini" type="primary" @click="deleteFun(scope.row)">删除</el-button>
+      </template> -->
+    </templateTable>
+    <el-dialog
+      v-dialogDrag
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="1200px"
+      @close="closeVisible"
+    >
+      <div>
+        <el-form :model="formData" label-width="180px" :rules="rules" ref="formData"  :disabled="disabled">
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="岗位名称:" prop="postName">
+                <el-input clearable size="small" placeholder="请输入岗位名称" v-model="formData.postName"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="岗位编码:" prop="postCode">
+                <el-input clearable size="small" placeholder="请输入岗位编码" v-model="formData.postCode"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="显示顺序:" prop="postSort">
+                <el-input-number  size="small"  v-model="formData.postSort" :min="1" :max="9999" ></el-input-number>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="状态" prop="status">
+                <el-select v-model="formData.status" placeholder="请选择状态" size="small" >
+                    <el-option
+                    v-for="item in [{value: '0',
+                                     label: '正常'},
+                                     {value: '1',
+                                     label: '停用'}]"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                    </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="备注:" prop="remark">
+                <el-input clearable size="small" placeholder="请输入备注" v-model="formData.remark"></el-input>
+              </el-form-item>
+            </el-col>
+         
+          </el-row>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="small" type="primary" @click="comfirmDialog">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+  <script>
+import templateTable from "../../../components/TemplateTable/index.vue";
+
+export default {
+  name: "post",
+  components: { templateTable },
+ 
+  data() {
+    return {
+      formList: [
+        {
+          label: "岗位名称",
+          prop: "postName",
+          type: "input",
+        },
+        {
+          label: "状态",
+          prop: "status",
+          type: "select",
+          options: [
+            {
+              value: "1",
+              label: "停用"
+            },
+            {
+              value: "0",
+              label: "正常"
+            }
+          ]
+        }
+      ],
+      btnGroup:[
+        {
+            name:'新增',
+            click:() => {return this.add()},
+        }
+      ],
+      searchData: {},
+      tableConfig: {
+        columns: [
+          {
+            prop: "postCode",
+            label: "岗位编码",
+            type: "text"
+          },
+          {
+            prop: "postName",
+            label: "岗位名称",
+            type: "text"
+          },
+          {
+            prop: "status",
+            label: "状态",
+            type: "text"
+          },
+          {
+            prop: "postSort",
+            label: "显示顺序",
+            type: "text"
+          },
+          {
+            prop: "remark",
+            label: "备注",
+            type: "text"
+          },
+          {
+            prop: "createBy",
+            label: "创建者",
+            type: "text"
+          },
+          {
+            prop: "createTime",
+            label: "创建日期",
+            type: "text"
+          },
+          {
+            prop: "updateBy",
+            label: "更新者",
+            type: "text"
+          },
+          {
+            prop: "updateTime",
+            label: "更新日期",
+            type: "text"
+          },
+        ],
+        loading: true,
+        isPaginationShow: true,
+        // operationWidth:'200',
+        optBtns:[
+        {
+            type:'text',
+            label:'查看',
+            click:(row, index) => {return this.detailFun(row)},
+          },
+          {
+            type:'text',
+            label:'修改',
+            click:(row, index) => {return this.modifyFun(row)},
+          },
+          {
+            type:'text',
+            label:'删除',
+            click:(row, index) => {return this.deleteFun(row)},
+          },
+        ]
+      },
+      queryFrom: {
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0
+      },
+      tableData: [],
+      loading: false,
+      formData: {},
+      dialogTitle:'新增',
+      dialogVisible: false,
+      rules: {
+        postName: [
+            { required: true, message: '请输入岗位名称', trigger: 'blur' }
+          ],
+          postCode: [
+            { required: true, message: '请输入岗位编码', trigger: 'blur' }
+          ],
+          status: [
+            { required: true, message: '请选择状态', trigger: 'blur' }
+          ],
+          postSort: [
+            { required: true, message: '请输入显示顺序', trigger: 'blur'  }
+          ], 
+          remark: [
+            { required: true, message: '请输入备注', trigger: 'blur'  }
+          ], 
+      },
+      disabled:false
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    // 查询
+    handleSearchList(data) {
+      this.getList(data);
+    },
+    //列表数据
+    getList(data) {
+      this.tableConfig.loading = true;
+      this.$api.role
+        .postPage({ ...data, ...this.queryFrom })
+        .then(res => {
+          if (res.data) {
+            res.data.content.forEach(element => {
+                element.status= element.status =='1'?'停用':'正常'
+            });
+            this.tableData = res.data.content;
+            this.queryFrom.pageNum = res.data.pageNum;
+            this.queryFrom.pageSize = res.data.pageSize;
+            this.queryFrom.totalSize = res.data.totalSize;
+            this.tableConfig.loading = false;
+          } else {
+            this.tableConfig.loading = false;
+          }
+        });
+    },
+    // 删除
+    deleteFun(row) {
+      this.$confirm("是否确认删除?")
+        .then(() => {
+          this.$api.role.postDelete(row.postId).then(res => {
+            if (res.code == 200) {
+              this.$message({
+                message: "删除成功",
+                type: "success"
+              });
+              this.getList();
+            }
+            else{
+                this.$message.error(res.msg)
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    add(){
+        this.dialogTitle='新增'
+        this.dialogVisible=true
+        this.disabled=false
+        this.formData={}
+    },
+    detailFun(row){
+        this.dialogTitle='查看'
+        this.disabled=true
+        this.viewFun(row)
+    },
+    viewFun(row){
+        this.dialogVisible=true
+        this.$api.role.postView(row.postId).then(res=>{
+        if (res.code == 200) {
+            this.formData=res.data
+        }
+        else{
+            this.$message.error(res.msg)
+        }
+      })
+    },
+    // 保存页面
+    comfirmDialog() {
+        this.$refs.formData.validate((valid) => {
+          if (valid) {
+            if(this.dialogTitle=='新增'){
+                this.$api.role.postAdd(this.formData).then(res=>{
+                if (res.code == 200) {
+                    this.$message({
+                    message: this.dialogTitle+'成功',
+                    type: "success"
+                    });
+                    this.dialogVisible = false;
+                    this.getList();
+                }
+                else{
+                    this.$message.error(res.msg)
+                }
+            })
+            }
+            else{
+                let id=this.formData.postId
+                this.$api.role.postUpdata(id,this.formData).then(res=>{
+                if (res.code == 200) {
+                    this.$message({
+                    message: this.dialogTitle+'成功',
+                    type: "success"
+                    });
+                    this.dialogVisible = false;
+                    this.getList();
+                }
+                else{
+                    this.$message.error(res.msg)
+                }
+            })
+            }
+           
+          } else {
+            return false;
+          }
+        });
+    },
+    // 修改页面
+    modifyFun(row) {
+      this.dialogTitle='修改'
+      this.disabled=false
+      this.viewFun(row)
+    },
+    closeVisible() {
+      this.dialogVisible = false;
+    },
+    tablePageChange(val) {
+      this.queryFrom.pageSize = val;
+      this.getList();
+    },
+    tableCurrentChange(val) {
+      this.queryFrom.pageNum = val;
+      this.getList();
+    }
+  }
+};
+</script>
+    
+  <style scoped>
+</style>
+