Selaa lähdekoodia

1.机器设备作价页面新增

GouGengquan 8 kuukautta sitten
vanhempi
commit
c254dafb64

+ 5 - 0
src/api/assetsCalculate.js

@@ -23,4 +23,9 @@ export function updateCalculateBaseInfo(params) {
 // 生成资产机器设备测算表
 export function generateEquipmentCalculate(params) {
     return request.get(`/assetsCalculate/generateEquipmentCalculate/${params}`)
+}
+
+// 根据id查询项目下所有测算表
+export function listAllByProjectId(params) {
+    return request.get(`/assetsCalculate/listAllByProjectId/${params}`)
 }

+ 5 - 0
src/api/assetsCalculateEqptData.js

@@ -3,4 +3,9 @@ import request from '@/utils/request'
 // 获取是否有进口设备
 export function hasImportedEquipment(params) {
     return request.get(`/assetsCalculateEqptData/hasImportedEquipment/${params}`)
+}
+
+// 分页查询导入的机器设备测算数据
+export function getDataPage(params) {
+    return request.get('/assetsCalculateEqptData/getDataPage', { params: params })
 }

+ 14 - 0
src/assets/base.css

@@ -179,5 +179,19 @@ body {
 
 }
 
+/* ElMessageBox 确认和取消按钮的样式*/
+.elMessageBoxConfirmButton {
+  background: #ff6154 !important;
+  color: #fff !important;
+  border-color: #ff6154 !important;
+}
+
+.elMessageBoxCancelButton:hover {
+  background: #fff !important;
+  color: #ff6154 !important;
+  border: 1.5px solid #ff6154 !important;
+  cursor: pointer !important;
+}
+
 
 

+ 1 - 1
src/components/SheetView/index.vue

@@ -101,7 +101,7 @@
   };
   </script>
 
