Bladeren bron

fix:我的企业bug修改

Mr.ding 4 jaren geleden
bovenliggende
commit
d89e1160a9

+ 4 - 4
src/store/index.js

@@ -6,9 +6,9 @@ Vue.use(Vuex);
 export default new Vuex.Store({
   state: {
     departList:[],//企业部门列表
-    chooseDepart:null,//选择的部门信息
+    chooseDepart:{},//选择的部门信息
     chooseUser:null,//选择的人员信息
-    entId:''
+    entMsg:{},
   },
   mutations: {
     departListFun(state,val){
@@ -20,8 +20,8 @@ export default new Vuex.Store({
     chooseUserFun(state,val){
       state.chooseUser = val;
     },
-    entIdFun(state,val){
-      state.entId = val;
+    entMsgFun(state,val){
+      state.entMsg = val;
     }
   },
   actions: {},

+ 12 - 0
src/utils/globalFun.js

@@ -0,0 +1,12 @@
+export function changeTimestamp(timestamp) {
+  var date = new Date(timestamp);
+  var Y = date.getFullYear() + '-';
+  var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+  var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
+  return (Y + M + D).replace(/^\s+|\s+$/g, "");
+}
+
+// export function regChinese (val){
+//     let reg = /[^\u4e00-\u9fa5]/g;
+
+// }

+ 25 - 9
src/views/ent/components/author.vue

@@ -6,10 +6,10 @@
         <div class="buyMsg">
             <ul>
                 <li>
-                    <span>购买人数:</span> <strong>40人</strong>
+                    <span>购买人数:</span> <strong>{{ $store.state.entMsg.quota }}人</strong>
                 </li>
                 <li>
-                    <span>购买周期:</span> <strong>2020.01.01-2021.01.01</strong>
+                    <span>购买周期:</span> <strong>{{ timeCycle }}</strong>
                 </li>
             </ul>
         </div>
@@ -34,6 +34,9 @@
                         prop="user_mail"
                         label="邮箱"
                         width="230">
+                        <template slot-scope="scope">
+                            {{ scope.row.user_mail || '--' }}
+                        </template>
                     </el-table-column>
                     <el-table-column
                         prop="user_phone"
@@ -53,7 +56,7 @@
                     </el-table-column>
                 </el-table>
             </div>
-            <div class="dataBox"  v-show="currentIndex == 1">
+            <div class="dataBox" v-show="currentIndex == 1">
                 <el-table
                     :data="tableData.list"
                     style="width: 100%">
@@ -66,12 +69,15 @@
                         prop="user_mail"
                         label="邮箱"
                         width="170">
+                        <template slot-scope="scope">
+                            {{ scope.row.user_mail || '--' }}
+                        </template>
                     </el-table-column>
-                    <el-table-column
-                        prop="user_phone"
+                    <el-table-Column 
+                        prop="record_phone"
                         width="170"
                         label="手机">
-                    </el-table-column>
+                    </el-table-Column>
                     <el-table-column
                         width="290"
                         prop="name"
@@ -83,7 +89,7 @@
                         <template slot-scope="scope">
                         <div class="setNumber">
                                 <span v-if="scope.row.setNumber" @click="scope.row.setNumber = false"> {{ scope.row.data_limit || '输入数量' }} </span>
-                                <input v-else v-model="scope.row.data_limit" type="text" @blur="setLimit(scope.row)" /> 
+                                <input v-else v-model="scope.row.data_limit" type="number" @blur="setLimit(scope.row)" /> 
                         </div>
                         </template>
                     </el-table-column>
@@ -106,7 +112,7 @@
                 :total="tableData.count">
             </el-pagination>
         </div>
-        <power-person ref="powerNode"></power-person>
+        <power-person ref="powerNode" ></power-person>
 
        <!-- 确认删除弹窗 -->
         <del-tips ref="childDel" title="删除人员">
@@ -124,11 +130,13 @@
  import { sjPersonListInter,del_sjPersonListInter ,recordPersonListInter,setLimit_recordpersonListInter,del_recordpersonListInter} from "@/api/api";
  import powerPerson from "./powerPerson";
  import delTips from "./del";
+ import { changeTimestamp } from "@/utils/globalFun"
     export default {
         components:{powerPerson,delTips},
         data() {
             return {
                 tableData: {},
+                tableDataRecord:{},
                 tabbar:["商机管理使用人员","数据导出使用人员"],
                 currentIndex:'0',
                 del_current:{},
@@ -137,11 +145,14 @@
                     isSingle:true,
                     pageSize:10,
                     key:1,
-                }
+                },
+                timeCycle:''
             }
         },
         created(){
             this.sj_getDataList();
+            let times = this.$store.state.entMsg;
+            this.timeCycle = `${changeTimestamp(times.startdate*1000)}  -  ${changeTimestamp(times.enddate*1000)}`
         },
         methods:{
             //设置数据导出没人限额
@@ -180,6 +191,9 @@
                         })
                         this.pageobj.isSingle = Number(res.data.count) <= this.pageobj.pageSize;
                         this.tableData = res.data;
+                        this.tableData.list.forEach(v =>{
+                            v.record_phone = v.user_phone;
+                        })
                     }else{
                         this.pageobj.isSingle = true;
                         this.tableData = {};
@@ -221,6 +235,8 @@
             //添加人员
             addDepart(){
                 this.$refs.powerNode.centerDialogVisible = true;
+                this.$refs.powerNode.currentIndex = this.currentIndex;
+                this.currentIndex == 0 ? this.$refs.powerNode.titleMsg = "商机管理使用人员" :  this.$refs.powerNode.titleMsg = "数据导出使用人员";
                 this.$refs.powerNode.getData();
             },
             //商机、数据人员使用列表切换

+ 9 - 3
src/views/ent/components/chooseDepart.vue

@@ -12,7 +12,7 @@
               <div class="content_left">
                 <div class="crumbs">
                   <h4>选择</h4>
-                  <span @click="depaertInit"><i>通讯录</i></span>
+                  <span @click="bachHone"><i>通讯录</i></span>
                   <span>
                     <i v-for="(item,i) in filterTitleList" :key="i" :style="{color:item.color}" @click="backDepart(item.id,i)">{{ item.aname }}</i>
                   </span>
@@ -76,9 +76,15 @@ export default {
       this.titleList = [];
       this.selectedList = [];
       let data = this.$store.state.departList
-      let id = this.$store.state.entId;
+      let id = this.$store.state.entMsg.dept_id;
+      this.departList = [{name:data.department,id:id,dept_count:data.departments.length}];
+    },
+    //返回通讯录
+    bachHone(){
+      this.titleList = [];
+      let data = this.$store.state.departList
+      let id = this.$store.state.entMsg.dept_id;
       this.departList = [{name:data.department,id:id,dept_count:data.departments.length}];
-      console.log("ddcs",this.selectedList)
     },
      //返回上级部门
       backDepart(id,i){

+ 4 - 4
src/views/ent/components/depart.vue

@@ -11,7 +11,7 @@
             <h4><strong>公司/部⻔名称</strong><strong>管理员</strong><strong>人数</strong><strong>编辑</strong></h4>
             <ul>
                 <li v-if="companyMsg">
-                    <span>{{ companyData.department }}</span><span>{{ companyMsg.role }}</span><span>{{ companyMsg.num }}</span><span style="cursor: pointer;" v-if="companyMsg.role">编辑</span>
+                    <span>{{ companyData.department }}</span><span>{{ companyMsg.role }}</span><span>{{ companyMsg.num }}</span><span style="cursor: pointer;" v-if="companyMsg.role"></span>
                 </li>
             </ul>
             <el-tree
@@ -106,7 +106,7 @@
 <script>
 import { componyMsg,componyList,addDepartInter,departDetail,departUpdata , delDepartInter} from '@/api/api';
 import addDrawer from "./addDrawer";
-import delPopup from "./del"
+import delPopup from "./del";
 import chooseUser from "./chooseUser"
 export default {
     components:{
@@ -138,7 +138,7 @@ export default {
         componyMsg().then(function(res){
             return res
         }).then(val =>{
-            this.$store.commit("entIdFun",val.data.dept_id)
+            this.$store.commit("entMsgFun",val.data)
             this.companyId = val.data.dept_id;
             this.getOutData();
         })
@@ -162,7 +162,7 @@ export default {
             this.companyData.persons && this.companyData.persons.forEach((v,i) =>{
                 if(v.role){
                     newObj.role = v.name;
-                    newObj.num = this.companyData.quota;
+                    newObj.num = this.companyData.added;
                 }
             })
             return newObj

+ 127 - 27
src/views/ent/components/personal.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="ent_personal">
         <header>
-            <h4>杭州琴月文创娱乐有限公司</h4> <span>已认证</span>
+            <h4>{{ $store.state.departList.department }}</h4> <span>已认证</span>
         </header>
         <div class="ent_personal_screen">
                 <button @click="addPerson('add')">添加人员</button>
@@ -26,7 +26,10 @@
             <el-table :data="tableData.list" style="width: 100%" @selection-change="allSelectNode">
                 <el-table-column type="selection" width="55" :selectable="checkSelectable">
                 </el-table-column>
-                <el-table-column prop="name"  label="姓名" width="160" >
+                <el-table-column  prop="name" label="姓名" width="160" >
+                     <template slot="header">
+                        <div style="cursor: pointer;" @click="getpersonData(sortObj.nameSort,'')">姓名 <i class="el-icon-arrow-down"></i></div>
+                    </template>
                 </el-table-column>
                 <el-table-column label="邮箱" width="180">
                     <template slot-scope="scope">
@@ -35,7 +38,10 @@
                 </el-table-column>
                 <el-table-column prop="phone" label="手机">
                 </el-table-column>
-                <el-table-column width="200" prop="dname" label="部门">
+                <el-table-column width="200" prop="dname"  label="部门">
+                    <template slot="header">
+                        <div style="cursor: pointer;" @click="getpersonData('',sortObj.departSort)">部门 <i class="el-icon-arrow-down"></i></div>
+                    </template>
                 </el-table-column>
                 <el-table-column
                     label="角色">
@@ -71,7 +77,7 @@
                         <span><i>*</i> 人员姓名:</span>
                         <div :class="{test:ruleForm.nameStatus}">
                              <el-input v-model="ruleForm.name" @input="regName" placeholder="请输入人员姓名"></el-input>
-                             <p>请输入姓名</p>
+                             <p>请输入正确的姓名</p>
                         </div>
                     </label>
                      <label class="required">
@@ -81,9 +87,12 @@
                             <p>请输入正确的手机号</p>
                         </div>
                     </label>
-                     <label>
+                     <label class="required">
                         <span>邮箱:</span>
-                        <el-input v-model="ruleForm.email" placeholder="请输入人员邮箱"></el-input>
+                        <div :class="{test:ruleForm.emailStatus}">
+                             <el-input v-model="ruleForm.email" placeholder="请输入人员邮箱" @input="emailReg"></el-input>
+                             <p>请输入正确的邮箱格式</p>
+                        </div>
                     </label>
                     <label>
                         <span>部门:</span>
@@ -112,9 +121,12 @@
                         <span><i>*</i>手机:</span>
                         <el-input v-model="ruleForm.phone" disabled placeholder="请输入人员手机号" ></el-input>
                     </label>
-                     <label>
+                    <label class="required">
                         <span>邮箱:</span>
-                        <el-input v-model="ruleForm.email" placeholder="请输入人员邮箱"></el-input>
+                        <div :class="{test:ruleForm.emailStatus}">
+                             <el-input v-model="ruleForm.email" placeholder="请输入人员邮箱" @input="emailReg"></el-input>
+                             <p>请输入正确的邮箱格式</p>
+                        </div>
                     </label>
                     <label>
                         <span>部门:</span>
@@ -129,15 +141,29 @@
             </template>
         </add-drawer>
 
+        <!-- 删除弹窗 -->
+        <del-popup ref="childDel" title="删除人员">
+            <template slot="content"> 
+                   <p v-if="currentDelStatus === 'all'">
+                       <span v-for="(item) in deal_selectDepart" :key="item.id">{{item.pname}}</span>
+                   </p>
+                   <p v-else> {{ruleForm.name}} </p>
+            </template>
+            <template slot="del">
+                <button @click="del_Btn" class="del">删除</button>
+            </template>
+        </del-popup>
+
     </div>
 </template>
 
 <script>
 import { personInter,departsAll,personAddInter,personDetailInter ,personUpdateInter,personDelInter} from '@/api/api';
 import addDrawer from "./addDrawer";
+import delPopup from "./del";
 export default {
     components:{
-       addDrawer
+       addDrawer,delPopup
     },
     data() {
         return {
@@ -152,7 +178,8 @@ export default {
                 email:'',
                 personId:'',
                 nameStatus:false,
-                phoneStatus:false
+                phoneStatus:false,
+                emailStatus:false,
             },
             whichPart:'add',//add: 添加 edit: 编辑
             selectDepart:[],
@@ -160,7 +187,18 @@ export default {
                 current:1,
                 isSingle:false,
                 pageSize:10
-            }
+            },
+            sortObj:{
+                nameSort:true,
+                departSort:true,
+            },
+            currentSort:{
+                newName:'',
+                newDepart:''
+            },
+            pending:false,
+            currentArr:'',
+            currentDelStatus:''
         }
     },
     created() {
@@ -173,6 +211,18 @@ export default {
         })
     },
     computed:{
+        deal_selectDepart:function(index){
+            let [...arr] = this.selectDepart
+            arr.forEach((v,i) =>{
+                if(i !== 0){
+                   v.pname  = `,${v.name}`
+                }else{
+                    v.pname  = `${v.name}`
+                }
+            })
+            console.log(arr,this.selectDepart)
+            return arr;
+        },
         departMsg:function(){
             if(this.$store.state.chooseDepart){
                 return this.$store.state.chooseDepart
@@ -203,13 +253,36 @@ export default {
         //获取当前点击页数据
         getPageData(page){
             this.pagebj.current = page;
-            this.getpersonData();
+            this.getpersonData(this.currentSort.newName,this.currentSort.newDepart,"page");
         },
         //人员数据
-        getpersonData(){
+        getpersonData(name="",depart="",category=""){
+            if(category !== "page"){
+                if(name == "" && (typeof name == 'string')){
+                    
+                    this.currentSort.newName = "";
+                }else{
+                    this.currentSort.newDepart = "";
+                    this.sortObj.nameSort = !(this.sortObj.nameSort);
+                    this.currentSort.newName = this.sortObj.nameSort;
+                }
+                console.log(typeof depart,depart == "","=====")
+                if(depart == "" && (typeof depart === 'string')){ 
+                    console.log("111")
+                    this.currentSort.newDepart = "";
+                }else{
+                    this.currentSort.newName = "";
+                    this.sortObj.departSort = !this.sortObj.departSort;
+                    this.currentSort.newDepart = this.sortObj.departSort;
+                }
+            }
+            
+            console.log(this.currentSort.newDepart,"=====this.currentSort.newDepart")
+
+
             personInter({
-                nameSort:true,
-                departmentSort:'',
+                nameSort:this.currentSort.newName,
+                departmentSort:this.currentSort.newDepart,
                 page:this.pagebj.current,
                 pageSize:this.pagebj.pageSize,
                 name:this.searchval,
@@ -247,7 +320,8 @@ export default {
         },
         //验证姓名不能为空
         regName(){
-            this.ruleForm.name == '' ? this.ruleForm.nameStatus = true : this.ruleForm.nameStatus = false;
+            let reg = /[^\u4e00-\u9fa5]/g;
+            reg.test(this.ruleForm.name) || this.ruleForm.name == '' ? this.ruleForm.nameStatus = true : this.ruleForm.nameStatus = false;
         },
         //验证手机号是否正确
         regPhone(){
@@ -257,7 +331,9 @@ export default {
         //删除人员
         delDepart(status){
             // status  all:d多选删除  single:编辑单个删除
-            let delId = ''
+            this.currentDelStatus = status;
+            let delId = '';
+            
             if(status === 'all'){
                 this.selectDepart.forEach((v,i) =>{
                     if(v.id){
@@ -271,7 +347,13 @@ export default {
                 this.$message({message: '企业管理员禁止删除',type: 'warning'});
                 return;
             }
-            personDelInter({id:delId}).then(res =>{
+            this.currentArr = delId;
+            this.$refs.childDel.dialogTableVisible = true;
+        },
+        //确认删除人员
+        del_Btn(){
+            personDelInter({id:this.currentArr}).then(res =>{
+                this.$refs.childDel.dialogTableVisible = false;
                 if(res.data.status == 1){
                     this.getpersonData();
                     this.$message({ message: '删除成功',type: 'success'});
@@ -285,29 +367,47 @@ export default {
         chooseDepartFc(){
             this.$refs.addDrewer.findCompont();
         },
+        //邮箱验证
+        emailReg(){
+            var reg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"); //正则表达式
+            console.log(this.ruleForm.email,"===this.ruleForm.email")
+            if(this.ruleForm.email == "") return this.ruleForm.emailStatus = false;
+            if (!reg.test(this.ruleForm.email)){
+                //  this.$message({ message: '邮箱地址格式错误', type: 'warning' });
+                 this.ruleForm.emailStatus =  true
+            }else{
+                this.ruleForm.emailStatus = false;
+            }
+        },
         // 保存、编辑人员信息
         saveDepart(){
             let deparId = '';
-            this.departMsg.id ? deparId = this.departMsg.id : deparId = this.$store.state.entId;
+            if(this.pending) return;
+            this.departMsg.id ? deparId = this.departMsg.id : deparId = this.$store.state.entMsg.dept_id;
+            this.regName();
+            this.regPhone();
+            if(this.ruleForm.emailStatus) return;
+
              if(this.whichPart === "add"){
-                
-                if(this.ruleForm.nameStatus && this.ruleForm.phoneStatus) {
-                    this.regName();
-                    this.regPhone();
-                }else{ 
-                    
-                    personAddInter({name:this.ruleForm.name,phone:this.ruleForm.phone,mail:this.ruleForm.email,id:deparId}).then(res =>{
+                if(!this.ruleForm.nameStatus && !this.ruleForm.phoneStatus) {
+                  this.pending = true;
+                   personAddInter({name:this.ruleForm.name,phone:this.ruleForm.phone,mail:this.ruleForm.email,id:deparId}).then(res =>{
+                       this.pending = false
                         if(res.data.status == 1){
                             this.$refs.addDrewer.drawer = false;
                             this.getpersonData();
                             this.$message({message: '添加成功',type: 'success'});
-                        }else{
+                        }else if(res.data.status == -1){
+                            this.$message({ message: '该手机号在本企业内已存在', type: 'warning'});
+                        }else {
                             this.$message({ message: '添加失败', type: 'warning'});
                         }
                     })
                 }
              }else{
+                this.pending = true;
                 personUpdateInter({mail:this.ruleForm.email,did:deparId,id:this.ruleForm.personId}).then(res =>{
+                    this.pending = false
                     if(res.data.status == 1){
                         this.$refs.addDrewer.drawer = false;
                         this.getpersonData();

+ 32 - 28
src/views/ent/components/powerPerson.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="ent_powerPerson">
       <el-dialog
-          title="选择数据导出使用人员"
+          :title="titleMsg"
           :show-close="false"
           :visible.sync="centerDialogVisible"
           width="890px"
@@ -34,7 +34,7 @@
                   </ul>
               </div>
           </div>
-          <p>已选择{{ personList.checked }}人共购买{{ personList.quota }}人</p>
+          <p v-if="currentIndex == 0">已选择{{ personList.checked }}人共购买{{ personList.quota }}人</p>
           <span slot="footer" class="dialog-footer btns">
               <button @click="saveDepart" class="save">保存</button>
               <button  @click="centerDialogVisible = false" class="cancle">取消</button>
@@ -53,12 +53,13 @@ export default {
        searchVal:'',
        personList:{},
        selectedList:[],
-       checked:false
+       checked:false,
+       titleMsg:'',
+       currentIndex:'0'
      }
    },
    computed:{
       deal_personList:function(){
-        console.log("变化")
          let arr = JSON.parse(JSON.stringify(this.personList));
           arr.list && arr.list.forEach((items,x) =>{
               let list = [];
@@ -71,12 +72,10 @@ export default {
                     item.checked = false;
                   }
                 })
-                console.log(item.checked,"------====",x)
                 if(item.checked){
                   list.push("1")
                 }
               }) 
-              console.log("=======x",items.status)
               if(list.length === items.users.length){
                 items.status = "selectAll";
               }else if(list.length === 0){
@@ -127,10 +126,13 @@ export default {
      //选择人员
      chooseUser(val,status){
         if(status === 'single'){
-          if(this.selectedList.length >= this.personList.quota){
-            this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
-            return;
+          if(this.currentIndex == 0){
+              if(this.selectedList.length >= this.personList.quota){
+                this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
+                return;
+              }
           }
+          
           let newArr = this.selectedList.filter(x => {
               return val.user_id == x.user_id
           })
@@ -145,26 +147,28 @@ export default {
         }
      },
      selectGroup(val,i){
-       console.log(val.status)
-       if(val.status == "selectAll"){
-          this.$message({ message: '该人员已添加',type: 'warning'});
-          return;
-       }
-        val.status = true;
-        if(this.selectedList.length >= this.personList.quota){
-          this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
-          return;
-        }
-        let newVal = this.judgeHeavy(val);
-        let newSelect = this.selectedList.concat(newVal);
-        if(newSelect.length > this.personList.quota){
-          if(newVal.length>1){
-            this.$message({ message: '大于可添加的人数,请单个添加',type: 'warning'});
-          }else{
+      //  val.status = true;
+      let newVal = this.judgeHeavy(val);
+      let newSelect = this.selectedList.concat(newVal);
+       if(this.currentIndex == 0){
+         if(val.status == "selectAll"){
+            this.$message({ message: '该人员已添加',type: 'warning'});
+            return;
+         }
+          if(this.selectedList.length >= this.personList.quota){
             this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
+            return;
           }
-          return;
-        }
+          
+          if(newSelect.length > this.personList.quota){
+            if(newVal.length>1){
+              this.$message({ message: '大于可添加的人数,请单个添加',type: 'warning'});
+            }else{
+              this.$message({ message: '大于购买人数,不可继续添加',type: 'warning'});
+            }
+            return;
+          }
+       }
         this.personList.list.splice(i,1,val)
         this.chooseUser(newVal)
      },
@@ -306,7 +310,7 @@ export default {
                 .itemList{
                   transition: all  0.5s ;
                   opacity: 1;
-                  max-height:400px;
+                  max-height:4000px;
                   >div{
                     cursor: pointer;
                     color: $normal_color;

+ 5 - 4
src/views/ent/myEnt.vue

@@ -2,13 +2,13 @@
     <div class="my_ent">
         <el-tabs v-model="activeName" @tab-click="handleClick">
             <el-tab-pane label="部门管理" name="first">
-                <v-depart></v-depart>
+                <v-depart v-if="activeName =='first'"></v-depart>
             </el-tab-pane>
             <el-tab-pane label="人员管理" name="second">
-                <v-person></v-person>
+                <v-person v-if="activeName =='second'"></v-person>
             </el-tab-pane>
             <el-tab-pane label="权限管理" name="third">
-                <v-author></v-author>
+                <v-author v-if="activeName =='third'"></v-author>
             </el-tab-pane>
         </el-tabs>
     </div>
@@ -32,7 +32,8 @@ export default {
     created(){ },
     methods: {
         handleClick(tab, event) {
-            this.activeName = tab.name
+            this.activeName = tab.name;
+            console.log(this.activeName,"----")
         }
     }
 }

+ 2 - 2
vue.config.js

@@ -19,8 +19,8 @@ module.exports = {
         // target: "https://app2-jytest.jianyu360.cn",
         // target: "http://192.168.20.241:813",
         // target: "http://127.0.0.1:812",
-        // target:'http://192.168.20.51:815',
-        target:'http://192.168.20.214:815',
+        target:'http://192.168.20.51:815',
+        // target:'http://192.168.20.214:815',
         changeOrigin: true,
         ws: true,
         pathRewrite: {