浏览代码

1. 优化

MONSTER-ygh 10 月之前
父节点
当前提交
b89d22c8c6

+ 9 - 0
src/api/distribution/personnelMr.js

@@ -102,4 +102,13 @@ export function downOrderListXls(params) {
     responseType: 'blob',
     params
   });
+}
+
+// 推广链接内容设置
+export const insertOrUpdateContentApi = (data) => {
+  return request({
+    url: '/member/marketPersonsPoster/insertOrUpdateContent',
+    method: 'post',
+    data: data
+  })
 }

+ 104 - 0
src/views/distribution/personnelMr/dialog/linkSet.vue

@@ -0,0 +1,104 @@
+<template>
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="80%"
+      :destroy-on-close="true"
+      :close-on-click-modal="false"
+    >
+      <div
+        v-loading="loading"
+        :element-loading-text="loadingText"
+        element-loading-spinner="el-icon-loading"
+        element-loading-background="rgba(0, 0, 0, 0.8)"
+      >
+        <el-form :model="form" ref="form" :rules="rules" label-width="120px">
+            <el-form-item label="链接内容" prop="posterContent">
+                <editor ref="editor" v-model="form.posterContent" :fileSize="20" :min-height="200" />
+            </el-form-item>
+        </el-form>
+      </div>  
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="visibleStatus = false">取 消</el-button>
+        <el-button :loading="loading" type="primary" @click="submitRetailRateForm">
+          {{ loading ? '提交中...':'保存' }}</el-button>
+      </div>
+    </el-dialog>
+</template>
+<script>
+import { insertOrUpdateContentApi,getPoster } from "@/api/distribution/personnelMr";
+import Editor from "@/components/Editor";
+export default {
+    name: '',
+    components: { Editor },
+    data(){
+        return {
+            open: false,
+            title: null,
+            loading: false,
+            loadingText: '提交中...',
+            form: {},
+            rules: {
+                posterContent: [
+                    { required: true, message: '请输入链接内容', trigger: ['change','blur'] },
+                ],
+            }
+        }
+    },
+    methods: {
+        initData(title,data) {
+            this.open = true
+            this.loadingText = '加载数据中...'
+            this.title = title
+            this.getDetailsFun()
+        },
+        /** 获取推广码 */
+        getDetailsFun(row={}) {
+            this.loading = true;
+            getPoster({...row}).then(response => {
+                let data = response.data
+                if(response.code == 200) {
+                    console.log(":ddsfds")
+                    this.$set(this.form,'posterContent',data.posterContent)
+                }
+                this.loading = false;
+            }).catch ((error) => {
+                this.$message.error("获取详情失败!");
+                this.open = false
+                this.loading = false;
+            })
+        },
+        submitRetailRateForm() {
+            this.$refs["form"].validate(async (valid) => {
+                if (valid) {
+                try {
+                    this.loadingText = '提交中...'
+                    this.loading = true;
+                    const { code } = await insertOrUpdateContentApi({ ...this.form });
+                    if (code === 200) {
+                        this.loading = false;
+                        this.$message.success("操作成功!");
+                        this.$emit("refresh")
+                        this.open = false
+                    }else {
+                        this.$message.error("操作失败!");
+                    }
+                } catch (error) {
+                } finally {
+                    this.loading = false;
+                }
+                }
+            });
+        }
+    },
+    watch: {
+        'form.posterContent'(){
+            if(this.form.posterContent == "<p><br></p>") {
+                this.$set(this.form,'posterContent',null)
+            }
+        }
+    }
+}
+</script>
+<style scoped lang="scss">
+</style>

+ 19 - 1
src/views/distribution/personnelMr/index.vue

@@ -89,6 +89,16 @@
             v-hasPermi="['personnelMr:personnelMr:codeSet']"
           >推广码海报设置</el-button>
         </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="success"
+            plain
+            icon="el-icon-s-tools"
+            size="mini"
+            @click="linkSet"
+            v-hasPermi="['personnelMr:personnelMr:linkSet']"
+          >推广链接内容设置</el-button>
+        </el-col>
         <el-col :span="1.5">
           <el-button
             type="danger"
@@ -341,6 +351,9 @@
         </el-button>
       </div>
     </el-dialog>
+
+    <!-- 推广链接内容设置 -->
+    <linkSetVue ref="linkSetVue" @refresh="getList" />
   </div>
 </template>
 
