scorpioyq 2 rokov pred
rodič
commit
7d7c64be97

+ 28 - 22
src/api/params/index.js

@@ -1,34 +1,40 @@
 import fetch from '../fetch.js'
 
 export default {
-  /**
+    /**
      * @param params
      * @returns {Promise | Promise<unknown>}
      */
-  getListByKey (params) {
-    return fetch('/wutong-parse-file/excel-dict/parent-list', {
-      clientId: 'project_web',
-      size: 999,
-      current: 1,
-      ...params
-    })
-  },
-  /**
+    getListByKey(params) {
+        return fetch('/wutong-parse-file/excel-dict/parent-list', {
+            clientId: 'project_web',
+            size: 999,
+            current: 1,
+            ...params
+        })
+    },
+    /**
      * 项目导出
      */
-  exportResult (params) {
-    return fetch('/blade-project-manage-v2/project/v2/projectExport', params, 'post', 'json', {}, 'blob')
-  },
-  /**
+    exportResult(params) {
+        return fetch('/blade-project-manage-v2/project/v2/projectExport', params, 'post', 'json', {}, 'blob')
+    },
+    /**
+     * 汇总数据导出
+     */
+    summaryExport(params) {
+        return fetch('/blade-project-manage-v2/project/v2/aggregateDataExport', params, 'post', 'json')
+    },
+    /**
      * 字段搜索
      */
-  getParamByName (params) {
-    return fetch('/wutong-parse-file/excel-dict/parent-list', {
-      clientId: 'project_web',
-      size: 999,
-      current: 1,
-      ...params
-    })
-  }
+    getParamByName(params) {
+        return fetch('/wutong-parse-file/excel-dict/parent-list', {
+            clientId: 'project_web',
+            size: 999,
+            current: 1,
+            ...params
+        })
+    }
 
 }

+ 14 - 4
src/views/home/component/dash.vue

@@ -42,6 +42,7 @@
                @current-change="currentChange"
                @size-change="sizeChange"
                @refresh-change="refreshChange"
