Parcourir la source

2022.9.28 任务模板编辑

ggooalice il y a 2 ans
Parent
commit
0583731158

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -1390,5 +1390,8 @@
   "wanttodeletefirst": "Please select the record to delete first",
   "xuan-ze": "choose",
   "dui-yi-you-xiang-mu-jin-hang-xin-xi-geng-xin": "Update information on existing projects",
-  "dao-chu-qing-jia-dan": "Export leave request"
+  "dao-chu-qing-jia-dan": "Export leave request",
+  "suixiangmuzidongchuangjian": "Automatically created with project",
+  "ren-wu-lie-biao-ming-cheng": "task list name",
+  "yu-suan-gong-shi": "budgeted hours"
 }

+ 5 - 2
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -1234,7 +1234,7 @@
   "deletethegroup": "删除分组",
   "groupdetails": "分组详情",
   "shi-tu": "视图",
-  "renamingalist": "重命名列表",
+  "renamingalist": "修改列表",
   "jie-zhi": "截止",
   "ren-ling": "认领",
   "creatingTaskList": "新建任务列表",
@@ -1390,5 +1390,8 @@
   "li-run-shuai": "利润率(%)",
   "bai-fen-bi": "百分比",
   "dui-yi-you-xiang-mu-jin-hang-xin-xi-geng-xin": "对已有项目进行信息更新",
-  "dao-chu-qing-jia-dan": "导出请假单"
+  "dao-chu-qing-jia-dan": "导出请假单",
+  "suixiangmuzidongchuangjian": "随项目自动创建",
+  "ren-wu-lie-biao-ming-cheng": "任务列表名称",
+  "yu-suan-gong-shi": "预算工时"
 }

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

@@ -458,6 +458,7 @@
                 let data = this.allListData
                 var _this = this;
                 this.hasReportUserList = data.userList;
+                this.total = data.list.length
                 var xList = [] , yList = [] , list = data.list.slice(0+50*(this.page-1),49+50*(this.page-1)), array = [] , series = [];
                 var totalMoneyCost = data.totalCostMoney;
                 var totalHours = 0.0;

+ 14 - 11
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -373,11 +373,11 @@
         <!--新增界面-->
         <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="960px">
             <el-form ref="form1" :model="addForm" :rules="rules" label-width="120px">
-                <el-form-item :label="$t('Itemno')" >
+                <el-form-item :label="$t('Itemno')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                     <!-- <el-input v-model="addForm.code" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目编号" clearable></el-input> -->
                     <el-input v-model="addForm.code" :placeholder="$t('peaseenterthe')" clearable></el-input>
                 </el-form-item>
-                 <el-form-item :label="$t('zhu-xiang-mu')" v-if="user.timeType.mainProjectState == '1'">
+                 <el-form-item :label="$t('zhu-xiang-mu')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''" v-if="user.timeType.mainProjectState == '1'">
                     <!-- <el-select v-model="addForm.projectMainId" clearable :disabled="!permissions.projectManagement && addForm.creatorId != user.id" @change="projectManagementChange"> -->
                     <el-select v-model="addForm.projectMainId" clearable @change="projectManagementChange">
                         <el-option v-for="(item) in mainProjectList" :key="item.id" :value="item.id" :label="item.name + '\u3000' + item.code">
@@ -400,7 +400,7 @@
                     <!-- <el-input v-model="addForm.projectDesc" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目描述" clearable maxlength="4000"></el-input> -->
                     <el-input v-model="addForm.projectDesc" :placeholder="$t('peaseenterthe')" clearable maxlength="4000"></el-input>
                 </el-form-item>
-                <el-form-item :label="$t('projecttype')" prop="isPublic">
+                <el-form-item :label="$t('projecttype')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''" prop="isPublic">
                     <!-- <el-select v-model="addForm.isPublic" style="width:32%;" @change="selectPublic" :disabled="!permissions.projectManagement && addForm.creatorId != user.id"> -->
                     <el-select v-model="addForm.isPublic" style="width:32%;" @change="selectPublic">
                         <el-option :value="0" :label="$t('commonproject')"></el-option>
