scorpio hace 2 años
padre
commit
a0c32da10b

+ 3 - 1
src/api/index.js

@@ -6,6 +6,7 @@ import recycle from './recycle/index.js'
 import database from './database/index.js'
 import task from './task/index.js'
 import company from './company/index.js'
+import inspect from './inspect/index.js'
 
 export default {
   offices: ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'],
@@ -17,5 +18,6 @@ export default {
   recycle,
   database,
   task,
-  company
+  company,
+  inspect
 }

+ 27 - 0
src/api/inspect/index.js

@@ -0,0 +1,27 @@
+import fetch from '../fetch.js'
+
+export default {
+  /**
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  list (params) {
+    return fetch('blade-project-manage-v2/projectinspector/v2/page', params)
+  },
+  /**
+     *
+     * @returns {Promise<unknown>}
+     */
+  submint (params) {
+    return fetch('/blade-project-manage-v2/projectinspector/v2/save', params, 'post', 'json')
+  },
+  /**
+   *
+   * @param params
+   * @returns {Promise | Promise<unknown>}
+   */
+  removeList (params) {
+    return fetch('/blade-project-manage-v2/companyfilefolder/v2/remove', params, 'post')
+  }
+
+}

+ 36 - 36
src/api/login/index.js

@@ -1,49 +1,49 @@
 import fetch from '../fetch.js'
 
 export default {
-    /**
+  /**
      * 获取验证码
      * @returns {*}
      */
-    captcha() {
-        return fetch('/blade-auth/oauth/captcha')
-    },
-    login(param, hader) {
-        return fetch('/blade-auth/oauth/token', param, 'post', 'form', {
-            'Tenant-Id': '000000',
-            'Captcha-Key': hader.captchaKey,
-            'Captcha-Code': hader.captchaCode
-        })
-    },
-    sendSMS(params) {
-        return fetch('/blade-pc-applet/wechat/home/getHomeNewList', params)
-    },
-    /**
+  captcha () {
+    return fetch('/blade-auth/oauth/captcha')
+  },
+  login (param, hader) {
+    return fetch('/blade-auth/oauth/token', param, 'post', 'form', {
+      'Tenant-Id': '000000',
+      'Captcha-Key': hader.captchaKey,
+      'Captcha-Code': hader.captchaCode
+    })
+  },
+  sendSMS (params) {
+    return fetch('/blade-pc-applet/wechat/home/getHomeNewList', params)
+  },
+  /**
      * 退出登录
      * @returns {Promise<unknown>}
      */
-    logout() {
-        return fetch('/blade-auth/oauth/logout')
-    },
-    getUserInfo() {
-        return fetch('/blade-project-manage/other/v2/getUserInfo')
-    },
-    /**
+  logout () {
+    return fetch('/blade-auth/oauth/logout')
+  },
+  getUserInfo () {
+    return fetch('/blade-project-manage-v2/other/v2/getUserInfo')
+  },
+  /**
      * 获取按钮权限
      * @returns {Promise | Promise<unknown>}
      */
-    getPermission() {
-        return fetch('/blade-system/menu/buttons?clientId=project_web')
-    },
-    qrCode() {
-        return fetch('/wutong-base/oauth/qrcodeLogin')
-    },
-    qrCodeLogin(params) {
-        return fetch('/wutong-base/oauth/getUserInfo', params)
-    },
-    loginByCode(param) {
-        return fetch('/blade-auth/oauth/token', param, 'post', 'form', {
-            'Tenant-Id': '000000'
-        })
-    }
+  getPermission () {
+    return fetch('/blade-system/menu/buttons?clientId=project_web')
+  },
+  qrCode () {
+    return fetch('/wutong-base/oauth/qrcodeLogin')
+  },
+  qrCodeLogin (params) {
+    return fetch('/wutong-base/oauth/getUserInfo', params)
+  },
+  loginByCode (param) {
+    return fetch('/blade-auth/oauth/token', param, 'post', 'form', {
+      'Tenant-Id': '000000'
+    })
+  }
 }

+ 126 - 126
src/api/project/index.js

@@ -1,160 +1,160 @@
 import fetch from '../fetch.js'
 
 export default {
-    /**
+  /**
      * 项目相关借口
      * @returns {Promise<unknown>}
      */
-    projectList(current, size, params) { // 项目列表
-        return fetch('/blade-project-manage-v2/project/v2/page', {
-            ...params,
-            current,
-            size
-        })
-    },
-    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/project/v2/connect', params, 'post', 'json')
-    },
-    childrenList(params) { //已关联子项目列表
-        return fetch('/blade-project-manage/project/v2/childrenList', params)
-    },
-    typeList(params) { // 项目分类列表
-        return fetch('/blade-project-manage-v2/typeAndStage/v2/page', params)
-    },
-    projectInfo(id) { // 项目详细信息
-        return fetch('/blade-project-manage/project/v2/detail/?id=' + id)
-    },
-    proUpdate(params) { // 项目信息更新
-        return fetch('/blade-project-manage-v2/project/v2/update', params, 'post', 'json')
-    },
-    issuanceDetail(params) { // 项目发行明细
-        return fetch('/blade-project-manage/projectdetail/v2/list', params)
-    },
-    issueAdd(params) { // 新增发行明细
-        return fetch('/blade-project-manage-v2/projectdetail/v2/save', params, 'post', 'json')
-    },
-    userStageList() { // 统计用户阶段项目数
-        return fetch('/blade-project-manage-v2/stage/v2/projectCount')
-    },
-    includeStage(params) { // 单个项目包含阶段
-        return fetch('/blade-project-manage/stage/v2/projectStages', params)
-    },
-    folderList(params) { // 阶段包含文件夹列表
-        return fetch('/blade-project-manage/folder/v2/listByStageId', params)
-    },
-    sqRecord(params) { // 文件夹授权记录
-        return fetch('/blade-project-manage-v2/qrcode/v2/grantLog', params)
-    },
-    findFiles(params) { // 文件搜索
-        return fetch('/blade-project-manage-v2/folder/v2/findFile', params)
-    },
-    folderListAll(params) { // 历史数据文件夹列表
-        return fetch('/blade-project-manage-v2/folder/v2/history', 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) { // 文件夹里包含文件列表
-        return fetch('/blade-project-manage-v2/folder/v2/getListByFolderId', params)
-    },
-    fileDetail(id) {
-        return fetch('/wutong-library/library/detail/' + 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) { // 删除文件
-        return fetch('/blade-project-manage-v2/folder/v2/remove', params, 'post')
-    },
-    /**
+  projectList (current, size, params) { // 项目列表
+    return fetch('/blade-project-manage-v2/project/v2/page', {
+      ...params,
+      current,
+      size
+    })
+  },
+  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')
+  },
+  childrenList (params) { // 已关联子项目列表
+    return fetch('/blade-project-manage-v2/project/v2/childrenList', params)
+  },
+  typeList (params) { // 项目分类列表
+    return fetch('/blade-project-manage-v2/typeAndStage/v2/page', params)
+  },
+  projectInfo (id) { // 项目详细信息
+    return fetch('/blade-project-manage-v2/project/v2/detail/?id=' + id)
+  },
+  proUpdate (params) { // 项目信息更新
+    return fetch('/blade-project-manage-v2/project/v2/update', 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 () { // 统计用户阶段项目数
+    return fetch('/blade-project-manage-v2/stage/v2/projectCount')
+  },
+  includeStage (params) { // 单个项目包含阶段
+    return fetch('/blade-project-manage-v2/stage/v2/projectStages', params)
+  },
+  folderList (params) { // 阶段包含文件夹列表
+    return fetch('/blade-project-manage-v2/folder/v2/listByStageId', params)
+  },
+  sqRecord (params) { // 文件夹授权记录
+    return fetch('/blade-project-manage-v2/qrcode/v2/grantLog', params)
+  },
+  findFiles (params) { // 文件搜索
+    return fetch('/blade-project-manage-v2/folder/v2/findFile', params)
+  },
+  folderListAll (params) { // 历史数据文件夹列表
+    return fetch('/blade-project-manage-v2/folder/v2/history', 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) { // 文件夹里包含文件列表
+    return fetch('/blade-project-manage-v2/folder/v2/getListByFolderId', params)
+  },
+  fileDetail (id) {
+    return fetch('/wutong-library/library/detail/' + 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) { // 删除文件
+    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')
-    },
-    /**
+  initCode (params) {
+    return fetch('/blade-project-manage-v2/qrcode/v2/getGrantQrcode', params, 'post', 'json')
+  },
+  /**
      * 服务商触发消息发送
      * @param params
      * @returns {Promise | Promise<unknown>}
      */
-    send(params) {
-        return fetch('/blade-project-manage-v2/frontMessage/v2/sendMessage', params)
-    },
-    /**
+  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) {
-        return fetch('/blade-project-manage/dict/v2/getDictList', params)
-    },
-    /**
+  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')
-    },
-    /**
+  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)
-    },
-    /**
+  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)
+  },
+  /**
      * 是否需要归档
      */
-    isHistory(params) {
-        return fetch('/blade-project-manage-v2/folder/v2/isHistory', params)
-    },
-    /**
+  isHistory (params) {
+    return fetch('/blade-project-manage-v2/folder/v2/isHistory', params)
+  },
+  /**
      * 归档
      */
-    doneHistory(params) {
-        return fetch('/blade-project-manage-v2/folder/v2/history', params)
-    },
-    /**
+  doneHistory (params) {
+    return fetch('/blade-project-manage-v2/folder/v2/history', params)
+  },
+  /**
      * 是否有权限创建文件夹
      */
-    queryCreateFolder(params) {
-        return fetch('/blade-project-manage/folder/v2/queryFolderGrant', params)
-    }
+  queryCreateFolder (params) {
+    return fetch('/blade-project-manage-v2/folder/v2/queryFolderGrant', params)
+  }
 }
 
 export const getLazyList = (parentId, params) => {
-    return request({
-        url: '/blade-project-manage/project/v2/childrenList',
-        method: 'get',
-        params: {
-            ...params,
-            parentId
-        }
-    })
+  return request({
+    url: '/blade-project-manage-v2/project/v2/childrenList',
+    method: 'get',
+    params: {
+      ...params,
+      parentId
+    }
+  })
 }

+ 61 - 0
src/components/basic-tab/index.vue

@@ -0,0 +1,61 @@
+<template>
+  <div class='flex flex-center tab-bg' :style='`width:`+width+`px`'>
+    <div v-for='(item,index) in tabs' :key='item' class='flex flex-center'
+         :class='active === index ? "tab-active":"tab" ' @click='change(item,index)'>
+      {{ item.name }}
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'index',
+  props: {
+    tabs: {
+      type: Array,
+      default: [] // {name:"首页",value:1}
+    }
+  },
+  data () {
+    return {
+      active: 0,
+      width: 0
+    }
+  },
+  created () {
+    this.width = this.tabs.length * 180
+  },
+  methods: {
+    change (item, index) {
+      this.active = index
+      this.$emit('change', item, index)
+    }
+  }
+}
+</script>
+
+<style lang='scss' scoped>
+.tab-bg {
+  background-color: #EDF0F3;
+  padding: 2px 10px;
+  color: #707070;
+  border-radius: 40px;
+  font-size: 13px;
+}
+
+.tab {
+  padding: 0 40px;
+  margin: 5px 10px 5px 0;
+  height: 30x;
+  border-radius: 30px;
+}
+
+.tab-active {
+  padding: 0 40px;
+  margin: 5px 10px 5px 0;
+  background-color: #AB7630;
+  color: white;
+  height: 30px;
+  border-radius: 35px;
+}
+</style>

+ 61 - 45
src/views/home/component/dash.vue

@@ -41,7 +41,7 @@
                @refresh-change="refreshChange"
                @on-load="onLoad">
       <template #menu="{row}">
-        <el-button icon="Upload" text @click="track(row.id)">项目上报</el-button>
+        <el-button icon="Upload" type='primary' text @click="track(row.id)">项目上报</el-button>
       </template>
     </avue-crud>
     <!--    新增-->
@@ -123,17 +123,17 @@
 <script>
 import BaseButton from '../../../components/base-button.vue'
 import permissionStore from '@/store/permission.js'
-import {vaildData} from '@/utils/tools.js'
-import form_dialog from "@/views/home/component/form_dialog.vue";
+import { vaildData } from '@/utils/tools.js'
+import form_dialog from '@/views/home/component/form_dialog.vue'
 
 export default {
   name: 'dash',
-  components: {BaseButton, form_dialog},
-  setup() {
+  components: { BaseButton, form_dialog },
+  setup () {
     const permissions = permissionStore()
-    return {permissions}
+    return { permissions }
   },
-  data() {
+  data () {
     return {
       disable: false,
       showAdd: false,
@@ -194,7 +194,7 @@ export default {
           },
           {
             label: '子项目数量',
-            prop: 'lot',
+            prop: 'lot'
           },
           {
             label: '是否开工',
@@ -202,14 +202,14 @@ export default {
             width: 120,
             dicData: [
               {
-                label: "否",
+                label: '否',
                 value: 0
               },
               {
-                label: "是",
+                label: '是',
                 value: 1
               }
-            ],
+            ]
           },
           {
             label: '项目类型',
@@ -218,7 +218,7 @@ export default {
           },
           {
             label: '创建时间',
-            prop: 'createTime',
+            prop: 'createTime'
           }]
       },
       page: {
@@ -261,7 +261,7 @@ export default {
       },
       rules: {
         name: [
-          {required: true, message: '请输入项目名称', trigger: 'blur'}
+          { required: true, message: '请输入项目名称', trigger: 'blur' }
         ],
         projectType: [
           {
@@ -279,30 +279,30 @@ export default {
         ]
       },
       diaType: -1,
-      parentId: 0,
+      parentId: 0
     }
   },
-  created() {
+  created () {
     // this.getTypeList()
     this.$bus.on('serach', (res) => {
       this.onLoad(res)
     })
   },
   computed: {
-    permissionList() {
+    permissionList () {
       return {
         delBtn: vaildData(this.permissions.permissions.home_del, false)
       }
     }
   },
   methods: {
-    switchTab(item, index) {
+    switchTab (item, index) {
       this.active = index
       this.onLoad()
     },
-    onLoad(query = {}) {
+    onLoad (query = {}) {
       this.loading = true
-      const data = {...query, parentId: this.parentId,}
+      const data = { ...query, parentId: this.parentId }
       this.$api.project.projectList(this.page.currentPage, this.page.pageSize, data).then(res => {
         this.loading = false
         if (res.code === 200) {
@@ -316,11 +316,11 @@ export default {
         this.loading = false
       })
     },
-    beforeOpen(done, type) {
+    beforeOpen (done, type) {
       if (['edit'].includes(type)) {
         this.$router.push({
           path: '/home/details',
-          query: {id: this.form.id, type: '0', ownerId: this.form.createUser}
+          query: { id: this.form.id, type: '0', ownerId: this.form.createUser }
         })
       } else if (type === 'view') {
         // this.$alert('功能建设中,尽情期待...', '消息提醒', {
@@ -328,50 +328,50 @@ export default {
         // })
         this.$router.push({
           path: '/home/pro_detail',
-          query: {id: this.form.id}
+          query: { id: this.form.id }
         })
       }
     },
-    currentChange(currentPage) {
+    currentChange (currentPage) {
       this.page.current = currentPage
     },
-    sizeChange(pageSize) {
+    sizeChange (pageSize) {
       this.page.size = pageSize
     },
-    refreshChange() {
+    refreshChange () {
       this.onLoad()
     },
-    treeLoad(tree, treeNode, resolve) {
+    treeLoad (tree, treeNode, resolve) {
       this.loading = true
       getLazyList(tree.id).then(res => {
-        resolve(res.data.data.records);
-      });
+        resolve(res.data.data.records)
+      })
     },
-    rowDel(row) {
+    rowDel (row) {
       this.$confirm('确定删除选择的项目?', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       })
-          .then(() => {
-            this.$api.project.projectRemove({ids: row.id}).then(res => {
-              if (res.code === 200) {
-                this.$message.success(res.msg)
-                this.onLoad()
-              } else {
-                this.$message.error(res.msg)
-              }
-            })
+        .then(() => {
+          this.$api.project.projectRemove({ ids: row.id }).then(res => {
+            if (res.code === 200) {
+              this.$message.success(res.msg)
+              this.onLoad()
+            } else {
+              this.$message.error(res.msg)
+            }
           })
+        })
     },
-    getStageList() {
+    getStageList () {
       this.$api.project.userStageList().then(res => {
         if (res.code === 200) {
           this.stage = res.data
         }
       })
     },
-    getTotalAmount(data) {
+    getTotalAmount (data) {
       this.$api.project.totalAmount(Object.assign(data, this.query)).then(res => {
         if (res.code === 200) {
           this.num = res.data
@@ -380,17 +380,34 @@ export default {
         }
       })
     },
-    getTypeList() {
-      this.$api.project.typeList({type: 1, size: 999, current: 1}).then(res => {
+    getTypeList () {
+      this.$api.project.typeList({ type: 1, size: 999, current: 1 }).then(res => {
         this.typeList = res.data.records
       })
-      this.$api.common.dicList({code: 'project-tags'}).then(res => {
+      this.$api.common.dicList({ code: 'project-tags' }).then(res => {
         if (res.code === 200) {
           this.tagsList = res.data
         }
       })
     },
-    projectSave() {
+    track (id) {
+      this.$confirm('是否确定进行项目上报', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        const data = { id, isReport: 1 }
+        this.$api.project.proUpdate(data).then(res => {
+          if (res.code === 200) {
+            console.log(res)
+            this.$message.success(res.msg)
+          } else {
+            this.$message.error(res.msg)
+          }
+        })
+      })
+    },
+    projectSave () {
       if (this.disable) {
         this.$message.error('正在处理,请稍后...')
         return
@@ -414,7 +431,6 @@ export default {
         }
       })
     }
-
   }
 }
 </script>

+ 170 - 0
src/views/home/component/inspect/Inspect1.vue

@@ -0,0 +1,170 @@
+<template>
+  <div class='flex flex-justify-start flex-align-center flex-col'>
+    <span class='full-width text-left'>{{ info.dictValue }}</span>
+    <div style='width: 95%;' class='mt-20'>
+      <avue-crud
+          :option="option"
+          :data="data"
+          ref="crud"
+          v-model="form"
+          :before-open="beforeOpen"
+          @row-del="rowDel"
+          @row-save="rowSave"
+          @row-update="rowUpdate">
+      </avue-crud>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Inspect1',
+  props: {
+    info: {
+      type: Object,
+      default: null
+    }
+  },
+  data () {
+    return {
+      form: {},
+      data: [],
+      projectId: '',
+      page: {
+        size: 10,
+        current: 1
+      },
+      option: {
+        align: 'center',
+        menuAlign: 'center',
+        menuWidth: 180,
+        addBtn: true,
+        refreshBtn: false,
+        columnBtn: false,
+        labelWidth: 140,
+        border: true,
+        column: [
+          {
+            label: '工作推荐情况描述',
+            prop: 'description',
+            span: 24,
+            type: 'textarea'
+          },
+          {
+            label: '填报时间',
+            prop: 'createTime',
+            display: false
+          },
+          {
+            label: '是否已经上报',
+            prop: 'isReport',
+            type: 'select',
+            display: false,
+            dicData: [
+              {
+                label: '否',
+                value: 0
+              },
+              {
+                label: '是',
+                value: 1
+              }
+            ]
+          },
+          {
+            label: '上报时间',
+            prop: 'reportTime',
+            display: false
+          }
+        ]
+      }
+    }
+  },
+  created () {
+    this.projectId = this.$route.query.id
+    this.onLoad()
+  },
+  methods: {
+    add () {
+      this.$refs.crud.rowAdd()
+    },
+    onLoad () {
+      const data = {
+        projectInfoId: this.projectId,
+        status: this.info.dictKey
+      }
+      this.loading = true
+      this.$api.inspect.list(Object.assign(this.page, data)).then(res => {
+        this.data = res.data.records
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+    beforeOpen (done, type) {
+      if (['view', 'edit'].includes(type)) {
+        this.getDetail()
+      }
+      done()
+    },
+    refreshChange () {
+      this.onLoad()
+    },
+    rowSave (row, done, loading) {
+      const data = {
+        projectId: this.projectId
+      }
+      this.$api.inspect.submint(Object.assign(row, data)).then((res) => {
+        if (res.code === 200) {
+          this.$message.success(res.msg)
+        } else {
+          this.$message.error(res.msg)
+        }
+        done(row)
+        this.onLoad()
+      }, error => {
+        window.console.log(error)
+        loading()
+      })
+    },
+    rowUpdate (row, index, done, loading) {
+      const data = {
+        projectInfoId: this.info.id
+      }
+      this.$api.projects.meeting.update(Object.assign(row, data)).then((res) => {
+        if (res.code === 200) {
+          this.$message.success(res.msg)
+        } else {
+          this.$message.error(res.msg)
+        }
+        done(row)
+        this.onLoad()
+      }, error => {
+        window.console.log(error)
+        loading()
+      })
+    },
+    rowDel (row, index, done) {
+      this.$confirm('确定将选择数据删除?', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        return this.$api.projects.meeting.removeList({ ids: row.id })
+      }).then(() => {
+        this.$message({
+          type: 'success',
+          message: '操作成功!'
+        })
+        // 数据回调进行刷新
+        done(row)
+        this.onLoad()
+      }).catch(() => {
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 93 - 0
src/views/home/component/params/params1.vue

@@ -0,0 +1,93 @@
+<template>
+  <div class='flex flex-justify-start flex-align-center flex-col'>
+    <span class='full-width text-left'>{{ info.dictValue }}</span>
+    <div class='mt-10' style='width: 80%;'>
+      <el-form
+          :model="form"
+          label-width='140px'
+          :disabled='true'
+          class='form-content flex flex-col'
+      >
+        <div class='flex flex-justify-start ' >
+          <el-form-item label="项目名称" style='flex:1'>
+            <el-input v-model="form.name"/>
+          </el-form-item>
+          <el-form-item label="总投资金额(万元)" style='flex:1' class='ml-20'>
+            <el-input v-model="form.region"/>
+          </el-form-item>
+        </div>
+        <div class='full-width  flex'>
+          <el-form-item label="县(区)" style='flex:1'>
+            <el-input v-model="form.name"/>
+          </el-form-item>
+          <el-form-item label="责任单位" style='flex:1' class='ml-20'>
+            <el-input v-model="form.region"/>
+          </el-form-item>
+        </div>
+
+        <div class='full-width  flex'>
+          <el-form-item label="主管单位" style='flex:1'>
+            <el-input v-model="form.name"/>
+          </el-form-item>
+          <el-form-item label="责任领导" style='flex:1' class='ml-20'>
+            <el-input v-model="form.region"/>
+          </el-form-item>
+        </div>
+        <div class='full-width  flex'>
+          <el-form-item label="项目负责人" style='flex:1'>
+            <el-input v-model="form.name"/>
+          </el-form-item>
+          <el-form-item label="联系电话" style='flex:1' class='ml-20'>
+            <el-input v-model="form.region"/>
+          </el-form-item>
+        </div>
+
+        <div class='full-width  flex'>
+          <el-form-item label="行业分类" style='flex:1'>
+            <el-input v-model="form.name"/>
+          </el-form-item>
+          <el-form-item label="建设起至时间" style='flex:1' class='ml-20'>
+            <el-input v-model="form.region"/>
+          </el-form-item>
+        </div>
+
+        <div class='full-width  flex'>
+          <el-form-item label="项目负责人" style='flex:1'>
+            <el-input v-model="form.name"/>
+          </el-form-item>
+          <el-form-item label="联系电话" style='flex:1' class='ml-20'>
+            <el-input v-model="form.region"/>
+          </el-form-item>
+        </div>
+      </el-form>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'params1',
+  props: {
+    info: {
+      type: Object,
+      default: null
+    }
+  },
+  data () {
+    return {
+      form: {
+        name: '',
+        region: '',
+        type: ''
+      }
+    }
+  }
+}
+</script>
+
+<style lang='scss' scoped>
+.form-content {
+  border: 1px solid #eeeeee;
+  padding: 20px;
+}
+</style>

+ 33 - 6
src/views/home/component/pro_left.vue

@@ -46,14 +46,30 @@
 </template>
 
 <script>
-import mainButton from "@/components/main-button.vue";
+<
+<
+<
+<
+<
+<< Updated upstream
+           import mainButton from "@/components/main-button.vue";
 import proRelation from "@/views/home/component/pro_relation.vue";
 
 export default {
   name: "pro_left",
   components: {mainButton, proRelation},
+=== === =
+import mainButton from '@/components/main-button.vue'
+
+export default {
+  name: 'pro_left',
+  components: {mainButton},
   props: {
     data: Object,
+    code: {
+      type: String,
+      default: 'params_type'
+    }
   },
   watch: {
     data: {
@@ -64,6 +80,14 @@ export default {
       },
       immediate: false
     },
+    code: {
+      handler(val) {
+        if (val) {
+          this.getDic(val)
+        }
+      },
+      immediate: false
+    }
   },
   data() {
     return {
@@ -73,24 +97,27 @@ export default {
       currentSituation: '',
       active: 0,
       showRelation: false,
-      projectId: ''
+      projectId: '',
+      resultList: []
     }
   },
   created() {
-    this.getDic('params_type')
+    this.getDic(this.code)
   },
   methods: {
     getDic(code) {
-      this.$api.common.dicList({code: code}).then(res => {
+      this.$api.common.dicList({code}).then(res => {
         if (res.code === 200) {
           if (code === 'project-situation') {
             this.dicList = res.data
-            let local = this.dicList.filter(e => e.dictKey === this.data.projectStage + '')
+            const local = this.dicList.filter(e => e.dictKey === this.data.projectStage + '')
             if (local.length > 0) {
               this.currentSituation = local[0]
             }
-          } else if (code === 'params_type') {
+          } else {
             this.dicList1 = res.data
+            this.resultList = this.dicList1
+            this.$emit('success', this.resultList)
           }
         }
       })

+ 57 - 9
src/views/home/pro_detail.vue

@@ -1,7 +1,35 @@
 <template>
-  <div class='flex flex-justify-start full-height'>
+  <div class='flex flex-justify-start'>
     <div class="full-height">
-      <pro_left :data="data"/>
+      <pro-left :data="data" :code='code' @success='listSucc'/>
+    </div>
+    <div style='margin-left: 300px' class='full-width'>
+      <basic-container>
+        <basic-tab :tabs='tabs' @change='change'></basic-tab>
+      </basic-container>
+      <basic-container style='margin-top: 0'>
+        <div v-if='currentTab.value === 1'>
+          <div v-for='(item,index) in resultList' :key='item.id'>
+            <a :href='`#header`+(index+1)'>
+              <div class='full-width' :id="`header`+(index+1)">
+                <params1 v-if='item.dictKey === "1" ' :info='item'/>
+              </div>
+            </a>
+          </div>
+        </div>
+        <div v-else-if='currentTab.value === 2'>
+          <div v-for='(item,index) in resultList' :key='item.id'>
+            <a :href='`#header`+(index+1)'>
+              <div class='full-width' :id="`header`+(index+1)">
+                <inspect1 v-if='item.dictKey === "1" ' :info='item'/>
+              </div>
+            </a>
+          </div>
+        </div>
+        <div v-else-if='currentTab.value === 3'>
+          tab3
+        </div>
+      </basic-container>
     </div>
   </div>
 </template>
@@ -13,32 +41,52 @@ meta: { keepAlive: true }
 </route>
 
 <script>
-import pro_left from "@/views/home/component/pro_left.vue";
+import proLeft from '@/views/home/component/pro_left.vue'
+import BasicContainer from '@/components/basic-container/main.vue'
+import BasicTab from '@/components/basic-tab/index.vue'
+import params1 from '@/views/home/component/params/params1.vue'
+import inspect1 from '@/views/home/component/inspect/Inspect1.vue'
 
 export default {
-  name: "pro_detail",
-  components: {pro_left},
-  data() {
+  name: 'pro_detail',
+  components: { BasicContainer, proLeft, BasicTab, params1, inspect1 },
+  data () {
     return {
       id: '',
-      data: {}
+      data: {},
+      tabs: [
+        { name: '项目信息管理', value: 1, code: 'params_type' },
+        { name: '项目督查情况', value: 2, code: 'inspect_type' },
+        { name: '项目数据明细管理', value: 3 }
+      ],
+      currentTab: null,
+      resultList: [],
+      code: 'params_type'
     }
   },
-  created() {
+  created () {
     this.id = this.$route.query.id
+    this.currentTab = this.tabs[0]
     this.proInfo()
   },
   methods: {
+    change (res, index) {
+      this.currentTab = res
+      this.code = this.currentTab.code
+    },
     /**
      * 项目信息
      */
-    proInfo() {
+    proInfo () {
       this.$api.project.projectInfo(this.id).then(res => {
         if (res.code === 200) {
           this.data = res.data
         }
       })
     },
+    listSucc (list) {
+      this.resultList = list
+    }
   }
 }
 </script>

+ 5 - 75
yarn.lock

@@ -47,11 +47,6 @@
   resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86"
   integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==
 
-"@floating-ui/core@^1.0.2":
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.0.2.tgz#d06a66d3ad8214186eda2432ac8b8d81868a571f"
-  integrity sha512-Skfy0YS3NJ5nV9us0uuPN0HDk1Q4edljaOhRBJGDWs9EBa7ZVMYBHRFlhLvvmwEoaIM9BlH6QJFn9/uZg0bACg==
-
 "@floating-ui/dom@^0.5.4":
   version "0.5.4"
   resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-0.5.4.tgz#4eae73f78bcd4bd553ae2ade30e6f1f9c73fe3f1"
@@ -59,13 +54,6 @@
   dependencies:
     "@floating-ui/core" "^0.7.3"
 
-"@floating-ui/dom@^1.0.1":
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.0.6.tgz#e42393ec381a4fe96673fbcee137a95e86c93ebc"
-  integrity sha512-kt/tg1oip9OAH1xjCTcx1OpcUpu9rjDw3GKJ/rEhUqhO7QyJWfrHU0DpLTNsH67+JyFL5Kv9X1utsXwKFVtyEQ==
-  dependencies:
-    "@floating-ui/core" "^1.0.2"
-
 "@gar/promisify@^1.1.3":
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
@@ -288,16 +276,13 @@
   integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
 
 "@smallwei/avue@^3.2.5":
-  version "3.2.5"
-  resolved "https://registry.yarnpkg.com/@smallwei/avue/-/avue-3.2.5.tgz#b44d1ac003328a8d81e7b0c4dc710b5196d82d11"
-  integrity sha512-L34KjOhkOtIgnjeTMa0Gldfq/zQ+o+RbcU+gAWkT0J2RYllw7o6udwho8mrT7f1v09QPht8WaYe2TQSshJwRqw==
+  version "3.2.9"
+  resolved "https://registry.yarnpkg.com/@smallwei/avue/-/avue-3.2.9.tgz#0f2ea2fefff1a3f343eff23b020da8b63c1d1213"
+  integrity sha512-M4TP+ntbkfaRuUXXf+7KK/+8Fbx9dhUQb057yUyeu8/pT6ML4Zzy+TctUQkQjpiwmpgWaG3EYzdWxk37gGVbfQ==
   dependencies:
     "@element-plus/icons-vue" "^2.0.6"
-    axios "^0.21.1"
     countup.js "^1.9.3"
     dayjs "^1.10.4"
-    element-plus "^2.2.17"
-    vue "^3.2.37"
 
 "@tootallnate/once@2":
   version "2.0.0"
@@ -338,11 +323,6 @@
   resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz#94e175b53623384bff1f354cdb3197a8d63cdbe5"
   integrity sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==
 
-"@types/web-bluetooth@^0.0.16":
-  version "0.0.16"
-  resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
-  integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
-
 "@vitejs/plugin-vue@^3.0.0":
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.0.0.tgz#7081e2b3fbe04e291bb85107b9fb57a1fa5e6aeb"
@@ -453,26 +433,11 @@
     "@vueuse/shared" "8.9.4"
     vue-demi "*"
 
-"@vueuse/core@^9.1.0":
-  version "9.5.0"
-  resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.5.0.tgz#6726e952e8f92b465457d3bc95deb385aacd9a41"
-  integrity sha512-6GsWBsJHEb3sYw15mbLrcbslAVY45pkzjJYTKYKCXv88z7srAF0VEW0q+oXKsl58tCbqooplInahXFg8Yo1m4w==
-  dependencies:
-    "@types/web-bluetooth" "^0.0.16"
-    "@vueuse/metadata" "9.5.0"
-    "@vueuse/shared" "9.5.0"
-    vue-demi "*"
-
 "@vueuse/metadata@8.9.4":
   version "8.9.4"
   resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-8.9.4.tgz#a4132db33e4c1b1023636acfa20aa7b37ab3d978"
   integrity sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==
 
-"@vueuse/metadata@9.5.0":
-  version "9.5.0"
-  resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.5.0.tgz#b01c84230261ddee4d439ae5d9c21343dc5ae565"
-  integrity sha512-4M1AyPZmIv41pym+K5+4wup3bKuYebbH8w8BROY1hmT7rIwcyS4tEL+UsGz0Hiu1FCOxcoBrwtAizc0YmBJjyQ==
-
 "@vueuse/shared@8.9.4":
   version "8.9.4"
   resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-8.9.4.tgz#c9741c30ffb666b50d62f0dd80b76119fd47573e"
@@ -480,13 +445,6 @@
   dependencies:
     vue-demi "*"
 
-"@vueuse/shared@9.5.0":
-  version "9.5.0"
-  resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.5.0.tgz#f5306548af0dc9f2b3a0d4da74e62bfdd6211241"
-  integrity sha512-HnnCWU1Vg9CVWRCcI8ohDKDRB2Sc4bTgT1XAIaoLSfVHHn+TKbrox6pd3klCSw4UDxkhDfOk8cAdcK+Z5KleCA==
-  dependencies:
-    vue-demi "*"
-
 "@windicss/config@1.8.7":
   version "1.8.7"
   resolved "https://registry.yarnpkg.com/@windicss/config/-/config-1.8.7.tgz#650bec3c6e3293306e4fe0c478253bd0085884aa"
@@ -647,13 +605,6 @@ available-typed-arrays@^1.0.5:
   resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
   integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
 
-axios@^0.21.1:
-  version "0.21.4"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
-  integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
-  dependencies:
-    follow-redirects "^1.14.0"
-
 axios@^0.27.2:
   version "0.27.2"
   resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
@@ -1026,27 +977,6 @@ doctrine@^3.0.0:
   dependencies:
     esutils "^2.0.2"
 
-element-plus@^2.2.17:
-  version "2.2.21"
-  resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.2.21.tgz#ba3902b5e29fcb83b7407a0b7408372a1eed595e"
-  integrity sha512-wZUePoXZ1zuCkzENK/8mn+mekuLJ9OoGYiudjUujzCf+T8HfOQl+TKQStwOkGBNk93fK8e9YdFIty4jH4AX6dg==
-  dependencies:
-    "@ctrl/tinycolor" "^3.4.1"
-    "@element-plus/icons-vue" "^2.0.6"
-    "@floating-ui/dom" "^1.0.1"
-    "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
-    "@types/lodash" "^4.14.182"
-    "@types/lodash-es" "^4.17.6"
-    "@vueuse/core" "^9.1.0"
-    async-validator "^4.2.5"
-    dayjs "^1.11.3"
-    escape-html "^1.0.3"
-    lodash "^4.17.21"
-    lodash-es "^4.17.21"
-    lodash-unified "^1.0.2"
-    memoize-one "^6.0.0"
-    normalize-wheel-es "^1.2.0"
-
 element-plus@^2.2.9:
   version "2.2.9"
   resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.2.9.tgz#f0366dfb2048d614813926274cb443f17e5fdef2"
@@ -1573,7 +1503,7 @@ flatted@^3.1.0:
   resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2"
   integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==
 
-follow-redirects@^1.14.0, follow-redirects@^1.14.9:
+follow-redirects@^1.14.9:
   version "1.15.1"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
   integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
@@ -2581,7 +2511,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
   resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
   integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
 
-normalize-wheel-es@^1.1.2, normalize-wheel-es@^1.2.0:
+normalize-wheel-es@^1.1.2:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e"
   integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==