scorpio 2 年之前
父節點
當前提交
ef40288f6a
共有 4 個文件被更改,包括 235 次插入112 次删除
  1. 58 46
      src/api/contract/index.js
  2. 169 65
      src/views/contract/component/info2.vue
  3. 7 0
      src/views/contract/component/info3.vue
  4. 1 1
      src/views/contract/detail.vue

+ 58 - 46
src/api/contract/index.js

@@ -1,50 +1,62 @@
 import fetch from '../fetch.js'
 
 export default {
-    /**
-     * 合同管理相关借口
-     * @returns {Promise<unknown>}
-     */
-    contractList(params) {
-        // 合同列表
-        return fetch(
-            '/blade-project-manage-v2/contracts-manage/v2/page',
-            params,
-            'post'
-        )
-    },
-    /**
-     * 详情
-     * @param params
-     */
-    detail(params) {
-        return fetch(
-            '/blade-project-manage-v2/contracts-manage/v2/detail',
-            params,
-            'post'
-        )
-    },
-    /**
-     * 台账列表
-     * @param params
-     */
-    ledgerList(params) {
-        return fetch(
-            '/blade-project-manage-v2/accountinformation/list',
-            params,
-            'get'
-        )
-    },
-    /**
-     * 新增台账
-     * @param params
-     */
-    ledgerAdd(params) {
-        return fetch(
-            '/blade-project-manage-v2/accountinformation/save',
-            params,
-            'post',
-            'json'
-        )
-    }
+  /**
+   * 合同管理相关借口
+   * @returns {Promise<unknown>}
+   */
+  contractList(params) {
+    // 合同列表
+    return fetch(
+      '/blade-project-manage-v2/contracts-manage/v2/page',
+      params,
+      'post'
+    )
+  },
+  /**
+   * 详情
+   * @param params
+   */
+  detail(params) {
+    return fetch(
+      '/blade-project-manage-v2/contracts-manage/v2/detail',
+      params,
+      'post'
+    )
+  },
+  /**
+   * 台账列表
+   * @param params
+   */
+  ledgerList(params) {
+    return fetch(
+      '/blade-project-manage-v2/accountinformation/list',
+      params,
+      'get'
+    )
+  },
+  /**
+   * 新增台账
+   * @param params
+   */
+  ledgerAdd(params) {
+    return fetch(
+      '/blade-project-manage-v2/accountinformation/save',
+      params,
+      'post',
+      'json'
+    )
+  },
+  /**
+   * 删除台账
+   * @param params
+   * @returns {Promise<unknown>}
+   */
+  remove(params) {
+    return fetch(
+      '/blade-project-manage-v2/accountinformation/remove',
+      params,
+      'post'
+    )
+  }
 }

+ 169 - 65
src/views/contract/component/info2.vue

@@ -5,51 +5,73 @@
     </div>
     <div class="ml-20 mr-20 mt-20">
       <avue-crud
-          :option="option"
-          :data="data"
-          ref="crud"
-          v-model="form"
-          :before-open="beforeOpen"
-          @row-del="rowDel"
-          @row-save="handleRowSave"
-          @row-update="rowUpdate"
-          @on-load="onLoad"
+        :option="option"
+        :data="data"
+        ref="crud"
+        v-model="form"
+        :before-open="beforeOpen"
+        @row-del="rowDel"
+        @row-save="handleRowSave"
+        @on-load="onLoad"
       >
-        <template slot-scope="{row}"
-                  slot="fileIds">
-          <div>
-              <upload-file :max="3" :drag="true" ref='upload' @success="uploadsuccess1" :show-list="true"/>
+        <template #fileIds-form="{ row, type }">
+          <div v-if="type === 'view'">
+            <div
+              v-for="i in form.accountInformationFileList"
+              :key="i.id"
+              class="pointer"
+              @click="previewFile(i)"
+            >
+              {{ i.title }}
+              <el-button text type="primary" plain>查看</el-button>
             </div>
-            <div class="flex flex-center mt-5" v-else v-for="item in form.detailFileUrl">
-              <el-image :src="item" style="height: 25%;width: 25%" :preview-src-list="[item]"></el-image>
+          </div>
+          <div v-else>
+            <uploads :max="9" @success="uploadSucc" :auto="true" />
+            <div>
+              <div v-for="item in fileList" :key="item.id">
+                {{ item.originalFileName }}
+              </div>
             </div>
           </div>
         </template>
       </avue-crud>
     </div>
+    <el-image-viewer
+      v-if="showImage"
+      :url-list="preList"
+      @close="showImage = false"
+    />
   </div>
 </template>
 
 <script>
