瀏覽代碼

去掉项目的成本预算,审核增加子项目显示

seyason 1 年之前
父節點
當前提交
546305cb8f

+ 0 - 40
fhKeeper/formulahousekeeper/management-platform-import/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -135,44 +135,6 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         //校验费用成本是否超过预算
         //先获取该类型的费用对应的成本预算是多少
         Integer type = sheet.getType();
-        ExpenseMainType expenseType = expenseMainTypeService.getById(type);
-        Integer basecostSettingId = expenseType.getBasecostSettingId();
-        //设置了对应的成本预算项
-        if (basecostSettingId != null) {
-            ProjectBasecostSetting projectBasecostSetting = projectBasecostSettingMapper.selectById(basecostSettingId);
-            String settingName = projectBasecostSetting.getName();
-            HashMap<Integer, Double> map = new HashMap<>();
-            for (int i=0;i<array.size(); i++) {
-                JSONObject obj = array.getJSONObject(i);
-                ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
-                Integer projectId = expenseItem.getProjectId();
-                if (map.get(projectId) == null) {
-                    map.put(projectId, expenseItem.getAmount());
-                } else {
-                    //累加
-                    map.put(projectId, map.get(projectId)  + expenseItem.getAmount());
-                }
-            }
-            for (Map.Entry<Integer, Double> entry : map.entrySet()) {
-                Integer projectId = entry.getKey();
-                Double amount = entry.getValue();
-                Project p = projectMapper.selectById(projectId);
-                //获取该项目的这一项当前成本预算
-                ProjectCurrentcost pCurCost = projectCurrentcostMapper.selectOne(new QueryWrapper<ProjectCurrentcost>().eq("project_id", projectId).eq("base_id", basecostSettingId));
-                if (pCurCost == null || pCurCost.getBaseAmount() == null || pCurCost.getBaseAmount() == 0) {
-                    msg.setError("项目【"+p.getProjectName()+"】没有下拨"+settingName+"的预算");
-                    return msg;
-                }
-                //计算该项目当前已经填报的费用报销的金额
-                Double sumAmount = expenseItemMapper.selectSumAmountByProjectAndType(projectId, type);
-                if (amount + sumAmount > pCurCost.getBaseAmount()) {
-                    msg.setError("项目【"+p.getProjectName()+"】的"+settingName+"费用预算不足,无法提交");
-                    return msg;
-                }
-            }
-        }
-
-
         if (isNew) {
             expenseSheetMapper.insert(sheet);
             if (!isAuditor) {
@@ -247,7 +209,6 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
             expenseItemService.remove(new QueryWrapper<ExpenseItem>().eq("expense_id", sheet.getId()));
         }
         expenseItemService.saveBatch(itemList);
-
         return msg;
     }
 
