Browse Source

1. 优化

MONSTER-ygh 1 year ago
parent
commit
94d83d3247

+ 1 - 1
src/api/financeMr/InvoiceRecords.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 分页查询
 export const pageList = (query) => {
   return request({
-    url: '/order/viewsIncomeExpenses/pageList',
+    url: '/order/orderInvoice/pageList',
     method: 'get',
     params: query
   })

+ 47 - 99
src/views/finance/InvoiceRecords/dialog/details.vue

@@ -9,66 +9,73 @@
 -->
 <template>
   <el-dialog
-    title="退款详情"
+    title="开票详情"
     :visible.sync="open"
-    width="500px"
+    width="800px"
     append-to-body
     :close-on-click-modal="false"
     @close="cancel"
   >
     <div class="dialog" v-if="form">
       <el-row>
-        <el-col :span="24">
-          <div class="grid-content bg-purple item-class">退款单号: <span>{{ form.id }}</span></div>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">订单号: <span>{{ form.orderId }}</span></div>
         </el-col>
-        <el-col :span="24">
-          <div class="grid-content bg-purple item-class">原订单号: <span>{{ form.orderId }}</span></div>
+        <el-col :span="12">
+          <div style="display: flex;" class="grid-content bg-purple item-class">状态: <span style="margin-left: 10px;"><dict-tag :options="dict.type.Invoicing_type" :value="form.status"/></span></div>
         </el-col>
-        <el-col :span="24">
-          <div class="grid-content bg-purple item-class">支付单号: <span>{{ form.transactionId }}</span></div>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">申请时间: <span>{{ form.createTime }}</span></div>
         </el-col>
-        <el-col :span="24">
-          <div class="grid-content bg-purple item-class">退款金额: <span>¥{{ form.refundAmount }}</span></div>
+        <el-col :span="12">
+          <div style="display: flex;" class="grid-content bg-purple item-class">开票类型: <span style="margin-left: 10px;"><dict-tag :options="dict.type.lookup_type" :value="form.handlerType"/></span></div>
         </el-col>
-        <el-col :span="24">
-          <div class="grid-content bg-purple item-class">退款原因: <span>{{ form.refundReason }}</span></div>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">纳税人识别号: <span>¥{{ form.creditCode || '-' }}</span></div>
         </el-col>
-        <el-col :span="24">
-          <div class="grid-content bg-purple item-class">状态: <span>{{ statusList[form.status] }}</span></div>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">联系电话: <span>{{ form.mobile }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">邮箱: <span>{{ form.email }}</span></div>
         </el-col>
-        <el-col :span="24" v-if="form.status == 2">
-          <div class="grid-content bg-purple item-class">驳回原因: <span style="color: red;">{{ form.errReason }}</span></div>
+        <!-- <el-col :span="12">
+          <div class="grid-content bg-purple item-class">业务员: <span>{{ '' }}</span></div>
+        </el-col> -->
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">开票金额: <span>{{ form.invoiceAmount }}</span></div>
+        </el-col>
+        <el-col :span="12" v-if="form.status == 3">
+          <div class="grid-content bg-purple item-class">失败原因: <span style="color: red;">{{ form.errReason }}</span></div>
+        </el-col>
+        <el-col :span="24">
+          <div style="display: flex;" class="grid-content bg-purple item-class">
+            <span style="white-space: nowrap;">附件: </span>
+            <div style="color: #409eff;display: flex;flex-direction: column;margin-left: 10px;">
+              <el-image 
+                v-if="form.imageUrl"
+                style="width: 100px; height: 100px"
+                :src="form.imageUrl" 
+                :preview-src-list="[form.imageUrl]">
+              </el-image>
+              
+              <span v-if="form.pdfUrl"><i class="el-icon-folder-opened"></i> {{ form.pdfUrl }} <span style="margin-left: 10px;cursor: pointer;color: #67c23a;" @click="openPDF(form.pdfUrl)">参看详情</span></span>
+            </div>
+          </div>
         </el-col>
       </el-row>
     </div>
 
-    <span slot="footer" class="dialog-footer" v-if="!refund">
-      <el-button type="primary" @click="cancel">确定</el-button>
-    </span>
 
-    <span slot="footer" class="dialog-footer" v-if="refund">
-<!--      <el-button @click="cancel">取消</el-button>-->
+    <span slot="footer" class="dialog-footer" >
       <el-button
-        type="danger"
-        @click="submitForm(2)"
+        @click="cancel"
         v-loading.fullscreen.lock="loading"
         element-loading-text="提交中..."
         element-loading-spinner="el-icon-loading"
         element-loading-background="rgba(0, 0, 0, 0.8)"
       >
-        <span v-if="loading">提交中...</span>
-        <span v-else>驳回退款</span>
-      </el-button>
-      <el-button
-        type="primary"
-        @click="submitForm(1)"
-        v-loading.fullscreen.lock="loading"
-        element-loading-text="提交中..."
-        element-loading-spinner="el-icon-loading"
-        element-loading-background="rgba(0, 0, 0, 0.8)"
-      >
-        <span v-if="loading">提交中...</span>
-        <span v-else>同意退款</span>
+        <span>关闭</span>
       </el-button>
     </span>
 
@@ -76,14 +83,9 @@
 </template>
 
 <script>
-import { refundAudit } from '@/api/financeMr/InvoiceRecords'
-import Editor from "@/components/Editor";
-import isEmpty from 'voca/is_empty'
 export default {
   name: "detailsDia",
-  components: {
-    Editor,
-  },
+  dicts: ['Invoicing_type','lookup_type'],
   data() {
     return {
       title: "编辑",
@@ -96,13 +98,6 @@ export default {
       performerVisible: false,
       performerList: [],
       refund: false,
-      statusList: {
-        0: '申请中',
-        1: '退款成功',
-        2: '退款驳回',
-        3: '退款中',
-        4: '退款失败',
-      }
     };
   },
   methods: {
@@ -115,56 +110,6 @@ export default {
     openDialog(title, obj, type) {
       this.open = true;
       this.form = obj;
-      if (type){
-        this.refund = true
-      } else {
-        this.refund = false
-      }
-    },
-    inputValidatorEn(value) {
-      if(isEmpty(value)) {
-        return false
-      } else {
-        return true
-      }
-    },
-    /**
-     * 保存
-     * @date 2023-11-22
-     * @returns {any}
-     */
-    submitForm(status) {
-      this.$confirm('是否' + ( status == 1 ? '确定' : '驳回' ) + '退款?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        if(status == 2){
-          this.$prompt('驳回理由', '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            inputValidator: this.inputValidatorEn,
-            inputErrorMessage: '请输入驳回理由'
-          }).then(({ value }) => {
-            this.refundAuditApi(status, value);
-          }).catch(() => {});
-        } else {
-          this.refundAuditApi(status, '');
-        }
-      }).catch(() => {});
-    },
-    refundAuditApi(status, value) {
-      this.loading = true;
-      refundAudit({ refundId: this.form.id, status: status, errReason: value})
-        .then(response => {
-            this.$message.success("操作成功!");
-            this.$emit("getList");
-            this.cancel();
-            this.loading = false;
-          }
-        ).catch(() => {
-        this.loading = false;
-      });
     },
     /**
      * 关闭弹框
@@ -174,6 +119,9 @@ export default {
     cancel() {
       this.open = false;
     },
+    openPDF(url) {
+      window.open(url)
+    }
   },
 };
 </script>

+ 45 - 47
src/views/finance/InvoiceRecords/index.vue

@@ -3,7 +3,7 @@
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="订单号">
         <el-input
-          v-model="queryParams.refundId"
+          v-model="queryParams.orderId"
           placeholder="请输入订单号"
           clearable
           style="width: 240px;"
@@ -12,7 +12,7 @@
       </el-form-item>
       <el-form-item label="抬头名称">
         <el-input
-          v-model="queryParams.orderId"
+          v-model="queryParams.name"
           placeholder="请输入抬头名称"
           clearable
           style="width: 240px;"
@@ -21,15 +21,15 @@
       </el-form-item>
       <el-form-item label="类型">
         <el-select
-          v-model="queryParams.status"
+          v-model="queryParams.handlerType"
           placeholder="类型"
           clearable
           style="width: 100%"
         >
           <el-option
-            v-for="dict in statusList"
-            :key="dict.id"
-            :label="dict.name"
+            v-for="dict in dict.type.lookup_type"
+            :key="dict.value"
+            :label="dict.label"
             :value="dict.value"
           />
         </el-select>
@@ -42,9 +42,9 @@
           style="width: 100%"
         >
           <el-option
-            v-for="dict in statusList"
-            :key="dict.id"
-            :label="dict.name"
+            v-for="dict in dict.type.Invoicing_type"
+            :key="dict.value"
+            :label="dict.label"
             :value="dict.value"
           />
         </el-select>
@@ -61,23 +61,23 @@
 
     <el-table ref="tables" v-loading="loading" :data="dataList" border>
       <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
-      <el-table-column label="订单号" align="center" prop="id" />
-      <el-table-column label="订单金额" align="center" prop="orderId">
+      <el-table-column label="订单号" align="center" prop="orderId" />
+      <el-table-column label="订单金额(元)" align="center" prop="invoiceAmount" />
+      <el-table-column label="类型" align="center">
         <template slot-scope="scope">
-          <el-button type="text" @click="openDetails(scope.row, 'order')">{{ scope.row.orderId }}</el-button>
+          <dict-tag :options="dict.type.lookup_type" :value="scope.row.handlerType"/>
         </template>
       </el-table-column>
-      <el-table-column label="类型" align="center" prop="refundMobile" />
-      <el-table-column label="抬头名称" align="center" prop="transactionId" />
-      <el-table-column label="税号" align="center" prop="type">
+      <el-table-column label="抬头名称" align="center" prop="name" />
+      <el-table-column label="税号" align="center" prop="creditCode" />
+      <el-table-column label="状态" align="center">
         <template slot-scope="scope">
-          <span>¥{{ scope.row.refundAmount }}</span>
+          <dict-tag :options="dict.type.Invoicing_type" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="refundReason" />
-      <el-table-column label="申请时间" align="center" prop="refundTime">
+      <el-table-column label="申请时间" align="center">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.refundTime) }}</span>
+          <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -91,8 +91,8 @@
           <el-button
             size="mini"
             type="text"
-            v-if="false"
-            @click="openDetails(scope.row, 'refund')"
+            v-if="scope.row.status == 1"
+            @click="openRedBlood(scope.row)"
             v-hasPermi="['finance:InvoiceRecords:redblood']"
           >冲红</el-button>
         </template>
@@ -109,9 +109,6 @@
 
     <!-- 详情 -->
     <details-dia ref="detailsDia" @getList="getList"></details-dia>
-
-    <orderDetails ref="orderDetails" @getList="getList"></orderDetails>
-
   </div>
 </template>
 
@@ -119,11 +116,10 @@
 
 import { pageList } from '@/api/financeMr/InvoiceRecords'
 import detailsDia from "./dialog/details.vue";
-import orderDetails from "./dialog/orderDetails.vue";
 export default {
-  name: "agreement",
-  dicts: ['agreement_type'],
-  components: { detailsDia, orderDetails },
+  name: "InvoiceRecords",
+  dicts: ['Invoicing_type','lookup_type'],
+  components: { detailsDia },
   data() {
     return {
       // 遮罩层
@@ -151,17 +147,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-      },
-      statusList: [
-        {id: 1, name: '申请中', value: 0},
-        {id: 2, name: '退款成功', value: 1},
-        {id: 3, name: '退款驳回', value: 2},
-        {id: 4, name: '退款中', value: 3},
-        {id: 5, name: '退款失败', value: 4},
-      ],
-      visibleStatus: false,
-      newObj: {},
-      visibleType: ''
+      }
     };
   },
   created() {
@@ -191,22 +177,34 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.dateRange = [];
-      this.$set(this.queryParams, 'refundId', '');
       this.$set(this.queryParams, 'orderId', '');
-      this.$set(this.queryParams, 'refundMobile', '');
+      this.$set(this.queryParams, 'name', '');
       this.$set(this.queryParams, 'status', '');
-      this.$set(this.queryParams, 'transactionId', '');
+      this.$set(this.queryParams, 'handlerType', '');
       this.queryParams.pageNum = 1;
       this.handleQuery();
     },
     /** 详情按钮操作 */
     openDetails(row, type) {
-      if(type == 'order') {
-        this.$refs["orderDetails"].openDialog("详情", row, type);
-      } else {
-        this.$refs["detailsDia"].openDialog("详情", row, type);
-      }
+      this.$refs["detailsDia"].openDialog("详情", row, type);
     },
+    openRedBlood(){
+      this.$confirm('您即将进行冲红操作,是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.$message({
+            type: 'success',
+            message: '冲红成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消冲红'
+          });          
+        });
+    }
   }
 };
 </script>

