Browse Source

货代单证表单样式和报表,凭证页面 2023-12-11

caojunjie 1 year ago
parent
commit
eeed0db828

+ 57 - 0
src/api/iosBasicData/finvouchers.js

@@ -0,0 +1,57 @@
+import request from '@/router/axios';
+
+export const finvouchersList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/finvouchers/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+// 详情
+export const finvouchersDetail = (id) => {
+  return request({
+    url: '/api/blade-los/finvouchers/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+// 删除
+export const finvouchersRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/finvouchers/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+// 保存
+export const finvouchersSubmit = (row) => {
+  return request({
+    url: '/api/blade-los/finvouchers/submit',
+    method: 'post',
+    data: row
+  })
+}
+// 财务凭证 确认
+export const confirmFinVouchers = (row) => {
+  return request({
+    url: '/api/blade-los/finvouchers/confirmFinVouchers',
+    method: 'post',
+    data: row
+  })
+}
+// 财务凭证 撤销
+export const revokeFinVouchers = (row) => {
+  return request({
+    url: '/api/blade-los/finvouchers/revokeFinVouchers',
+    method: 'post',
+    data: row
+  })
+}

+ 8 - 4
src/enums/column-name.js

@@ -1405,14 +1405,14 @@ const columnName = [{
     name: '货运代理-海运出口-报表管理'
   },
   {
-    code: 312.0,
-    name: '货运代理-海运出口-报表纯列表'
-  },
-  {
     code: 312.1,
     name: '货运代理-海运出口-单证中心'
   },
   {
+    code: 312.2,
+    name: '货运代理-海运出口-报表纯列表'
+  },
+  {
     code: 313,
     name: '货运代理-账单管理-账单中心'
   },
@@ -1448,6 +1448,10 @@ const columnName = [{
     code: 320,
     name: '货运代理-账单管理-发票申请'
   },
+  {
+    code: 321,
+    name: '货运代理-账单管理-财务凭证'
+  },
 ]
 export const getColumnName = (key) => {
   for (let index = 0; index < columnName.length; index++) {

+ 11 - 6
src/views/iosBasicData/SeafreightExportF/bills/assembly/DocumentCenter.vue

@@ -44,7 +44,7 @@
         </el-dialog>
 
         <!--报表列表弹窗-->
-        <el-dialog title="单证" :visible.sync="reportVisible" append-to-body width="70%" :before-close="corpTypeClose">
+        <el-dialog title="单证列表" :visible.sync="reportVisible" append-to-body width="70%" :before-close="corpTypeClose">
             <div>
                 <reportforms-list ref="reportformsList" @reportRadio="reportRadio"></reportforms-list>
             </div>
@@ -55,8 +55,10 @@
         </el-dialog>
 
         <!--添加编辑弹窗-->
-        <el-dialog title="单证" :visible.sync="documentVisible" append-to-body width="60%" :before-close="corpTypeClose">
-            <Dispatch-Notice :documentForm="documentForm"></Dispatch-Notice>
+        <el-dialog title="单证操作" :visible.sync="documentVisible" append-to-body width="60%" :before-close="corpTypeClose">
+            <Dispatch-Notice v-if="reportForms.code == 'PCTZD'" :documentForm="documentForm"></Dispatch-Notice>
+            <Purchase-Notice v-if="reportForms.code == 'RHTZ'" :documentForm="documentForm"></Purchase-Notice>
+            <span v-else>啥也不是</span>
             <span slot="footer" class="dialog-footer">
                 <el-button @click="documentVisible = false">取 消</el-button>
                 <el-button type="primary" @click="documentSubmit">确 定</el-button>
@@ -68,13 +70,14 @@
 
 <script>
 import {reportslogList, reportslogSubmit} from "@/api/iosBasicData/bills";
-    import {bbusinesstypeList} from "@/api/iosBasicData/bbusinesstype";
-    import bbusinesstype from "@/views/iosBasicData/bbusinesstype/index.vue";
+import {bbusinesstypeList} from "@/api/iosBasicData/bbusinesstype";
+import bbusinesstype from "@/views/iosBasicData/bbusinesstype/index.vue";
 import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsList.vue";
 import DispatchNotice from '@/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsFrame/DispatchNotice.vue'
+import PurchaseNotice from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsFrame/PurchaseNotice.vue";
 
     export default {
-        components: {reportformsList, bbusinesstype,DispatchNotice},
+        components: {reportformsList, bbusinesstype,DispatchNotice,PurchaseNotice},
         data(){
             return {
                 reportVisible:false, // 报表列表数据
@@ -175,10 +178,12 @@ import DispatchNotice from '@/views/iosBasicData/SeafreightExportF/bills/assembl
             },
             // 报表弹窗的确认
             reportConfirm(){
+                console.log(this.reportForms,180)
                 if (!this.reportForms.id){
                     this.$message.warning("请选择一条报表");
                     return
                 }
+
                 this.documentVisible = true
             },
             // 单证弹窗的确认按钮

+ 90 - 9
src/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsFrame/DispatchNotice.vue

@@ -12,12 +12,12 @@
                 </el-input>
             </el-form-item>
             <el-form-item label="FM:" prop="corpCnName" >
-                <el-input type="age" style="width: 100%;" v-model="documentForm.FM"
+                <el-input type="age" style="width: 100%;" v-model="documentForm.from"
                           size="small" autocomplete="off" clearable placeholder="FM" >
                 </el-input>
             </el-form-item>
             <el-form-item label="提单号码:" prop="corpCnName" >
-                <el-input type="age" style="width: 100%;" v-model="documentForm.FM"
+                <el-input type="age" style="width: 100%;" v-model="documentForm.mblno"
                           size="small" autocomplete="off" clearable placeholder="提单号码" >
                 </el-input>
                 <el-input type="age" style="width: 100%;" v-model="documentForm.FM"
@@ -25,17 +25,98 @@
                 </el-input>
             </el-form-item>
             <el-form-item label="船名/航次:" prop="corpCnName" >
-                <!--<el-row>-->
-                <!--    <el-col></el-col>-->
-                <!--</el-row>-->
-                <el-input type="age" style="width: 100%;" v-model="documentForm.FM"
+                <el-row>
+                    <el-col :span="12">
+                        <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                                  size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                        </el-input>
+                    </el-col>
+                    <el-col :span="11">
+                        <span style="margin-left: 15px"></span>
+                        <el-input type="age" style="width: 100%;" v-model="documentForm.FM"
+                                  size="small" autocomplete="off" clearable placeholder="提单号码" >
+                        </el-input>
+                    </el-col>
+                </el-row>
+            </el-form-item>
+            <el-form-item label="箱量:" prop="corpCnName" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
                           size="small" autocomplete="off" clearable placeholder="船名/航次" >
                 </el-input>
-                <el-input type="age" style="width: 40%;" v-model="documentForm.FM"
-                          size="small" autocomplete="off" clearable placeholder="提单号码" >
+            </el-form-item>
+            <el-form-item label="场站:" prop="corpCnName" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+            </el-form-item>
+            <el-row>
+                <el-col :span="12">
+                    <el-form-item label="联系人:" prop="corpCnName" >
+                        <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                                  size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="联系电话:" prop="corpCnName" >
+                        <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                                  size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-form-item label="工厂名称:" prop="corpCnName" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="工厂地址:" prop="corpCnName" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+            </el-form-item>
+            <el-row>
+                <el-col :span="12">
+                    <el-form-item label="联系人:" prop="corpCnName" >
+                        <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                                  size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="联系电话:" prop="corpCnName" >
+                        <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                                  size="small" autocomplete="off" clearable placeholder="联系电话" >
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-form-item label="派车时间:" prop="corpCnName" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="费用确认:" prop="corpCnName" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+            </el-form-item>
+            <div style="display: flex;align-items: center;margin-left: 25px">
+                <span>请于</span>
+                <el-input type="age" style="width: 30%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+                <span>前到达指定工厂,并于</span>
+                <el-input type="age" style="width: 30%;" v-model="documentForm.vesselVoyno"
+                          size="small" autocomplete="off" clearable placeholder="船名/航次" >
+                </el-input>
+                <span>前回场站</span>
+            </div>
+            <el-form-item label="备注:" prop="remarks" >
+                <el-input type="age" style="width: 100%;" v-model="documentForm.remarks"
+                          size="small" autocomplete="off" clearable placeholder="备注" >
                 </el-input>
             </el-form-item>
-
         </el-form>
     </div>
 </template>

+ 226 - 0
src/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsFrame/PurchaseNotice.vue

@@ -0,0 +1,226 @@
+<template>
+    <el-form :model="documentForm" ref="form" label-width="90px" style="margin-bottom: 4px" class="demo-ruleForm">
+        <el-row>
+            <el-col :span="12">
+                <el-form-item label="TO:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.TO"
+                              size="small" autocomplete="off" clearable placeholder="TO" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="ATTN:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="ATTN" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <div>贵公司储运之货物:</div>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="件数:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="件数" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="重量:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="重量" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="体积:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="体积" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="箱量:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="箱量" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="目的港:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="目的港" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="预配船名/航次" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="预配船名/航次" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="预计开航日:" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="预计开航日" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="提单号" prop="corpCnName" >
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="提单号" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <el-form-item label="请于:" prop="corpCnName" >
+                    <el-input type="age" style="width: 50%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="提单号" >
+                    </el-input>
+                    <span style="margin-left: 10px">前将货物送至指定位置</span>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <el-form-item label="请于:" prop="corpCnName" >
+                    <el-input type="age" style="width: 50%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="提单号" >
+                    </el-input>
+                    <span style="margin-left: 10px">前通关</span>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <el-form-item label="截单和VGM截止时间:" prop="corpCnName" label-width="130px">
+                    <el-input type="age" style="width: 50%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="提单号" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <el-form-item label="船代:" prop="corpCnName">
+                    <el-input type="age" style="width: 50%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="船代" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="入货地点:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="入货地点" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="集装箱提取检查代码:" prop="corpCnName" label-width="130px">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="集装箱提取检查代码" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="联系人:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="联系人" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="联系电话:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="联系电话" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <el-form-item label="REMARKS:" prop="corpCnName">
+                    <el-input type="textarea" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="REMARKS" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="24">
+                <el-form-item label="HLCL免费箱使" prop="corpCnName" label-width="95px">
+                    <el-input type="number" style="width: 50%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="HLCL免费箱使" >
+                    </el-input>
+                    <span style="margin-left: 10px">天</span>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="部门:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="部门" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="FAX:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="FAX" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="操作:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="操作" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="EMAIL:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="EMAIL" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="TEL:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="TEL" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="手机:" prop="corpCnName">
+                    <el-input type="age" style="width: 100%;" v-model="documentForm.ATTN"
+                              size="small" autocomplete="off" clearable placeholder="手机" >
+                    </el-input>
+                </el-form-item>
+            </el-col>
+
+        </el-row>
+
+    </el-form>
+</template>
+
+<script>
+    export default {
+        data(){
+            return {
+
+            }
+        },
+        props:{
+            // 表单对象
+            documentForm:{
+                type:Object,
+                default:{}
+            },
+
+        },
+        created() {
+
+        },
+        methods:{
+
+        }
+    }
+</script>
+
+<style scoped>
+::v-deep.el-form-item {
+    margin-bottom: 0;
+}
+</style>

+ 3 - 3
src/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsList.vue

@@ -8,8 +8,8 @@
                    id="out-table"
                    @current-row-change="handleCurrentRowChange"
                    :header-cell-class-name="headerClassName"
-                   @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 312.0)"
-                   @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 312.0)"
+                   @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 312.2)"
+                   @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 312.2)"
                    @search-change="searchChange"
                    @search-reset="searchReset"
                    @refresh-change="refreshChange">
@@ -147,7 +147,7 @@
             }
         },
         async created() {
-            this.option = await this.getColumnData(this.getColumnName(312.0), this.optionBack);
+            this.option = await this.getColumnData(this.getColumnName(312.2), this.optionBack);
             getUserApprovalList().then(res=>{
                 this.findObject(this.option.column, "authorizedUsersId").dicData = res.data.data
             })

+ 11 - 6
src/views/iosBasicData/SeafreightExportF/bills/assembly/reports.vue

@@ -581,13 +581,18 @@
               groupCode:this.form.groupCode,
           })
           // 获取的数据赋值
-          var data = res.data.data.data.map((item,index)=>{
-              item.index = index
-              item.feeCenterList.forEach(ite=>{
-                  ite.ppid = index
+          if (!res.data.data.data) {
+              var data = res.data.data.data
+          }else {
+              var data = res.data.data.data.map((item,index)=>{
+                  item.index = index
+                  item.feeCenterList.forEach(ite=>{
+                      ite.ppid = index
+                  })
+                  return item
               })
-              return item
-          })
+          }
+
 
               var dataSet = new Stimulsoft.System.Data.DataSet(
                 'reportData'

+ 201 - 0
src/views/iosBasicData/finvouchers/finvouchersitems.vue

@@ -0,0 +1,201 @@
+<template>
+    <div class="borderless" v-loading="pageLoading">
+        <div class="customer-head">
+            <div class="customer-back">
+                <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                           @click="backToList">返回列表
+                </el-button>
+            </div>
+            <div class="add-customer-btn">
+                <el-button  size="small" type="success" style="margin-right: 8px"
+                            :loading="saveLoading" >保 存
+                </el-button>
+            </div>
+        </div>
+        <div style="margin: 55px 5px 0px 5px;'">
+            <el-card class="box-card">
+                <el-form :model="form" ref="form" label-width="90px" class="demo-ruleForm">
+                    <el-row>
+                        <el-col :span="6">
+                            <el-form-item label="凭证来源" prop="voucherSource">
+                                <el-input style="width: 100%;" v-model="form.voucherSource"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入凭证来源" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="凭证类型" prop="voucherType">
+                                <el-input style="width: 100%;" v-model="form.voucherType"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入凭证类型" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="凭证号" prop="voucherNo">
+                                <el-input style="width: 100%;" v-model="form.voucherNo"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入凭证号" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="凭证日期" prop="voucherDate">
+                                <el-input style="width: 100%;" v-model="form.voucherDate"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入凭证日期" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="分录摘要" prop="voucherDate">
+                                <el-input style="width: 100%;" v-model="form.descr"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入分录摘要" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="借方金额" prop="voucherDate">
+                                <el-input style="width: 100%;" v-model="form.amountDr"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入借方金额(CNY)" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="贷方金额" prop="voucherDate">
+                                <el-input style="width: 100%;" v-model="form.amountCr"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入贷方金额(CNY)" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="综合 USD" prop="amountDrUsd">
+                                <el-input style="width: 100%;" v-model="form.amountDrUsd"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入综合 USD" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="综合 USD" prop="amountCrUsd">
+                                <el-input style="width: 100%;" v-model="form.amountCrUsd"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入综合 USD" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="合计借方金额" prop="amountDrLoc">
+                                <el-input style="width: 100%;" v-model="form.amountDrLoc"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入合计本位币借方金额" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="合计贷方金额" prop="amountCrLoc">
+                                <el-input style="width: 100%;" v-model="form.amountCrLoc"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入合计本位币贷方金额" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="是否外币凭证" prop="isForeign">
+                                <el-input style="width: 100%;" v-model="form.isForeign"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入合计本位币贷方金额" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="是否数量凭证" prop="isQuantity">
+                                <el-input style="width: 100%;" v-model="form.isQuantity"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入是否数量凭证" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="复核人" prop="checkUserName">
+                                <el-input style="width: 100%;" v-model="form.checkUserName"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入复核人" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="复核时间" prop="checkTime">
+                                <el-input style="width: 100%;" v-model="form.checkTime"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入复核时间" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="记账人" prop="postUserName">
+                                <el-input style="width: 100%;" v-model="form.postUserName"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入记账人" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="记账时间" prop="postTime">
+                                <el-input style="width: 100%;" v-model="form.postTime"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入记账时间" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="凭证状态" prop="voucherStatus">
+                                <el-input style="width: 100%;" v-model="form.voucherStatus"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入凭证状态" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6">
+                            <el-form-item label="备注" prop="remarks">
+                                <el-input style="width: 100%;" v-model="form.remarks"
+                                          size="small" autocomplete="off"
+                                          clearable placeholder="请输入备注" >
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </el-card>
+
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        data(){
+            return {
+                pageLoading:false, // 整个的动画
+                saveLoading:false, // 按钮动画
+                form:{}, // 获取的数据
+            }
+        },
+        methods:{
+            //返回列表
+            backToList() {
+                this.$emit('goBack')
+            },
+        }
+    }
+</script>
+
+<style scoped>
+::v-deep.el-form-item {
+    margin-bottom: 0;
+}
+</style>

+ 417 - 0
src/views/iosBasicData/finvouchers/index.vue

@@ -0,0 +1,417 @@
+<template>
+  <div>
+      <basic-container v-if="isShow">
+          <avue-crud :option="option"
+                     :table-loading="loading"
+                     :data="data"
+                     :page.sync="page"
+                     :permission="permissionList"
+                     :before-open="beforeOpen"
+                     v-model="form"
+                     id="out-table"
+                     :header-cell-class-name="headerClassName"
+                     ref="crud"
+                     @row-update="rowUpdate"
+                     @row-save="rowSave"
+                     @row-del="rowDel"
+                     @search-change="searchChange"
+                     @search-reset="searchReset"
+                     @selection-change="selectionChange"
+                     @current-change="currentChange"
+                     @size-change="sizeChange"
+                     @refresh-change="refreshChange"
+                     @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 321)"
+                     @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 321)"
+                     @on-load="onLoad" >
+              <template slot="menuLeft">
+                  <el-button type="primary"
+                             size="small"
+                             icon="el-icon-plus"
+                             @click="addbtnfun()">新建财务凭证
+                  </el-button>
+                  <el-button type="danger"
+                             size="small"
+                             icon="el-icon-delete"
+                             plain
+                             @click="handleDelete">删 除
+                  </el-button>
+              </template>
+          </avue-crud>
+      </basic-container>
+      <finvouchersitems v-if="!isShow" @goBack="goBack"></finvouchersitems>
+  </div>
+</template>
+
+<script>
+  import {finvouchersList, finvouchersDetail, finvouchersSubmit, finvouchersRemove} from "@/api/iosBasicData/finvouchers";
+  import {mapGetters} from "vuex";
+  import finvouchersitems from "@/views/iosBasicData/finvouchers/finvouchersitems.vue";
+  import finstlbillsDetails from "@/views/iosBasicData/finstlbills/finstlbillsDetails.vue";
+
+  export default {
+    data() {
+      return {
+        isShow:true, // 详情弹窗
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option:{},
+        optionBack: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "账单编号",
+              prop: "billNo",
+              overHidden:true,
+            },
+            {
+              label: "凭证来源, SYSTEM = 自动凭证",
+              prop: "voucherSource",
+              overHidden:true,
+            },
+            {
+              label: "凭证类型,记 转",
+              prop: "voucherType",
+              overHidden:true,
+            },
+            {
+              label: "凭证号",
+              prop: "voucherNo",
+              overHidden:true,
+            },
+            {
+              label: "凭证日期",
+              prop: "voucherDate",
+              overHidden:true,
+            },
+            {
+              label: "财务年",
+              prop: "accountYear",
+              overHidden:true,
+            },
+            {
+              label: "财务月",
+              prop: "accountMonth",
+              overHidden:true,
+            },
+            {
+              label: "财务日",
+              prop: "accountDay",
+              overHidden:true,
+            },
+            {
+              label: "分录摘要",
+              prop: "descr",
+              overHidden:true,
+            },
+            {
+              label: "借方金额(CNY)",
+              prop: "amountDr",
+              overHidden:true,
+            },
+            {
+              label: "贷方金额(CNY)",
+              prop: "amountCr",
+              overHidden:true,
+            },
+            {
+              label: "综合 USD 借方金额(USD) - 非 USD 外币转换为 USD",
+              prop: "amountDrUsd",
+              overHidden:true,
+            },
+            {
+              label: "综合 USD 贷方金额(USD) - 非 USD 外币转换为 USD",
+              prop: "amountCrUsd",
+              overHidden:true,
+            },
+            {
+              label: "合计本位币借方金额(CNY)",
+              prop: "amountDrLoc",
+              overHidden:true,
+            },
+            {
+              label: "合计本位币贷方金额(CNY)",
+              prop: "amountCrLoc",
+              overHidden:true,
+            },
+            {
+              label: "是否外币凭证",
+              prop: "isForeign",
+              search: true,
+              type:'select',
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=ifInvoice",
+              props: {
+                label: "dictValue",
+                value: "dictKey"
+              },
+              overHidden:true,
+            },
+            {
+              label: "是否数量凭证",
+              prop: "isQuantity",
+              search: true,
+              type:'select',
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=ifInvoice",
+              props: {
+                 label: "dictValue",
+                 value: "dictKey"
+              },
+              overHidden:true,
+            },
+            {
+              label: "复核人",
+              prop: "checkUserName",
+              overHidden:true,
+            },
+            {
+              label: "复核时间",
+              prop: "checkTime",
+              overHidden:true,
+            },
+            {
+              label: "记账人",
+              prop: "postUserName",
+              overHidden:true,
+            },
+            {
+              label: "记账时间",
+              prop: "postTime",
+              overHidden:true,
+            },
+            {
+              label: "凭证状态",
+              prop: "voucherStatus",
+              search: true,
+              type:'select',
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=voucher_status_los",
+              props: {
+                 label: "dictValue",
+                 value: "dictKey"
+              },
+              overHidden:true,
+            },
+            {
+              label: "备注",
+              prop: "remarks",
+              overHidden:true,
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    components:{finstlbillsDetails, finvouchersitems},
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.finvouchers_add, false),
+          viewBtn: this.vaildData(this.permission.finvouchers_view, false),
+          delBtn: this.vaildData(this.permission.finvouchers_delete, false),
+          editBtn: this.vaildData(this.permission.finvouchers_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    async created() {
+        this.option = await this.getColumnData(this.getColumnName(321), this.optionBack);
+    },
+    methods: {
+      // 新建凭证
+      addbtnfun(){
+          this.isShow = false
+      },
+      // 详情的返回列表
+      goBack() {
+          // 初始化数据
+          if (JSON.stringify(this.$route.query) != "{}") {
+              this.$router.$avueRouter.closeTag();
+              this.$router.push({
+                  path: "/iosBasicData/finvouchers/index"
+              });
+          }
+          this.isShow = true;
+          this.onLoad(this.page, this.search);
+      },
+
+      rowSave(row, done, loading) {
+        finvouchersSubmit(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        finvouchersSubmit(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return finvouchersRemove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return finvouchersRemove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          finvouchersDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        finvouchersList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      },
+      //自定义列保存
+      async saveColumnTwo(ref, option, optionBack, code) {
+          /**
+           * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+           * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+           * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+           */
+          const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+          if (inSave) {
+              this.$message.success("保存成功");
+              //关闭窗口
+              this.$refs[ref].$refs.dialogColumn.columnBox = false;
+          }
+      },
+      //自定义列重置
+      async resetColumnTwo(ref, option, optionBack, code) {
+          this[option] = this[optionBack];
+          const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+          if (inSave) {
+              this.$message.success("重置成功");
+              this.$refs[ref].$refs.dialogColumn.columnBox = false;
+          }
+      },
+      // 更改表格颜色
+      headerClassName(tab){
+          //颜色间隔
+          let back = ""
+          if (tab.columnIndex >= 0 && tab.column.level === 1) {
+              if (tab.columnIndex % 2 === 0) {
+                  back = "back-one"
+              } else if (tab.columnIndex % 2 === 1) {
+                  back = "back-two"
+              }
+          }
+          return back;
+      },
+
+    }
+  };
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+    text-align: center;
+}
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+    text-align: center;
+}
+</style>