@@ -417,7 +417,7 @@
                     </div>
                 </el-form-item>
 
-                <el-form-item :label="$t('subordinatedepartments')" v-if="user.timeType.projectWithDept">
+                <el-form-item :label="$t('subordinatedepartments')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''" v-if="user.timeType.projectWithDept">
                     <el-cascader v-model="addForm.deptId" :options="departmentList" :placeholder="$t('defaultText.pleaseChoose')"
                         :props="{ checkStrictly: true, expandTrigger: 'hover' }" clearable filterable @change="cascaderChange" style="width: 100%"
                     ></el-cascader>
@@ -450,13 +450,13 @@
                         <el-option v-for="item in customerList" :key="item.id" :label="item.customerName" :value="item.id"></el-option>
                     </el-select>
                 </el-form-item> -->
-                <el-form-item :label="$t('Allparticipants')" v-show="addForm.isPublic == 0">
+                <el-form-item :label="$t('Allparticipants')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''" v-show="addForm.isPublic == 0">
                     <el-tooltip placement="top" effect="light">
                         <div slot="content" style="width:780px">{{addForm.userNames}}</div>
                     <el-input  @focus="showChooseMembTree" v-model="addForm.userNames"></el-input>
                     </el-tooltip>
                 </el-form-item>
-                <el-form-item :label="$t('projectmanager')" >
+                <el-form-item :label="$t('projectmanager')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                     <!-- <el-select v-model="addForm.inchargerId"  :disabled="(addForm.userId.length==0 && addForm.isPublic == 0) || (!permissions.projectManagement && user.id != addForm.creatorId)" filterable placeholder="请选择项目经理" style="width:32%;" > -->
                     <el-select v-model="addForm.inchargerId" filterable :placeholder="$t('defaultText.pleaseChoose')" style="width:32%;" >
                         <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -468,7 +468,7 @@
                     </el-select>
                 </el-form-item>
                 <!--专业项目协作版本功能 -->
-                <el-form-item :label="$t('ji-bie')" v-if="user.company.packageProject==1">
+                <el-form-item :label="$t('ji-bie')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''" v-if="user.company.packageProject==1">
                     <el-select v-model="addForm.level"  :placeholder="$t('defaultText.pleaseChoose')" style="width:32%;" v-if="user.timeType.projectLevelState == 1">
                         <el-option v-for="item in levelList" :key="item.id" :label="item.projectLevelName" :value="item.id"></el-option>
                     </el-select>
@@ -514,7 +514,7 @@
 
                 <!-- 单个公司的固定字段 -->
                 <div v-if="user.companyId == '936'">
-                <el-form-item :label="$t('contractno')" >
+                <el-form-item :label="$t('contractno')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                     <el-input v-model="addForm.contractCode" maxlength="50" show-word-limit :placeholder="$t('peaseenterthe')" clearable></el-input>
                 </el-form-item>
                 <el-form-item :label="$t('warrantystartime')">
@@ -533,7 +533,7 @@
                      :clearable="false" type="date" 
                      placeholder="$t('optiondate')"></el-date-picker>
                 </el-form-item>
-                <el-form-item :label="$t('IndependentProject')" >
+                <el-form-item :label="$t('IndependentProject')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                     <!-- <el-input v-model="addForm.projectCategorySub" placeholder="请输入自主项目类别" clearable></el-input> -->
                     <el-select v-model="addForm.projectCategorySub" :placeholder="$t('defaultText.pleaseChoose')" clearable>
                         <el-option :value="$t('softwareproject')" :label="$t('softwareproject')"></el-option>
@@ -541,7 +541,7 @@
                         <el-option :value="$t('integrationproject')" :label="$t('integrationproject')"></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item :label="$t('region')" >
+                <el-form-item :label="$t('region')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                     <el-input v-model="addForm.region" :placeholder="$t('peaseenterthe')" clearable></el-input>
                 </el-form-item>
                 <el-form-item :label="$t('subordinateBU')" >