@@ -518,7 +479,6 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                 if (list.size() > 0) {
                     String code = list.get(0).getCode();
                     code = code.substring(format.length(), code.length());
-                    System.out.println("code=====" + code);
                     if (code.length() > 0) {
                         start = Integer.parseInt(code) + 1;
                     }

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform-import/src/main/resources/mapper/ReportMapper.xml

@@ -669,10 +669,11 @@
         a.creator_id as creatorId, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName, a.custom_data as customData,
-        a.plate1, a.plate2, a.plate3, a.plate4, a.plate5
+        a.plate1, a.plate2, a.plate3, a.plate4, a.plate5,sub_project.name as subProjectName
         FROM report AS a
         left join user on user.id = a.creator_id
         JOIN project AS b ON a.project_id=b.id
+            left join sub_project on sub_project.id = a.sub_project_id
         left join sub_project as d on d.id = a.sub_project_id
         left join task on task.id = a.task_id
         left join report_extra_degree on report_extra_degree.id = a.degree_id

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet-import/src/views/project/detail.vue

@@ -18,9 +18,9 @@
         <el-col :span="24"  style="margin-top:10px;padding-bottom: 0px;text-align:center;">
             <el-radio-group v-model="radio" @change="getList">
                 <el-radio-button :label="$t('ren-yuan')"></el-radio-button>
-                <el-radio-button :label="$t('other.taskGroup')" v-if="user.company.packageProject != 0"></el-radio-button>
+                <!-- <el-radio-button :label="$t('other.taskGroup')" v-if="user.company.packageProject != 0"></el-radio-button> -->
                 <el-radio-button :label="$t('lable.subproject')" v-if="user.timeType.mainProjectState != '1'"></el-radio-button>
-                <el-radio-button :label="$t('jie-duan')" v-if="user.company.packageProject != 0"></el-radio-button>
+                <!-- <el-radio-button :label="$t('jie-duan')" v-if="user.company.packageProject != 0"></el-radio-button> -->
             </el-radio-group>
         </el-col>
         <div id="clearfix" :style="'overflow-x: auto;width:100%;padding-bottom: 0px; position: relative; height:'+containerHeight+'px;'">

+ 0 - 172
fhKeeper/formulahousekeeper/timesheet-import/src/views/project/list.vue

@@ -457,13 +457,6 @@
                         ></el-cascader>
                     </el-form-item>
 
-                    <!-- 供应商 -->
-                    <!-- <el-form-item label="供应商" v-if="user.company.packageProvider">
-                        <el-select v-model="addForm.supplierId" multiple collapse-tags style="width:32%;" placeholder="请选择供应商">
-                            <el-option v-for="item in supplierList" :key="item.id" :label="item.providerName" :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </el-form-item> -->
                     <el-form-item :label="$t('supplier')" v-if="user.company.packageProvider">
                         <el-select v-model="addForm.supplierId" multiple :placeholder="$t('defaultText.pleaseChoose')" filterable="true" style="width: 100%" :disabled="canOnlyModParticipator">
                             <span v-for="(item, index) in supplierList" :key="index">
@@ -479,11 +472,6 @@
                             </span> 
                         </el-select>
                     </el-form-item>
-                    <!-- <el-form-item label="客户" v-if="user.company.packageCustomer == 1">
-                        <el-select v-model="addForm.customerId" clearable="true" filterable placeholder="请选择客户" style="width:100%;" >
-                            <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" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
                         <el-tooltip placement="top" effect="light" v-if="user.userNameNeedTranslate != 1">
 
@@ -533,10 +521,6 @@
                         <el-select v-model="addForm.level"  :placeholder="this.$t('defaultText.pleaseChoose')" style="width:32%;" :disabled="canOnlyModParticipator" v-else>
                             <el-option v-for="item in importanceList" :key="item.id" :label="item.label" :value="item.id"></el-option>
                         </el-select>
-                    <!-- 增加合同金额字段 -->
-                            <!-- <span style="margin-left:63px;margin-right:10px;" v-if="user.company.packageProject==1">合同金额</span>
-                            <el-input id="contractAmount" v-model="addForm.contractAmount" style="width:33%;" @blur="contractAmountChange(addForm.contractAmount)"
-                            placeholder="整数" clearable  @keyup.native="restrictNumber('contractAmount')" :disabled="title == '新增项目' ? false : false"></el-input><span style="margin-left:10px;">元</span> -->
                     </el-form-item>
                     <!-- 增加合同金额字段 -->
                     <el-form-item  :label="$t('contractamount')" v-if="user.company.packageProject==1">
@@ -565,13 +549,6 @@
                         :placeholder="$t('optiondate')"></el-date-picker>
                     </el-form-item>
 
-                    <!-- 增加BU字段 绎维固定字段 -->
-                    <el-form-item label="BU" v-if="user.companyId == '862'">
-                        <el-cascader ref="deptCascader"  v-model="addForm.bu" style="width: 250px" :show-all-levels="false" :disabled="canOnlyModParticipator"
-                            :options="buOption" :props="{ checkStrictly: true, expandTrigger: 'hover' }" clearable v-show="user.userNameNeedTranslate != 1"></el-cascader>
-                        <vueCascader :size="'small'" :subjectId="addForm.bu" :widthStr="'200'" :clearable="true" :subject="buOption" :radios="true" :distinction="'32'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
-                    </el-form-item>
-
                     <!-- 增加项目人天字段 绎维固定字段 -->
                     <el-form-item label="项目人天" v-if="user.timeType.projectManDay == 1">
                         <el-input v-model.number="addForm.manDay" :placeholder="$t('peaseenterthe')" @input="jisuanEstimatedWorkTime(addForm.manDay)"  style="width: 100px"></el-input><span style="margin-left:10px;position:absolute;">人天(预估工时:{{this.estimatedWorkTime}}h)</span>
@@ -596,45 +573,6 @@
                         </el-input><span style="margin-left:10px;">{{ $t('yuan') }}</span>
                     </el-form-item>
 
-                    <!-- 单个公司的固定字段 -->
-                    <div v-if="user.companyId == '936'">
-                    <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 :disabled="canOnlyModParticipator"></el-input>
-                    </el-form-item>
-                    <el-form-item :label="$t('warrantystartime')">
-                        <el-date-picker v-model="addForm.warrantyStartDate" 
-                        :editable="false" style="width:32%;" :disabled="canOnlyModParticipator"
-                        format="yyyy-MM-dd" 
-                        value-format="yyyy-MM-dd"
-                        :clearable="false" type="date" 
-                        :placeholder="$t('optiondate')"></el-date-picker>
-
-                        <span style="margin-left:63px;margin-right:10px;" >{{ $t('warrantyexpirationtime') }}</span>
-                        <el-date-picker v-model="addForm.warrantyEndDate" style="width:33%;" :disabled="canOnlyModParticipator"
-                        :editable="false" 
-                        format="yyyy-MM-dd" 
-                        value-format="yyyy-MM-dd"
-                        :clearable="false" type="date" 
-                        :placeholder="$t('optiondate')"></el-date-picker>
-                    </el-form-item>
-                    <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 :disabled="canOnlyModParticipator">
-                            <el-option :value="$t('softwareproject')" :label="$t('softwareproject')"></el-option>
-                            <el-option :value="$t('hardwareproject')" :label="$t('hardwareproject')"></el-option>
-                            <el-option :value="$t('integrationproject')" :label="$t('integrationproject')"></el-option>
-                            <el-option :value="$t('fu-wu-xiang-mu')" :label="$t('fu-wu-xiang-mu')"></el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item :label="$t('region')" :class="title == $t('newproject') && user.companyId == 936 ? 'wpgCssClass' : ''">
-                        <el-input v-model="addForm.region" :placeholder="$t('peaseenterthe')" clearable :disabled="canOnlyModParticipator"></el-input>
-                    </el-form-item>
-                    <el-form-item :label="$t('subordinateBU')" >
-                        <el-input v-model="addForm.bu" :placeholder="$t('subordinateBU')" clearable :disabled="canOnlyModParticipator"></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">
@@ -676,116 +614,6 @@
                     </div>
 
 
-
-                    <!-- <div v-if="user.companyId == '428'">
-                        <el-form-item :label="$t('projectgroup')" >
-                            <el-input v-model="addForm.projectCategorySub" maxlength="50" show-word-limit :placeholder="$t('peaseenterthe')" clearable></el-input>
-                        </el-form-item>
-                    </div> -->
-                    <!-- 项目基线 -->
-                    <div style="margin: 10px 0 30px 0;min-height:200px;" v-if="user.company.packageProject == 1 && !canOnlyModParticipator">
-                        <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane :label="$t('costbaseline')" name="baseCostPanel"  >
-                            <div style="padding-top:10px;">
-                                <!--新版 -->
-                                <span class="rg_span" v-for="(item, index) in projectBaseCostData" :key="item.id">
-                                    <span style="width:120px;display: inline-block;" v-if="user.company.packageProject==1">{{item.baseName}}</span>
-                                    <el-input :id="'baseCost'+index" @input="addUpfun()" v-model="item.baseAmount" style="width:200px; margin-bottom: 20px"
-                                    :placeholder="$t('zheng-shu')" clearable  @keyup.native="restrictNumber('baseCost'+index)"></el-input><span style="margin-left:10px;">{{ $t('yuan') }}</span>
-                                </span>    
-
-                                <!-- 合计 -->
-                                <div style="margin-top: 10px;float:right;">
-                                    <span style="margin-right:50px;margin-right:10px;" v-if="user.company.packageProject==1">{{ $t('other.totals') }}</span>
-                                    <span v-if="addForm.budget <= 0 || addForm.budget == undefined">0</span>
-                                    <span v-else>{{addForm.budget | numberToCurrency}}</span>
-                                    <span style="margin-right:50px;margin-left:10px;">{{ $t('yuan') }}</span>
-                                </div>
-                            </div>
-                        </el-tab-pane>
-                        <el-tab-pane :label="$t('keynodes')" name="baseCostPanep" v-if="user.companyId == '936'">
-                            <div style="padding-top:10px;">
-                                <!--新版 -->
-                                <div class="keyNodes">
-                                    <div class="keyNodesName">{{ $t('nameofthenode') }}</div>
-                                    <div class="keyNodesTime">{{ $t('plannedcompletiontime') }}</div>
-                                    <div class="keyNodesTime">{{ $t('actualcompletiontime') }}</div>
-                                    <div class="keyNodesTime">{{ $t('state.states') }}</div>
-                                </div>
-                                <div class="keyNodes" v-for="item in projectKeyNodesData" :key="item.nodesId">
-                                    <div class="keyNodesName">{{item.nodesName}}</div>
-                                    <div class="keyNodesTime">
-                                        <el-date-picker v-model="item.planCompleteDate" clearable style="width: 80%" size="small" :editable="false" format="yyyy-MM-dd"  value-format="yyyy-MM-dd" type="date"  :placeholder="$t('optiondate')"></el-date-picker>
-                                    </div>
-                                    <div class="keyNodesTime">
-                                        <el-date-picker v-model="item.actualCompleteDate" clearable style="width: 80%" size="small" :editable="false" format="yyyy-MM-dd"  value-format="yyyy-MM-dd" type="date"  :placeholder="$t('optiondate')"></el-date-picker>
-                                    </div>
-                                    <div class="keyNodesTime">
-                                        <el-select v-model="item.states" :placeholder="$t('defaultText.pleaseChoose')" style="width: 80%" size="small">
-                                            <el-option :label="$t('zheng-chang')" value="0"></el-option>
-                                            <el-option :label="$t('yan-qi')" value="1"></el-option>
-                                            <el-option :label="$t('wan-cheng')" value="2"></el-option>
-                                        </el-select>
-                                    </div>
-                                </div>
-                            </div>
-                        </el-tab-pane>
-                        <el-tab-pane :label="$t('engineering')" name="engineeringProfession" v-if="user.company.packageEngineering == 1">
-                        <div style="padding-top:10px;" class="gongcheng">
-                            <el-table :data="projectProfessionList" size="small" :key="Math.random()" :height="'400px'">
-                                <el-table-column prop="professionId" width="200">
-                                    <template slot-scope="scope">
-                                        <el-select v-model="scope.row.professionId" >
-                                            <el-option v-for="item in professionList" :key="item.id" :label="item.name" :value="item.id"/>
-                                        </el-select>
-                                    </template>
-                                    <template slot="header" >
-                                        <span style="font-size:14px;font-weight:normal;">{{ $t('nameprofessional') }}</span>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column prop="percentage" width="120" :label="$t('zhan-bi')">
-                                    <template slot-scope="scope">
-                                        <div><el-input type="number" v-model="scope.row.percentage"></el-input></div>
-                                    </template>
-                                </el-table-column>
-                                
-                                <el-table-column prop="membNames" :label="$t('personnelproportion')">
-                                    <template slot-scope="scope">
-                                        <span style="margin:0 5px;" v-for="item in scope.row.membList" :key="item.membId">
-                                                <span v-if="user.userNameNeedTranslate != 1">{{item.membName}}({{item.percentage}}%)</span>
-                                                <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='item.membName'></ww-open-data>({{item.percentage}}%)</span>
-                                            </span>
-                                        <el-link @click="showEditPpMembs(scope.row)">{{(scope.row.membList == null || scope.row.membList.length == 0)?$t('professionalparticipants'):$t('setup')}}</el-link>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column prop="inchargerName" width="200" :label="$t('head')">
-                                    <template slot-scope="scope">
-                                        <el-select v-model="scope.row.inchargerId" v-if="user.userNameNeedTranslate != 1">
-                                            <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                                        </el-select>
-
-                                        <selectCat v-if="user.userNameNeedTranslate == 1" :size="'mini'" :subject="participator" :subjectId="scope.row.inchargerId" :other="scope.$index" :distinction="'4'" @selectCal="selectCal"></selectCat>
-
-                                    </template>
-                                </el-table-column>
-                                <el-table-column  width="80">
-                                    <template slot-scope="scope">
-                                        <el-button icon="el-icon-delete" size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.$index)"></el-button>
-                                    </template>
-                                    <template slot="header" >
-                                        <el-link type="primary" :underline="false" @click="addItem">{{ $t('addTian') }}</el-link>
-                                    </template>
-                                </el-table-column>
-                            </el-table>
-                        </div>
-                        </el-tab-pane>
-                        <!-- <el-tab-pane label="相关领导" name="leaders" >
-                        <div style="padding-top:10px;">
-                            <el-input @focus="showChooseLeaderTree" v-model="addForm.notifyUserNames" placeholder="请选择需要接收审核通知的相关领导"></el-input>
-                        </div>
-                        </el-tab-pane> -->
-                        </el-tabs>
-                    </div>
                 
                 </el-form>  
             </div>

