浏览代码

提交维度默认值、文件中心和组织架构薪资的问题、八爪鱼验证

Lijy 2 年之前
父节点
当前提交
0484f8674a

+ 171 - 128
fhKeeper/formulahousekeeper/octopus/src/views/signing/list.vue

@@ -100,78 +100,78 @@
         </el-dialog>
         </el-dialog>
         <!-- 完善合同信息  需要调下样式--> 
         <!-- 完善合同信息  需要调下样式--> 
         <el-dialog v-if="editDialogB" :visible.sync="editDialogB" title="完善合同信息" width="1200px">
         <el-dialog v-if="editDialogB" :visible.sync="editDialogB" title="完善合同信息" width="1200px">
-            <el-form :inline="true" :model="formInline" class="heClass">
-                <el-form-item label="甲方名称:" label-width="100px">
+            <el-form :inline="true" :model="formInline" :rules="rulesFormInline" ref="formInline" class="heClass">
+                <el-form-item label="甲方名称:" label-width="150px">
                     南京火石闪信网络科技有限公司
                     南京火石闪信网络科技有限公司
                 </el-form-item>
                 </el-form-item>
-                <el-form-item  label="乙方名称:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="secondParty" :disabled="finalize"  style="width: 300px"></el-input>
+                <el-form-item  label="乙方名称:" label-width="150px" prop="secondParty">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondParty" :disabled="finalize"  style="width: 300px"></el-input>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="甲方地址:" label-width="100px">
+                <el-form-item label="甲方地址:" label-width="150px">
                     南京市江宁区秣周东路12号悠谷软件园2号楼3楼P346室
                     南京市江宁区秣周东路12号悠谷软件园2号楼3楼P346室
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方地址:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="secondPartyAddr" :disabled="finalize" style="width: 400px"></el-input>
+                <el-form-item label="乙方地址:" label-width="150px" prop="secondPartyAddr">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondPartyAddr" :disabled="finalize" style="width: 400px"></el-input>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="甲方联系人:" label-width="100px">
+                <el-form-item label="甲方联系人:" label-width="150px">
                     屈跃庭
                     屈跃庭
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方联系人:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="secondPartyContacts" :disabled="finalize" style="width: 150px"></el-input>
+                <el-form-item label="乙方联系人:" label-width="150px" prop="secondPartyContacts">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondPartyContacts" :disabled="finalize" style="width: 150px"></el-input>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="甲方电话:" label-width="100px">
+                <el-form-item label="甲方电话:" label-width="150px">
                     15895914665
                     15895914665
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方电话:" label-width="100px">
-                    <el-input size="small" controls-position="right"  maxlength="11" v-model="secondPartyTel" :disabled="finalize" style="width: 150px"></el-input>
+                <el-form-item label="乙方电话:" label-width="150px" prop="secondPartyTel">
+                    <el-input size="small" controls-position="right"  maxlength="11" v-model="formInline.secondPartyTel" :disabled="finalize" style="width: 150px"></el-input>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="软件名称:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="softwareName" :disabled="finalize" style="width: 200px"></el-input>
+                <el-form-item label="软件名称:" label-width="150px" prop="softwareName">
+                    <el-input size="small" controls-position="right" v-model="formInline.softwareName" :disabled="finalize" style="width: 200px"></el-input>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="服务周期:" label-width="100px">
-                     <el-input-number size="small" controls-position="right" v-model="serviceDate" :disabled="finalize" style="width: 100px"></el-input-number> 年
+                <el-form-item label="服务周期:" label-width="150px" prop="serviceDate">
+                     <el-input-number size="small" controls-position="right" :min="0" v-model.number="formInline.serviceDate" :disabled="finalize" style="width: 100px"></el-input-number> 年
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="服务开始日期:" label-width="120px">
+                <el-form-item label="服务开始日期:" label-width="150px" prop="startDate">
                     <el-date-picker
                     <el-date-picker
-                        v-model="startDate"
+                        v-model="formInline.startDate"
                         :disabled="finalize"
                         :disabled="finalize"
                         type="date"
                         type="date"
                         placeholder="选择日期"
                         placeholder="选择日期"
                         value-format="yyyy-MM-dd">
                         value-format="yyyy-MM-dd">
                     </el-date-picker>
                     </el-date-picker>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="年服务费:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="serviceChargeOfYear" :disabled="finalize" style="width: 100px"></el-input> 元