+ 1 - 1
src/views/officesale/ticketingSales.vue

@@ -779,7 +779,7 @@
           padding: 5px;
           line-height: 16px;
           margin: 0;
-          color: #fff;
+          color: #000;
         }
       }
     }

+ 2 - 4
src/views/ticket/ticketMr/dialog/addAndEdit.vue

@@ -116,8 +116,7 @@
               <el-checkbox v-model="form.channelWindow">窗口</el-checkbox>
               <el-checkbox v-model="form.channelAutoSale">自助售/取票机</el-checkbox>
             </el-form-item>
-            <el-form-item label="税率:" prop="taxRate" label-width="100px">
-              <!-- <el-input-number v-model="form.taxRate" placeholder="税率" controls-position="right" :min="0" :max="10000"></el-input-number> -->
+            <!-- <el-form-item label="税率:" prop="taxRate" label-width="100px">
               <el-select
                 v-model="form.taxRate"
                 placeholder="请选择税率"
@@ -131,8 +130,7 @@
                   :value="dict.value"
                 />
               </el-select>
-              <!-- <span style="margin-left: 5px">%</span> -->
-            </el-form-item>
+            </el-form-item> -->
             <el-form-item label="可售区域:" label-width="100px">
               <span @click="deliverableAreaDialogCancel(form.saleArea)" style="cursor: pointer;color: #1890ff;">请选择(点击这里进行选择)</span>
               <span style="margin-left: 10px;color: red;cursor: pointer;" @click="form.saleArea=''">全部清除</span>

