瀏覽代碼

票据管理

LAPTOP-FO2T5SIU\35838 9 月之前
父節點
當前提交
c196085567

+ 382 - 0
src/views/invoice/receiptManage.vue

@@ -0,0 +1,382 @@
+<template>
+  <div>
+    <el-row class="handle-box" style="margin-bottom: 10px">
+      <el-col :span="2" class="col-txt">
+        <span>买受人</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-input v-model="search.buyerName" @keyup.enter.native="handleSearch()" />
+      </el-col>
+      <el-col :span="2" class="col-txt">
+        <span>房屋</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-input v-model="search.houseName" @keyup.enter.native="handleSearch()" />
+      </el-col>
+      <el-col :span="2" class="col-txt">
+        <span>推送状态</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-select v-model="search.sendStatus" placeholder="请选择" popper-class="statistic_base">
+          <el-option
+            v-for="item in dc_data.SEND_STATUS"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </el-col>
+      <el-col :span="2" class="col-txt">
+        <span>开票状态</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-select
+          v-model="search.invoiceStatus"
+          filterable
+          popper-class="statistic_base"
+        >
+          <el-option
+            v-for="item in dc_data.INVOICE_STATUS"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </el-col>
+    </el-row>
+    <el-row class="handle-box" style="margin-bottom: 10px">
+      <el-col :span="2" class="col-txt">
+        <span>推送日期</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-date-picker
+          v-model="search.sendDateFrom"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+      </el-col>
+      <el-col :span="1">
+        <span>至</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-date-picker
+          v-model="search.sendDateTo"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+      </el-col>
+      <el-col :span="2" class="col-txt">
+        <span>开票日期</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-date-picker
+          v-model="search.invoiceDateFrom"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+      </el-col>
+      <el-col :span="1">
+        <span>至</span>
+      </el-col>
+      <el-col :span="4" class="col-input">
+        <el-date-picker
+          v-model="search.invoiceDateTo"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+      </el-col>
+    </el-row>
+    <el-row class="handle-box" style="margin-bottom: 10px;text-align: right">
+      <el-col :span="24" style="margin-top: 20px">
+        <el-button size="small" class="ch-button-warning" @click="handleReset()"><i class="el-icon-refresh" />&nbsp;重置</el-button>
+        <el-button size="small" class="ch-button" @click="handleSearch()"><i class="el-icon-search" />&nbsp;查询</el-button>
+        <el-button size="small" class="ch-button-export" @click="batchInvoice()">批量开票</el-button>
+        <!--        <el-button size="small" type="danger" @click="handleBatchBadDebt()">红冲</el-button>-->
+        <el-button size="small" class="ch-button-export" :loading="excelFlag" @click="handleExportAll()">导出</el-button>
+      </el-col>
+    </el-row>
+    <el-row class="handle-box">
+      <el-col :span="24">
+        <el-table
+          v-loading="loading"
+          :data="AllData"
+          row-class-name="g_table_row"
+          border
+          :header-cell-style="{background:'#f2f2f2'}"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="55" />
+          <el-table-column type="index" width="60" />
+          <el-table-column label="款项名称" prop="paymentTypeStr" />
+          <el-table-column label="合同编号" prop="contractNumber" />
+          <el-table-column label="网签备案号" prop="recordNumber" />
+          <el-table-column label="买受人" prop="buyerName" width="200" />
+          <el-table-column label="房屋" prop="houseName" width="200" />
+          <el-table-column label="应收(元)" prop="receivableMoney" />
+          <el-table-column label="已收(元)" prop="receivedMoney" />
+          <el-table-column label="收款状态" prop="collectionStatusStr" width="110">
+            <template scope="scope">
+              <span
+                :style="{'color':scope.row.collectionStatusStr==='已退款'?'red':scope.row.collectionStatusStr==='完全收款'?'green':'gray'}"
+              >
+                {{ scope.row.collectionStatusStr }}
+              </span>
+            </template>
+          </el-table-column>
+          <el-table-column label="推送状态" prop="sendStatusStr">
+            <template scope="scope">
+              <span
+                style="color: green"
+              >
+                {{ scope.row.sendStatusStr }}
+              </span>
+            </template>
+          </el-table-column>
+          <el-table-column label="开票状态" prop="invoiceStatusStr">
+            <template scope="scope">
+              <span
+                :style="{'color':scope.row.invoiceStatusStr==='已红冲'?'red':scope.row.invoiceStatusStr==='待开票'?'green':'gray'}"
+              >
+                {{ scope.row.invoiceStatusStr }}
+              </span>
+            </template>
+          </el-table-column>
+          <el-table-column header-align="center" label="操作" width="180">
+            <template scope="scope">
+              <el-button v-if="scope.row.sendStatus === '0'" type="text" size="mini" @click="handleInvoice(scope.row)">开票</el-button>
+              <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
+            </template>
+          </el-table-column>
+
+        </el-table>
+        <div class="table-page">
+          <el-pagination
+            :current-page.sync="currentPage"
+            :page-sizes="[10, 20, 50, 100]"
+            :page-size="pageSize"
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="allpage"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+      </el-col>
+    </el-row>
+
+    <!--开票-->
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :title="dialogTitle"
+      width="90%"
+      top="20px"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="getData"
+    >
+      <formal-invoice-manage-edit v-if="dialogVisible" ref="editInvoice" @cancel="cancel" />
+    </el-dialog>
+
+    <!-- 批量开票 -->
+    <el-dialog
+      :title="dialogBatchTitle"
+      :visible.sync="dialogBatchVisible"
+      width="75%"
+      top="50px"
+      :close-on-press-escape="false"
+      :close-on-click-modal="false"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="handleBatchClose"
+    >
+      <batch-invoice v-if="dialogBatchVisible" ref="batchInvoice" @editClose="handleBatchClose" />
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import FormalInvoiceManageEdit from '@/views/invoice/components/formalInvoiceManageEdit.vue'
+import BatchInvoice from '@/views/invoice/components/batchInvoice.vue'
+
+export default {
+    name: 'ReceiptManage',
+    components: { FormalInvoiceManageEdit, BatchInvoice },
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['INVOICE_STATUS', 'SEND_STATUS', 'HOUSE_PAYMENT_STATUS'],
+            // 列表相关
+            search: {
+            },
+            AllData: [],
+            loading: false,
+            // 弹框相关
+            dialogVisible: false,
+            dialogTitle: '新增',
+            selected: [],
+            excelFlag: false,
+            dialogBatchVisible: false,
+            dialogBatchTitle: ''
+        }
+    },
+    mounted() {
+        this.initDict(this.dc_key).then((res) => {
+            this.getData()
+        })
+    },
+    methods: {
+
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            this.search.pageNum = this.currentPage
+            this.search.pageSize = this.pageSize
+            this.baseRequest('formalInvoiceList', this.search).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch((e) => {
+                // console.log(e)
+            })
+            // this.initOutData()
+        },
+        handleSearch: function() {
+            this.getData()
+        },
+        handleReset: function() {
+            for (const i in this.search) {
+                if (i !== 'pageNum' && i !== 'pageSize') {
+                    this.search[i] = ''
+                }
+            }
+            this.handleSearch()
+        },
+        getItemJson: function(item) {
+            item.invoiceStatusStr = this.dc_map.INVOICE_STATUS[item.invoiceStatus]
+            item.sendStatusStr = this.dc_map.SEND_STATUS[item.sendStatus]
+            if (item.paymentType === '1') {
+                item.collectionStatusStr = this.dc_map.HOUSE_PAYMENT_STATUS[item.collectionStatus]
+            }
+            if (item.paymentType === '2') {
+                item.collectionStatusStr = this.dc_map.HOUSE_PAYMENT_STATUS[item.fundCollectionStatus]
+            }
+            item.paymentTypeStr = item.paymentType === '1' ? '房款' : '专项维修资金'
+            return item
+        },
+        handleInvoice(row) {
+            this.dialogTitle = '开票'
+            this.dialogVisible = true
+            const data = {
+                isView: false,
+                id: row.id
+            }
+            this.$nextTick(() => {
+                this.$refs.editInvoice.initData(data)
+            })
+        },
+        handleView(val) {
+            this.dialogVisible = true
+            this.dialogTitle = ''
+            val.isView = true
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.editInvoice.initData(val)
+            })
+        },
+        batchInvoice() {
+            if (!this.selected.length) {
+                this.$message.warning('请先勾选要批量开票的数据')
+                return
+            }
+            let check = true
+            this.selected.forEach(item => {
+                if (item.sendStatus !== '0') {
+                    check = false
+                }
+            })
+            if (!check) {
+                this.$message.warning('仅可对待推送的数据进行批量开票')
+                return
+            }
+            this.dialogBatchVisible = true
+            this.dialogBatchTitle = '批量开票'
+            this.$nextTick(() => {
+                this.$refs.batchInvoice.initData(this.selected)
+            })
+        },
+        handleExportAll() {
+
+        },
+        handleSelectionChange(val) {
+            this.selected = val
+        },
+        cancel: function() {
+            this.dialogVisible = false
+        },
+        handleBatchClose(refresh) {
+            this.dialogBatchVisible = false
+            if (refresh) {
+                this.getData()
+            }
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('InvoiceManageController', opUrl, postData, 'project')
+        }
+    }
+}
+</script>
+
+<style scoped>
+  .ch-input .el-input__inner {
+      border-color: #32323A;
+  }
+  .ch-input-size {
+      width: 150px;
+  }
+  .ch-button {
+      border-color: #32323A;
+      background-color: #32323A;
+      color: #fff;
+  }
+  .ch-button-warning {
+      margin-left: 10px;
+      border-color: #E6A23C;
+      background-color: #E6A23C;
+      color: #fff;
+  }
+  .ch-button-export {
+      margin-left: 10px;
+      border-color: #98CC1F;
+      background-color: #98CC1F;
+      color: #fff;
+  }
+  /deep/.el-dialog__header {
+      padding: 10px 20px;
+  }
+  /deep/.el-dialog__body {
+      padding: 10px 20px;
+  }
+</style>

