소스 검색

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper into master

# Conflicts:
#	fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
seyason 1 년 전
부모
커밋
8f8a7863bb

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectCustomController.java

@@ -18,6 +18,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -46,7 +47,8 @@ public class ProjectCustomController {
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
         List<String> nameList=new ArrayList<>();
-        projectCustomList.forEach(pc->{
+        List<ProjectCustom> customList = projectCustomList.stream().filter(pl -> pl.getCustomType().equals(projectCustom.getCustomType())).collect(Collectors.toList());
+        customList.forEach(pc->{
             nameList.add(pc.getCustomName());
         });
         if(nameList.contains(projectCustom.getCustomName())){

+ 112 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1733,7 +1733,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             ProjectSeparate projectSeparate = projectSeparateMapper.selectById(id);
             project.setProjectSeparate(projectSeparate);
         }
-        //判断当前用户是否是这个项目所属BU的直接或者上级部门负责人(主要或其他负责人)
+		//判断当前用户是否是这个项目所属BU的直接或者上级部门负责人(主要或其他负责人)
         String deptCascade = project.getDeptCascade();
         if (!StringUtils.isEmpty(deptCascade)) {
             if (user.getManageDeptId() > 0) {
@@ -1758,7 +1758,66 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             }
         }
-        HttpRespMsg msg = new HttpRespMsg();
+		List<ProjectCustom> proCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
+        //按顺序存储项目自定义字段 对应plate
+        HashMap map=new HashMap();
+        for(int i=0;i<proCustomList.size();i++){
+            String disposePhoto;
+            switch (i){
+                case 0:
+                    disposePhoto= disposePhoto(project.getPlate1());
+                    project.setPlate1(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate1());
+                    break;
+                case 1:
+                    disposePhoto= disposePhoto(project.getPlate2());
+                    project.setPlate2(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate2());
+                    break;
+                case 2:
+                    disposePhoto= disposePhoto(project.getPlate3());
+                    project.setPlate3(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate3());
+                    break;
+                case 3:
+                    disposePhoto= disposePhoto(project.getPlate4());
+                    project.setPlate4(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate4());
+                    break;
+                case 4:
+                    disposePhoto= disposePhoto(project.getPlate5());
+                    project.setPlate5(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate5());
+                    break;
+                case 5:
+                    disposePhoto= disposePhoto(project.getPlate6());
+                    project.setPlate6(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate6());
+                    break;
+                case 6:
+                    disposePhoto= disposePhoto(project.getPlate7());
+                    project.setPlate7(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate7());
+                    break;
+                case 7:
+                    disposePhoto= disposePhoto(project.getPlate8());
+                    project.setPlate8(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate8());
+                    break;
+                case 8:
+                    disposePhoto= disposePhoto(project.getPlate9());
+                    project.setPlate9(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate9());
+                    break;
+                case 9:
+                    disposePhoto= disposePhoto(project.getPlate10());
+                    project.setPlate10(disposePhoto);
+                    map.put(proCustomList.get(i).getCustomName(),project.getPlate10());
+                    break;
+            }
+        }
+        project.setPlateMap(map);
+		HttpRespMsg msg = new HttpRespMsg();
         msg.data = project;
         return msg;
     }
@@ -1766,10 +1825,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     @Override
     public HttpRespMsg detailTwo(Integer id, HttpServletRequest request) {
-        HttpRespMsg projectPage = getProjectPage(1, 20, null, 1, 0, null, id, null, null, null, null, null, null, null, null, request);
-        Map<String,Object> mapList= (Map<String, Object>) projectPage.data;
-        List<Project> projectList= (List<Project>) mapList.get("records");
-        Project project = projectList.get(0);
+//        HttpRespMsg projectPage = getProjectPage(1, 20, null, 1, 0, null, id, null, null, null, null, null, null, null, null, request);
+//        Map<String,Object> mapList= (Map<String, Object>) projectPage.data;
+//        List<Project> projectList= (List<Project>) mapList.get("records");
+        Project project = projectMapper.selectById(id);
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         TimeType timeType = timeTypeMapper.selectById(companyId);
         //todo:计算项目预算工时
@@ -5397,6 +5456,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<String> nameList= (List<String>) resultMap.get("nameList");
         Company company = companyMapper.selectById(user.getCompanyId());
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", company.getId()));
+        List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", company.getId()));
+        List<ProjectCustom> customList = projectCustomList.stream().filter(pl -> pl.getCustomType() != 1).collect(Collectors.toList());
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
         List<String> headList = new ArrayList<String>();
@@ -5448,6 +5509,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             headList.add(MessageUtils.message("entry.proLevel"));
             headList.add(MessageUtils.message("entry.contract"));
         }
+        if(timeType.getProjectCustom()==1){
+            customList.forEach(cl->{
+                headList.add(cl.getCustomName());
+            });
+        }
         if(company.getId()==936){
 //            headList.add("合同编号");
 //            headList.add("质保开始时间");
@@ -5606,6 +5672,46 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
                 rowData.add(df.format((Double)projectVO.getContractAmount()));
             }
+            if(timeType.getProjectCustom()==1){
+                for (int i = 0; i < projectCustomList.size(); i++) {
+                    ProjectCustom projectCustom = projectCustomList.get(i);
+                    if(projectCustom.getCustomType()==1){
+                        continue;
+                    }
+                    switch (i){
+                        case 0:
+                            rowData.add(projectVO.getPlate1());
+                            break;
+                        case 1:
+                            rowData.add(projectVO.getPlate2());
+                            break;
+                        case 2:
+                            rowData.add(projectVO.getPlate3());
+                            break;
+                        case 3:
+                            rowData.add(projectVO.getPlate4());
+                            break;
+                        case 4:
+                            rowData.add(projectVO.getPlate5());
+                            break;
+                        case 5:
+                            rowData.add(projectVO.getPlate6());
+                            break;
+                        case 6:
+                            rowData.add(projectVO.getPlate7());
+                            break;
+                        case 7:
+                            rowData.add(projectVO.getPlate8());
+                            break;
+                        case 8:
+                            rowData.add(projectVO.getPlate9());
+                            break;
+                        case 9:
+                            rowData.add(projectVO.getPlate10());
+                            break;
+                    }
+                }
+            }
             if(company.getId()==936){
                 Optional<ProjectSeparate> first = projectSeparateList.stream().filter(ps -> ps.getId().equals(projectVO.getId())).findFirst();
                 if(first.isPresent()){

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -1039,6 +1039,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     //httpRespMsg.setError("操作失败");
                     httpRespMsg.setError(MessageUtils.message("other.operationFail"));
                 }
+            }else{
+                httpRespMsg.setError("原密码错误");
             }
         } catch (NullPointerException e) {
             //httpRespMsg.setError("验证失败");

+ 171 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -59,6 +59,20 @@
                         <el-col :span="5" ><span class="gray_label">{{yonghuUser.customDegreeName}}:</span></el-col>
                         <el-col :span="18" ><span>{{project.associateDegreeNames}}</span></el-col>
                     </el-row>
+
+                    <div v-if="user.timeType.projectCustom">
+                        <el-row :gutter="10" v-for="(item,index) in dataListTwo" :key="index">
+                            <el-col :span="5" ><span class="gray_label">{{ item.customName }}:</span></el-col>
+                            <el-col :span="18" v-if="item.customType != 1">
+                                <span>{{item.value}}</span>
+                            </el-col>
+                            <el-col :span="18" v-if="item.customType == 1">
+                                <viewer :images="item.value" class="detailsPicture">
+                                    <img :src="list.url" alt="" v-for="list,idx in item.value" :key="idx">
+                                </viewer>
+                            </el-col>
+                        </el-row>
+                    </div>
                     
 
                     <!-- this.project  -->
@@ -420,6 +434,46 @@
                         <el-input v-model="addForm.projectSeparate.projectCategorySub" :placeholder="$t('peaseenterthe')" maxlength="50" show-word-limit clearable></el-input>
                     </el-form-item>
                 </div> -->
+
+                <!-- 用户自己定义的字段 -->
+                <div style="margin-top: 20px" v-if="dataList.length > 0 && user.timeType.projectCustom">
+                    <el-form-item v-for="(item, index) in dataList" :key="item.id" :label="item.customName">
+                        <div v-if="item.customType == 0">
+                            <el-input v-model="item.value" clearable placeholder="请输入内容" @input="ipts(item.value, index)"></el-input>
+                        </div>
+                        <div v-if="item.customType == 1">
+                            <el-upload
+                                list-type="picture-card"
+                                ref="upload" :file-list="item.value" :action="index" :auto-upload="true" :limit="2" :disabled="item.valuelist.length == '2'" :http-request="fileUpload">
+                                    <i slot="default" class="el-icon-plus"></i>
+                                    <div slot="file" slot-scope="{file}">
+                                    <img
+                                        class="el-upload-list__item-thumbnail"
+                                        :src="file.url" alt=""
+                                    >
+                                    <span class="el-upload-list__item-actions">
+                                        <span
+                                        class="el-upload-list__item-preview"
+                                        @click="handlePictureCardPreview(file)"
+                                        >
+                                        <i class="el-icon-zoom-in"></i>
+                                        </span>
+                                        <span
+                                        v-if="!disabled"
+                                        class="el-upload-list__item-delete"
+                                        @click="handleRemove(file, index)"
+                                        >
+                                        <i class="el-icon-delete"></i>
+                                        </span>
+                                    </span>
+                                    </div>
+                                </el-upload>
+                        </div>
+                        <div v-if="item.customType == 2">
+                            <el-date-picker v-model="item.value" type="date" placeholder="请选择日期"  value-format="yyyy-MM-dd"></el-date-picker>
+                        </div>
+                    </el-form-item>
+                </div>
                
             </el-form>
             <div slot="footer" class="dialog-footer">
@@ -608,6 +662,10 @@
                 <el-button type="primary" @click="submitKeyNodeaddForm()">{{ $t('btn.determine') }}</el-button>
             </span>
         </el-dialog>
+        <!-- 图片放大弹窗 -->
+        <el-dialog :visible.sync="imgUrlListFlg" width="70%" :before-close="xhutDown">
+            <img width="100%" :src="imgUrlLists" alt="">
+        </el-dialog>
         
         <!-- 按部门选择相关领导,弃用 -->
         <!-- <el-dialog title="选择相关领导"  v-if="chooseLeaderVisible" :visible.sync="chooseLeaderVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
@@ -671,6 +729,12 @@
     overflow: hidden;
     text-overflow: ellipsis;
 }
+.detailsPicture img{
+    display: inline-block;
+    width: 60px;
+    height: 60px;
+    margin-right: 10px;
+}
 </style>
 <script>
     // 自定义select组件
@@ -753,6 +817,12 @@
                 keyNodesList: [],
                 projectKeyNodesData: [],
                 keyNodeIsShow: false,
+
+                projectCustomList: [],
+                dataList: [],
+                dataListTwo: [],
+                imgUrlListFlg: false,
+                imgUrlLists: []
             };
         },
         filters: {
@@ -1636,6 +1706,16 @@
                                 formData.append("deptId", this.addForm.deptId[this.addForm.deptId.length - 1]);
                             }
                         }