+ 2 - 2
src/views/ticket/ticketMr/dialog/details.vue

@@ -61,9 +61,9 @@
            + ' ' + 
            (form.goodsPerform.channelAutoSale == 0 ? '自助售/取票机' : '')}}</span></div>
         </el-col>
-        <el-col :span="12">
+        <!-- <el-col :span="12">
           <div class="grid-content bg-purple item-class">税率: <span>{{ form.taxRate }}</span></div>
-        </el-col>
+        </el-col> -->
         <el-col :span="24" v-if="form.goodsPerform">
           <div style="width: 100%;height: 100px;overflow: hidden;overflow-y: auto;background-color: rgba(204, 204, 204,0.3);padding: 5px;box-sizing: border-box;border-radius: 10px;">
             <div style="padding: 0 10px;" class="grid-content bg-purple item-class">可售渠道: </div>

+ 1 - 1
src/views/venue/performanceHallMr/index.vue

@@ -131,7 +131,7 @@
 
 import { merchantPageList, deleteById } from '@/api/performanceHallMr/performanceHallMr'
 import addAndEdit from "./dialog/addAndEdit.vue";
-// import seatTemplateEdit from "./dialog/seatTemplateEdit";
+//  import seatTemplateEdit from "./dialog/seatTemplateEdit";
 import seatTemplateEdit from "./dialog/seatTemplateEditOld";
 import programmeAddAndEdit from "./dialog/programmeAddAndEdit";
 