+ 12 - 4
fhKeeper/formulahousekeeper/timesheet-import/src/views/workReport/list_import.vue

@@ -58,11 +58,13 @@
                     </div>
                 </template>
             </el-table-column>
-            <el-table-column prop="date" :label="$t('weekDay.date')" sortable>
+            <el-table-column prop="date" :label="$t('weekDay.date')" sortable width="180">
             </el-table-column>
             <el-table-column prop="project" :label="$t('other.project')" >
             </el-table-column>
-            <el-table-column prop="time" :label="$t('screening.workTime') + '(h)'">
+            <el-table-column prop="subProjectName" label="子项目" >
+            </el-table-column>
+            <el-table-column prop="time" :label="$t('screening.workTime') + '(h)'" width="180">
                 <template slot-scope="scope">
                     <span>{{scope.row.time.toFixed(1)}}</span>
                 </template>
@@ -72,14 +74,14 @@
                     <span>{{scope.row['plate'+(index+1)]}}</span>
                 </template>
             </el-table-column>
-            <el-table-column prop="state" :label="$t('state.states')">
+            <el-table-column prop="state" :label="$t('state.states')" fixed="right">
                 <template slot-scope="scope">
                     <span v-if="scope.row.state == -1" style="color:#DAA520;">{{ $t('state.WaitingAudit') }}</span>
                     <span v-else-if="scope.row.state == 1" style="color:#32CD32;">{{ $t('state.alreadyPassed') }}</span>
                     <span v-else-if="scope.row.state == 2" style="color:#FF0000;">{{ $t('state.rejected') }}</span>
                 </template>
             </el-table-column>
-            <el-table-column :label="$t('operation')" width="220">
+            <el-table-column :label="$t('operation')" width="220" fixed="right">
                 <template slot-scope="scope">
                     <el-button v-if="scope.row.state == -1" type="primary" :loading="logining" size="small" @click="approve(scope.row.id,scope.row.date, scope.row)">{{ $t('btn.through') }}</el-button>
                     <el-button v-if="scope.row.state == -1" type="danger" :loading="logining" size="small" @click="showDenyDialog(scope.row.id,0,scope.row.date, scope.row)">{{ $t('btn.rejected') }}</el-button>
@@ -324,6 +326,9 @@
                             message: this.$t('message.Reviewsucceeded'),
                             type: "success"
                             });
+                            this.$nextTick(()=>{
+                                this.$refs.multipleTable.doLayout();
+                            })
                         } else {
                             this.$message({
                             message: res.msg,
@@ -432,6 +437,9 @@
                     if (res.code == "ok") {
                         this.list = res.data.record;
                         this.total = res.data.total;
+                        this.$nextTick(()=>{
+                            this.$refs.multipleTable.doLayout();
+                        })
                     } else {
                         this.$message({
                         message: res.msg,