Browse Source

接口接入

scorpio 2 years ago
parent
commit
0c0f114ca7

+ 7 - 1
src/App.vue

@@ -1,7 +1,13 @@
 <template>
   <div id="app" class="flex flex-center flex-col">
+    <el-header v-if="$route.meta.layout === 'empty' && $route.name !== 'login'">
+      <top :show-menu="false" />
+    </el-header>
     <el-main class="single">
-      <div class="wrapper mt-20" v-if="$route.meta.layout === 'empty'">
+      <div
+        class="wrapper mt-20"
+        v-if="$route.meta.layout === 'empty' && $route.name !== 'login'"
+      >
         <tips />
       </div>
       <router-view v-slot="{ Component, route }">

+ 3 - 1
src/api/index.js

@@ -11,6 +11,7 @@ import params from './params/index.js'
 import invest from './invest/index'
 import search from './search/index.js'
 import dispatch from './dispatch/index.js'
+import store from './store/index.js'
 
 export default {
   offices: ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'PDF'],
@@ -27,5 +28,6 @@ export default {
   params,
   invest,
   search,
-  dispatch
+  dispatch,
+  store
 }

+ 12 - 0
src/api/project/index.js

@@ -313,6 +313,18 @@ export default {
    */
   projectCancel(params) {
     return fetch('/blade-project-manage-v2/project/v2/isExit', params, 'post')
+  },
+  /**
+   * 项目入库预审
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  projectStore(params) {
+    return fetch(
+      '/blade-project-manage-v2/project-dispatch/v2/select-pre-storage',
+      params,
+      'post'
+    )
   }
 }
 

+ 10 - 0
src/api/store/index.js

@@ -0,0 +1,10 @@
+import fetch from '../fetch.js'
+
+export default {
+  list(params) {
+    return fetch(
+      '/blade-project-manage-v2/project-dispatch/v2/pre-storage-page',
+      params
+    )
+  }
+}

+ 4 - 1
src/layout/left.vue

@@ -79,7 +79,10 @@ export default {
         this.active = menu.active
         this.subActive = menu.subActive
       }
-      if (this.data[this.active].hasChildren === true) {
+      if (
+        this.data[this.active].hasChildren !== undefined &&
+        this.data[this.active].hasChildren === true
+      ) {
         this.activeCollapse = this.data[this.active].name
         this.data[this.active].children[this.subActive].checked = true
       } else {

+ 2 - 0
src/layout/top.vue

@@ -321,6 +321,7 @@ export default {
 .bread {
   background: white;
   color: black;
+  min-width: 1300px;
 }
 
 :deep(.el-icon) {
@@ -329,6 +330,7 @@ export default {
 
 .bread-g {
   background: #3978f1;
+  min-width: 1300px;
 
   :deep(.el-breadcrumb__inner a) {
     color: white;

+ 4 - 0
src/router/index.js

@@ -22,6 +22,10 @@ router.beforeEach((to, from, next) => {
     const keepAlive = keepAliveStore()
     keepAlive.add(to.name) // 将路由名称添加到 keepAlive 集合中
   }
+  if (to.path === '/') {
+    const menu = { active: 0, subActive: 0 }
+    localStorage.setItem('index', JSON.stringify(menu))
+  }
   if (to.matched.length) {
     next()
   } else {

+ 43 - 8
src/views/home/component/dash.vue

@@ -74,7 +74,7 @@
             icon="el-icon-folder-checked"
             title="入库申报"
             v-if="dataType === 'asset'"
-            @click="projectCarry"
+            @click="projectStore"
           />
         </el-tooltip>
       </div>
@@ -316,7 +316,7 @@
       :dialogType="diaType"
       @close="formDialogClose"
       @export="exportExcel"
-      :ids="selectList"
+      :ids="selectList.map(ele => ele.id)"
       :year="owerQuery.projectYear"
     />
     <summary-dialog
@@ -377,8 +377,7 @@ import { getLazyList } from '@/api/project/index.js'
 import summaryDialog from '@/views/home/component/summary_dialog.vue'
 import { useStore } from '@/store/user.js'
 import confing from '@/config/website'
-import { ElMessageBox } from 'element-plus'
-import BasicContainer from '@/components/basic-container/main.vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
 
 export default {
   name: 'dash',
@@ -649,7 +648,7 @@ export default {
         })
     },
     selectionChange(list) {
-      this.selectList = list.map(sub => sub.id)
+      this.selectList = list
     },
     beforeOpen(done, type) {
       if (['edit'].includes(type)) {
@@ -814,7 +813,7 @@ export default {
         return
       }
       this.$api.project
-        .projectCarry({ ids: this.selectList.join(',') })
+        .projectCarry({ ids: this.selectList.map(ele => ele.id).join(',') })
         .then(res => {
           if (res.code === 200) {
             this.$message.success(res.msg)
@@ -824,6 +823,42 @@ export default {
           }
         })
     },
+    /**
+     * 项目入库预审
+     */
+    projectStore() {
+      if (this.selectList.length === 0) {
+        this.$message.error('请先选择要入库预审的项目')
+        return
+      }
+      this.selectList.forEach(ele => {
+        if (ele.is_storage === 0) {
+          this.$message.error('存在未入库的项目')
+          throw ele
+        }
+        if (ele.is_report === 0) {
+          this.$message.error('存在未上报的项目')
+          throw ele
+        }
+      })
+      ElMessageBox.confirm('确定将已经勾选的项目提交入库预审?', '', {}).then(
+        res => {
+          if (res === 'confirm') {
+            this.$api.project
+              .projectStore({
+                ids: this.selectList.map(ele => ele.id).join(',')
+              })
+              .then(res => {
+                if (res.code === 200) {
+                  this.$message.success(res.msg)
+                } else {
+                  this.$message.error(res.msg)
+                }
+              })
+          }
+        }
+      )
+    },
     /**
      * 项目退库
      */
@@ -904,7 +939,7 @@ export default {
         { ...this.queryData },
         {
           columnName: res,
-          projectIds: this.selectList.join(','),
+          projectIds: this.selectList.map(ele => ele.id).join(','),
           previewType: 1,
           projectYear: year
         }
@@ -922,7 +957,7 @@ export default {
       const dataIds = {
         ...this.queryData,
         ...item,
-        projectIds: this.selectList.join(','),
+        projectIds: this.selectList.map(ele => ele.id).join(','),
         previewType: 2
       }
       this.$router.push({ query: dataIds, path: '/home/excel' })

+ 6 - 2
src/views/home/component/params/params1.vue

@@ -455,10 +455,14 @@ export default {
       }
     },
     handlerReponsible(res) {
-      this.form.unit_name = res.item.label
+      if (res.item !== undefined) {
+        this.form.unit_name = res.item.label
+      }
     },
     handlerCompetent(res) {
-      this.form.competent_unit_name = res.item.label
+      if (res.item !== undefined) {
+        this.form.competent_unit_name = res.item.label
+      }
     }
   }
 }