+ 2 - 2
src/views/receiveRefundsManagement/paymentManagement/addPayment.vue

@@ -40,7 +40,7 @@
                     popper-class="statistic_base"
                   >
                     <el-option
-                      v-for="item in dc_data.PAYMENT_METHODS"
+                      v-for="item in dc_data.COLLECTION_METHODS"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value"
@@ -158,7 +158,7 @@ export default {
     mixins: [Base, BaseData],
     data() {
         return {
-            dc_key: ['CONTENT_TYPE', 'PAYMENT_METHODS'],
+            dc_key: ['CONTENT_TYPE', 'PAYMENT_METHODS', 'COLLECTION_METHODS'],
             form: {
 
             },

+ 2 - 2
src/views/receiveRefundsManagement/paymentManagement/paymentRegistration.vue

@@ -137,7 +137,7 @@ export default {
     mixins: [Base, BaseData],
     data() {
         return {
-            dc_key: ['PAYMENT_METHODS', 'CONTENT_TYPE'],
+            dc_key: ['PAYMENT_METHODS', 'CONTENT_TYPE', 'COLLECTION_METHODS'],
             form: {
 
             },
@@ -208,7 +208,7 @@ export default {
             })
         },
         getItemJson: function(item) {
-            item.paymentMethodStr = this.dc_map.PAYMENT_METHODS[item.paymentMethod]
+            item.paymentMethodStr = this.dc_map.COLLECTION_METHODS[item.paymentMethod]
             item.contentTypeStr = this.dc_map.CONTENT_TYPE[item.contentType]
             item.bankFullName = item.bankName + item.bankBranchName + item.bankNumber
             return item