@@ -2960,7 +2960,7 @@ a {
                 });
             },
             importProjectBefore(){
-                this.paramData1 = true
+                this.paramData1 = false
                 this.importProjectBeforeDialog = true
             },
             importProject(item) {
@@ -4058,4 +4058,7 @@ a {
 .toolbar_formitem_n1{
     margin-right: 0 !important;
 }
+.wpgCssClass .el-form-item__label{
+    font-weight: 600;
+}
 </style>

+ 101 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -763,6 +763,9 @@
                         <el-row >
                             <el-col :span="22">
                                 <div><span>{{t.name}}</span>
+                                <el-link :underline="false" type="primary" style="color:#aaa;margin-left:10px;"
+                                 @click="setTemplate(t)"><i class="el-icon-setting" v-show="t.isSystem == 0" ></i>
+                                </el-link>
                                 <el-link :underline="false" type="primary" style="color:#aaa;margin-left:10px;"
                                  @click="deleteTemplate(t)"><i class="el-icon-delete" v-show="t.isSystem == 0" ></i>
                                 </el-link>
@@ -785,6 +788,23 @@
                 </el-tab-pane>
                 </el-tabs>
             </div>
+            <el-dialog title="编辑模板" append-to-body v-if="setTemplateDialog" :visible.sync="setTemplateDialog" width="500px">
+                <el-form label-width="20%">
+                    <el-form-item label="模板名称"><el-input v-model="setTemplateData.name" style="width:80%" clearable></el-input></el-form-item>
+                    <el-form-item label=""><el-checkbox v-model="setTemplateData.creWithPro">随项目自动创建</el-checkbox></el-form-item>
+                    <el-form-item v-for="item,index in setTemplateData.stagesList" :key="item.id" :label="index == 0 ? '任务列表' : ''">
+                        <el-input v-model="item.stagesName"  style="width:70%" clearable></el-input>
+                        <el-link :underline="false" type="primary" style="color:#aaa;" @click="deleteStages(item,index)"  v-if="index != 0">
+                            <i class="el-icon-delete"></i>
+                        </el-link>
+                    </el-form-item>
+                    <el-link style="margin-left:20%" :underline="false" type="primary" @click="addStages()">新增任务列表</el-link>
+                </el-form>
+                <div slot="footer" class="dialog-footer">
+                    <el-button type="primary" @click="setTemplateDialog = false">取消</el-button>
+                    <el-button type="primary" @click="setTemplateSave()">{{ $t('save') }}</el-button>
+                </div>
+            </el-dialog>
         </el-dialog>
         <el-dialog :title="$t('taskgroupleader')" v-if="setInchargerDialog" :visible.sync="setInchargerDialog" :close-on-click-modal="false" customClass="customWidth" width="300px">
             <el-form ref="formIncharger" :model="groupForm" :rules="rules" style="margin-top:10px;">
@@ -824,6 +844,7 @@
                                 <el-checkbox v-model="templateForm.saveTask" :label="$t('other.task')"></el-checkbox>
                                 <el-checkbox v-model="templateForm.saveMileStone" :label="$t('other.milestone')"></el-checkbox>
                                 <el-checkbox v-model="templateForm.saveRisk" :label="$t('risk')"></el-checkbox>
+                                <el-checkbox v-model="templateForm.automatically" :label="$t('suixiangmuzidongchuangjian')"></el-checkbox>
                             </div>
                     </el-form-item>
             </el-form>
@@ -837,7 +858,15 @@
             <el-form ref="form2" :model="stageForm" :rules="rules2" >
                 <el-form-item prop="stagesName">
                     <el-input v-model="stageForm.stagesName" :placeholder="$t('pleaseenteratasklistname')" maxlength="60"
-                        show-word-limit clearable></el-input>
+                        show-word-limit clearable>
+                        <template slot="prepend">
+                            <div style="width:90px">{{ $t('ren-wu-lie-biao-ming-cheng') }}</div>
+                        </template></el-input>
+                    <el-input id="stageForm_ysgs" v-model="stageForm.stagesTime" style="margin-top:5px" @keyup.native="restrictNumber('stageForm_ysgs')">
+                        <template slot="prepend">
+                            <div style="width:90px">{{ $t('yu-suan-gong-shi') }}<span>(h)</span></div>
+                        </template>
+                    </el-input>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
@@ -1106,7 +1135,9 @@ import delete$ from 'dingtalk-jsapi/api/biz/cspace/delete';
                 groupResponsibleId: '', // 分组负责人的id
                 groupDetailsShow: false,
                 groupDetailData: {},
-                groupDetailTil: ''
+                groupDetailTil: '',
+                setTemplateData: {},
+                setTemplateDialog: false
             };
             
         },