+ 58 - 10
src/views/store/component/info.vue

@@ -3,7 +3,9 @@
     <div class="padding top flex flex-center flex-justify-between">
       <span>数据表格导入</span>
       <div>
-        <el-button type="primary" plain> {{ save }} </el-button>
+        <el-button type="primary" plain @click="disabled = !disabled">
+          {{ disabled ? '编辑' : '保存' }}
+        </el-button>
       </div>
     </div>
     <div class="padding">
@@ -16,23 +18,36 @@
         <el-form-item label="项目名称">
           <el-input v-model="form.name" />
         </el-form-item>
-        <el-form-item label="单位名称">
-          <el-input v-model="form.region" />
+        <el-form-item label="责任单位">
+          <el-input v-model="form.unit_name" />
         </el-form-item>
         <el-form-item label="计划总投资">
-          <el-input v-model="form.type" />
+          <el-input v-model="form.total_amount">
+            <template #append>万元</template>
+          </el-input>
         </el-form-item>
-        <el-form-item label="主要建设内容">
-          <el-input v-model="form.type" type="textarea" rows="12" />
+        <el-form-item label="主要建设内容及规模">
+          <el-input
+            v-model="form.construction_content"
+            type="textarea"
+            rows="12"
+          />
         </el-form-item>
         <el-form-item label="项目代码">
-          <el-input v-model="form.type" />
+          <el-input v-model="form.project_code" />
         </el-form-item>
         <el-form-item label="监管平台代码">
-          <el-input v-model="form.type" />
+          <el-input v-model="form.platform_code" />
         </el-form-item>
         <el-form-item label="实际入库时间">
-          <el-input v-model="form.type" />
+          <el-date-picker
+            v-model="form.storage_time"
+            type="date"
+            style="width: 100%"
+            placeholder="实际入库时间"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+          />
         </el-form-item>
       </el-form>
     </div>