+                        // 用户自己定义的字段
+                        for(var i in this.dataList) {
+                             var str = 'plate' + (+i + 1)
+                             if(this.dataList[i].customType != '1') {
+                                 formData.append(str,this.dataList[i].value==null?'':this.dataList[i].value);
+                             } else {
+                                formData.append(str,this.dataList[i].valuelist.join('@'));
+                             }
+                         }
+                         
                         // return
                         this.http.uploadFile(this.port.project.add,formData,
                         res => {
@@ -1667,6 +1747,7 @@
             
             showEdit() {
                 this.addForm = JSON.parse(JSON.stringify(this.project));
+                this.dataList = JSON.parse(JSON.stringify(this.dataListTwo));
                 // console.log('---'+this.project);
                 // console.log(this.addForm.projectCode);
                 
@@ -1909,9 +1990,10 @@
                         } else {
                             this.project = res.data;
                         }
-                        // console.log('看看值')
-                        // console.log('test123',this.project);
                         this.participator = this.project.participationList;
+                        if(this.user.timeType.projectCustom) {
+                            this.chulishuju(this.project)
+                        }
                     } else {
                         this.$message({
                         message: res.msg,
@@ -1928,6 +2010,64 @@
                 });
                 this.getProjectProfessionList();
             },
+            // 获取表单设置
+            getProjectCustom() {
+                this.http.post('/project-custom/getProjectCustom', {},
+                res => {
+                    if (res.code == "ok") {
+                        var yaunz = []
+                        for(var i in res.data) {
+                            if(res.data[i].customType == '1') {
+                                this.$set(res.data[i], 'value', [])
+                                this.$set(res.data[i], 'valuelist', [])
+                            } else {
+                                this.$set(res.data[i], 'value', '')
+                                this.$set(res.data[i], 'valuelist', [])
+                            }
+                            yaunz.push(res.data[i])
+                        }
+                        this.projectCustomList = yaunz
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                })
+            },
+            // 处理数据
+            chulishuju(data) {
+                let arrLists = JSON.parse(JSON.stringify(this.projectCustomList))
+                var arr = []
+                for(var s in arrLists) {
+                    for(var p in data.plateMap) {
+                        if(arrLists[s].customName == p && arrLists[s].customType != '1') {
+                            arrLists[s].value = data.plateMap[p]
+                        } 
+                        if(arrLists[s].customName == p && arrLists[s].customType == '1' && data.plateMap[p] != null && data.plateMap[p] != ''){
+                            var sel = data.plateMap[p].split(',')
+                            var live = []
+                            for(var dd in sel) {
+                                var obj = {}
+                                obj.name = p
+                                obj.url = '/upload/' + sel[dd]
+                                live.push(obj)
+                            }
+                            console.log('值值hi', this.pictureAddress)
+                            arrLists[s].value = live
+                            arrLists[s].valuelist = sel
+                        }
+                    }
+                }
+                this.dataList = arrLists
+                this.dataListTwo = JSON.parse(JSON.stringify(arrLists))
+                console.log(this.dataList, 8888)
+            },
             // 获取部门
             getDepartmentList() {
                 this.http.post( this.port.manage.depList, {},
@@ -2017,7 +2157,32 @@
                     }
                     this.addMembForm.userId = arr
                 }
-            }
+            },
+            ipts(i, item) {
+                this.$forceUpdate()
+            },
+            handlePictureCardPreview(file) {
+                console.log(file)
+                this.imgUrlLists = file.url;
+                this.imgUrlListFlg = true;
+                // this.$set(this, 'imgUrlListFlg', true)
+                // console.log(this.imgUrlListFlg)
+                this.$forceUpdate()
+            },
+            handleRemove(file, index) {
+                let uploadFiles = this.$refs.upload[0].uploadFiles
+                for (var i = 0; i < uploadFiles.length; i++) {
+                    if (uploadFiles[i]['url'] == file.url) {
+                        uploadFiles.splice(i, 1)
+                        this.dataList[index].valuelist.splice(i, 1)
+                    }
+                }
+            },
+            xhutDown(done) {
+                this.imgUrlListFlg = false
+                done()
+                this.$forceUpdate()
+            },
         },
         created() {
             // console.log('created===');
@@ -2029,6 +2194,9 @@
             };
         },
         mounted() {
+            if(this.user.timeType.projectCustom) {
+                this.getProjectCustom()
+            }
             // console.log('mounted===');
             this.curProjectId = parseInt(this.$route.params.id);
             this.getDepartment();

+ 3 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -3944,6 +3944,7 @@ a {
             // 处理数据
             chulishuju(data) {
                 console.log(data, 12345)
+                console.log(this.dataListBf, '看看')
                 let arrLists = JSON.parse(JSON.stringify(this.dataListBf))
                 var arr = []
                 for(var s in arrLists) {
@@ -3957,7 +3958,8 @@ a {
                             for(var dd in sel) {
                                 var obj = {}
                                 obj.name = p
-                                obj.url = this.pictureAddress + '/upload/' + sel[dd]
+                                // obj.url = this.pictureAddress + '/upload/' + sel[dd]
+                                obj.url = '/upload/' + sel[dd]
                                 live.push(obj)
                             }
                             console.log('值值hi', this.pictureAddress)

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 10288 - 12503
fhKeeper/formulahousekeeper/timesheet_h5/package-lock.json


+ 13 - 0
fhKeeper/formulahousekeeper/timesheet_h5/src/App.vue

@@ -137,6 +137,19 @@ export default {
     box-sizing: border-box;
   }
   
+  .userNameClass_left {
+    display: inline-block;
+    width: 100px;
+  }
+  .userNameClass_right {
+    display: inline-block;
+    width: 150px;
+    float: right;
+    text-align: right;
+    overflow: hidden;
+    white-space:nowrap;
+    text-overflow: ellipsis;
+  }
 </style>
 
 

+ 12 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/expense/index.vue

@@ -36,12 +36,21 @@
                             <div class="popupCon conBorder">
                                 <van-radio-group v-model="userRadio" v-if="user.userNameNeedTranslate == '1'">
                                     <van-radio v-for="item in userList" :key="item.id" :name="item" class="popupItem marginNone borderNone">
-                                        <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                        <!-- <ww-open-data type='userName' :openid='item.name'></ww-open-data> -->
+                                        <span class="userNameClass_left">
+                                            <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                        </span>
+                                        <span class="userNameClass_right">
+                                            {{ item.jobNumber }}
+                                        </span>
                                     </van-radio>
                                 </van-radio-group>
                                 <van-radio-group v-model="userRadio" v-else>
-                                    <van-radio v-for="item in userList" :key="item.id" :name="item" class="popupItem marginNone borderNone">{{
-                                        item.name }}</van-radio>
+                                    <van-radio v-for="item in userList" :key="item.id" :name="item" class="popupItem marginNone borderNone">
+                                    <!-- {{ item.name }} -->
+                                        <span class="userNameClass_left">{{item.name}}</span>
+                                        <span class="userNameClass_right">{{ item.jobNumber }}</span>
+                                    </van-radio>
                                 </van-radio-group>
                             </div>
                             <div class="popupBtn">

+ 32 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/project/index.vue

@@ -73,8 +73,9 @@
                     placeholder="请选择" @click="clikls()"/>
                 </van-form>
             </van-dialog>
-            <van-popup v-model="showPickerUser" position="bottom" ref="usersPopup">
-                <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch" v-if="user.userNameNeedTranslate != '1'"></van-search>
+
+            <van-popup v-model="showPickerUser" position="bottom" ref="usersPopup" style="height: 90%">
+                <!-- <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch" v-if="user.userNameNeedTranslate != '1'"></van-search>
                 <div style="minHeight:300px;">
                 <template v-if="user.userNameNeedTranslate == '1'">
                     <van-checkbox class="userCheckbox" v-for="(item) in userList" :key="item.id" v-model="item.isChecked" ><ww-open-data type='userName' :openid='item.name'></ww-open-data></van-checkbox>
@@ -83,8 +84,37 @@
                     <van-checkbox class="userCheckbox" v-for="(item) in userList" :key="item.id" v-model="item.isChecked" >{{item.name}}</van-checkbox>
                 </template>
                 <van-button style="width:100%;position: -webkit-sticky;position: sticky;bottom: 0;" @click="refreshParticipate();showPickerUser=false">确定</van-button>
+                </div> -->
+                <div class="popupDiv">
+                    <div class="popupSearch" v-if="user.userNameNeedTranslate != '1'">
+                        <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch" shape="round" background="#F4F4F4"></van-search>
+                    </div>
+
+                    <div class="popupCon conBorder">
+                        <div class="popupConBox" v-if="user.userNameNeedTranslate == '1'">
+                            <van-checkbox class="popupItem marginNone borderNone" v-for="(item) in userList" :key="item.id" v-model="item.isChecked" >
+                                <span class="userNameClass_left">
+                                    <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                </span>
+                                <span class="userNameClass_right">
+                                    {{ item.jobNumber }}
+                                </span>
+                            </van-checkbox>
+                        </div>
+                        <div class="popupConBox" v-else>
+                            <van-checkbox class="popupItem marginNone borderNone" v-for="(item) in userList" :key="item.id" v-model="item.isChecked" >
+                                <span class="userNameClass_left">{{item.name}}</span>
+                                <span class="userNameClass_right">{{ item.jobNumber }}</span>
+                            </van-checkbox>
+                        </div>
+                    </div>
+
+                    <div class="popupBtn">
+                        <van-button style="width:100%;background: #1989fa;color: #ffffff;position: -webkit-sticky;position: sticky;bottom: 0;" round @click="refreshParticipate()" showPickerUser=false>确定</van-button>
+                    </div>
                 </div>
             </van-popup>
+
             <van-popup v-model="showPickerIncharger" position="bottom">
                 <van-picker show-toolbar :columns="inchargerUserList" value-key="name" @confirm="choseIncharger" @cancel="showPickerIncharger = false">
                     <template #option="item">

+ 8 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/review/index.vue

@@ -47,12 +47,18 @@
                         <div class="popupCon conBorder">
                             <div class="popupConBox" v-if="user.userNameNeedTranslate == '1'">
                                 <van-checkbox class="popupItem marginNone borderNone" v-for="(item) in showUserList" :key="item.id" v-model="item.isChecked" >
-                                    <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                    <span class="userNameClass_left">
+                                        <ww-open-data type='userName' :openid='item.name'></ww-open-data>
+                                    </span>
+                                    <span class="userNameClass_right">
+                                        {{ item.jobNumber }}
+                                    </span>
                                 </van-checkbox>
                             </div>
                             <div class="popupConBox" v-else>
                                 <van-checkbox class="popupItem marginNone borderNone" v-for="(item) in showUserList" :key="item.id" v-model="item.isChecked" >
-                                    <span>{{item.name}}</span>
+                                    <span class="userNameClass_left">{{item.name}}</span>
+                                    <span class="userNameClass_right">{{ item.jobNumber }}</span>
                                 </van-checkbox>
                             </div>
                         </div>

+ 23 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/task/editask.vue

@@ -114,8 +114,9 @@
                     </van-field>
                     <van-icon v-if="index != 0 && canEdit" class="delete_executor" name="delete-o" @click.stop="deleteExecutor(index)" />
                 </div>
-                <van-popup v-model="executor.show" position="bottom" v-if="canEdit">
-                    <van-search v-model="executor.searchText" placeholder="输入员工姓名搜索" @input="onSearch"></van-search>
+
+                <van-popup v-model="executor.show" position="bottom" v-if="canEdit" style="height: 90%">
+                    <!-- <van-search v-model="executor.searchText" placeholder="输入员工姓名搜索" @input="onSearch"></van-search>
                     <div style="minHeight:300px;">
                         <van-radio-group v-model="executor.item">
                             <van-radio v-for="uitem in executor.searchList" :key="uitem.id" :name="uitem" style="padding:10px">
@@ -125,8 +126,28 @@
                             </van-radio>
                         </van-radio-group>
                     <van-button style="width:100%;position: -webkit-sticky;position: sticky;bottom: 0;" @click="searchExecutor()">确定</van-button>
+                    </div> -->
+                    <div class="popupDiv">
+                        <div class="popupSearch" v-if="user.userNameNeedTranslate != '1'">
+                            <van-search v-model="executor.searchText" placeholder="输入员工姓名搜索" @search="onSearch" shape="round" background="#F4F4F4"></van-search>
+                        </div>
+
+                        <div class="popupCon conBorder">
+                            <van-radio-group v-model="executor.item" class="popupItem marginNone borderNone">
+                                <van-radio v-for="uitem in executor.searchList" :key="uitem.id" :name="uitem" style="padding:10px">
+                                    <span v-if="user.userNameNeedTranslate != 1" class="userNameClass_left">{{uitem.name}}</span>
+                                    <span v-else class="userNameClass_left"><ww-open-data type='userName' :openid='uitem.name'></ww-open-data></span>
+                                    <span class="userNameClass_right">{{ uitem.jobNumber }}</span>
+                                </van-radio>
+                            </van-radio-group>
+                        </div>
+
+                        <div class="popupBtn">
+                            <van-button style="width:100%;background: #1989fa;color: #ffffff;position: -webkit-sticky;position: sticky;bottom: 0;" round @click="searchExecutor()">确定</van-button>
+                        </div>
                     </div>
                 </van-popup>
+                
                 <!-- 添加执行人 -->
                 <div class="add_executor" @click="addExecutor" v-if="canEdit">添加执行人</div>
                 <!-- 优先级 -->

+ 10 - 10
fhKeeper/formulahousekeeper/timesheet_h5/vue.config.js

@@ -5,19 +5,19 @@ const themePath = path.resolve(__dirname,'src/assets/style/theme.less');
 const Timestamp = new Date().getTime();
 
 // var ip = '47.101.180.183'
-var ip = '47.100.37.243'
+// var ip = '47.100.37.243'
 // var ip = '192.168.2.7'
 // var ip = '127.0.0.1'
 
-// var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-// for (var i in ifaces) {
-//     for (var j in ifaces[i]) {
-//         var val = ifaces[i][j]
-//         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-//             ip = val.address
-//         }
-//     }
-// }
+var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+for (var i in ifaces) {
+    for (var j in ifaces[i]) {
+        var val = ifaces[i][j]
+        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+            ip = val.address
+        }
+    }
+}
 
 module.exports = {
     runtimeCompiler: true,

BIN
任务分组相关人员导入模板.xlsx


BIN
项目任务导入模板.xlsx