+ 64 - 19
src/views/venue/performanceHallMr/model/seatManagementTable.vue

@@ -4,7 +4,7 @@
             <div style="display: flex;align-items: center;">
                 <span style="margin-right: 5px;font-size: 14px;">放大/缩小:</span> 
                 <div style="width: 100px;">
-                    <el-slider input-size="mini" v-model="whNum" :min="16" :max="60"></el-slider>
+                    <el-slider input-size="mini" v-model="whNum" :min="16" :max="100"></el-slider>
                 </div>
             </div>
             <div>
@@ -27,8 +27,11 @@
                     row-key="id"
                     class="exchange_table"
                     :style="{
-                        '--row-w': whNum+'px',
-                        '--row-h': whNum+'px',
+                        '--row-scale': whNum/100,
+                        '--row-w': (width*(whNum/100))+'px',
+                        '--row-h':  (width*(whNum/100))+'px',
+                        '--row-w-i': width+'px',
+                        '--row-h-i':  height+'px',
                     }"
                     :data-source="ranking_goods"
                     :cell-class-name="tableCellClassName"
@@ -63,9 +66,11 @@
                                 :dragSelectId="item1.styleCss.id"
                                 :style="{backgroundColor: item1.delFlag !=0?'#ccc':item1.color}"
                                 >
-                                    <i style="line-height: 15px;">{{ item1.columnNo }}</i>
-                                    <i style="line-height: 15px;">{{ item1.name }}</i>
-                                    <i style="line-height: 15px;">vip</i>
+                                    <div>
+                                        <i style="line-height: 15px;">{{ item1.columnNo }}</i>
+                                        <i style="line-height: 15px;">{{ item1.name }}</i>
+                                        <i style="line-height: 15px;">vip</i>
+                                    </div>   
                                 </div>
                             </div>
                         </template>
@@ -461,10 +466,10 @@ export default {
             ], // 全部的座位
             widthAll: '100%',
             heightAll: '100%',