-  <style >
+  <style scoped>
     table {
             border-collapse: collapse;
             font-size: 15px;

+ 2 - 0
src/utils/request.js

@@ -53,6 +53,8 @@ service.interceptors.response.use(
           cancelButtonText: '取消',
           type: 'warning',
           center: true,
+          confirmButtonClass: 'elMessageBoxConfirmButton',
+          cancelButtonClass: 'elMessageBoxCancelButton'
         }
         ).then(() => { // 确认重新登录
           removeToken();

+ 20 - 12
src/views/assets/folder/child.vue

@@ -16,31 +16,28 @@
       </div>
     </div>
     <div class="example-list report-div">
-      <el-card class="report-item no-border" shadow="never">
+      <el-card class="report-item no-border" shadow="never" v-for="item in calculateList">
         <div class="report-icon">
           <img src="../../../assets/icons/word.png" style="width: 52px; height: 52px;" />
         </div>
         <div class="report-text">
-          <span class="report-text-type">资产债权类报告</span>
-          <span> 一 </span>
-          <span class="report-text-name">遂宁市船山区五彩缤纷路132号134号 136号等船山区慈音路2号南瑞弗莱明戈 10栋2层1商业债权分析报告
+          <!-- <span class="report-text-type">{{ item. }}</span>
+          <span> 一 </span> -->
+          <span class="report-text-name">{{ item.calculateName }}
           </span>
           <div style="margin-top: 5px;">
             <span>
               <el-icon>
                 <Avatar />
               </el-icon>
-              恒丰银行成都分行</span>
+              {{ item.principal }}</span>
             <span>
               <el-tag style="margin-left: 5px;">
-                债权
-              </el-tag>
-              <el-tag style="margin-left: 5px;" type="danger">
-                评估
+                {{ item.projectTypeName }}
               </el-tag>
             </span>
             <span style="float: right; color:darkgrey">
-              2024-10-16 12:10:09
+              {{ item.createTime }}
             </span>
           </div>
         </div>
@@ -91,7 +88,7 @@
 <script>
 import { mapStores } from 'pinia'
 import { assetsProjectInfo } from '@/stores/assetsProjectStore';
-import { getUnFinishedCalculateProgress } from '@/api/assetsCalculate';
+import { getUnFinishedCalculateProgress, listAllByProjectId } from '@/api/assetsCalculate';
 
 export default {
   name: 'assetsChild',
@@ -99,7 +96,8 @@ export default {
     return {
       msg: 0,
       projectInfo: {},
-      folderName: null
+      folderName: null,
+      calculateList: []
     }
   },
   computed: {
@@ -107,6 +105,7 @@ export default {
   },
   created() {
     this.projectInfo = this.$route.query;
+    this.getCalculateList();
   },
   methods: {
     createNewCalculate() {
@@ -131,6 +130,15 @@ export default {
         } else {
           // 为空说明没有未完成的测算,从头开始新建
           this.createNewCalculate();
+          this.projectStore.removeCalculateProgress();
+        }
+      })
+    },
+    // 获取测算表list
+    getCalculateList() {
+      listAllByProjectId(this.projectStore.projectInfo.id).then(res => {
+        if(res.data) {
+          this.calculateList = res.data;
         }
       })
     }

+ 15 - 7
src/views/assets/workbench/calculate/components/timeline.vue

@@ -1,19 +1,27 @@
 <template>
   <div class="contrl-bar">
     <el-timeline style="max-width: 600px">
-      <el-timeline-item :timestamp="(progress === 'IMPORT' || progress === 'GENERATE' || progress === 'FINISHED') ? '已完成' : '未完成'" placement="top" :color="(progress === 'IMPORT' || progress === 'GENERATE' || progress === 'FINISHED') ? '#ff6154' : '#dae1eb'">
+      <el-timeline-item
+        :timestamp="(progress === 'IMPORT' || progress === 'GENERATE' || progress === 'FINISHED') ? '已完成' : '未完成'"
+        placement="top"
+        :color="(progress === 'IMPORT' || progress === 'GENERATE' || progress === 'FINISHED') ? '#ff6154' : '#dae1eb'"
+        @click="goBench('/home/assets/workbench/calculate/baseInfo')">
         <el-card shadow="never" class="timeline-card report-item">
           <h4>基本信息</h4>
           <p>更新时间: 2018/4/12 20:46</p>
         </el-card>
       </el-timeline-item>
-      <el-timeline-item :timestamp="(progress === 'GENERATE' || progress === 'FINISHED') ? '已完成' : '未完成'" placement="top" :color="(progress === 'GENERATE' || progress === 'FINISHED') ? '#ff6154' : '#dae1eb'">
+      <el-timeline-item :timestamp="(progress === 'GENERATE' || progress === 'FINISHED') ? '已完成' : '未完成'" placement="top"
+        :color="(progress === 'GENERATE' || progress === 'FINISHED') ? '#ff6154' : '#dae1eb'"
+        @click="goBench('/home/assets/workbench/calculate/importInfo')">
         <el-card shadow="never" class="timeline-card report-item">
           <h4>添加测算数据</h4>
           <p>更新时间: 2018/4/12 20:46</p>
         </el-card>
       </el-timeline-item>
-      <el-timeline-item :timestamp="(progress === 'FINISHED') ? '已完成' : '未完成'" placement="top" :color="(progress === 'FINISHED') ? '#ff6154' : '#dae1eb'">
+      <el-timeline-item :timestamp="(progress === 'FINISHED') ? '已完成' : '未完成'" placement="top"
+        :color="(progress === 'FINISHED') ? '#ff6154' : '#dae1eb'"
+        @click="goBench('/home/assets/workbench/calculate/genrateInfo')">
         <el-card shadow="never" class="timeline-card report-item">
           <h4>生成测算表</h4>
           <p>更新时间: 2018/4/12 20:46</p>
@@ -40,10 +48,11 @@ export default {
     if (this.projectStore.calculateProgress) {
       this.progress = this.projectStore.calculateProgress.progress;
     }
-    console.log(this.progress)
   },
   methods: {
-
+    goBench(route){
+      this.$router.push(route)
+    }
   }
 }
 
@@ -61,5 +70,4 @@ export default {
 
 .timeline-card:hover {
   cursor: pointer;
-}
-</style>
+}</style>

+ 194 - 18
src/views/assets/workbench/calculate/importInfo.vue

@@ -1,41 +1,194 @@
 <template>
     <div class="contrl">
         <el-divider content-position="left"><span style="color:#ff6154;">完善测算表信息</span></el-divider>
-        <el-upload ref="importEqptExcel" drag action="#" multiple style="width:50%;margin-left:25%;" accept=".xls,.xlsx" :limit="1"
-            :file-list="fileList" :on-exceed="handleExceed" :before-remove="beforeRemove" :auto-upload="false" :http-request="importEqptExcelData">
-            <el-icon class="el-icon--upload"><upload-filled /></el-icon>
-            <div class="el-upload__text">
-                拖拽文件 <em>或点击上传</em>
-            </div>
-            <template #tip>
-                <div class="el-upload__tip">
-                    文件大小限制在100MB及以下
+        <div class="uploadDiv">
+            <el-upload ref="importEqptExcel" drag action="#" multiple style="width:100%;" accept=".xls,.xlsx" :limit="1"
+                :file-list="fileList" :on-exceed="handleExceed" :before-remove="beforeRemove" :auto-upload="false"
+                :http-request="importEqptExcelData">
+                <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+                <div class="el-upload__text">
+                    拖拽文件 <em>或点击上传</em>
                 </div>
-            </template>
-        </el-upload>
-        <el-button type="danger" @click="uploadEqptExcel()">
-            确认上传
-        </el-button>
+                <template #tip>
+                    <div class="el-upload__tip">
+                        文件大小限制在100MB及以下
+                    </div>
+                </template>
+            </el-upload>
+            <el-button type="danger" @click="uploadEqptExcel()">
+                确认上传
+            </el-button>
+        </div>
+        <div class="evaluateDiv">
+            <el-table :data="eqptPageData" border stripe>
+                <el-table-column prop="sortId" label="序号" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="sortId">
+                            <el-form :model="row">
+                                <el-input v-model="row.sortId" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="equipmentName" label="设备名称" width="200">
+                    <template #default="{ row }">
+                        <el-form-item prop="equipmentName">
+                            <el-form :model="row">
+                                <el-input v-model="row.equipmentName" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="manufacturer" label="生产厂家" width="200">
+                    <template #default="{ row }">
+                        <el-form-item prop="manufacturer">
+                            <el-form :model="row">
+                                <el-input v-model="row.manufacturer" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="model" label="型号规格" width="200">
+                    <template #default="{ row }">
+                        <el-form-item prop="model">
+                            <el-form :model="row">
+                                <el-input v-model="row.model" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="purchaseDate" label="购买日期" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="purchaseDate">
+                            <el-form :model="row">
+                                <el-input v-model="row.purchaseDate" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="activationDate" label="启用日期" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="activationDate">
+                            <el-form :model="row">
+                                <el-input v-model="row.activationDate" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="storageLocation" label="存放地点" width="200">
+                    <template #default="{ row }">
+                        <el-form-item prop="storageLocation">
+                            <el-form :model="row">
+                                <el-input v-model="row.storageLocation" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="quantity" label="数量" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="quantity">
+                            <el-form :model="row">
+                                <el-input v-model="row.quantity" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="unitOfMeasurement" label="计量单位" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="unitOfMeasurement">
+                            <el-form :model="row">
+                                <el-input v-model="row.unitOfMeasurement" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="originalValue" label="账面原值" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="originalValue">
+                            <el-form :model="row">
+                                <el-input v-model="row.originalValue" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="netValue" label="账面净值" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="netValue">
+                            <el-form :model="row">
+                                <el-input v-model="row.netValue" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="equipmentType" label="设备类型" width="100">
+                    <template #default="{ row }">
+                        <el-form-item prop="equipmentType">
+                            <el-form :model="row">
+                                <el-input v-model="row.equipmentType" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="remark" label="备注" width="200">
+                    <template #default="{ row }">
+                        <el-form-item prop="remark">
+                            <el-form :model="row">
+                                <el-input v-model="row.remark" placeholder="请输入序号" />
+                            </el-form>
+                        </el-form-item>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+        <el-pagination background layout="prev, pager, next"
+            style="--el-color-primary: #ff6154;margin-top: 20px; float: right;" v-model:page-count="eqptDataQuery.pages"
+            v-model:current-page="eqptDataQuery.current" @current-change="getEqptDataPage" />
+
     </div>
 </template>
 
 <script>
-import { mapStores } from 'pinia'
+import { mapStores } from 'pinia';
 import { assetsProjectInfo } from '@/stores/assetsProjectStore';
-import { importEqptExcelData } from '@/api/assetsCalculate'
+import { importEqptExcelData } from '@/api/assetsCalculate';
+import { getDataPage } from '@/api/assetsCalculateEqptData';
 
 export default {
     data() {
         return {
             fileList: [],
+            eqptDataQuery: {
+                current: 1,
+                size: 10,
+                pages: 1,
+                projectId: null
+            },
+            eqptPageData: []
         }
     },
     computed: {
         ...mapStores(assetsProjectInfo),
     },
+    created() {
+        this.getEqptDataPage();
+    },
     methods: {
-        uploadEqptExcel(){
-            this.$refs.importEqptExcel.submit();
+        uploadEqptExcel() {
+            if (this.eqptPageData && this.eqptPageData.length > 0) {
+                ElMessageBox.confirm('上传新的申报信息将会覆盖旧数据', '确认上传', {
+                    confirmButtonText: '确认',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                    center: true,
+                    confirmButtonClass: 'elMessageBoxConfirmButton',
+                    cancelButtonClass: 'elMessageBoxCancelButton'
+                }
+                ).then(() => { // 确认上传
+                    this.$refs.importEqptExcel.submit();
+                })
+            } else {
+                this.$refs.importEqptExcel.submit();
+            }
         },
         // 导入机器设备信息
         importEqptExcelData(item) {
@@ -50,6 +203,7 @@ export default {
                         type: 'success'
                     })
                     this.fileList = []
+                    this.getEqptDataPage();
                 }
             })
         },
@@ -69,6 +223,14 @@ export default {
             this.tmplAssetCalculate.fileName = null;
             this.tmplAssetCalculate.fileUrl = null;
         },
+        // 分页查询导入的机器设备测算数据
+        getEqptDataPage() {
+            this.eqptDataQuery.calculateId = this.projectStore.calculateProgress.id;
+            getDataPage(this.eqptDataQuery).then(res => {
+                this.eqptDataQuery.pages = res.data.pages
+                this.eqptPageData = res.data.records;
+            })
+        }
     }
 }
 </script>
@@ -115,4 +277,18 @@ export default {
     --el-color-primary-light-9: #ffa854;
     --el-color-primary-dark-2: #ff8154;
 }
+
+.uploadDiv {
+    width: 15%;
+    display: inline-block;
+    vertical-align: top;
+}
+
+.evaluateDiv {
+    margin-left: 1%;
+    width: 84%;
+    display: inline-block;
+    vertical-align: top;
+    min-height: 650px;
+}
 </style>