+                <el-form-item label="年服务费:" label-width="150px" prop="serviceChargeOfYear">
+                    <el-input size="small" controls-position="right" v-model.number="formInline.serviceChargeOfYear" :disabled="finalize" style="width: 100px"></el-input> 元
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="定制开发费:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="customDevelopmentCosts" :disabled="finalize" style="width: 100px"></el-input> 元
+                <el-form-item label="定制开发费:" label-width="150px" prop="customDevelopmentCosts">
+                    <el-input size="small" controls-position="right" v-model.number="formInline.customDevelopmentCosts" :disabled="finalize" style="width: 100px"></el-input> 元
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="标准单价:" label-width="100px">
-                    <el-input size="small" controls-position="right" v-model="standardUnitPrice" :disabled="finalize" style="width: 100px"></el-input> 元每人每年
+                <el-form-item label="标准单价:" label-width="150px" prop="standardUnitPrice">
+                    <el-input size="small" controls-position="right" v-model.number="formInline.standardUnitPrice" :disabled="finalize" style="width: 100px"></el-input> 元每人每年
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="首次开通人数:" label-width="120px">
-                    <el-input-number size="small" controls-position="right" v-model="firstOpenNum" :disabled="finalize" style="width: 100px"></el-input-number> 人
+                <el-form-item label="首次开通人数:" :min="0" label-width="150px" prop="firstOpenNum" style="width: 100%">
+                    <el-input-number size="small" controls-position="right" v-model.number="formInline.firstOpenNum" :disabled="finalize" style="width: 100px"></el-input-number> 人
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="甲方账号:" label-width="120px">
+                <el-form-item label="甲方账号:" label-width="150px">
                     32050188143600000075
                     32050188143600000075
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="甲方开户行:" label-width="120px">
-                    建设银行股份有限公司南京湖北路支行
+                <el-form-item label="乙方账号:" label-width="150px" prop="secondPartyAccount">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondPartyAccount" :disabled="finalize" style="width: 300px"></el-input> 
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方账号:" label-width="120px">
-                    <el-input size="small" controls-position="right" v-model="secondPartyAccount" :disabled="finalize" style="width: 300px"></el-input> 
+                <el-form-item label="甲方开户行:" label-width="150px">
+                    建设银行股份有限公司南京湖北路支行
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方开户行:" label-width="120px">
-                    <el-input size="small" controls-position="right" v-model="secondPartyBankOfDeposit" :disabled="finalize" style="width: 300px"></el-input> 
+                <el-form-item label="乙方开户行:" label-width="150px" prop="secondPartyBankOfDeposit">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondPartyBankOfDeposit" :disabled="finalize" style="width: 300px"></el-input> 
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方开票名称:" label-width="120px">
-                    <el-input size="small" controls-position="right" v-model="secondPartyBillingName" :disabled="finalize" style="width: 200px"></el-input> 
+                <el-form-item label="乙方开票名称:" label-width="150px" prop="secondPartyBillingName">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondPartyBillingName" :disabled="finalize" style="width: 200px"></el-input> 
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方纳税人识别号:" label-width="140px">
-                    <el-input size="small" controls-position="right" v-model="secondPartyTIN" :disabled="finalize" style="width: 200px"></el-input> 
+                <el-form-item label="乙方纳税人识别号:" label-width="150px" prop="secondPartyTIN">
+                    <el-input size="small" controls-position="right" v-model="formInline.secondPartyTIN" :disabled="finalize" style="width: 200px"></el-input> 
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="乙方开具发票类型:" label-width="140px">
-                    <el-select v-model="invoiceType" placeholder="请选择" :disabled="finalize">
+                <el-form-item label="乙方开具发票类型:" label-width="150px" prop="invoiceType">
+                    <el-select v-model="formInline.invoiceType" placeholder="请选择" :disabled="finalize">
                         <el-option
                         <el-option
                         v-for="invoiceItem in invoiceOptions"
                         v-for="invoiceItem in invoiceOptions"
                         :key="invoiceItem.value"
                         :key="invoiceItem.value"