-            width: 26,
-            height: 26,
+            width: 60,
+            height: 60,
             spacing: 10,
-            whNum: 26,
+            whNum: 100,
 
 
             sortable: null,
@@ -566,23 +571,52 @@ export default {
                 this.tableHeader =  JSON.parse(row.styleCss).tableHeader
             }
             this.rowAll = row.rows
-            //console.log("tableHeader,list===",tableHeader,list)
-            //this.tableHeader =  JSON.parse(JSON.stringify(tableHeader))
-            this.tableDataAll = JSON.parse(JSON.stringify(list))
-            this.createTableList()
+            let listCopy = []
+            list.forEach((item,index) => {
+                if(item.styleCss) {
+                    item.styleCss = JSON.parse(item.styleCss)
+                }
+                listCopy.push(item)
+            })
+            this.tableDataAll = JSON.parse(JSON.stringify(listCopy))
+            //this.createTableList()
             this.dataProcess() // 数据整理
         },
+        /**  数组组装  */
         dataProcess(){
             let list = JSON.parse(JSON.stringify(this.tableDataAll))
             let list1 = JSON.parse(JSON.stringify(this.tableData))
+            let obj = {}
+            for(let i = 0;i<this.rowAll;i++) {
+                if(this.tableHeader && this.tableHeader.length){
+                    let obj = {
+                        id: "row_"+i
+                    }
+                    this.tableHeader.forEach((item,index)=>{
+                        obj[item.key] = []
+                    })
+                    if(list1[i] && JSON.stringify(list1[i]) != '{}') {
+                        list1[i] = obj
+                    }else {
+                        list1.push(obj)
+                    }
+                }else if(!list1[i]){
+                    list1.push({})
+                }
+            }
+            this.tableData = JSON.parse(JSON.stringify(list1))
             list.forEach((item,index)=>{
-                if(item.styleCss && item.styleCss.key && list1[item.rowNo-1][item.styleCss.key]) {
+                if(item.styleCss) {
+                    obj = typeof item.styleCss == 'string' ? JSON.parse(item.styleCss) : item.styleCss
+                    if(obj.key && list1[item.rowNo-1][obj.key]) {
                     
-                    list1[item.rowNo-1][item.styleCss.key].push({
-                        ...item,
-                        styleCss: item.styleCss ? typeof item.styleCss == 'string' ? JSON.parse(item.styleCss) : item.styleCss : {}
-                    })
+                        list1[item.rowNo-1][obj.key].push({
+                            ...item,
+                            styleCss: obj
+                        })
+                    }
                 }
+               
             })
             console.log("this.tableData===",this.tableData)
             this.tableData = JSON.parse(JSON.stringify(list1))
@@ -857,7 +891,9 @@ export default {
             for(let i = 0; i < list.length; i++) {
                 for(let j = 0;j < this.tableData.length; j++) {
                     if(this.tableData[j][list[i].key] && this.tableData[j][list[i].key].length){
-                        if(list[i].length<this.tableData[j][list[i].key].length){
+                        if(j==0) {
+                            list[i].length = this.tableData[j][list[i].key].length
+                        }else if(list[i].length<this.tableData[j][list[i].key].length){
                             list[i].length = this.tableData[j][list[i].key].length
                         }
                     }
@@ -945,6 +981,7 @@ export default {
             this.tableDataAll = JSON.parse(JSON.stringify(listTabel))
             console.log("this.tableDataAll=====",this.tableDataAll)
             // this.batchTableList = JSON.parse(JSON.stringify(this.tableDataAll))
+            this.formDialogVisible = false
             this.handleQuery()
             this.dataProcess()
         },
@@ -1072,6 +1109,7 @@ export default {
     justify-content: center;
     --row-w: 26px;
     --row-h: 26px;
+    --row-scale: 1;
 }
 .sm-scroll-box {
     width: 1000px;
@@ -1106,6 +1144,13 @@ export default {
     box-sizing: border-box;
     justify-content: center;
     overflow: hidden;
+    > div {
+        width: var(--row-w-i);
+        height: var(--row-h-i);
+        transform: scale(var(--row-scale));
+        display: flex;
+        flex-direction: column;
+    }
     i {
         color: #fff;
     }

+ 1 - 1
src/views/windowTicketSales/ticketingSales.vue

@@ -779,7 +779,7 @@
           padding: 5px;
           line-height: 16px;
           margin: 0;
-          color: #fff;
+          color: #000;
         }
       }
     }