@@ -1116,7 +1147,16 @@ import delete$ from 'dingtalk-jsapi/api/biz/cspace/delete';
             }
         },
         methods: {
-
+            restrictNumber(targetId) {
+                let inpu = document.getElementById(targetId)
+                inpu.value = inpu.value.replace(/[^\d.]/g, "");  //仅保留数字和"."
+                inpu.value = inpu.value.replace(/\.{2,}/g, "."); //两个连续的"."仅保留第一个"."
+                inpu.value = inpu.value.replace(".", "$#*").replace(/\./g,'').replace('$#*','.');//去除其他"."
+                inpu.value = inpu.value.replace(/^(\d+)\.(\d\d).*$/, '$1.$2');;//限制只能输入两个小数
+                if (inpu.value.indexOf(".") < 0 && inpu.value != "") { //首位是0的话去掉
+                    inpu.value = parseFloat(inpu.value);
+                }
+            },
             test(item){
                 // let pro = this.$route
                 console.log('test',this.projectList);
@@ -1566,6 +1606,63 @@ import delete$ from 'dingtalk-jsapi/api/biz/cspace/delete';
                     );
                 
             },
+            // 编辑模板
+            setTemplate(t){
+                console.log(t);
+                this.setTemplateData = t
+                this.setTemplateData.needDelete = []
+                this.setTemplateDialog = true
+            },
+            setTemplateSave(){
+                if(this.setTemplateData.name == '' || this.setTemplateData.name == null){
+                    this.$message({
+                        message: '模板名称不能为空',
+                        type: 'error'
+                    })
+                    return
+                }
+                for(let i in this.setTemplateData.stagesList){
+                    if(this.setTemplateData.stagesList[i].stagesName == '' || this.setTemplateData.stagesList[i].stagesName == null){
+                        this.$message({
+                            message: '任务列表名称不能为空',
+                            type: 'error'
+                        })
+                        return
+                    }
+                }
+                this.http.post('/task-group/setTemplate',this.setTemplateData,
+                res => {
+                    if(res.code == 'ok'){
+                        this.$message({
+                            message: '修改成功',
+                            type: 'success'
+                        })
+                        this.getGroupTemplate()
+                        this.setTemplateDialog = false
+                    }else{
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        })
+                    }
+                },err => {
+                    this.$message({
+                        message: err,
+                        type: 'error'
+                    })
+                })
+            },
+            deleteStages(item,index){
+                this.setTemplateData.needDelete.push(item.id)
+                this.setTemplateData.stagesList.splice(index,1)
+                console.log('deletestages',item.id);
+            },
+            addStages(){
+                this.setTemplateData.stagesList.push({
+                    stagesName: '',
+                    templateId: this.setTemplateData.id
+                })
+            },
             //删除模板
             deleteTemplate(t) {
                 var that = this;
@@ -2436,7 +2533,7 @@ import delete$ from 'dingtalk-jsapi/api/biz/cspace/delete';
             },
             addStage() {
                 this.addStageDialog = true;
-                this.stageForm = {groupId: this.selectedGroup.id, projectId: this.curProjectId};
+                this.stageForm = {groupId: this.selectedGroup.id, projectId: this.curProjectId, stagesTime: 0};
             },
             viewChange(index, indexPath) {
                 this.groupType = 1;

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

@@ -173,7 +173,7 @@
                       <div v-if="user.userNameNeedTranslate == 1">
                         <ww-open-data type='departmentName' :openid='scope.row.departmentName'></ww-open-data>
                       </div>
-                      <div v-else>{{scope.row.name}}</div>
+                      <div v-else>{{scope.row.departmentName}}</div>
                     </div>
                   </template>
                 </el-table-column>