@@ -183,7 +183,7 @@
             </el-form>
             </el-form>
             <span slot="footer" class="dialog-footer">
             <span slot="footer" class="dialog-footer">
                 <el-button @click="editDialogB = false">取 消</el-button>
                 <el-button @click="editDialogB = false">取 消</el-button>
-                <el-button type="primary" @click="ConfirmB()" :loading="listLoading" v-if="!finalize">确定</el-button>
+                <el-button type="primary" @click="ConfirmB('formInline')" :loading="listLoading" v-if="!finalize">确定</el-button>
                 <el-button type="primary" @click="ConfirmC()" :loading="listLoading" v-if="!finalize">合同定稿</el-button>
                 <el-button type="primary" @click="ConfirmC()" :loading="listLoading" v-if="!finalize">合同定稿</el-button>
             </span>
             </span>
         </el-dialog>
         </el-dialog>
@@ -218,50 +218,54 @@ import axios from 'axios'
                 // 修改有效期
                 // 修改有效期
                 expirationNewDate: null,
                 expirationNewDate: null,
 
 
-                //甲方名称
-                firstParty: null,
-                //乙方名称
-                secondParty: null,
-                //甲方地址
-                firstPartyAddr: null,
-                //乙方地址
-                secondPartyAddr: null,
-                //甲方联系人
-                firstPartyContacts: null,
-                //乙方联系人
-                secondPartyContacts: null,
-                //甲方电话
-                firstPartyTel: null,
-                //乙方电话
-                secondPartyTel: null,
-                //软件名称
-                softwareName: null,
-                //服务周期
-                serviceDate:0,
-                //服务开始日期
-                startDate:null,
-                //年服务费
-                serviceChargeOfYear:0,
-                //定制开发费
-                customDevelopmentCosts:0,
-                //标准单价
-                standardUnitPrice:0,
-                //首次开通人数
-                firstOpenNum:0,
-                //甲方账号
-                firstPartyAccount:null,
-                //甲方开户行
-                firstPartyBankOfDeposit:null,
-                //乙方账号
-                secondPartyAccount:null,
-                //乙方开户行
-                secondPartyBankOfDeposit:null,
-                //乙方开票名称
-                secondPartyBillingName:null,
-                //乙方纳税人识别号
-                secondPartyTIN:null,
-                //乙方开具发票类型
-                invoiceType:'',
+                formInline: {
+                    //甲方名称
+                    firstParty: null,
+                    //乙方名称
+                    secondParty: null,
+                    //甲方地址
+                    firstPartyAddr: null,
+                    //乙方地址
+                    secondPartyAddr: null,
+                    //甲方联系人
+                    firstPartyContacts: null,
+                    //乙方联系人
+                    secondPartyContacts: null,
+                    //甲方电话
+                    firstPartyTel: null,
+                    //乙方电话
+                    secondPartyTel: null,
+                    //软件名称
+                    softwareName: null,
+                    //服务周期
+                    serviceDate:0,
+                    //服务开始日期
+                    startDate:null,
+                    //年服务费
+                    serviceChargeOfYear:0,
+                    //定制开发费
+                    customDevelopmentCosts:0,
+                    //标准单价
+                    standardUnitPrice:0,
+                    //首次开通人数
+                    firstOpenNum:0,
+                    //甲方账号
+                    firstPartyAccount:null,
+                    //甲方开户行
+                    firstPartyBankOfDeposit:null,
+                    //乙方账号
+                    secondPartyAccount:null,
+                    //乙方开户行
+                    secondPartyBankOfDeposit:null,
+                    //乙方开票名称
+                    secondPartyBillingName:null,
+                    //乙方纳税人识别号
+                    secondPartyTIN:null,
+                    //乙方开具发票类型
+                    invoiceType:'',
+                },
+
+                
                 //合同定稿
                 //合同定稿
                 finalize:false,
                 finalize:false,
 
 
@@ -302,6 +306,38 @@ import axios from 'axios'
                     label: '增值税专用发票'
                     label: '增值税专用发票'
                     },
                     },
                 ],
                 ],
