scorpio 2 anni fa
parent
commit
b762847aca

+ 3 - 0
src/api/common.js

@@ -20,5 +20,8 @@ export default {
   },
   getMenus() {
     return fetch('/blade-system/menu/routes', { clientId: website.clientId })
+  },
+  getButtons() {
+    return fetch('/blade-system/menu/buttons', { clientId: website.clientId })
   }
 }

+ 3 - 1
src/api/fetch.js

@@ -14,7 +14,9 @@ axios.interceptors.request.use(
     // 小程序里用m的页面
     config.headers.Platform = 'pc'
     config.headers.type = 'web'
-    config.headers['data-type'] = 'project'
+    config.headers['data-type'] = localStorage.getItem('data-type')
+      ? localStorage.getItem('data-type')
+      : 'project'
     if (getToken() === null || getToken() === undefined) {
       delete config.headers.token
     }

+ 238 - 101
src/api/project/index.js

@@ -3,161 +3,298 @@ import request from '@/api/axios'
 
 export default {
   /**
-     * 项目相关借口
-     * @returns {Promise<unknown>}
-     */
-  projectList (current, size, params) { // 项目列表
-    return fetch('/blade-project-manage-v2/project/v2/page', {
-      ...params,
-      current,
-      size
-    }, 'post', 'json')
-  },
-  projectAdd (params) { // 新增项目
-    return fetch('/blade-project-manage-v2/project/v2/save', params, 'post', 'json')
-  },
-  projectRemove (params) { // 删除项目
+   * 项目相关借口
+   * @returns {Promise<unknown>}
+   */
+  projectList(current, size, params) {
+    // 项目列表
+    return fetch(
+      '/blade-project-manage-v2/project/v2/page',
+      {
+        ...params,
+        current,
+        size
+      },
+      'post',
+      'json'
+    )
+  },
+  projectAdd(params) {
+    // 新增项目
+    return fetch(
+      '/blade-project-manage-v2/project/v2/save',
+      params,
+      'post',
+      'json'
+    )
+  },
+  projectRemove(params) {
+    // 删除项目
     return fetch('/blade-project-manage-v2/project/v2/remove', params, 'post')
   },
-  proContact (params) { // 关联子项目
-    return fetch('/blade-project-manage-v2/project/v2/connect', params, 'post', 'json')
-  },
-  removeContact (params) {
-    return fetch('/blade-project-manage-v2/project/v2/removeConnect', params, 'post')
-  },
-  childrenList (params) { // 已关联子项目列表
+  proContact(params) {
+    // 关联子项目
+    return fetch(
+      '/blade-project-manage-v2/project/v2/connect',
+      params,
+      'post',
+      'json'
+    )
+  },
+  removeContact(params) {
+    return fetch(
+      '/blade-project-manage-v2/project/v2/removeConnect',
+      params,
+      'post'
+    )
+  },
+  childrenList(params) {
+    // 已关联子项目列表
     return fetch('/blade-project-manage-v2/project/v2/childrenList', params)
   },
-  typeList (params) { // 项目分类列表
+  typeList(params) {
+    // 项目分类列表
     return fetch('/blade-project-manage-v2/typeAndStage/v2/page', params)
   },
-  projectInfo (id) { // 项目详细信息
+  projectInfo(id) {
+    // 项目详细信息
     return fetch('/blade-project-manage-v2/project/v2/detail/?id=' + id)
   },
-  projectMapInfo (id) { // 项目详细信息
+  projectMapInfo(id) {
+    // 项目详细信息
     return fetch('/blade-project-manage-v2/project/v2/newDetail/?id=' + id)
   },
-  proUpdate (params) { // 项目信息更新
-    return fetch('/blade-project-manage-v2/project/v2/newUpdate', params, 'post', 'json')
-  },
-  issuanceDetail (params) { // 项目发行明细
+  proUpdate(params) {
+    // 项目信息更新
+    return fetch(
+      '/blade-project-manage-v2/project/v2/newUpdate',
+      params,
+      'post',
+      'json'
+    )
+  },
+  issuanceDetail(params) {
+    // 项目发行明细
     return fetch('/blade-project-manage-v2/projectdetail/v2/list', params)
   },
-  issueAdd (params) { // 新增发行明细
-    return fetch('/blade-project-manage-v2/projectdetail/v2/save', params, 'post', 'json')
-  },
-  userStageList () { // 统计用户阶段项目数
+  issueAdd(params) {
+    // 新增发行明细
+    return fetch(
+      '/blade-project-manage-v2/projectdetail/v2/save',
+      params,
+      'post',
+      'json'
+    )
+  },
+  userStageList() {
+    // 统计用户阶段项目数
     return fetch('/blade-project-manage-v2/stage/v2/projectCount')
   },
-  userNunList (params) { // 统计用户各类型项目数
-    return fetch('/blade-project-manage-v2/project/v2/projectStageNumber', params, 'post', 'json')
-  },
-  updateStage (params) { // 修改项目情况
-    return fetch('/blade-project-manage-v2/project/v2/updateProjectStage', params, 'post')
-  },
-  includeStage (params) { // 单个项目包含阶段
+  userNunList(params) {
+    // 统计用户各类型项目数
+    return fetch(
+      '/blade-project-manage-v2/project/v2/projectStageNumber',
+      params,
+      'post',
+      'json'
+    )
+  },
+  updateStage(params) {
+    // 修改项目情况
+    return fetch(
+      '/blade-project-manage-v2/project/v2/updateProjectStage',
+      params,
+      'post'
+    )
+  },
+  includeStage(params) {
+    // 单个项目包含阶段
     return fetch('/blade-project-manage-v2/stage/v2/projectStages', params)
   },
-  folderList (params) { // 阶段包含文件夹列表
+  folderList(params) {
+    // 阶段包含文件夹列表
     return fetch('/blade-project-manage-v2/folder/v2/listByStageId', params)
   },
-  sqRecord (params) { // 文件夹授权记录
+  sqRecord(params) {
+    // 文件夹授权记录
     return fetch('/blade-project-manage-v2/qrcode/v2/grantLog', params)
   },
-  findFiles (params) { // 文件搜索
+  findFiles(params) {
+    // 文件搜索
     return fetch('/blade-project-manage-v2/folder/v2/findFile', params)
   },
-  folderListAll (params) { // 历史数据文件夹列表
+  folderListAll(params) {
+    // 历史数据文件夹列表
     return fetch('/blade-project-manage-v2/folder/v2/history', params)
   },
-  folderRemove (params) { // 删除文件夹
+  folderRemove(params) {
+    // 删除文件夹
     return fetch('/blade-project-manage-v2/folder/v2/remove', params, 'post')
   },
-  folderAdd (params) { // 添加文件夹
-    return fetch('/blade-project-manage-v2/folder/v2/submit', params, 'post', 'json')
-  },
-  folderUpdate (params) { // 文件夹更新
-    return fetch('/blade-project-manage-v2/folder/v2/submit', params, 'post', 'json')
-  },
-  fileList (params) { // 文件夹里包含文件列表
+  folderAdd(params) {
+    // 添加文件夹
+    return fetch(
+      '/blade-project-manage-v2/folder/v2/submit',
+      params,
+      'post',
+      'json'
+    )
+  },
+  folderUpdate(params) {
+    // 文件夹更新
+    return fetch(
+      '/blade-project-manage-v2/folder/v2/submit',
+      params,
+      'post',
+      'json'
+    )
+  },
+  fileList(params) {
+    // 文件夹里包含文件列表
     return fetch('/blade-project-manage-v2/folder/v2/getListByFolderId', params)
   },
-  fileDetail (id) {
+  fileDetail(id) {
     return fetch('/wutong-library/library/detail/' + id)
   },
-  articleDetailByFile (id) {
+  articleDetailByFile(id) {
     return fetch('/wutong-library/library/detail/file/' + id)
   },
-  fileAdd (params) { // 上传(新增)文件
-    return fetch('/blade-project-manage-v2/folder/v2/saveFile', params, 'post', 'json')
-  },
-  fileRemove (params) { // 删除文件
+  fileAdd(params) {
+    // 上传(新增)文件
+    return fetch(
+      '/blade-project-manage-v2/folder/v2/saveFile',
+      params,
+      'post',
+      'json'
+    )
+  },
+  fileRemove(params) {
+    // 删除文件
     return fetch('/blade-project-manage-v2/folder/v2/remove', params, 'post')
   },
   /**
-     * 业主主动授权
-     * @param params
-     * @returns {Promise | Promise<unknown>}
-     */
-  initCode (params) {
-    return fetch('/blade-project-manage-v2/qrcode/v2/getGrantQrcode', params, 'post', 'json')
+   * 业主主动授权
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  initCode(params) {
+    return fetch(
+      '/blade-project-manage-v2/qrcode/v2/getGrantQrcode',
+      params,
+      'post',
+      'json'
+    )
   },
   /**
-     * 服务商触发消息发送
-     * @param params
-     * @returns {Promise | Promise<unknown>}
-     */
-  send (params) {
+   * 服务商触发消息发送
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  send(params) {
     return fetch('/blade-project-manage-v2/frontMessage/v2/sendMessage', params)
   },
   /**
-     * 服务商主动申请文件授权
-     * @param params
-     * @returns {Promise<unknown>}
-     */
-  apply (params) {
-    return fetch('/blade-project-manage-v2/grant/v2/applyGrant', params, 'post', 'json')
-  },
-  folderType (params) {
+   * 服务商主动申请文件授权
+   * @param params
+   * @returns {Promise<unknown>}
+   */
+  apply(params) {
+    return fetch(
+      '/blade-project-manage-v2/grant/v2/applyGrant',
+      params,
+      'post',
+      'json'
+    )
+  },
+  folderType(params) {
     return fetch('/blade-project-manage-v2/dict/v2/getDictList', params)
   },
   /**
-     * 全站搜索
-     * @param params
-     * @returns {Promise<unknown>}
-     */
-  totalSearch (params) {
-    return fetch('/blade-project-manage-v2/searcher/v2/getListByKeyword', params, 'post', 'json')
+   * 全站搜索
+   * @param params
+   * @returns {Promise<unknown>}
+   */
+  totalSearch(params) {
+    return fetch(
+      '/blade-project-manage-v2/searcher/v2/getListByKeyword',
+      params,
+      'post',
+      'json'
+    )
   },
   /**
-     * 搜索详情
-     */
-  searchDetail (params) {
-    return fetch('/blade-project-manage-v2/searcher/v2/searchFileDetails', params, 'post', 'json')
-  },
-  total (params) {
-    return fetch('/blade-project-manage-v2/searcher/v2/getTotalByKeyword', params, 'post')
-  },
-  totalAmount (params) {
-    return fetch('/blade-project-manage-v2/project/v2/getTotalAmount', params, 'post', 'json')
+   * 搜索详情
+   */
+  searchDetail(params) {
+    return fetch(
+      '/blade-project-manage-v2/searcher/v2/searchFileDetails',
+      params,
+      'post',
+      'json'
+    )
+  },
+  total(params) {
+    return fetch(
+      '/blade-project-manage-v2/searcher/v2/getTotalByKeyword',
+      params,
+      'post'
+    )
+  },
+  totalAmount(params) {
+    return fetch(
+      '/blade-project-manage-v2/project/v2/getTotalAmount',
+      params,
+      'post',
+      'json'
+    )
   },
   /**
-     * 是否需要归档
-     */
-  isHistory (params) {
+   * 是否需要归档
+   */
+  isHistory(params) {
     return fetch('/blade-project-manage-v2/folder/v2/isHistory', params)
   },
   /**
-     * 归档
-     */
-  doneHistory (params) {
+   * 归档
+   */
+  doneHistory(params) {
     return fetch('/blade-project-manage-v2/folder/v2/history', params)
   },
   /**
-     * 是否有权限创建文件夹
-     */
-  queryCreateFolder (params) {
+   * 是否有权限创建文件夹
+   */
+  queryCreateFolder(params) {
     return fetch('/blade-project-manage-v2/folder/v2/queryFolderGrant', params)
+  },
+  /**
+   * 股室上报项目到管理员
+   */
+  upReportType(params) {
+    return fetch(
+      '/blade-project-manage-v2/project/v2/upReportType',
+      params,
+      'post'
+    )
+  },
+  /**
+   * 管理员审批项目
+   */
+  approvalProject(params) {
+    return fetch(
+      '/blade-project-manage-v2/project/v2/approvalReportType',
+      params,
+      'post'
+    )
+  },
+  /**
+   * 项目上报, 股室的正式项目,上报到固定资产
+   */
+  reportToAssets(params) {
+    return fetch(
+      '/blade-project-manage-v2/project-asset/v2/report-to-asset',
+      params,
+      'post'
+    )
   }
 }
 

+ 11 - 1
src/layout/index.vue

@@ -24,20 +24,30 @@
 import left from './left.vue'
 import top from './top.vue'
 import keepAliveStore from '../store/keepAlive.js'
+import permissionStore from '@/store/permission.js'
 
 export default {
   name: 'index.vue',
   components: { left, top },
   setup() {
     const keepAlive = keepAliveStore()
-    return { keepAlive }
+    const permission = permissionStore()
+    return { keepAlive, permission }
   },
   created() {
     this.keepAlive.$subscribe(res => {
       console.log(this.keepAlive.list)
     })
+    this.getPermission()
   },
   methods: {
+    getPermission() {
+      this.$api.login.getPermission().then(res => {
+        if (res.code === 200) {
+          this.permission.addPermission(res.data)
+        }
+      })
+    },
     scroll(event) {
       this.$bus.emit('scorll', event)
     }

+ 6 - 0
src/layout/left.vue

@@ -98,12 +98,18 @@ export default {
       if (item.children && item.children.length > 0) {
         this.subActive = 0
         this.$router.push(item.children[0].path)
+        localStorage.setItem(
+          'data-type',
+          item.children[0].remark ? item.children[0].remark : 'project'
+        )
       } else {
         this.$router.push(item.path)
+        localStorage.setItem('data-type', item.remark ? item.remark : 'project')
       }
     },
     subClick(item, index) {
       this.subActive = index
+      localStorage.setItem('data-type', item.remark ? item.remark : 'project')
       this.$router.push(item.path)
     }
   }

+ 0 - 8
src/page/login.vue

@@ -319,14 +319,6 @@ export default {
             res.data.typeName = '服务商'
           }
           this.user.setUserInfo(res.data)
-          this.getPermission()
-        }
-      })
-    },
-    getPermission() {
-      this.$api.login.getPermission().then(res => {
-        if (res.code === 200) {
-          this.permission.addPermission(res.data)
           this.$router.replace('/')
         }
       })

+ 13 - 3
src/store/permission.js

@@ -9,9 +9,10 @@ export const permissionStore = defineStore('permissionStore', {
     /**
      * 设置用户信息
      */
-    addPermission (list = []) {
+    addPermission(list = []) {
+      this.permissions = {}
       list.forEach(sub => {
-        if (typeof (sub) === 'object') {
+        if (typeof sub === 'object') {
           const children = sub.children
           const code = sub.code
           if (children) {
@@ -26,8 +27,17 @@ export const permissionStore = defineStore('permissionStore', {
     /**
      * 清空权限配置(用户退出时候,必须调调用此菜单)
      */
-    cleanPermission () {
+    cleanPermission() {
       this.permissions = {}
+    },
+    /**
+     * 校验key
+     * @param key
+     * @returns {*}
+     */
+    vaildPermission(key) {
+      console.log(this.permissions[key])
+      return this.permissions[key]
     }
   }
 })

+ 4 - 4
src/utils/tools.js

@@ -1,4 +1,4 @@
-export function bytesToSize (bytes) {
+export function bytesToSize(bytes) {
   const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']
   if (bytes === 0) return 'n/a'
   const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)))
@@ -6,7 +6,7 @@ export function bytesToSize (bytes) {
   return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i]
 }
 
-export function vaildData (key, defaultValue = Boolean) {
+export function vaildData(key, defaultValue = Boolean) {
   if (key) {
     return true
   } else {
@@ -14,7 +14,7 @@ export function vaildData (key, defaultValue = Boolean) {
   }
 }
 
-export function objectToParams (objs) {
+export function objectToParams(objs) {
   const query = []
   for (const k in objs) {
     query.push(k + '=' + objs[k])
@@ -65,6 +65,6 @@ export const deepClone = data => {
   return obj
 }
 
-export const unique = (arr) => {
+export const unique = arr => {
   return arr.filter((item, index) => arr.indexOf(item) === index)
 }

+ 88 - 2
src/views/home/component/dash.vue

@@ -63,6 +63,7 @@
       v-model="form"
       v-model:page="page"
       :before-open="beforeOpen"
+      :permission="permissions"
       :data="data"
       :option="option"
       :table-loading="loading"
@@ -85,6 +86,27 @@
         >
           {{ row.is_report === 1 ? '项目已上报' : '项目上报' }}
         </el-button>
+        <el-button
+          v-if="!row.hasOwnProperty('report_type') || row.report_type === 1"
+          text
+          @click="projectReport(row)"
+          >上报</el-button
+        >
+        <el-button
+          text
+          v-if="
+            permissions.vaildPermission('projectApprovalBtn') &&
+            row.report_type === 2
+          "
+          @click="projectApproval(row)"
+          >审批</el-button
+        >
+        <el-button
+          v-if="row.hasOwnProperty('report_type') && row.report_type === 3"
+          text
+          @click="projectReportFormal(row)"
+          >上报</el-button
+        >
       </template>
       <template #plan_storage_time-header="{ column }">
         <div class="flex flex-center">
@@ -136,6 +158,11 @@
           </div>
         </div>
       </template>
+      <template #report_type="{ row }">
+        <div>
+          <el-tag>{{ row.report_type_name }}</el-tag>
+        </div>
+      </template>
     </avue-crud>
     <!--    新增-->
     <el-dialog
@@ -263,6 +290,7 @@ export default {
   },
   data() {
     return {
+      projectApprovalBtn: false,
       reportTime: '',
       currentReport: null,
       reportShow: false,
@@ -384,12 +412,18 @@ export default {
           {
             label: '上报时间',
             prop: 'report_time',
-            width: 120,
+            width: 120
           },
           {
             label: '认定时间',
             prop: 'year',
             width: 160
+          },
+          {
+            label: '状态',
+            prop: 'report_type',
+            width: 100,
+            slot: true
           }
         ]
       },
@@ -442,7 +476,6 @@ export default {
     const indexLabel = this.option.column.findIndex(
       sub => sub.prop === 'responsible_unit'
     )
-    console.log(indexLabel)
     if (this.user.info.viewStage === 1) {
       // 发改
       this.option.column[index].hide = true
@@ -462,6 +495,7 @@ export default {
     })
     this.getTypeList()
     this.getNumList()
+    console.log(this.permissions.vaildPermission('projectApprovalBtn'))
   },
   unmounted() {
     sessionStorage.removeItem('selectList')
@@ -487,6 +521,14 @@ export default {
               e.selected = true
               const xian = e.name.indexOf('县')
               e.name = this.dev ? e.name.substring(xian + 1) : e.name
+              e.report_type_name = '未上报'
+              if (e.report_type === 2) {
+                e.report_type_name = '待审批'
+              } else if (e.report_type === 3) {
+                e.report_type_name = '通过'
+              } else if (e.report_type === 4) {
+                e.report_type_name = '固定资产'
+              }
               return e
             })
             this.page.total = res.data.total
@@ -585,6 +627,50 @@ export default {
       this.currentReport = res
       this.reportShow = true
     },
+    /**
+     * 股室上报项目到管理员
+     * @param res
+     */
+    projectReport(res) {
+      this.$api.project.upReportType({ id: res.id }).then(res => {
+        if (res.code === 200) {
+          this.$message.success(res.msg)
+          this.refreshChange()
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
+    /**
+     * 管理员审批项目
+     * @param res
+     */
+    projectApproval(res) {
+      this.$api.project
+        .approvalProject({ id: res.id, reportType: 3 })
+        .then(res => {
+          if (res.code === 200) {
+            this.$message.success(res.msg)
+            this.refreshChange()
+          } else {
+            this.$message.error(res.msg)
+          }
+        })
+    },
+    /**
+     * 管理员已经审核通过的项目,上报到固定资产
+     * @param res
+     */
+    projectReportFormal(res) {
+      this.$api.project.reportToAssets({ ids: res.id }).then(res => {
+        if (res.code === 200) {
+          this.$message.success(res.msg)
+          this.refreshChange()
+        } else {
+          this.$message.error(res.msg)
+        }
+      })
+    },
     track(res) {
       const data = {
         id: res.id,