@@ -351,6 +364,7 @@ import addAndEdit from "./dialog/addAndEdit.vue";
 import promotionCode from "./dialog/promotionCode.vue";
 import { exportExcel } from '@/utils/exportexcel'
 import html2canvas from 'html2canvas'
+import linkSetVue from './dialog/linkSet.vue';
 
 export default {
   name: "agreement",
@@ -360,7 +374,7 @@ export default {
     }
   },
   dicts: ['distribution_type','user_allow_withdraw','persons_type'],
-  components: { addAndEdit, promotionCode },
+  components: { addAndEdit, promotionCode, linkSetVue },
   data() {
     let validateNumber = (rule, value, callback) => {
       let regNumber=/^(([1-9]\d*)|([0][.]{1}[0-9]{0,2}[1-9]+)|([1-9]\d*[.]{1}[0-9]+))$/g;
@@ -533,6 +547,10 @@ export default {
     codeSet() {
       this.$refs["promotionCode"].openDialog("海报设置", null);
     },
+    /** 海报设置按钮操作 */
+    linkSet() {
+      this.$refs["linkSetVue"].initData("推广链接内容设置", null);
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.$refs["addAndEdit"].openDialog("修改数据", row);

+ 6 - 0
src/views/order/groupBuyingMr/dialog/details.vue

@@ -61,6 +61,12 @@
           <el-col :span="12">
             <div class="grid-content bg-purple item-class">联系电话: <span>{{ form.teamMobile || '' }}</span></div>
           </el-col>
+          <el-col :span="12">
+            <div class="grid-content bg-purple item-class">带队负责人姓名: <span>{{ form.linkName || '' }}</span></div>
+          </el-col>
+          <el-col :span="12">
+            <div class="grid-content bg-purple item-class">带队负责人联系电话: <span>{{ form.linkPhone || '' }}</span></div>
+          </el-col>
           <!-- <el-col :span="12">
             <div class="grid-content bg-purple item-class">支付总额: <span>¥{{ form.orderPrice || '' }}</span></div>
           </el-col> -->

+ 1 - 1
src/views/order/viewers/index.vue

@@ -165,7 +165,7 @@
                 >打印</el-button>
               </span>
               <span v-hasPermi="['order:viewers:tuikuai']" style="display: inline-block;margin-left: 10px;">
-                <el-button v-if="scope.row.status == 3 || scope.row.status == 6" size="mini" type="text"
+                <el-button v-if="scope.row.status == 3 || scope.row.status == 6 || scope.row.status == 7 ||scope.row.status == 8" size="mini" type="text"
                 @click="openRefundSubmitModel([scope.row])"
                 >退款</el-button>
               </span>

+ 24 - 2
src/views/team/applicationMr/dialog/addAndEdit.vue

@@ -11,7 +11,7 @@
   <el-dialog
     :title="title"
     :visible.sync="open"
-    width="700px"
+    width="800px"
     append-to-body
     :close-on-click-modal="false"
     @close="cancel"
@@ -23,7 +23,7 @@
     element-loading-spinner="el-icon-loading"
     element-loading-background="rgba(0, 0, 0, 0.8)"
     >
-      <el-form :model="form" ref="form" size="mini" :rules="rules" label-width="120px">
+      <el-form :model="form" ref="form" size="mini" :rules="rules" label-width="200px">
         <el-form-item label="选择团队:" prop="teamId">
           <el-select
             v-model="form.teamId"
@@ -45,6 +45,24 @@
             />
           </el-select>
         </el-form-item>
+        <el-form-item label="带队负责人:" prop="linkName">
+          <el-input
+            v-model="form.linkName"
+            placeholder="请输入带队负责人"
+            clearable
+            style="width: 260px;"
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item label="带队负责人联系电话:" prop="linkPhone">
+          <el-input
+            v-model="form.linkPhone"
+            placeholder="请输入带队负责人联系电话"
+            clearable
+            style="width: 260px;"
+          >
+          </el-input>
+        </el-form-item>
         <el-form-item label="选择场馆:" prop="theatreId">
           <el-select
             v-model="form.theatreId"
@@ -244,6 +262,8 @@ export default {
       },
       rules: {
         teamId: [{ required: true, message: "请选择团队", trigger: ["change","blur"] }],
+        linkName: [{ required: true, message: "请输入带队负责人", trigger: ["change","blur"] }],
+        linkPhone: [{ required: true, message: "请输入带队负责人联系电话", trigger: ["change","blur"] }],
         theatreId: [{ required: true, message: "请选择场馆", trigger: ["change","blur"] }],
         auditoriumId: [{ required: true, message: "请选择演出厅", trigger: ["change","blur"] }],
         performId: [{ required: true, message: "请选择选择剧目", trigger: ["change","blur"] }],
@@ -589,6 +609,8 @@ export default {
     reset() {
       this.$set(this.form, 'id', '');
       this.$set(this.form, 'teamId', '');
+      this.$set(this.form, 'linkName', '');
+      this.$set(this.form, 'linkPhone', '');
       this.$set(this.form, 'teamName', '');
       this.$set(this.form, 'theatreId', '');
       this.$set(this.form, 'theatreName', '');

+ 2 - 0
src/views/team/applicationMr/index.vue

@@ -64,6 +64,8 @@
       <el-table  ref="tables" v-loading="loading" :data="dataList" border>
         <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
         <el-table-column label="团队名称" align="center" prop="teamName" />
+        <el-table-column label="带队负责人" align="center" prop="linkName" />
+        <el-table-column label="带队负责人联系电话" align="center" prop="linkPhone" />
         <el-table-column label="预约场馆" align="center" prop="theatreName" />
         <el-table-column label="预约演出厅" align="center" prop="auditoriumName" />
         <el-table-column label="预约剧目" align="center" prop="performName" />

+ 81 - 7
src/views/team/teamMr/dialog/addAndEdit.vue

@@ -22,12 +22,37 @@
           <span>{{ form.checkRemark }}</span>
         </el-form-item> -->
         <el-form-item label="团队名称:" prop="name">
-          <el-input
-            v-model="form.name"
-            placeholder="团队名称"
-            clearable
-            style="width: 100%;"
-          />
+          <el-popover
+            placement="bottom-start"
+            title=""
+            trigger="manual"
+            v-model="showNameList"
+            >
+            <div 
+            style="text-align: right; margin: 0;min-width: 300px;min-height: 200px;"
+            v-loading="nameListLoading"
+            >
+              <div 
+              v-for="(item,index) in nameList" 
+              :key="index"
+              @click="setNanmeList(item,index)"
+              class="team_name_list"
+              >
+                <span style="">{{ item.name }}</span>
+              </div>
+            </div>
+            <el-input
+              slot="reference"
+              v-model="form.name"
+              placeholder="团队名称"
+              clearable
+              @blur="showNameList = false"
+              @focus="showNameList = true"
+              @input="getList"
+              style="width: 100%;"
+            />
+          </el-popover>
+          
         </el-form-item>
         <el-form-item label="团队类型:" prop="type">
           <el-select
@@ -152,10 +177,11 @@
 
 <script>
 // import { updateNoticeMgr } from "@/api/system/noticeMgr";
+import { pageList } from '@/api/team/teamMr'
 import { saveAndEdit, getSelectById } from "@/api/team/teamMr";
 import Editor from "@/components/Editor";
 import { getToken } from "@/utils/auth";
-import { index } from "mathjs";
+
 export default {
   name: "addAndEdit",
   props: {
@@ -221,6 +247,10 @@ export default {
         url: process.env.VUE_APP_UPLOAD_FILE_API + "/upload/single/minio",
         Headers: { Authorization: "Bearer " + getToken() },
       },
+      nameList: [],
+      nameListTime: null,
+      nameListLoading: null,
+      showNameList: false
     };
   },
   methods: {
@@ -232,6 +262,7 @@ export default {
      */
     openDialog(title, obj) {
       this.open = true;
+      this.nameList = []
       this.reset();
       if (obj){
         this.title = "编辑团队";
@@ -243,6 +274,37 @@ export default {
         });
       }
     },
+    /** 查询列表 */
+    getList(value) {
+      if(!value) {
+        this.nameList = []
+        return
+      }
+      if(this.nameListTime) {
+        clearTimeout(this.nameListTime)
+      }
+      this.nameListTime = setTimeout(()=>{
+        this.nameListLoading = true;
+        this.nameList = []
+        pageList({
+          name: value,
+          pageNum: 1,
+          pageSize: 999,
+        })
+        .then(response => {
+            this.nameList = response.data.rows;
+            this.nameListLoading = false;
+          }
+        ).catch(()=>{
+          this.nameList = []
+          this.nameListLoading = false;
+        })
+      },1000)
+      
+    },
+    setNanmeList(item,index){
+      this.$set(this.form,'name',item.name)
+    },
     /** 获取详情 */
     getSelectByIdApi(row) {
       const id = row.id
@@ -459,4 +521,16 @@ export default {
     cursor: pointer;
   }
 }
+.team_name_list {
+  width: 100%;
+  span {
+    display: flex;
+    width: 100%;
+    padding: 5px 10px;
+    cursor: pointer;
+  }
+  span:hover {
+    color: #1890ff;
+  }
+}
 </style>

+ 59 - 3
src/views/ticket/ticketMr/dialog/addAndEdit.vue

@@ -73,7 +73,7 @@
                 <!-- <i style="font-size: 12px;margin-left: 5px;">注:必须大于核销时间至少30秒</i> -->
               </span>
             </el-form-item>
-            <el-form-item label="核销时间:" prop="beforeTime">
+            <!-- <el-form-item label="核销时间:" prop="beforeTime">
               <span style="margin-right: 5px">开演前</span>
               <el-input
                 v-model="form.beforeTime"
@@ -96,7 +96,7 @@
                 style="width: 100%;"
               >
               </el-input>
-            </el-form-item>
+            </el-form-item> -->
             <el-form-item label="票务说明:">
               <el-input
                 type="textarea"
@@ -208,6 +208,41 @@
               <span style="padding-left: 10px">可退</span>
             </el-form-item>
           </el-tab-pane>
+
+          <!--    核销信息 -->
+          <el-tab-pane label="核销信息" name="04">
+            <el-form-item label="核销时间:" prop="beforeTime">
+              <span style="margin-right: 5px">开演前</span>
+              <el-input
+                v-model="form.beforeTime"
+                @change="changePriceAmount('beforeTime')"
+                type="number"
+                placeholder="核销时间"
+                clearable
+                style="width: 120px;"
+              >
+              </el-input>
+              <span style="margin-left: 5px">分钟内</span>
+            </el-form-item>
+            <el-form-item label="核销播报次数:" prop="verificationSpeaker">
+              <el-input
+                v-model="form.verificationSpeaker"
+                @change="changePriceAmount('verificationSpeaker')"
+                type="number"
+                placeholder="核销播报次数"
+                clearable
+                style="width: 100%;"
+              >
+              </el-input>
+            </el-form-item>
+            <el-form-item label="核销凭证:" prop="checkList">
+              <el-checkbox-group v-model="form.checkList">
+                <el-checkbox label="A">电子核销码</el-checkbox>
+                <el-checkbox label="B">身份证</el-checkbox>
+              </el-checkbox-group>
+              <span>说明:未勾选核销凭证时,观影人员需到票务中心取票入场</span>
+            </el-form-item>
+          </el-tab-pane>
         </el-tabs>
       </el-form>
     </div>
@@ -358,7 +393,8 @@ export default {
       
         oneMany: [{required: true, message: "请选择实名要求", trigger: ["change","blur"]}],
         personnelNum: [{required: true, message: "请输入包含人数", trigger: ["change","blur"]}],
-      
+        
+        checkList: [{required: false, message: "请选择核销凭证", trigger: ["change","blur"]}],
       },
       uploadObj: {
         url: process.env.VUE_APP_UPLOAD_FILE_API + "/upload/single/minio",
@@ -464,6 +500,13 @@ export default {
           // }
           this.$set(this.form, 'oneMany', obj.goodsPerform.oneMany);  
           this.$set(this.form, 'personnelNum', obj.goodsPerform.personnelNum); 
+          this.$set(this.form,'checkList',[])
+          if(obj.goodsPerform.verificationQrcode == 0) {
+            this.form.checkList.push('A')
+          }
+          if(obj.goodsPerform.verificationIdcard == 0) {
+            this.form.checkList.push('B')
+          }
         });
       });
     },
@@ -533,6 +576,17 @@ export default {
             // }
             postMap.goodsPerform.oneMany = this.form.oneMany
             postMap.goodsPerform.personnelNum = this.form.personnelNum
+
+            if(this.form.checkList.indexOf('A') != -1) {
+              postMap.goodsPerform.verificationQrcode = 0
+            }else {
+              postMap.goodsPerform.verificationQrcode = 1
+            }
+            if(this.form.checkList.indexOf('B') != -1) {
+              postMap.goodsPerform.verificationIdcard = 0
+            }else {
+              postMap.goodsPerform.verificationIdcard = 1
+            }
             
             this.loading = true;
             const { code } = await saveAndEdit({ ...postMap });
@@ -593,6 +647,8 @@ export default {
 
       this.$set(this.form, 'oneMany', '');
       this.$set(this.form, 'personnelNum', undefined);
+
+      this.$set(this.form, 'checkList', ['A','B'])
     },
     /**
      * 关闭弹框

+ 6 - 0
src/views/ticket/ticketMr/dialog/details.vue

@@ -50,6 +50,12 @@
         <el-col :span="12" v-if="form.goodsPerform">
           <div class="grid-content bg-purple item-class">核销播报次数: <span>{{ form.goodsPerform.verificationSpeaker + '次' || '' }}</span></div>
         </el-col>
+        <el-col :span="12" v-if="form.goodsPerform">
+          <div class="grid-content bg-purple item-class">核销凭证: 
+            <el-tag v-if="form.goodsPerform.verificationQrcode == 0">电子核销码</el-tag>
+            <el-tag style="margin-left: 10px;" v-if="form.goodsPerform.verificationIdcard == 0">身份证</el-tag>
+          </div>
+        </el-col>
         <el-col :span="12" v-if="form.goodsPerform">
           <div class="grid-content bg-purple item-class">票务说明: <span>{{ form.goodsPerform.detail || '' }}</span></div>
         </el-col>

+ 47 - 4
src/views/venue/schedulingMr/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="app-container">
+  <div class="app-container app-container-scheduling">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="场馆名称" label-width="70px">
         <el-input
@@ -19,6 +19,23 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="票务名称">
+        <el-select
+            v-model="queryParams.goodsIds"
+            placeholder="请输入票务名称"
+            clearable
+            multiple
+            style="width: 300px;"
+            @keyup.enter.native="handleQuery"
+          >
+            <el-option
+              v-for="dict in goodsIdsList"
+              :key="dict.id"
+              :label="dict.goodsName"
+              :value="dict.id"
+            />
+          </el-select>
+      </el-form-item>
       <el-form-item label="选择日期">
         <el-date-picker
           v-model="queryParams.performDate"
@@ -27,7 +44,7 @@
           placeholder="选择日期">
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="状态">
+      <el-form-item label="状态" label-width="40px">
         <el-select
             v-model="queryParams.status"
             placeholder="状态"
@@ -184,7 +201,7 @@
 
 import { pageList, deleteById, deleteBatchById,ionline } from '@/api/schedulingMr/schedulingMr'
 import addAndEdit from "./dialog/addAndEdit";
-
+import { pageList as goodsIdsListApi } from '@/api/ticketMr/ticketMr'
 export default {
   name: "SchedulingMr1",
   dicts: ['agreement_type'],
@@ -226,10 +243,12 @@ export default {
       visibleStatus: false,
       newObj: {},
       visibleType: '',
+      goodsIdsList: []
     };
   },
   created() {
     this.getList();
+    this.goodsIdsListFun()
   },
   // activated(){
   //   this.getList();
@@ -238,7 +257,9 @@ export default {
     /** 查询列表 */
     getList() {
       this.loading = true;
-      pageList(this.addDateRange(this.queryParams, this.dateRange))
+      let params = JSON.parse(JSON.stringify(this.queryParams))
+      params.goodsIds = params.goodsIds?params.goodsIds.join(','):''
+      pageList(this.addDateRange({...params}, this.dateRange))
       .then(response => {
           this.dataList = response.data.rows;
           this.total = response.data.total;
@@ -248,6 +269,21 @@ export default {
         this.loading = false;
       });
     },
+    /** 查询列表 */
+    goodsIdsListFun() {
+      this.loading = true;
+      goodsIdsListApi(this.addDateRange({
+        pageNum: 1,
+        pageSize: 1000,
+        type: undefined,
+        goodsType: 2,
+        classifyId: 1
+      }))
+      .then(response => {
+          this.goodsIdsList = response.data.rows;
+        }
+      );
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -264,6 +300,7 @@ export default {
       this.$set(this.queryParams, 'performDate', '');
       this.$set(this.queryParams, 'performName', '');
       this.$set(this.queryParams, 'status', '');
+      this.$set(this.queryParams, 'goodsIds', '');
       this.queryParams.pageNum = 1;
       this.handleQuery();
     },
@@ -346,3 +383,9 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+.app-container-scheduling ::v-deep .el-select__tags {
+    flex-wrap: inherit !important;
+    overflow-x: auto !important;
+}
+</style>