+
+                // 规则校验
+                rulesFormInline: {
+                    secondParty: [{ required: true, message: '请输入乙方名称', trigger: 'blur' }],
+                    secondPartyAddr: [{ required: true, message: '请输入乙方地址', trigger: 'blur' }],
+                    secondPartyContacts: [{ required: true, message: '请输入乙方联系人', trigger: 'blur' }],
+                    secondPartyTel: [{ required: true, message: '请输入乙方电话', trigger: 'blur' }],
+                    softwareName: [{ required: true, message: '请输入软件名称', trigger: 'blur' }],
+                    serviceDate: [{ required: true, message: '请输入服务周期', trigger: 'blur' }],
+                    startDate: [{ required: true, message: '请选择服务开始日期', trigger: 'blur' }],
+                    serviceChargeOfYear: [
+                        { required: true, message: '请输入年服务费', trigger: 'blur' },
+                        { required: true, pattern:/^[a-zA-Z0-9_-]{1,16}$/, message: '请输入数字', trigger: 'change' },
+                    ],
+                    customDevelopmentCosts: [
+                        { required: true, message: '请输入定制开发费', trigger: 'blur' },
+                        { required: true, pattern:/^[a-zA-Z0-9_-]{1,16}$/, message: '请输入数字', trigger: 'change' },
+                    ],
+                    standardUnitPrice: [
+                        { required: true, message: '请输入标准单价', trigger: 'blur' },
+                        { required: true, pattern:/^[a-zA-Z0-9_-]{1,16}$/, message: '请输入数字', trigger: 'change' },
+                    ],
+                    firstOpenNum: [
+                        { required: true, message: '请输入首次开通人数', trigger: 'blur' },
+                        { required: true, pattern:/^[a-zA-Z0-9_-]{1,16}$/, message: '请输入数字', trigger: 'change' },
+                    ],
+                    secondPartyAccount: [{ required: true, message: '请输入乙方账号', trigger: 'blur' }],
+                    secondPartyBankOfDeposit: [{ required: true, message: '请输入乙方开户行', trigger: 'blur' }],
+                    secondPartyBillingName: [{ required: true, message: '请输入乙方开票名称', trigger: 'blur' }],
+                    secondPartyTIN: [{ required: true, message: '请输入乙方纳税人识别号', trigger: 'blur' }],
+                    invoiceType: [{ required: true, message: '请输入乙方开具发票类型', trigger: 'blur' }],
+                },
             };
             };
         },
         },
         // 过滤器
         // 过滤器
@@ -587,50 +623,57 @@ import axios from 'axios'
                 });
                 });
             }, 
             }, 
             // 完善合同信息
             // 完善合同信息
-            ConfirmB(){
-                this.listLoading = true;
-                this.http.post('/contract-detail/update', {
-                companyId:this.dialogData.id,
-                secondParty:this.secondParty,
-                secondPartyAddr:this.secondPartyAddr,
-                secondPartyContacts:this.secondPartyContacts,
-                secondPartyTel:this.secondPartyTel,
-                softwareName:this.softwareName,
-                serviceDate:this.serviceDate,
-                startDate:this.startDate,
-                serviceChargeOfYear:this.serviceChargeOfYear,
-                customDevelopmentCosts:this.customDevelopmentCosts,
-                standardUnitPrice:this.standardUnitPrice,
-                firstOpenNum:this.firstOpenNum,
-                secondPartyAccount:this.secondPartyAccount,
-                secondPartyBankOfDeposit:this.secondPartyBankOfDeposit,
-                secondPartyBillingName:this.secondPartyBillingName,
-                secondPartyTIN:this.secondPartyTIN,
-                billingAmount:this.billingAmount,
-                invoiceType:this.invoiceType,
-                },
-                res => {
-                    this.listLoading = false;
-                    if (res.code == "ok") {
-                        this.editDialogB = false
-                        this.downloadUrl2=res.data
-                        this.$message({
-                            message: "合同信息完善成功,合同模板已重新生成",
-                            type: "success"
-                        })
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: "error"
+            ConfirmB(formName){
+                this.$refs[formName].validate((valid) => {
+                    console.log(valid)
+                    if (valid) {
+                        this.listLoading = true;
+                        this.http.post('/contract-detail/update', {
+                            companyId:this.formInline.dialogData.id,
+                            secondParty:this.formInline.secondParty,
+                            secondPartyAddr:this.formInline.secondPartyAddr,
+                            secondPartyContacts:this.formInline.secondPartyContacts,
+                            secondPartyTel:this.formInline.secondPartyTel,
+                            softwareName:this.formInline.softwareName,
+                            serviceDate:this.formInline.serviceDate,
+                            startDate:this.formInline.startDate,
+                            serviceChargeOfYear:this.formInline.serviceChargeOfYear,
+                            customDevelopmentCosts:this.formInline.customDevelopmentCosts,
+                            standardUnitPrice:this.formInline.standardUnitPrice,
+                            firstOpenNum:this.formInline.firstOpenNum,
+                            secondPartyAccount:this.formInline.secondPartyAccount,
+                            secondPartyBankOfDeposit:this.formInline.secondPartyBankOfDeposit,
+                            secondPartyBillingName:this.formInline.secondPartyBillingName,
+                            secondPartyTIN:this.formInline.secondPartyTIN,
+                            billingAmount:this.formInline.billingAmount,
+                            invoiceType:this.formInline.invoiceType,
+                        },
+                        res => {
+                            this.listLoading = false;
+                            if (res.code == "ok") {
+                                this.editDialogB = false
+                                this.downloadUrl2=res.data
+                                this.$message({
+                                    message: "合同信息完善成功,合同模板已重新生成",
+                                    type: "success"
+                                })
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: "error"
+                                });
+                            }
+                        },
+                        error => {
+                            this.listLoading = false;
+                            this.$message({
+                                message: error,
+                                type: "error"
+                            });
                         });
                         });
+                    } else {
+                        return false;
                     }
                     }
-                },
-                error => {
-                    this.listLoading = false;
-                    this.$message({
-                        message: error,
-                        type: "error"
-                    });
                 });
                 });
             },
             },
             // 合同定稿
             // 合同定稿