@@ -42,16 +57,49 @@
 <script>
 export default {
   name: 'info',
+  props: {
+    info: {
+      type: Object,
+      default: null
+    }
+  },
+  watch: {
+    info: {
+      handler(val) {
+        if (val !== null) {
+          delete val._id
+          this.form = val
+        }
+      },
+      immediate: true
+    },
+    disabled: {
+      handler(val) {
+        if (val === false) {
+          this.updateInfo()
+        }
+      },
+      immediate: true
+    }
+  },
   data() {
     return {
       disabled: true,
-      save: '编辑',
       form: {
         name: '',
         region: '',
         type: ''
       }
     }
+  },
+  methods: {
+    updateInfo() {
+      this.$api.project.proUpdate(this.form).then(res => {
+        if (res.code === 200) {
+          console.log(res)
+        }
+      })
+    }
   }
 }
 </script>

+ 24 - 3
src/views/store/detail.vue

@@ -5,7 +5,7 @@
         class="flex-child-average full-width mb-20 mr-10"
         style="min-height: 650px; padding: 0"
       >
-        <info></info>
+        <info :info="info"></info>
       </el-card>
 
       <el-card
@@ -37,8 +37,8 @@
 {
 name: '项目入库信息',
 meta: {
-  'layout': 'empty'
-  }
+'layout': 'empty'
+}
 }
 </route>
 
@@ -54,6 +54,27 @@ export default {
     info2,
     info3,
     info4
+  },
+  data() {
+    return {
+      projectId: '',
+      info: null
+    }
+  },
+  created() {
+    this.projectId = this.$route.query.projectId
+    this.projectDetail()
+  },
+  methods: {
+    projectDetail() {
+      this.$api.project.projectMapInfo(this.projectId).then(res => {
+        if (res.code === 200) {
+          this.info = res.data
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    }
   }
 }
 </script>

+ 46 - 8
src/views/store/index.vue

@@ -10,8 +10,8 @@
         type="primary"
         class="ml-20"
         @click="$router.push('/store/detail')"
-        >搜 索</el-button
-      >
+        >搜 索
+      </el-button>
     </div>
 
     <div class="flex flex-justify-start flex-align-start content">
@@ -32,16 +32,22 @@
             <el-button type="primary" plain>删 除</el-button>
           </div>
         </template>
+
+        <template #menu-right>
+          <div class="mt-20 mb-10">
+            <el-button icon="Refresh" circle plain @click="onLoad" />
+          </div>
+        </template>
       </avue-crud>
     </div>
   </el-card>
 </template>
 
 <route>
-  {
-    name: '入库项目',
-    meta: { 'showMsg' : "填写了”项目实际入库时间“的项目将不在预审管理中显示"}
-  }
+{
+name: '入库项目',
+meta: { 'showMsg' : "填写了”项目实际入库时间“的项目将不在预审管理中显示"}
+}
 </route>
 
 <script>
@@ -55,6 +61,7 @@ export default {
         align: 'center',
         menuAlign: 'center',
         size: 'mini',
+        viewBtn: true,
         addBtn: false,
         refreshBtn: false,
         columnBtn: false,
@@ -63,13 +70,42 @@ export default {
         column: [
           {
             label: '项目名称',
-            prop: 'noticeType'
+            prop: 'name'
           },
           {
             label: '上传时间',
-            prop: 'noticeType'
+            prop: 'createTime'
           }
         ]
+      },
+      page: {
+        current: 1,
+        size: 10
+      }
+    }
+  },
+  methods: {
+    onLoad() {
+      this.$api.store.list(this.page).then(res => {
+        if (res.code === 200) {
+          this.data = res.data.records.map(ele => {
+            const project = ele.project
+            delete project.id
+            delete ele.project
+            return Object.assign(ele, project)
+          })
+        }
+      })
+    },
+    beforeOpen(done, type) {
+      if (type === 'view') {
+        const data = this.$router.resolve({
+          path: '/store/detail',
+          query: { id: this.form.id, projectId: this.form.projectId }
+        })
+        window.open(data.href, '_blank')
+      } else {
+        done()
       }
     }
   }
@@ -79,10 +115,12 @@ export default {
 <style lang="scss" scoped>
 .content {
   width: 100%;
+
   .left {
     width: 400px;
     height: 900px;
   }
+
   .center {
     width: 900px;
   }