scorpio 2 ani în urmă
părinte
comite
35b3c3adb3

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

@@ -34,6 +34,9 @@ export default {
   projectInfo (id) { // 项目详细信息
     return fetch('/blade-project-manage-v2/project/v2/detail/?id=' + id)
   },
+  projectMapInfo (id) { // 项目详细信息
+    return fetch('/blade-project-manage-v2/project/v2/newDetail/?id=' + id)
+  },
   proUpdate (params) { // 项目信息更新
     return fetch('/blade-project-manage-v2/project/v2/update', params, 'post', 'json')
   },

+ 5 - 1
src/components/uploads.vue

@@ -4,7 +4,7 @@
                :accept="accept"
                :action="action"
                :data='data'
-               :auto-upload='false'
+               :auto-upload='auto'
                :drag="drag"
                :file-list="tmpFileList"
                :headers="headers"
@@ -59,6 +59,10 @@ export default {
       type: Boolean,
       default: false
     },
+    auto: {
+      type: Boolean,
+      default: false
+    },
     accept: {
       type: String,
       default: ''

+ 89 - 1
src/views/home/component/params/params4.vue

@@ -14,26 +14,45 @@
           @row-save="rowSave"
           @row-update="rowUpdate">
         <template #menu='{row}'>
-          <el-button text type='primary' icon='el-icon-upload'>上传</el-button>
+          <el-button v-if='detail.canUpdate' text type='primary' icon='el-icon-edit' @click='edit(row)'>编辑</el-button>
         </template>
       </avue-crud>
     </div>
+    <el-dialog v-model='show'>
+      <div>
+        {{ currentRow }}
+        <uploads max='1' :auto='true' :data='{type:1,toStutus:2}'/>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+import uploads from '@/components/uploads.vue'
+
 export default {
   name: 'params4',
+  components: {
+    uploads
+  },
   props: {
     info: {
       type: Object,
       default: null
+    },
+    detail: {
+      type: Object,
+      default: null
     }
   },
   data () {
     return {
+      show: false,
+      uploads: false,
+      currentRow: null,
       disabled: true,
       form: {},
+      // eslint-disable-next-line vue/no-dupe-keys
       data: [
         {
           name: '建设项目用地预审',
@@ -93,6 +112,8 @@ export default {
         size: 'mini',
         addBtn: false,
         delBtn: false,
+        editBtn: false,
+        viewBtn: true,
         refreshBtn: false,
         columnBtn: false,
         labelWidth: 140,
@@ -121,6 +142,73 @@ export default {
         ]
       }
     }
+  },
+  methods: {
+    edit (row) {
+      this.show = true
+      this.currentRow = row
+    },
+    beforeOpen (done, type) {
+      if (['view', 'edit'].includes(type)) {
+        console.log(type)
+      }
+      done()
+    },
+    refreshChange () {
+      this.onLoad()
+    },
+    rowSave (row, done, loading) {
+      const data = {
+        projectInfoId: this.info.id
+      }
+      this.$api.projects.meeting.save(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>

+ 26 - 50
src/views/home/component/params/params6.vue

@@ -5,62 +5,18 @@
       <el-button type='primary' @click='disabled = !disabled'>{{ disabled ? '编 辑' : '保 存' }}</el-button>
     </div>
     <div class='mt-10' style='width: 80%;'>
+      {{ keys }}
       <el-form
           :model="form"
           label-width='140px'
           :disabled='disabled'
           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 class='grid light-green-bg' v-for='item in keys' :key='item.id'>
+          <div class='light-red-bg' style='width: 50%'>{{ item}}</div>
+<!--          <el-form-item :label="item" style='flex:1'>-->
+<!--            <el-input v-model="form.name"/>-->
+<!--          </el-form-item>-->
         </div>
       </el-form>
     </div>
@@ -74,10 +30,25 @@ export default {
     info: {
       type: Object,
       default: null
+    },
+    detail: {
+      type: Object,
+      default: null
+    }
+  },
+  watch: {
+    detail: {
+      handler (val) {
+        const jsonTmp = JSON.parse(val.other)
+        val.other = jsonTmp
+        this.keys = Object.keys(jsonTmp)
+      },
+      immediate: true
     }
   },
   data () {
     return {
+      keys: null,
       disabled: true,
       form: {
         name: '',
@@ -94,4 +65,9 @@ export default {
   border: 1px solid #eeeeee;
   padding: 20px;
 }
+
+.grid {
+  display: grid;
+  grid-template-columns: auto auto;
+}
 </style>

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

@@ -8,15 +8,21 @@
         <basic-tab :tabs='tabs' @change='change'></basic-tab>
       </basic-container>
 
+      <div v-if='Object.keys(data).length === 0'>
+        <basic-container>
+          <el-empty description='加载中...'></el-empty>
+        </basic-container>
+      </div>
+
       <div v-if='currentTab.value === 1'>
         <basic-container v-for='(item,index) in resultList' :key='item.id'>
           <div class='full-width padding-top' :id="`header`+(index+1)">
             <params1 v-if='item.dictKey === "1" ' :info='item' :detail='data'/>
             <params2 v-if='item.dictKey === "2" ' :info='item'/>
             <params3 v-if='item.dictKey === "3" ' :info='item'/>
-            <params4 v-if='item.dictKey === "4" ' :info='item'/>
+            <params4 v-if='item.dictKey === "4" ' :info='item' :detail='data'/>
             <params5 v-if='item.dictKey === "5" ' :info='item'/>
-            <params6 v-if='item.dictKey === "6" ' :info='item'/>
+            <params6 v-if='item.dictKey === "6" ' :info='item' :detail='data'/>
           </div>
         </basic-container>
       </div>
@@ -88,7 +94,7 @@ export default {
      * 项目信息
      */
     proInfo () {
-      this.$api.project.projectInfo(this.id).then(res => {
+      this.$api.project.projectMapInfo(this.id).then(res => {
         if (res.code === 200) {
           this.data = res.data
         }

+ 2 - 2
vite.config.js

@@ -39,9 +39,9 @@ export default defineConfig({
     proxy: {
       '/api': {
         // 正式环境地址
-        target: 'https://dev.wutongresearch.club/api',
+        // target: 'https://dev.wutongresearch.club/api',
         // target: 'https://prod.wutongshucloud.com/api',
-        // target: 'http://192.168.31.181:8110',
+        target: 'http://192.168.31.181:8110',
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/api/, '')
       }