@@ -912,7 +955,7 @@ import axios from 'axios'
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 .heClass .el-form-item {
 .heClass .el-form-item {
-    width: 500px;
+    width: 48%
 }
 }
 .rg_span{
 .rg_span{
     display: inline-block;
     display: inline-block;

+ 5 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/fileCenter.vue

@@ -242,6 +242,11 @@
                 this.pathList = list;
                 this.pathList = list;
                 this.getList();
                 this.getList();
             },
             },
+            clearPathList() {
+                console.log('111')
+                this.pathList = []
+                this.viewFolder(null)
+            },
             rowClick(row, column, event) {
             rowClick(row, column, event) {
                 if (row.isFolder==1) {
                 if (row.isFolder==1) {
                     //进入子目录
                     //进入子目录

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -3292,6 +3292,7 @@
                 this.$router.push(path);
                 this.$router.push(path);
                 this.getTaskGroups();
                 this.getTaskGroups();
                 this.getDetail()
                 this.getDetail()
+                this.$refs.fileCenter.clearPathList()
                 this.$refs.fileCenter.refreshPage();
                 this.$refs.fileCenter.refreshPage();
                 this.$refs.projectInfo.refreshPage();
                 this.$refs.projectInfo.refreshPage();
                 this.$refs.summary.refreshPage();
                 this.$refs.summary.refreshPage();

+ 65 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -453,13 +453,18 @@
 
 
         <!-- 日报提醒白名单 -->
         <!-- 日报提醒白名单 -->
         <el-dialog :title="$t('screening.selectPeople')"  v-if="whiteListDialog" :visible.sync="whiteListDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
         <el-dialog :title="$t('screening.selectPeople')"  v-if="whiteListDialog" :visible.sync="whiteListDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+            <div v-if="user.userNameNeedTranslate == '1'">
+                <el-input placeholder="请输入名字搜索" v-model.trim="wxFilterText" clearable @clear="clearEchartDepartment()" class="input-with-select">
+                    <el-button slot="append" icon="el-icon-search" @click="echartDepartment()"></el-button>
+                </el-input>
+            </div>
             <div class="tree" style="height:400px">
             <div class="tree" style="height:400px">
                 <el-scrollbar style="height:100%">
                 <el-scrollbar style="height:100%">
                     <el-input v-if="user.userNameNeedTranslate != '1'"
                     <el-input v-if="user.userNameNeedTranslate != '1'"
                     :placeholder="$t('keywordfiltering')"
                     :placeholder="$t('keywordfiltering')"
                     v-model="filterText">
                     v-model="filterText">
                     </el-input>
                     </el-input>
-                <el-tree :data="whiteListAll" show-checkbox :props="defaultProps" node-key="id"
+                <el-tree :data="whiteListAll" :key="searchPersonnelFlgnum" :default-expand-all="searchPersonnelFlg" show-checkbox :props="defaultProps" node-key="id"
                     ref="whiteListTree"
                     ref="whiteListTree"
                     highlight-current  :filter-node-method="filterNode">
                     highlight-current  :filter-node-method="filterNode">
                         <span class="custom-tree-node" slot-scope="{ node, data }">
                         <span class="custom-tree-node" slot-scope="{ node, data }">
@@ -480,7 +485,7 @@
             </div>
             </div>
             <!-- <div>已选中&nbsp;{{chosenMembCount}}&nbsp;人</div>         :default-checked-keys="alreadyPartArray"  @check-change="onTreeItemChange" -->
             <!-- <div>已选中&nbsp;{{chosenMembCount}}&nbsp;人</div>         :default-checked-keys="alreadyPartArray"  @check-change="onTreeItemChange" -->
             <div slot="footer" class="dialog-footer">
             <div slot="footer" class="dialog-footer">
-                <el-button  @click="whiteListDialog = false">{{ $t('btn.cancel') }}</el-button>
+                <el-button  @click="whiteListDialog = false, resetechartDepartment()">{{ $t('btn.cancel') }}</el-button>
                 <el-button type="primary" @click="setWhiteList()">{{ $t('btn.determine') }}</el-button>
                 <el-button type="primary" @click="setWhiteList()">{{ $t('btn.determine') }}</el-button>
             </div>
             </div>
         </el-dialog>
         </el-dialog>
@@ -583,13 +588,19 @@
 
 
                 whiteListDialog: false,
                 whiteListDialog: false,
                 whiteListAll: [],
                 whiteListAll: [],
+                whiteListAllTwo: [], // 备份 whiteListAll 数据
                 whiteList: [],
                 whiteList: [],
                 filterText: '',
                 filterText: '',
                 defaultProps: {
                 defaultProps: {
                     children: 'children',
                     children: 'children',
                     label: 'label'
                     label: 'label'
                 },
                 },
-                maxReportTimeRange: []
+                maxReportTimeRange: [],
+
+                wxFilterText: '', // 企业微信搜索
+
+                searchPersonnelFlg: false,
+                searchPersonnelFlgnum: 1,
             };
             };
         },
         },
         watch: {
         watch: {
@@ -1027,6 +1038,7 @@
                             message: this.$t('addsuccessful'),
                             message: this.$t('addsuccessful'),
                             type: 'success'
                             type: 'success'
                         })
                         })