-import uploadFile from '../../../components/upload-file.vue'
+import uploads from '../../../components/uploads.vue'
+import api from '@/api/index.js'
 export default {
   name: 'info',
-  components:{uploadFile}
+  components: { uploads },
   data() {
     return {
+      id: '',
+      showImage: false,
+      preList: [],
+      show: false,
+      fileList: [],
       form: {},
       data: [],
       option: {
         align: 'center',
         menuAlign: 'center',
         menuWidth: 220,
-        menuTitle: '支付凭证',
+        height: 480,
         size: 'mini',
         addBtn: true,
-        editBtn: true,
+        editBtn: false,
+        editBtnText: '支付凭证',
         editBtnIcon: 'Plus',
         viewBtn: true,
-        delBtn: true,
+        delBtn: false,
         refreshBtn: false,
         columnBtn: false,
         labelWidth: 140,
@@ -58,11 +80,13 @@ export default {
           {
             label: '名称',
             prop: 'name',
-            rules: [{
-              required: true,
-              message: "请输入台账名称",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: '请输入台账名称',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '款项类别',
@@ -73,72 +97,88 @@ export default {
               label: 'dictValue',
               value: 'dictKey'
             },
-            rules: [{
-              required: true,
-              message: "请选择款项类别",
-              trigger: "blur"
-            }]
-
+            rules: [
+              {
+                required: true,
+                message: '请选择款项类别',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '支付金额',
             prop: 'payment',
             type: 'number',
-            rules: [{
-              required: true,
-              message: "请输入支付金额",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: '请输入支付金额',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '付款人',
             prop: 'payer',
             hide: true,
-            rules: [{
-              required: true,
-              message: "请填写付款人",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: '请填写付款人',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '收款人',
             prop: 'payee',
             hide: true,
-            rules: [{
-              required: true,
-              message: "请填写收款人",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: '请填写收款人',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '支付账户',
             prop: 'paymentAccount',
             hide: true,
-            rules: [{
-              required: true,
-              message: "请填写支付账户",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: '请填写支付账户',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '支付凭证',
             prop: 'fileIds',
             hide: true,
-            rules: [{
-              required: true,
-              message: "请上传支付凭证",
-              trigger: "blur"
-            }]
+            formSlot: true,
+            rules: [
+              {
+                required: true,
+                message: '请上传支付凭证',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '付款时间',
             prop: 'paymentTime',
-            type: 'date',
-            rules: [{
-              required: true,
-              message: "请选择付款时间",
-              trigger: "blur"
-            }]
+            type: 'datetime',
+            valueFormat: 'YYYY-MM-DD HH:mm:ss',
+            format: 'YYYY-MM-DD HH:mm:ss',
+            rules: [
+              {
+                required: true,
+                message: '请选择付款时间',
+                trigger: 'blur'
+              }
+            ]
           },
           {
             label: '备注',
@@ -151,19 +191,83 @@ export default {
       }
     }
   },
+  created() {
+    this.id = this.$route.query.id
+  },
   methods: {
+    onLoad() {
+      this.$api.contract.ledgerList({ contractId: this.id }).then(res => {
+        if (res.code === 200) {
+          this.data = res.data
+        }
+      })
+    },
     beforeOpen(done, type) {
       if (type === 'view') {
+        done()
+      } else if (type === 'edit') {
+        this.show = true
       } else {
         done()
       }
     },
+    previewFile(item) {
+      if (api.offices.includes(item.suffix)) {
+        const routeData = this.$router.resolve({
+          path: '/home/file_detail',
+          query: { id: item.fileId }
+        })
+        window.open(routeData.href, '_blank')
+      } else {
+        this.preList.length = 0
+        this.preList.push(item.url)
+        this.showImage = true
+      }
+    },
     handleRowSave(row, done, loading) {
-      console.log(row)
-      this.$api.contract.ledgerAdd(row).then(res => {
-
+      loading()
+      const data = Object.assign(row, { contractId: this.id })
+      this.$confirm(
+        '请检查并确认所填写内容是否正确,系统将会根据填写内容,计算合同付款等相关数据?',
+        {
+          type: 'warning'
+        }
+      ).then(res => {
+        if (res === 'confirm') {
+          this.$api.contract.ledgerAdd(data).then(res => {
+            if (res.code === 200) {
+              done(row)
+              this.onLoad()
+            }
+          })
+        }
       })
     },
+    rowDel(row, index, done) {
+      this.$confirm('确认删除该内容?', {
+        type: 'warning'
+      }).then(res => {
+        if (res === 'confirm') {
+          this.$api.contract.remove({ ids: row.id }).then(res => {
+            if (res.code === 200) {
+              this.$message.success(res.msg)
+              this.onLoad()
+              done(row)
+            } else {
+              this.$message.error(res.msg)
+            }
+          })
+        }
+        console.log(res)
+      })
+    },
+    uploadSucc(res) {
+      const tmp = res.fileList.map(ele => {
+        return ele.response.data
+      })
+      this.fileList = this.fileList.concat(tmp)
+      this.form.fileIds = this.fileList.map(ele => ele.id).join(',')
+    }
   }
 }
 </script>

+ 7 - 0
src/views/contract/component/info3.vue

@@ -16,6 +16,11 @@
         </template>
       </avue-crud>
     </div>
+    <el-image-viewer
+      v-if="showImage"
+      :url-list="preList"
+      @close="showImage = false"
+    />
   </div>
 </template>
 
@@ -43,6 +48,8 @@ export default {
   },
   data() {
     return {
+      showImage: false,
+      preList: [],
       detail: null,
       form: {},
       data: [],

+ 1 - 1
src/views/contract/detail.vue

@@ -10,7 +10,7 @@
     <el-card
       shadow="hover"
       class="mb-20"
-      style="min-height: 430px; padding: 0; width: 99%"
+      style="height: 630px; padding: 0; width: 99%"
     >
       <info2 :info="detail"></info2>
     </el-card>