Browse Source

7.24户内工程报表对接

bulusiLuo 8 months ago
parent
commit
ff4646ab2e

+ 17 - 0
src/api/flowInfo.js

@@ -294,6 +294,23 @@ export function signAndApplyExport(params) {
   })
 }
 
+// 户内改造工程报表
+export function getIndoorRenovationReport(params) {
+  return request({
+    url: '/tofly-flow/tfprojectbasew/indoorRenovationReport',
+    method: 'get',
+    params
+  })
+}
+//导出
+export function ExIndoorReport(params) {
+  return request({
+    url: '/tofly-flow/tfprojectbasew/indoorRenovationReport',
+    responseType: "blob",
+    method: 'get',
+    params
+  })
+}
 // 工程分账报表
 export function getDispatchCount(params) {
   return request({

+ 250 - 0
src/components/projectCom/searchCom4/index.vue

@@ -0,0 +1,250 @@
+<template>
+  <div class="seachItemDiv">
+    <!-- 所属公司 -->
+    <selectList :config="companyConfig" @change="updateModel" v-model="search.companyId"></selectList>
+    <!-- 关键字 -->
+    <inputCom :label="'关键字'" @change="updateModel" v-model="search.keywords"></inputCom>
+    <!-- 用户类型 -->
+    <selectList v-if="inConfig.showUserType" @change="updateModel" :config="userTypeConfig"
+      v-model="search.projectNatureIds"></selectList>
+    <!-- 工程类型 -->
+    <!-- <selectList @change="updateModel" :config="processType" v-model="search.processTypes"></selectList> -->
+    <!-- 流程状态 -->
+    <selectList v-if="inConfig.showState" @change="updateModel" :config="stateConfig" v-model="search.nodeState">
+    </selectList>
+    <!-- 数据权限 -->
+    <selectList v-if="inConfig.showDataConfig" @change="updateModel" :config="dataConfig" v-model="search.dataKey">
+    </selectList>
+    <!-- 日期 -->
+    <timeSelect v-if="inConfig.showTime" @change="updateModel" v-model="timeSelect" :title="inConfig.timeLabel">
+    </timeSelect>
+  </div>
+</template>
+
+<script>
+// 流程中查询的基本条件
+import timeSelect from '@/components/projectCom/timeSelect/index.vue'
+import selectList from '@/components/projectCom/select/index.vue'
+import inputCom from '@/components/projectCom/input/index.vue'
+import { getCodeInfo } from '@/api/flowInfo.js'
+import { getTypetree } from '@/api/process/process'
+import { getAllTenant } from '@/api/base.js'
+import commonMe from '@/utils/common.js'
+import commonSend from '@/utils/commonSend.js'
+export default {
+  components: { timeSelect, selectList, inputCom },
+  props: {
+    inConfig: {
+      type: Object,
+      default: () => {
+        return {
+          timeLabel: '发起时间',
+          showDataConfig: true,
+          showTime: true
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      search: {
+        // companyId: "",
+        companyId: this.$store.state.user.tenantId,
+        keywords: '',
+        beginTime: '',
+        endTime: '',
+        dataKey: '1',
+        projectNatureIds: null,
+        processTypes: null,
+        userId: '',
+        postId: '',
+        nodeState: '0'
+      },
+      timeSelect: [],
+      companyConfig: {
+        //用户类型下拉框配置
+        // multiple:true,//是否多选
+        label: '公司',
+        value: this.$store.state.user.tenantId,
+        searchData: {}, //查询条件
+        method: (e) => {
+          return commonSend.getAllTenantList({
+            //查询条件
+            id: this.$store.state.user.tenantId
+          })
+        },
+        field: {
+          id: 'id', //id代表的字段
+          label: 'name' //label的字段
+        }
+      },
+      dataConfig: {
+        //用户类型下拉框配置
+        label: '数据权限',
+        value: '1',
+        data: [
+          {
+            id: '1',
+            label: '个人'
+          },
+          {
+            id: '2',
+            label: '公司'
+          }
+        ], //下拉数据
+        field: {
+          id: 'id', //id代表的字段
+          label: 'label' //label的字段
+        }
+      },
+      userTypeConfig: {
+        label: '工程性质',
+        //select 下拉框的一些设置这里会使用projectCom的select组件,自动补足config里面的label
+        multiple: true, //是否多选
+        searchData: {
+          current: 1,
+          size: 1000,
+          pid: '1579353979371614209'
+        }, //查询条件
+        method: getCodeInfo, //获取数据的方法
+        field: {
+          id: 'id', //id代表的字段
+          label: 'name' //label的字段
+        }
+      },
+      processType: {
+        label: '工程类型',
+        //select 下拉框的一些设置这里会使用projectCom的select组件,自动补足config里面的label
+        multiple: true, //是否多选
+        // searchData: {
+        //   current: 1,
+        //   size: 1000,
+        //   pid: '1579353979371614209'
+        // }, //查询条件
+        // method: getCodeInfo, //获取数据的方法
+        data: [],
+        field: {
+          id: 'id', //id代表的字段
+          label: 'name' //label的字段
+        }
+      },
+      stateConfig: {
+        label: '流程状态',
+        //select 下拉框的一些设置这里会使用projectCom的select组件,自动补足config里面的label
+        multiple: false, //是否多选
+        // searchData:{
+        //   current:1,
+        //   size: 1000,
+        //   pid:"1572471367482736642"
+        // },//查询条件
+        // method:getCodeInfo,//获取数据的方法
+        data: [
+          {
+            id: '',
+            label: '全部'
+          },
+          {
+            id: '0',
+            label: '处理中'
+          },
+          {
+            id: '1',
+            label: '已完成'
+          }
+          //,
+          // {
+          //   "id":"2",
+          //   "label":"提交",
+          // }
+        ],
+        field: {
+          id: 'id', //id代表的字段
+          label: 'label' //label的字段
+        }
+      }
+    }
+  },
+  watch: {
+    //   "search.companyId"() {
+    //     this.updateModel();
+    //   },
+    //   "search.keywords"() {
+    //     this.updateModel();
+    //   },
+    timeSelect() {
+      this.updateModel()
+    }
+    //   "search.dataKey"() {
+    //     this.updateModel();
+    //   },
+  },
+  mounted() {
+    this.setStepOpts()
+    this.updateModel()
+  },
+  methods: {
+    async setStepOpts() {
+      let typeTree = await getTypetree({ datatypes: '1568576031811006466', type: '0' })
+      if (typeTree.code == 200) {
+        // 不展示工程变更
+        this.processType.data = typeTree.data[0].vos
+          .map((i) => ({ id: i.id, name: i.typeName }))
+          .filter((s) => s.name !== '工程变更')
+      } else return
+    },
+    /**
+     * 更新数据
+     */
+    updateModel() {
+      this.$emit('input', this.getSeachData())
+    },
+    /**
+     * 组织查询数据
+     */
+    getSeachData() {
+      const searchData = {}
+      // searchData.label=this.$route.matched[0].name;//当前流程的标签
+      if (this.search.companyId) {
+        searchData.tenantId = this.search.companyId
+      }
+      // if (this.search.dataKey == 1) {
+      //   searchData.userId = this.$store.state.user.userId //用户id
+      //   searchData.postId = this.$store.state.user.post.split(',') //用户岗位
+      // }
+      // if (commonMe.valueIsEmpty(this.search.nodeState)) {
+      //   // searchData.nodeState=this.search.nodeState;//流程状态
+      //   searchData.labelState = this.search.nodeState //流程状态
+      // }
+      if (commonMe.valueIsEmpty(this.search.projectNatureIds)) {
+        if (this.search.projectNatureIds.length > 0) {
+          searchData.projectNature = this.search.projectNatureIds.toString() //用户类型
+        }
+      }
+      // if (commonMe.valueIsEmpty(this.search.processTypes)) {
+      //   if (this.search.processTypes.length > 0) {
+      //     // searchData.processTypes = this.search.processTypes.toString() //用户类型
+      //     searchData.processType = '1568577324029931522' //用户类型
+      //   }
+      // }
+      if (commonMe.valueIsEmpty(this.search.keywords)) {
+        searchData.likeStr = this.search.keywords //关键字
+      }
+      if (this.timeSelect && this.timeSelect[0] && this.timeSelect.length > 0) {
+        searchData.startTime = this.timeSelect[0] + ' 00:00:00' //开始时间
+      }
+      if (this.timeSelect && this.timeSelect[1] && this.timeSelect.length > 1) {
+        searchData.endTime = this.timeSelect[1] + ' 23:59:59' //结束时间
+      }
+      return searchData
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.seachItemDiv {
+  position: relative;
+  float: left;
+  display: flex;
+}
+</style>

+ 35 - 32
src/views/zhpt/projectManager/newInstall/contractCheck/addProject/inputPage.vue

@@ -7,15 +7,8 @@
       </inputLegend>
       <keep-alive>
         <inputLegend v-if="showContent" :label="'合同模板'">
-          <contractForm
-            ref="contractForm"
-            @changeContract="changeContract"
-            @changeType="changeType"
-            @changeContractType="changeContractType"
-            @previewTemplet="previewTemplet"
-            @isJM="isJM"
-            @isJZFn="isJZFn"
-          />
+          <contractForm ref="contractForm" @changeContract="changeContract" @changeType="changeType"
+            @changeContractType="changeContractType" @previewTemplet="previewTemplet" @isJM="isJM" @isJZFn="isJZFn" />
         </inputLegend>
       </keep-alive>
       <keep-alive>
@@ -36,22 +29,17 @@
         </keep-alive>
       </template>
       <div v-if="!isDelay && isMake && !hasMake" style="width: 100%; text-align: center">
-        <el-button type="primary" @click="createContract"
-          >生成合同<i v-if="loading" class="el-icon-loading"
-        /></el-button>
+        <el-button type="primary" @click="createContract">生成合同<i v-if="loading" class="el-icon-loading" /></el-button>
       </div>
       <!-- 第三步 -->
       <keep-alive>
         <inputLegend :label="'合同信息'" v-if="!isDelay && hasMake && showContent">
           <div v-if="isMake" style="width: 100%; text-align: center; margin-bottom: 10px">
-            <span
-              :title="contractFile.fileName"
-              style="position: absolute; width: 400px; left: 0; padding-top: 10px; font-weight: bold"
-              >{{ `${contractFile.fileName}` }}</span
-            >
-            <el-button type="danger" @click="reMakeContract"
-              >重新生成合同<i v-if="loading" class="el-icon-loading"
-            /></el-button>
+            <span :title="contractFile.fileName"
+              style="position: absolute; width: 400px; left: 0; padding-top: 10px; font-weight: bold">{{
+        `${contractFile.fileName}` }}</span>
+            <el-button type="danger" @click="reMakeContract">重新生成合同<i v-if="loading"
+                class="el-icon-loading" /></el-button>
             <el-button type="success" @click="download">下载Word</el-button>
             <el-button type="success" @click="downloadPDF">下载PDF</el-button>
           </div>
@@ -59,18 +47,9 @@
       </keep-alive>
     </div>
     <!-- 底部 -->
-    <nodeHandle
-      :showFileRequire="true"
-      @showInput="showInput"
-      v-if="isDelay || hasMake"
-      ref="handle"
-      :key="key1"
-      :fConfig="fConfig"
-      :showFile="showFile"
-      :setShow="setShow"
-      :inputData="inputData"
-      v-model="ruleFormList.nodeForm"
-    ></nodeHandle>
+    <nodeHandle :showFileRequire="true" @showInput="showInput" v-if="isDelay || hasMake" ref="handle" :key="key1"
+      :fConfig="fConfig" :showFile="showFile" :setShow="setShow" :inputData="inputData" v-model="ruleFormList.nodeForm">
+    </nodeHandle>
     <div class="optionButton" v-if="isDelay || hasMake">
       <el-button @click="cancel">取消</el-button>
       <el-button type="warning" @click="sure(0)" :loading="btnLoad">保存</el-button>
@@ -726,7 +705,19 @@ export default {
         }
         let { contractInfoList, contractFile, contractPdfFile, ...params } = info
         // 合同数据
+        console.log('666', this.contractFile.filePath);
         this.$refs.contractForm.setAllData(params)
+        // this.loading = true
+        // getContract({ templateId: info.templateId, contractInfoList, deleteFilepath: this.contractFile.filePath, contractW: params }).then(res => {
+        //   console.log('重新编制合同2', res);
+        //   this.loading = false
+        //   if (res.code == 200) {
+        //     // this.contractFile = res.data[0]
+        //     this.contractFile = res.data.generateContract[0]
+        //     this.contractPDFFile = res.data.generateContractPdf[0]
+        //     // this.hasMake = true
+        //   } else this.$message.error('生成合同出错')
+        // })
         // 费用
         if (params.isDeduct == null) {
           params.isDeduct = ''
@@ -773,10 +764,18 @@ export default {
           this.hasMake = true
           this.showFile = false
         }
+        // if (data.nodeState == 5) {
+        //   // this.$message
+        //   this.isMake = true
+        //   this.hasMake = false
+        // }
       } else {
         // 默认填入
         this.setDefaultData('1')
       }
+      // this.$nextTick(() => {
+      //   this.reMakeContract()
+      // })
     },
     setDefaultData(signMode) {
       let projectData = this.searchProcessStepInfo(imConfig.flowKey.investigationAddSurvey)
@@ -884,13 +883,17 @@ export default {
 
 <style lang="scss" scoped>
 @import './src/styles/diaLogStyle/style.scss';
+
 /deep/ .el-dialog {
   @include diaLogStyle;
 }
+
 @import './src/styles/elTabsHeader/style.scss';
+
 /deep/ .el-tabs__header.is-top {
   @include elTabsHeaderStyle;
 }
+
 .optionButton {
   position: relative;
   float: right;

+ 70 - 30
src/views/zhpt/statisticalReport/hoodReport/index.vue

@@ -7,89 +7,94 @@
       <addFlow v-model="flowShow2" :sureFlowAction="sureFlowAction"></addFlow>
     </el-row>
     <div :style="'width: 100%;padding:8px;height:calc(100% - ' + rowHeight + 'px);'">
-      <el-table :data="tableData" style="width: 100%;text-align: center;" stripe>
-        <el-table-column label="序号" type="index" width="50">
+      <el-table :data="tableData" :height="'calc(100% - 70px)'" style="width: 100%;text-align: center;" stripe>
+        <el-table-column align="center" label="序号" type="index" width="50">
         </el-table-column>
         <el-table-column prop="name" label="工程名称" width="180" align="center">
         </el-table-column>
-        <el-table-column prop="name" label="工程类型" width="180" align="center">
+        <el-table-column prop="type" label="工程类型" width="180" align="center">
         </el-table-column>
-        <el-table-column prop="name" label="申请安装地址" width="180" align="center">
+        <el-table-column prop="address" label="申请安装地址" width="180" align="center">
         </el-table-column>
-        <el-table-column prop="name" label="联系电话" width="180" align="center">
+        <el-table-column prop="phone" label="联系电话" width="180" align="center">
         </el-table-column>
         <el-table-column label="工程登记" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="registerUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="registerTime" label="操作时间" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="任务分配" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="taskShareUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="taskShareTime" label="操作时间" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="现场勘察及预算" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="surveyBudgetUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="surveyBudgetTime" label="操作时间" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="用户缴费" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="chargeUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="chargeTime" label="操作时间" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="合同总价" width="120" align="center">
+          <el-table-column prop="contractTotalPrice" label="合同总价" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="工程派工" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="dispatchUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="dispatchTime" label="操作时间" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="施工班组和人员" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="teamGroupUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="teamGroupTime" label="操作时间" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="施工人员" width="120" align="center">
+          <el-table-column prop="teamGroupWorker" label="施工人员" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="综合验收" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="acceptUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="acceptTime" label="操作时间" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="工程结算" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="settleUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="settleTime" label="操作时间" width="120" align="center">
           </el-table-column>
         </el-table-column>
         <el-table-column label="结算办理" align="center">
-          <el-table-column prop="name" label="操作人" width="120" align="center">
+          <el-table-column prop="handleUser" label="操作人" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="操作时间" width="120" align="center">
+          <el-table-column prop="handleTime" label="操作时间" width="120" align="center">
           </el-table-column>
-          <el-table-column prop="name" label="应缴金额" width="120" align="center">
+          <el-table-column prop="handlePrice" label="应缴金额" width="120" align="center">
           </el-table-column>
         </el-table-column>
       </el-table>
+      <el-row class="paginationDiv">
+        <el-pagination small background layout="total, sizes, prev, pager, next, jumper"
+          :page-sizes="[10, 20, 30, 50, 100, 1000]" :page-size="size" :current-page="current" :total="total"
+          @size-change="changeSize" @current-change="changecurrent" />
+      </el-row>
     </div>
   </div>
 </template>
 
 <script>
-import searchCom from '@/components/projectCom/searchCom2/index.vue'
+import searchCom from '@/components/projectCom/searchCom4/index.vue'
 import timeSelect from '@/components/projectCom/timeSelect/index.vue'
 import tableCom from '@/components/projectCom/tableUn/index.vue'
 import commonMe from '@/utils/common.js'
 import commonFlow from '@/utils/commonFlow.js'
-import { getDispatchCount, deleteFlow, dispatchCountExport } from '@/api/flowInfo'
+import { getDispatchCount, deleteFlow, dispatchCountExport, getIndoorRenovationReport, ExIndoorReport } from '@/api/flowInfo'
 import inputForm from '@/components/projectCom/inputForm/index.vue'
 import addFlow from '@/views/zhpt/projectManager/newInstall/addFlow/index.vue'
 export default {
@@ -112,6 +117,8 @@ export default {
         showUserType: true,
         timeLabel: '发起时间'
       },
+      total: 0,
+      tableData: [],
       size: 30,
       current: 1,
       sureFlowAction: null, //立即触发登记事件
@@ -163,6 +170,7 @@ export default {
   },
   mounted: function () {
     this.getTableHeight()
+    this.searchData()
   },
   created() {
     this.config.subflowName = this.$options.name
@@ -183,9 +191,33 @@ export default {
     }
   },
   methods: {
+    // 翻页改变
+    changecurrent(data) {
+      this.current = data
+      this.searchData()
+    },
+    // 页数
+    changeSize(data) {
+      this.size = data
+      this.searchData()
+    },
     //查询按钮
     searchData() {
-      this.$refs.tableCom.getTableDataByOne()
+      const searchInfo = commonMe.notJsonCopy(Object.assign(this.searchCom, this.search))
+      const searchData = {
+        size: this.size,
+        current: this.current,
+        isExport: '0',
+        processType: '1568577324029931522',
+        ...searchInfo
+      }
+      getIndoorRenovationReport(searchData).then(res => {
+        console.log('数据', res);
+        if (res.code == 200) {
+          this.tableData = res.data.records
+          this.total = Number(res.data.total)
+        }
+      })
     },
 
     searchData1() {
@@ -193,10 +225,12 @@ export default {
       const searchData = {
         size: this.size,
         current: this.current,
+        isExport: '1',
+        processType: '1568577324029931522',
         ...searchInfo
       }
       let type = 1
-      dispatchCountExport(searchData).then((res) => {
+      ExIndoorReport(searchData).then((res) => {
         let fileName = '工程分派台账.xlsx'
         const url = window.URL.createObjectURL(new Blob([res], { type }))
         const link = document.createElement('a')
@@ -350,4 +384,10 @@ export default {
     float: left;
   }
 }
+
+.paginationDiv {
+  margin-top: 20px;
+  width: 100%;
+  text-align: right;
+}
 </style>