+                        this.resetechartDepartment()
                         this.whiteListDialog = false
                         this.whiteListDialog = false
                     }else {
                     }else {
                         this.$message({
                         this.$message({
@@ -1231,6 +1243,56 @@
                     str = str.replace(/^\D*([0-9]\d*\.?\d{0,2})?.*$/,'$1') // 小数点后只能输 2 位
                     str = str.replace(/^\D*([0-9]\d*\.?\d{0,2})?.*$/,'$1') // 小数点后只能输 2 位
                 }
                 }
                 return str
                 return str
+            },
+            // 企业微信选人搜索
+            echartDepartment() {
+                if(this.wxFilterText != '') {
+                    this.http.post("/department/listAllMemb", {
+                        keyword: this.wxFilterText,
+                        cursor: ''
+                    },
+                    res => {
+                        if (res.code == "ok") {
+                            if(!Array.isArray(res.data)) {
+                                let list = res.data.data
+                                this.haveUsersList(list)
+                                this.whiteListAll = JSON.parse(JSON.stringify(list))
+                                this.whiteListAllTwo = JSON.parse(JSON.stringify(list))
+                            } else {
+                                this.whiteListAll = []
+                            }
+                            this.searchPersonnelFlgnum = +this.searchPersonnelFlgnum +1
+                            this.searchPersonnelFlg = true
+                        } else {
+                            this.$message({
+                                message: res.msg,
+                                type: "error"
+                            });
+                        }
+                    },
+                    error => {
+                        this.$message({
+                            message: error,
+                            type: "error"
+                        });
+                    });
+                } else {
+                    this.searchPersonnelFlgnum = +this.searchPersonnelFlgnum +1
+                    this.searchPersonnelFlg = false
+                    this.getWhiteListAll()
+                }
+            },
+            clearEchartDepartment() {
+                this.searchPersonnelFlgnum = +this.searchPersonnelFlgnum +1
+                this.searchPersonnelFlg = false
+                this.getWhiteListAll()
+            },
+            // 重置企业微信选人搜索
+            resetechartDepartment() {
+                this.wxFilterText = ''
+                this.searchPersonnelFlgnum = +this.searchPersonnelFlgnum +1
+                this.searchPersonnelFlg = false
+                this.whiteListAll = this.whiteListAllTwo
             }
             }
 
 
         },
         },

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -2411,8 +2411,8 @@ export default {
                 name: res.data.name,
                 name: res.data.name,
                 phone: res.data.phone,
                 phone: res.data.phone,
                 roleId: res.data.roleId,
                 roleId: res.data.roleId,
-                monthCost: res.data.monthCost,
-                cost: res.data.cost,
+                monthCost: res.data.monthCost ? res.data.monthCost : 0,
+                cost: res.data.cost ? res.data.cost : 0,
                 departmentId: array.reverse(),
                 departmentId: array.reverse(),
                 salaryType: res.data.salaryType,
                 salaryType: res.data.salaryType,
                 costApplyDate: res.data.costApplyDate,
                 costApplyDate: res.data.costApplyDate,

+ 27 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -421,7 +421,7 @@
                                 <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
                                 <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
                             </div>
                             </div>
                         </el-form-item>
                         </el-form-item>
-                        
+                    
                         <el-form-item :label="user.companyId==781? $t('screening.workTasks') : $t('screening.inputProject')" :prop="'domains.' + index + '.projectId'"
                         <el-form-item :label="user.companyId==781? $t('screening.workTasks') : $t('screening.inputProject')" :prop="'domains.' + index + '.projectId'"
                             :rules="{ required: true, message: user.companyId==781? $t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem'), trigger: ['change','blur'] }">
                             :rules="{ required: true, message: user.companyId==781? $t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem'), trigger: ['change','blur'] }">
                             <el-select v-model="domain.projectId" :placeholder="user.companyId==781?$t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem')" style="width:200px;" clearable="true"  filterable="true" value-key="id"
                             <el-select v-model="domain.projectId" :placeholder="user.companyId==781?$t('defaultText.pleaseSelectaJob'): $t('defaultText.pleaseSelectSnItem')" style="width:200px;" clearable="true"  filterable="true" value-key="id"
@@ -534,6 +534,7 @@
                                 </el-option>
                                 </el-option>
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
+
                         <!-- 相关数值 -->
                         <!-- 相关数值 -->
                         <el-form-item :label="yonghuUser.customDataName" v-if="yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
                         <el-form-item :label="yonghuUser.customDataName" v-if="yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
                             <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
                             <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
@@ -3304,11 +3305,36 @@
             updateSubProject() {
             updateSubProject() {
                 this.$forceUpdate();
                 this.$forceUpdate();
             },
             },
+            selectDegreeId(domain, index) {
+                this.http.post('/report/defaultDegree',{
+                    projectId: domain.projectId
+                },
+                res => {
+                    if (res.code == "ok") {
+                        if(res.data) {
+                            this.workForm.domains[index].degreeId = res.data.id + ''
+                            this.$forceUpdate();
+                        }
+                        
+                    } 
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                    }
+                );
+            },
             //项目选中了, 加载子项目
             //项目选中了, 加载子项目
             selectProject(domain, index) {
             selectProject(domain, index) {
                 if(!domain.projectId){
                 if(!domain.projectId){
                     return;
                     return;
                 }
                 }
+                // 默认选中上次填写的自定义维度
+                if(this.yonghuUser.customDegreeActive == 1) {
+                    this.selectDegreeId(domain, index)
+                }
                 // console.log('projectId===',domain.projectId);
                 // console.log('projectId===',domain.projectId);
                 domain.projectName = this.fillProjectList.filter(p=>p.id == domain.projectId)[0].projectName;
                 domain.projectName = this.fillProjectList.filter(p=>p.id == domain.projectId)[0].projectName;
                 this.http.post('/sub-project/list',{
                 this.http.post('/sub-project/list',{