scorpioyq 2 tahun lalu
induk
melakukan
34dcdba0b6
3 mengubah file dengan 171 tambahan dan 90 penghapusan
  1. 46 23
      src/api/contract/index.js
  2. 83 31
      src/views/contract/component/info2.vue
  3. 42 36
      src/views/contract/index.vue

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

@@ -1,27 +1,50 @@
 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'
-    )
-  }
+    /**
+     * 合同管理相关借口
+     * @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'
+        )
+    }
 }

+ 83 - 31
src/views/contract/component/info2.vue

@@ -5,42 +5,48 @@
     </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="rowSave"
-        @row-update="rowUpdate"
-        @on-load="onLoad"
+          :option="option"
+          :data="data"
+          ref="crud"
+          v-model="form"
+          :before-open="beforeOpen"
+          @row-del="rowDel"
+          @row-save="handleRowSave"
+          @row-update="rowUpdate"
+          @on-load="onLoad"
       >
+        <template slot-scope="{row}"
+                  slot="fileIds">
+          <div>
+              <upload-file :max="3" :drag="true" ref='upload' @success="uploadsuccess1" :show-list="true"/>
+            </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>
+        </template>
       </avue-crud>
     </div>
   </div>
 </template>
 
 <script>
+import uploadFile from '../../../components/upload-file.vue'
 export default {
   name: 'info',
+  components:{uploadFile}
   data() {
     return {
       form: {},
-      data: [
-        {
-          id: 3,
-          prop: 'ooooo'
-        }
-      ],
+      data: [],
       option: {
         align: 'center',
         menuAlign: 'center',
         menuWidth: 220,
-        menuBtnTitle: '支付凭证',
+        menuTitle: '支付凭证',
         size: 'mini',
         addBtn: true,
         editBtn: true,
-        editBtnText: '添加',
         editBtnIcon: 'Plus',
         viewBtn: true,
         delBtn: true,
@@ -51,7 +57,12 @@ export default {
         column: [
           {
             label: '名称',
-            prop: 'name'
+            prop: 'name',
+            rules: [{
+              required: true,
+              message: "请输入台账名称",
+              trigger: "blur"
+            }]
           },
           {
             label: '款项类别',
@@ -61,45 +72,80 @@ export default {
             props: {
               label: 'dictValue',
               value: 'dictKey'
-            }
+            },
+            rules: [{
+              required: true,
+              message: "请选择款项类别",
+              trigger: "blur"
+            }]
+
           },
           {
             label: '支付金额',
             prop: 'payment',
-            type: 'number'
+            type: 'number',
+            rules: [{
+              required: true,
+              message: "请输入支付金额",
+              trigger: "blur"
+            }]
           },
           {
             label: '付款人',
-            prop: 'noticeType',
-            hide: true
+            prop: 'payer',
+            hide: true,
+            rules: [{
+              required: true,
+              message: "请填写付款人",
+              trigger: "blur"
+            }]
           },
           {
             label: '收款人',
-            prop: 'noticeType',
-            hide: true
+            prop: 'payee',
+            hide: true,
+            rules: [{
+              required: true,
+              message: "请填写收款人",
+              trigger: "blur"
+            }]
           },
           {
             label: '支付账户',
-            prop: 'noticeType',
-            hide: true
+            prop: 'paymentAccount',
+            hide: true,
+            rules: [{
+              required: true,
+              message: "请填写支付账户",
+              trigger: "blur"
+            }]
           },
           {
             label: '支付凭证',
-            prop: 'noticeType',
+            prop: 'fileIds',
             hide: true,
-            type: 'upload'
+            rules: [{
+              required: true,
+              message: "请上传支付凭证",
+              trigger: "blur"
+            }]
           },
           {
             label: '付款时间',
             prop: 'paymentTime',
-            type: 'date'
+            type: 'date',
+            rules: [{
+              required: true,
+              message: "请选择付款时间",
+              trigger: "blur"
+            }]
           },
           {
             label: '备注',
             prop: 'remark',
             type: 'textarea',
             span: 24,
-            rows: 5
+            rows: 1
           }
         ]
       }
@@ -111,7 +157,13 @@ export default {
       } else {
         done()
       }
-    }
+    },
+    handleRowSave(row, done, loading) {
+      console.log(row)
+      this.$api.contract.ledgerAdd(row).then(res => {
+
+      })
+    },
   }
 }
 </script>

+ 42 - 36
src/views/contract/index.vue

@@ -4,53 +4,53 @@
       <div class="flex">
         <div class="flex flex-center mt-15 mr-10">
           <el-form-item
-            label="关键字"
-            class="full-width"
-            style="margin-left: -50px"
+              label="关键字"
+              class="full-width"
+              style="margin-left: -50px"
           >
             <el-input
-              v-model="params.name"
-              placeholder="输入合同关键字"
-              prefix-icon="Search"
-              clearable
+                v-model="params.name"
+                placeholder="输入合同关键字"
+                prefix-icon="Search"
+                clearable
             />
           </el-form-item>
           <el-form-item class="full-width" label="合同类别">
             <el-select v-model="params.type" clearable>
               <el-option
-                v-for="item in typelist"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+                  v-for="item in typelist"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
               />
             </el-select>
           </el-form-item>
           <el-form-item class="full-width" label="合同状态">
             <el-select v-model="params.status" clearable>
               <el-option
-                v-for="item in dicList"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+                  v-for="item in dicList"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
               />
             </el-select>
           </el-form-item>
         </div>
         <div class="flex flex-center ml-20">
-          <base-button type="0" title="重置" icon="Refresh" />
-          <base-button class="ml-20" @click="onLoad" />
+          <base-button type="0" title="重置" icon="Refresh" @click="clearUp"/>
+          <base-button class="ml-20" @click="onLoad"/>
         </div>
       </div>
     </el-form>
     <avue-crud
-      :option="option"
-      :data="data"
-      ref="crud"
-      v-model="form"
-      :before-open="beforeOpen"
-      @row-del="rowDel"
-      @row-save="rowSave"
-      @row-update="rowUpdate"
+        :option="option"
+        :data="data"
+        ref="crud"
+        v-model="form"
+        :before-open="beforeOpen"
+        @row-del="rowDel"
+        @row-save="rowSave"
+        @row-update="rowUpdate"
     >
     </avue-crud>
   </el-card>
@@ -66,7 +66,7 @@ meta: { layout: 'empty'}
 import BaseButton from '@/components/base-button.vue'
 
 export default {
-  components: { BaseButton },
+  components: {BaseButton},
   data() {
     return {
       projectId: '',
@@ -154,7 +154,7 @@ export default {
   },
   methods: {
     getDic(code) {
-      this.$api.common.dicList({ code }).then(res => {
+      this.$api.common.dicList({code}).then(res => {
         if (res.code === 200) {
           if (code === 'contract-status') {
             this.dicList = res.data
@@ -166,21 +166,27 @@ export default {
     },
     onLoad() {
       this.loading = true
-      const data = Object.assign(this.params, { projectId: this.projectId })
+      const data = Object.assign(this.params, {projectId: this.projectId})
       this.$api.contract
-        .contractList(Object.assign(this.page, data))
-        .then(res => {
-          this.data = res.data.records
-        })
-        .finally(() => {
-          this.loading = false
-        })
+          .contractList(Object.assign(this.page, data))
+          .then(res => {
+            this.data = res.data.records
+          })
+          .finally(() => {
+            this.loading = false
+          })
+    },
+    clearUp() {
+      this.params.name = '',
+          this.params.status = '',
+          this.params.type = ''
+      this.onLoad()
     },
     beforeOpen(done, type) {
       if (type === 'view') {
         const data = this.$router.resolve({
           path: '/contract/detail',
-          query: { id: this.form.id }
+          query: {id: this.form.id}
         })
         window.open(data.href, '_blank')
       }