+               @selection-change="selectionChange"
                @on-load="onLoad">
       <template #menu="{row}">
         <el-button icon="Upload" type='primary' text @click="track(row)"> {{
@@ -272,17 +273,22 @@ export default {
       },
       diaType: -1,
       parentId: 0,
-      queryData: null
+      queryData: null,
+      owerQuery: {},
+      projectStageQuery: {}
     }
   },
   created() {
-    this.getTypeList()
+    // this.getTypeList()
     this.getNumList()
     this.$bus.on('serach', (res) => {
+      this.owerQuery = res
       if (res.dictKey === '') {
+        this.projectStageQuery = {}
         this.active = 0
-        this.onLoad(res)
       }
+      console.log(this.projectStageQuery)
+      this.onLoad(Object.assign(this.owerQuery, this.projectStageQuery))
     })
   },
   computed: {
@@ -295,7 +301,8 @@ export default {
   methods: {
     switchTab(item, index) {
       this.active = index
-      this.onLoad({projectStage: item.dictKey})
+      this.projectStageQuery = {projectStage: item.dictKey}
+      this.onLoad(Object.assign(this.owerQuery, this.projectStageQuery))
     },
     onLoad(query = {}) {
       this.loading = true
@@ -314,6 +321,9 @@ export default {
         this.loading = false
       })
     },
+    selectionChange(list) {
+      console.log(list)
+    },
     beforeOpen(done, type) {
       if (['edit'].includes(type)) {
         this.$router.push({

+ 57 - 67
src/views/home/component/owner_serach.vue

@@ -6,7 +6,6 @@
           <el-form-item class="full-width" label="项目名称">
             <el-input
                 v-model="form.projectName"
-                clearable
                 placeholder="输入项目关键字"
                 prefix-icon="Search"
             />
@@ -15,8 +14,6 @@
             <el-form-item class="full-width" label="是否开工">
               <el-select
                   v-model="form.isStart"
-                  clearable
-                  placeholder="选择项目分类"
                   style="width: 100%">
                 <el-option
                     v-for="item in start"
@@ -29,8 +26,6 @@
             <el-form-item class="full-width" label="是否入库">
               <el-select
                   v-model="form.isStorage"
-                  clearable
-                  placeholder="选择项目分类"
                   style="width: 100%">
                 <el-option
                     v-for="item in storage"
@@ -43,53 +38,24 @@
           </div>
         </div>
         <div class="flex flex-col ml-20 mr-15">
-          <el-form-item class="full-width" label="分类筛选">
-            <el-select
-                v-model="form.typeId"
-                clearable
-                placeholder="选择项目分类"
-                style="width: 100%">
-              <el-option
-                  v-for="item in typeList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-              />
-            </el-select>
-          </el-form-item>
-          <div class="flex flex-center">
-            <el-form-item class="full-width" label="总投资额">
-              <el-select
-                  v-model="form.amount"
-                  clearable
-                  @change="changeAmount"
-                  placeholder="选择投资额度"
-                  style="width: 100%">
-                <el-option
-                    v-for="item in totalAmount"
-                    :key="item.value"
-                    :label="item.name"
-                    :value="item.value"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item class="full-width" label="机构选择">
-              <div class="grey-9 pointer chose-box" @click="getOrg">
-                选择机构
-              </div>
-            </el-form-item>
-          </div>
-          <div class="flex flex-center flex-justify-end"
-               style="width: 70%;margin-left: 120px">
-          </div>
-        </div>
-        <div class="flex flex-col">
+          <!--          <el-form-item class="full-width" label="分类筛选">-->
+          <!--            <el-select-->
+          <!--                v-model="form.typeId"-->
+          <!--                clearable-->
+          <!--                placeholder="选择项目分类"-->
+          <!--                style="width: 100%">-->
+          <!--              <el-option-->
+          <!--                  v-for="item in typeList"-->
+          <!--                  :key="item.id"-->
+          <!--                  :label="item.name"-->
+          <!--                  :value="item.id"-->
+          <!--              />-->
+          <!--            </el-select>-->
+          <!--          </el-form-item>-->
           <div class="flex flex-center ">
             <el-form-item class="full-width" label="省重点">
               <el-select
                   v-model="form.isImportant"
-                  clearable
-                  placeholder="选择项目分类"
                   style="width: 100%">
                 <el-option
                     v-for="item in isimport"
@@ -102,8 +68,6 @@
             <el-form-item class="full-width" label="省集中开工">
               <el-select
                   v-model="form.isFocusStart"
-                  clearable
-                  placeholder="选择项目分类"
                   style="width: 100%">
                 <el-option
                     v-for="item in isfocus"
@@ -114,7 +78,33 @@
               </el-select>
             </el-form-item>
           </div>
-          <div class="flex  flex-align-center  flex-justify-end ">
+          <div class="flex flex-center flex-justify-between">
+            <el-form-item class="full-width " label="总投资额">
+              <el-select
+                  v-model="form.amount"
+                  @change="changeAmount"
+                  style="width: 100%"
+              >
+                <el-option
+                    v-for="item in totalAmount"
+                    :key="item.value"
+                    :label="item.name"
+                    :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item class="full-width" label="机构选择">
+              <div class="grey-9 pointer chose-box nowrap" @click="getOrg">
+                选择机构
+              </div>
+            </el-form-item>
+          </div>
+          <div class="flex flex-center flex-justify-end">
+          </div>
+        </div>
+        <div class="flex flex-col flex-justify-between">
+          <div></div>
+          <div class="flex  flex-align-center  flex-justify-end ml-10" style="margin-bottom: 18px">
             <base-button class="pointer " icon="Delete" title="清空" type="0" width="130" @click="clear"/>
             <base-button class="pointer ml-20" width="130" @click="sure"/>
           </div>
@@ -161,16 +151,16 @@
 
 <script>
 import baseButton from '../../../components/base-button.vue'
-import { useStore } from '@/store/user.js'
+import {useStore} from '@/store/user.js'
 
 export default {
   name: 'owner_serach',
-  components: { baseButton },
-  setup () {
+  components: {baseButton},
+  setup() {
     const user = useStore()
-    return { user }
+    return {user}
   },
-  data () {
+  data() {
     return {
       deptList: [],
       form: {
@@ -244,19 +234,19 @@ export default {
       checked: false
     }
   },
-  created () {
+  created() {
     this.getTypeList()
   },
   methods: {
-    getTypeList () {
+    getTypeList() {
       this.$api.project.typeList().then(res => {
         this.typeList = res.data.records
       })
     },
-    sure () {
+    sure() {
       this.$bus.emit('serach', this.form)
     },
-    clear () {
+    clear() {
       this.form.projectName = ''
       this.form.typeId = ''
       this.form.isStorage = ''
@@ -268,15 +258,15 @@ export default {
       this.form.deptId = ''
       this.$bus.emit('serach', this.form)
     },
-    changeAmount () {
+    changeAmount() {
       const tmps = this.form.amount.split(',')
       console.log(tmps)
       this.form.totalAmountMin = tmps[0] === '-' ? '' : tmps[0]
       this.form.totalAmountMax = tmps[1] === '-' ? '' : tmps[1]
     },
-    getOrg () {
+    getOrg() {
       const parentId = [1, 2].includes(this.user.info.viewStage) ? this.user.info.parentDeptId : this.user.info.deptId
-      this.$api.system.getDeptLazy({ parentId }).then(res => {
+      this.$api.system.getDeptLazy({parentId}).then(res => {
         if (res.code === 200) {
           this.showOrg = true
           this.deptList = res.data.map(e => {
@@ -288,10 +278,10 @@ export default {
         }
       })
     },
-    changeChecked (index) {
+    changeChecked(index) {
       this.deptList[index].checked = !this.deptList[index].checked
     },
-    orgCheck () {
+    orgCheck() {
       const checked = this.deptList.filter(sub => sub.checked)
       this.form.deptId = checked.map(sub => sub.id).join(',')
       this.showOrg = false
@@ -310,9 +300,9 @@ export default {
 }
 
 .chose-box {
-  width: 195px;
+  width: 100%;
   border: 1px solid #DDDFE6;
-  border-radius: 5px
+  border-radius: 5px;
 }
 
 .grid {

+ 39 - 9
src/views/home/component/params/params1.vue

@@ -54,15 +54,28 @@
           <el-form-item label="行业分类" class='flex-child-average' style='flex:1'>
             <el-input v-model="form.industry"/>
           </el-form-item>
-          <el-form-item label="建设起止时间" class='flex-child-average ml-20'>
-            <el-date-picker
-                v-model="form.construction_time"
-                type="daterange"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="截止日期"
-                style='width: 100%;'
-            />
+          <el-form-item label="建设起止年限" class='flex-child-average ml-20'>
+            <div class="flex flex-center">
+              <el-select v-model="startYear"
+                         placeholder="开始">
+                <el-option
+                    v-for="item in years"
+                    :key="item"
+                    :label="item"
+                    :value="item"
+                />
+              </el-select>
+              <span class="ml-5 mr-5">至</span>
+              <el-select v-model="endYear"
+                         placeholder="结束">
+                <el-option
+                    v-for="item in years"
+                    :key="item"
+                    :label="item"
+                    :value="item"
+                />
+              </el-select>
+            </div>
           </el-form-item>
         </div>
 
@@ -196,6 +209,10 @@ export default {
     detail: {
       handler(val) {
         this.form = val
+        if (this.detail.construction_time && this.detail.construction_time.length > 1) {
+          this.startYear = this.detail.construction_time[0]
+          this.endYear = this.detail.construction_time[1]
+        }
       },
       immediate: true
     },
@@ -216,10 +233,23 @@ export default {
         {label: '否', value: 0},
         {label: '是', value: 1}
       ],
+      startYear: '',
+      endYear: '',
+      years: []
     }
   },
+  created() {
+    this.init()
+  },
   methods: {
+    init() {
+      let data = new Date().getFullYear() - 10
+      for (let i = 0; i < 20; i++) {
+        this.years.push(data++)
+      }
+    },
     updata() {
+      this.detail.construction_time = [this.startYear, this.endYear]
       this.detail.projectId = this.detail.id
       delete this.detail._id
       this.$api.project.proUpdate(this.detail).then(res => {

+ 1 - 1
src/views/home/component/params/params5.vue

@@ -7,7 +7,7 @@
         }}
       </el-button>
     </div>
-    <div class='mt-10' style='width: 84%;'>
+    <div class='mt-10' style='width: 80%;'>
       <el-form
           :model="form"
           label-width='140px'

+ 4 - 46
src/views/home/component/summary_dialog.vue

@@ -18,16 +18,13 @@
         />
       </div>
       <div class="hide-scrollbar full-width mt-15" style="height: 20vh;overflow-x: scroll">
-        <!--        <div v-if='attaches.length === 0' class='full-width flex flex-center '>-->
-        <!--          <el-empty image-size='100'/>-->
-        <!--        </div>-->
         <div class="flex flex-justify-between flex-center">
           <span class="bold font-15 grey ml-5 ">字段选择</span>
         </div>
-        <div class="flex flex-wrap" v-if='selectIndex !== -1'>
-          <div v-for="(item,index) in fieldType[selectIndex].params" :key='item.id'
+        <div class="flex flex-wrap">
+          <div v-for="(item,index) in fieldType" :key='item.id'
                class="flex flex-center padding pointer">
-            <el-checkbox v-model=item.checked :label="item.code" size="large" @change='change(selectIndex,index)'>
+            <el-checkbox v-model=item.checked :label="item.code" size="large" @change='change(index)'>
               {{ item.dictValue }}
             </el-checkbox>
           </div>
@@ -59,7 +56,7 @@ export default {
       handler(val) {
         if (val === 2) {
           this.showSummary = true
-          this.getDict('params_type')
+          this.getDict('summary_field')
         }
       },
       immediate: true
@@ -68,18 +65,10 @@ export default {
   data() {
     return {
       loading: false,
-      active: 0,
       checked: true,
       showSummary: false,
-      showExport: false,
-      attaches: [],
-      keyWords: '',
       code: '',
       fieldType: [],
-      paramsList: [],
-      checkList: [],
-      selectIndex: -1,
-      resultParams: []
     }
   },
 
@@ -99,37 +88,6 @@ export default {
     close() {
       this.$emit('close')
     },
-    upload(res) {
-      console.log(res)
-      this.attaches = res.fileList
-      this.$message.success('操作成功')
-      this.showImport = false
-    },
-    before(files) {
-      console.log(files)
-      this.attaches = files
-    },
-    removeFile(item) {
-      this.attaches = this.attaches.filter(sub => sub.uid !== item.uid)
-    },
-    switchTab(item, index) {
-      this.fieldType[index].isSelect = !this.fieldType[index].isSelect
-      this.selectIndex = index
-      if (this.fieldType[index].params === undefined) {
-        this.$api.params.getListByKey({type: this.fieldType[index].dictKey}).then(res => {
-          if (res.code === 200) {
-            this.fieldType[index].params = res.data.records.map(e => {
-              e.checked = true
-              return e
-            })
-            this.fieldType[index].count = res.data.total
-          }
-        })
-      }
-    },
-    importExcel() {
-      this.$refs.upload.submit()
-    },
     change(parentIndex, index) {
       const tmp = this.fieldType[parentIndex].params.filter(e => e.checked)
       this.fieldType[parentIndex].count = tmp.length