Selaa lähdekoodia

提交相关代码

Lijy 3 kuukautta sitten
vanhempi
commit
7d89476754

+ 7 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/index.vue

@@ -173,6 +173,13 @@ watchEffect(() => {
 <template>
   <div class="m-5 bg-white min-h-full p-4 rounded">
     <section>
+      <div class="h-[800px] w-full bg-[red] mb-5">
+        <iframe
+          src="http://47.101.180.183:9080/webapp/agent"
+          style="border: none;"
+          class="w-full h-full"
+        />
+      </div>
       <div class="flex gap-3 mb-4">
         <div class="w-40">
           <el-select

+ 1 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/login.vue

@@ -136,6 +136,7 @@ const loginLogic = (data: any) => {
     return
   }
   sessionStorage.setItem('token', data.id)
+  localStorage.setItem('SUPERSONIC_TOKEN', data.supersonicToken)
   setValue(data, 'userInfo')
   // 将数据分析放到第一位
   const index = data?.moduleList.findIndex((obj: any) => obj.path === '/analysis');

+ 100 - 30
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -130,12 +130,19 @@
           <el-option v-for="(item, index) in projectStageList" :key="item.id" :label="item.projectStageName" :value="item.projectStageName"> </el-option>
         </el-select>
 
-        <el-select v-if="!screeningCondition.project.includes(ins)" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="projectChange()" style="margin-left:10px">
-          <el-option v-for="(item) in proListOvertime" :key="item.id" :label="item.projectName + (item.projectCode ? item.projectCode : '')" :value="item.id">
-            <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
-            <span style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
-          </el-option>
-        </el-select>
+        <div>
+          <el-select v-if="(ins == 0 || ins == 3) && user.companyId == 4811" v-model="projectMainId" :placeholder="'请选择主项目'" clearable filterable size="small" @change="selectMainProject()">
+            <el-option v-for="(item) in projectMainIdList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+  
+          <el-select v-if="!screeningCondition.project.includes(ins)" v-model="proJuctId" :placeholder="$t('defaultText.pleaseSelectSnItem')" clearable filterable size="small" @change="projectChange()" style="margin-left:10px">
+            <el-option v-for="(item) in proListOvertime" :key="item.id" :label="item.projectName + (item.projectCode ? item.projectCode : '')" :value="item.id">
+              <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
+              <span style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
+            </el-option>
+          </el-select>
+        </div>
+        
         
         <template v-if="ins == 27">
           <el-radio-group v-model="estimatedWorkingHoursType" size="small" @change="groupChange()">
@@ -238,6 +245,7 @@
             <!--项目报表 -->
             <el-table v-if="ins == 0" key="0" border :data="list0" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column  prop="projectCode" :label="user.companyId == '7030' ? '项目令号' : user.companyId == '7030' ? '项目令号' : $t('Itemno')"  width="120"></el-table-column>
+                <el-table-column  prop="projectMainName" label="主项目"  width="200" v-if="user.companyId == 4811"></el-table-column>
                 <el-table-column  prop="projectName" :label="$t('headerTop.projectName')" width="200">
                   <template slot-scope="scope" >
                     {{scope.row.projectName}}
@@ -468,6 +476,7 @@
             <!--项目收支平衡表 -->
             <el-table v-if="ins == 3"  key="3" border :data="list3" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column prop="projectCode" :label="user.companyId == '7030' ? '项目令号' : $t('Itemno')"  width="120"></el-table-column>
+                <el-table-column  prop="projectMainName" label="主项目"  width="200" v-if="user.companyId == 4811"></el-table-column>
                 <el-table-column prop="projectName" :label="$t('headerTop.projectName')" >
                   <template slot-scope="scope" >
                     {{scope.row.projectName}}
@@ -484,23 +493,29 @@
                         {{scope.row.payment.toFixed(2)}}
                     </template>
                 </el-table-column>
-                
-                <el-table-column prop="feeMan" :label="$t('artificialcost')"   width="100" align="right">
-                  <template slot-scope="scope">
-                        {{scope.row.feeMan.toFixed(2)}}
-                    </template>
-                </el-table-column>
-                <el-table-column v-for="item in list3HeadList" :key="item.id" :label="item.name"  width="100" align="right">
-                  <template slot-scope="scope">
-                        {{scope.row.projectExpenseFeeList == null?'0.00': (
-                          scope.row.projectExpenseFeeList.filter(expenseItem=>expenseItem.typeId == item.id).length > 0?
-                          scope.row.projectExpenseFeeList.filter(expenseItem=>expenseItem.typeId == item.id)[0].amount.toFixed(2) : '0.00')}}
-                    </template>
-                </el-table-column>
+
+                <template v-if="user.companyId != 4811">
+                  <el-table-column prop="feeMan" :label="$t('artificialcost')"   width="100" align="right">
+                    <template slot-scope="scope">
+                          {{scope.row.feeMan.toFixed(2)}}
+                      </template>
+                  </el-table-column>
+                  <el-table-column v-for="item in list3HeadList" :key="item.id" :label="item.name"  width="100" align="right">
+                    <template slot-scope="scope">
+                          {{scope.row.projectExpenseFeeList == null?'0.00': (
+                            scope.row.projectExpenseFeeList.filter(expenseItem=>expenseItem.typeId == item.id).length > 0?
+                            scope.row.projectExpenseFeeList.filter(expenseItem=>expenseItem.typeId == item.id)[0].amount.toFixed(2) : '0.00')}}
+                      </template>
+                  </el-table-column>
+                </template>
+
                 <el-table-column  :label="$t('totalcostos')"  width="100" align="right">
                   <template slot-scope="scope">
-                        {{(scope.row.budget).toFixed(2)}}
+                    <template v-if="user.companyId != 4811">{{(scope.row.budget).toFixed(2)}}</template>
+                    <template v-else>
+                      <el-link type="primary" :underline="false" @click="showOtherExpensesClick(scope.row)">{{(scope.row.budget).toFixed(2)}}</el-link>
                     </template>
+                  </template>
                 </el-table-column>
                 <el-table-column  :label="$t('yiHuiKuanLiRun')"  width="100" align="right" v-if="user.company.packageContract == 1">
                   <template slot-scope="scope">
@@ -1814,6 +1829,19 @@
             <el-button type="primary" @click="editWriteOffOperation()">{{ $t('queDing') }}</el-button>
           </span>
         </el-dialog>
+
+        <!-- 详细费用 -->
+        <el-dialog :title="`${otherExpensesRow.projectName}支出明细(元)`" :visible.sync="otherExpensesVisable" width="800px" top="5.6vh" :before-close="handleClose">
+          <div>
+            <el-table :data="otherExpensesRow.projectExpenseFeeList" height="50vh" border style="width: 100%">
+              <el-table-column prop="typeName" align="center" label="名称"></el-table-column>
+              <el-table-column prop="amount" align="center" label="费用(元)"></el-table-column>
+            </el-table>
+          </div>
+          <span slot="footer" class="dialog-footer">
+            <el-button @click="otherExpensesVisable = false">关闭</el-button>
+          </span>
+        </el-dialog>
   </section>
 </template>
 
@@ -1921,6 +1949,7 @@ export default {
       proList: [],
       proJuctId: '',
       projectMainId: '',
+      projectMainIdList: [],
       createDate: '2020-01-01',
       rangeDatas: this.getCurrentRangeTime(),
       userId: '',
@@ -2080,7 +2109,11 @@ export default {
       estimatedWorkingHoursType: '按项目查看',
       isWarn: false,
       modRealCostItem:{id:null, realCost:0},
-      editRowItem:null
+      editRowItem:null,
+      otherExpensesRow: {
+        projectExpenseFeeList: []
+      },
+      otherExpensesVisable: false
     };
   },
   computed: {},
@@ -2112,6 +2145,9 @@ export default {
     this.getProjectSort()
     this.getSubUserCustom()
     this.getProjectStage()
+    if(this.user.companyId == 4811) {
+      this.getProjectMainIdList()
+    }
   },
   filters: {
 
@@ -2162,6 +2198,14 @@ export default {
       }
   },
   methods: {
+    showOtherExpensesClick(row) {
+      console.log(row, '<====== showOtherExpensesClick')
+      this.otherExpensesRow = {
+        ...row,
+        projectExpenseFeeList: row.projectExpenseFeeList || []
+      }
+      this.otherExpensesVisable = true
+    },
     groupChange() {
       this.page = 1
       this.projectChange()
@@ -2625,6 +2669,10 @@ export default {
         if (this.ins == 0) {  
           fName = this.$t('projectreport') + '.xlsx';
           url += "/exportProject";
+          if(this.user.companyId == 4811) {
+            sl.projectId = this.proJuctId
+            sl.projectMainId = this.projectMainId
+          }
         } else if (this.ins == 1) {
           fName = this.$t('projectTaskReport') + '.xlsx';
           url += "/exportProjectTask";
@@ -2639,6 +2687,10 @@ export default {
         } else if (this.ins == 3) {
           fName = this.$t('projectbalancesheet') + '.xlsx';
           url += "/exportProjectInAndOut";
+          if(this.user.companyId == 4811) {
+            sl.projectId = this.proJuctId
+            sl.projectMainId = this.projectMainId
+          }
         } else if (this.ins == 4) {
           fName = this.$t('customerprojectprofitstatement') + '.xlsx';
           url += "/exportCustomerProjectInAndOut";
@@ -2932,6 +2984,11 @@ export default {
       this.selUserList = this.userList
       this.tabPosition="0"
       this.tabsType = 'all'
+      if(this.user.companyId == 4811) {
+        this.proJuctId = ''
+        this.projectMainId = ''
+        this.getProjectListOvertime()
+      }
       this.getList();
     },
     stateKeySel(){
@@ -3143,10 +3200,11 @@ export default {
     getProjectInAndOut() {
       this.listLoading = true;
       this.http.post('/project/getProjectInAndOut', {
-                    pageIndex: this.page,
-                    pageSize: this.size,
-                    projectId: this.proJuctId
-                    },
+          pageIndex: this.page,
+          pageSize: this.size,
+          projectId: this.proJuctId,
+          projectMainId: this.projectMainId
+        },
         res => {
             if (res.code == "ok") {
                 this.list3 = res.data.records;
@@ -3812,12 +3870,13 @@ export default {
 
     
     getProjectList() {
-        this.listLoading = true;
+      this.listLoading = true;
       this.http.post('/project/getProjectPage', {
-                    pageIndex: this.page,
-                    pageSize: this.size,
-                    projectId: this.proJuctId
-                    },
+          pageIndex: this.page,
+          pageSize: this.size,
+          projectId: this.proJuctId,
+          projectMainId: this.projectMainId
+        },
         res => {
             if (res.code == "ok") {
                 this.list0 = res.data.records;
@@ -3845,6 +3904,7 @@ export default {
             pageIndex: 1,
             // pageSize: 9999,
             pageSize: -1,
+            projectMainId: this.projectMainId
         },
         res => {
             if (res.code == "ok") {
@@ -4672,6 +4732,16 @@ export default {
       });
 
       return arrs
+    },
+    selectMainProject() {
+      this.proJuctId = ''
+      this.getProjectListOvertime()
+      this.projectChange()
+    }, 
+    getProjectMainIdList() {
+      this.postData('/project/getAllMainProject', {}).then((res) => {
+        this.projectMainIdList = res.data || []
+      })
     }
   },
 };

+ 52 - 25
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -96,7 +96,7 @@
               </el-form-item>
               <!-- 费用主类型 -->
               <el-form-item :label="$t('feiYongZhuLeiXing')">
-                <el-select v-model="expenseMainTypeValue" style="width: 150px" @change="this.getExpList">
+                <el-select v-model="expenseMainTypeValue" style="width: 150px" @change="costMainTypeSwitching">
                   <el-option v-for="item in expenseMainTypes" :key="item.id" :label="item.name"
                     :value="item.id"></el-option>
                 </el-select>
@@ -105,18 +105,31 @@
               <el-form-item :label="$t('di-yi-shen-he-ren')" v-if="auditTypeItem.auditType == 2">
                 <el-select v-if="user.userNameNeedTranslate != '1'" v-model="addForm.firstCheckerId"
                   :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px"
-                  filterable="true">
+                  filterable="true" :disabled="expenseMainTypeValue == 14454">
                   <span v-for="(item, index) in usersNoInfo" :key="index">
                     <el-option :label="item.name" :value="item.id"></el-option>
                   </span>
                 </el-select>
 
-                <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'medium'" :widthStr="'150'" :distinction="'4'"
+                <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'medium'" :widthStr="'150'" :distinction="'4'" :disabled="expenseMainTypeValue == 14454"
                   :subject="usersNoInfo" :subjectId="addForm.firstCheckerId" ref="selectCat" 
                   @selectCal="selectCal"></selectCat>
               </el-form-item>
-              <!-- 第一审核人 -->
-              <el-form-item :label="$t('di-er-shen-he-ren')" v-if="auditTypeItem.auditType == 2">
+              <!-- 第二审核人 -->
+              <el-form-item :label="$t('di-er-shen-he-ren')" v-if="auditTypeItem.auditType == 2 && user.companyId != 4811">
+                <el-select v-if="user.userNameNeedTranslate != '1'" v-model="addForm.secondCheckerId"
+                  :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px"
+                  filterable="true">
+                  <span v-for="(item, index) in usersNoInfo" :key="index">
+                    <el-option :label="item.name" :value="item.id"></el-option>
+                  </span>
+                </el-select>
+
+                <selectCat v-if="user.userNameNeedTranslate == '1'" :size="'medium'" :widthStr="'150'" :distinction="'5'"
+                  :subject="usersNoInfo" :subjectId="addForm.secondCheckerId" ref="selectCat" 
+                  @selectCal="selectCal"></selectCat>
+              </el-form-item>
+              <el-form-item :label="$t('di-er-shen-he-ren')" v-if="auditTypeItem.auditType == 2 && user.companyId == 4811 && expenseMainTypeValue != 14454">
                 <el-select v-if="user.userNameNeedTranslate != '1'" v-model="addForm.secondCheckerId"
                   :placeholder="$t('message.Pleaseselectareviewer')" style="width: 150px"
                   filterable="true">
@@ -192,7 +205,7 @@
               <el-table-column :label="this.user.timeType.easyExpense == 0 ? $t('amountoffees') : '费用金额'" width="135px">
                 <template slot-scope="scope">
                   <el-input size="small" :id="'upam' + scope.$index" v-model="scope.row.amount" @input="zhi(scope.$index)"
-                    @change="shiqu(scope.row.amount)" @keyup.native="restrictNumber('upam' + scope.$index)"></el-input>
+                    @change="shiqu(scope.row.amount)" @keyup.native="restrictNumber('upam' + scope.$index)" :disabled="user.companyId == 4811 && user.id != addForm.ownerId && expenseMainTypeValue == 14454"></el-input>
                 </template>
               </el-table-column>
               <el-table-column prop="invoiceNo" :label="$t('invoiceno')" width="135px"
@@ -209,12 +222,12 @@
               </el-table-column>
               <el-table-column :label="$t('taxs')" width="135px" v-if="this.user.timeType.easyExpense == 0">
                 <template slot-scope="scope">
-                  <el-input size="small" v-model="scope.row.taxValue" @input="zhis(scope.$index)"></el-input>
+                  <el-input size="small" v-model="scope.row.taxValue" @input="zhis(scope.$index)" :disabled="user.companyId == 4811 && user.id != addForm.ownerId && expenseMainTypeValue == 14454"></el-input>
                 </template>
               </el-table-column>
               <el-table-column :label="$t('bei-zhu')" width="135px">
                 <template slot-scope="scope">
-                  <el-input size="small" v-model="scope.row.remark"></el-input>
+                  <el-input size="small" v-model="scope.row.remark" :disabled="user.companyId == 4811 && user.id != addForm.ownerId && expenseMainTypeValue == 14454"></el-input>
                 </template>
               </el-table-column>
               <el-table-column :label="$t('expensereimbursementvoucher')" width="135px">
@@ -398,6 +411,7 @@
                 <span v-if="scope.row.status == 1" class="waiting">{{ statusTxt[scope.row.status] }}</span>
                 <span v-if="scope.row.status == 2" class="rejected">{{ statusTxt[scope.row.status] }}</span>
                 <span v-if="scope.row.status == 0 || scope.row.status == 3">{{ statusTxt[scope.row.status] }}</span>
+                <span v-if="scope.row.status == 4" style="color: red">{{ statusTxt[scope.row.status] }}</span>
               </template>
             </el-table-column>
             <el-table-column prop="reviewProcess" :label="$t('title.reviewProcess')" width="180" v-if="auditTypeItem.auditType == 2">
@@ -405,6 +419,7 @@
                 <span v-if="scope.row.reviewProcess == 0">{{ $t('daiDiYiShenHeRenShenHe') }}</span>
                 <span v-if="scope.row.reviewProcess == 1">{{ $t('daiDiErShenHeRenShenHe') }}</span>
                 <span v-if="scope.row.reviewProcess == 2">{{ $t('shenHeWanCheng') }}</span>
+                <span v-if="scope.row.reviewProcess == 3">未提交</span>
               </template>
             </el-table-column>
             <!-- <el-table-column prop="denyReason" :label="$t('dismissreason')" width="180">
@@ -597,7 +612,7 @@
             <template slot-scope="scope">
               <el-input size="small" v-if="!flg" :id="'am' + scope.$index" v-model="scope.row.amount"
                 @input="zhiNum(scope.$index, scope)" @change="kan"
-                @keyup.native="restrictNumber('am' + scope.$index)"></el-input>
+                @keyup.native="restrictNumber('am' + scope.$index)" :disabled="user.companyId == 4811 && user.id != ParticularsList.ownerId && ParticularsList.type == 14454"></el-input>
               <span v-else>¥{{ scope.row.amount }}</span>
             </template>
           </el-table-column>
@@ -619,13 +634,13 @@
           <el-table-column prop="taxValue" :label="$t('taxs') + '(' + $t('yuan') + ')'" width="172"
             v-if="this.user.timeType.easyExpense == 0">
             <template slot-scope="scope">
-              <el-input size="small" v-if="!flg" v-model="scope.row.taxValue"></el-input>
+              <el-input size="small" v-if="!flg" v-model="scope.row.taxValue" :disabled="user.companyId == 4811 && user.id != ParticularsList.ownerId && ParticularsList.type == 14454"></el-input>
               <span v-else>¥{{ scope.row.taxValue }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="remark" :label="$t('bei-zhu')" width="300">
             <template slot-scope="scope">
-              <el-input size="small" v-if="!flg" v-model="scope.row.remark" maxlength="100"></el-input>
+              <el-input size="small" v-if="!flg" v-model="scope.row.remark" maxlength="100" :disabled="user.companyId == 4811 && user.id != ParticularsList.ownerId && ParticularsList.type == 14454"></el-input>
               <span v-else>{{ scope.row.remark }}</span>
             </template>
           </el-table-column>
@@ -1124,7 +1139,7 @@ export default {
         createDate: [{ required: true, message: this.$t('pleaseselectadate'), trigger: "blur" }],
       },
       isAuditList: false,
-      statusTxt: [this.$t('state.approved'), this.$t('state.WaitingAudit'), this.$t('state.rejected'), this.$t('state.undone')],
+      statusTxt: [this.$t('state.approved'), this.$t('state.WaitingAudit'), this.$t('state.rejected'), this.$t('state.undone'), '未填写'],
       user: JSON.parse(sessionStorage.getItem("user")),
       permissions: JSON.parse(sessionStorage.getItem("permissions")),
       allExpList: [],
@@ -1628,6 +1643,12 @@ export default {
           });
         });
     },
+    costMainTypeSwitching() {
+      if(this.user.companyId == 4811 && this.expenseMainTypeValue == 14454) {
+        this.addForm.firstCheckerId = this.user.id
+      }
+      this.getExpList()
+    },
     getExpList() {
       this.http.post('/expense-type/getList', {
       },
@@ -1741,11 +1762,13 @@ export default {
       console.log(paramData, '<== paramData')
       let noAmount = paramData.invoiceList.filter(item => !item.amount)
       if(noAmount.length > 0) {
-        this.$message({
-          message: this.$t('qingTianXieWanZhengFeiYongJinE'),
-          type: "error"
-        });
-        return;
+        if(this.user.companyId != 4811 && this.ParticularsList.type != 14454 && this.user.id != this.ParticularsList.ownerId) {
+          this.$message({
+            message: this.$t('qingTianXieWanZhengFeiYongJinE'),
+            type: "error"
+          });
+          return;
+        }
       }
       paramData.items = JSON.stringify(paramData.invoiceList)//这里要传发票列表的json转string
       // console.log(paramData, '<== paramData')
@@ -1816,11 +1839,13 @@ export default {
       this.$refs.mainAddForm.validate(valid => {
         if (valid) {
           if(this.auditTypeItem.auditType == 2 && (!this.addForm.firstCheckerId || !this.addForm.secondCheckerId)) {
-            this.$message({
-              message: !this.addForm.firstCheckerId ? this.$t('qingXuanZeDiYiShenHeRen') : this.$t('qingXuanZeDiErShenHeRen'),
-              type: "error"
-            });
-            return;
+            if(this.user.id != 4811 && this.expenseMainTypeValue != 14454) {
+              this.$message({
+                message: !this.addForm.firstCheckerId ? this.$t('qingXuanZeDiYiShenHeRen') : this.$t('qingXuanZeDiErShenHeRen'),
+                type: "error"
+              });
+              return;
+            }
           }
           if (this.invoiceList.length == 0) {
             this.$message({
@@ -1854,9 +1879,11 @@ export default {
               strObj.datas = this.$t('forthedate')
               strObj.flg = true
             }
-            if (!this.invoiceList[i].amount || this.invoiceList[i].amount == '') {
-              strObj.rmb = this.$t('feiYongJinE')
-              strObj.flg = true
+            if(this.user.companyId != 4811 && this.expenseMainTypeValue != 14454 && this.user.id != this.addForm.ownerId) {
+              if (!this.invoiceList[i].amount || this.invoiceList[i].amount == '') {
+                strObj.rmb = this.$t('feiYongJinE')
+                strObj.flg = true
+              }
             }
           }
           if (strObj.flg) {