MONSTER-ygh il y a 1 an
Parent
commit
f4bc7a57e2

+ 21 - 0
src/api/distribution/distributionapplication.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 分页查询
+export const pageList = (query) => {
+  return request({
+    url: '/member/marketPersonsApply/pageList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 新增/修改
+export const setRemark = (data) => {
+  return request({
+    url: '/member/marketPersonsApply/insertOrUpdate',
+    method: 'post',
+    data: data
+  })
+}
+
+

+ 29 - 0
src/api/order/writeOffMr.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+// 分页查询
+export const pageList = (query) => {
+  return request({
+    url: '/order/orderInfo/qrCodeUseLogList',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// id获取详情
+export function getSelectById(id) {
+  return request({
+    url: '/order/orderInfo/detail?id=' + id,
+    method: 'get'
+  })
+}
+
+//  导出
+export function downOrderListXls(params) {
+  return request({
+    url: '/order/orderInfo/listExport',
+    method: 'get',
+    responseType: 'blob',
+    params
+  });
+}

+ 10 - 0
src/api/team/applicationMr.js

@@ -85,3 +85,13 @@ export function queryPrice(query) {
     params: query
   })
 }
+
+// 下载模板
+export function downloadModel(query) {
+  return request({
+    url: '/member/marketTeamApply/downTeamApplyTemplate',
+    method: 'get',
+    responseType: 'blob',
+    params: query
+  })
+}

+ 2 - 1
src/main.js

@@ -12,7 +12,7 @@ import store from './store'
 import router from './router'
 import directive from './directive' // directive
 import plugins from './plugins' // plugins
-import { download } from '@/utils/request'
+import { download,downloadGet } from '@/utils/request'
 import AvueFormDesign from '@sscfaith/avue-form-design'
 
 import './assets/iconfont/iconfont.js'
@@ -53,6 +53,7 @@ Vue.prototype.addDateRange = addDateRange
 Vue.prototype.selectDictLabel = selectDictLabel
 Vue.prototype.selectDictLabels = selectDictLabels
 Vue.prototype.download = download
+Vue.prototype.downloadGet = downloadGet
 Vue.prototype.handleTree = handleTree
 Vue.prototype.$axios = axios
 

+ 26 - 0
src/utils/request.js

@@ -149,4 +149,30 @@ export function download(url, params, filename, config) {
   })
 }
 
+export function downloadGet(url, params, filename, config) {
+  downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
+  return service.get(url, params, {
+    transformRequest: [(params) => { return tansParams(params) }],
+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
+    responseType: 'blob',
+    ...config
+  }).then(async (data) => {
+    const isBlob = blobValidate(data);
+    if (isBlob) {
+      const blob = new Blob([data])
+      saveAs(blob, filename)
+    } else {
+      const resText = await data.text();
+      const rspObj = JSON.parse(resText);
+      const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
+      Message.error(errMsg);
+    }
+    downloadLoadingInstance.close();
+  }).catch((r) => {
+    console.error(r)
+    Message.error('下载文件出现错误,请联系管理员!')
+    downloadLoadingInstance.close();
+  })
+}
+
 export default service

+ 188 - 0
src/views/distribution/distributionapplication/index.vue

@@ -0,0 +1,188 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
+      <el-form-item label="申请人名称" label-width="100px">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入申请人名称"
+          clearable
+          style="width: 240px;"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="申请人手机号:" prop="goodsId">
+        <el-input
+          v-model="queryParams.mobile"
+          placeholder="请输入申请人手机号"
+          clearable
+          style="width: 240px;"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <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="name" />
+      <el-table-column label="申请人手机号" align="center" prop="mobile" />
+      <el-table-column label="职业" align="center" prop="careerName" />
+      <el-table-column label="销售渠道" align="center" prop="saleChannel" />
+      <el-table-column label="申请时间" align="center" prop="createTime" />
+      <el-table-column label="最近一次备注" align="center" prop="remark" />
+      <el-table-column label="最近一次更新时间" align="center" prop="updateTime" />
+      <el-table-column label="操作员" align="center" prop="updateBy" />
+      <el-table-column label="操作" align="center" fixed="right" width="150" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="setRemark(scope.row)"
+            v-hasPermi="['distribution:distributionapplication:remarks']"
+          >备注</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <el-dialog
+      title="备注"
+      :visible.sync="visibleStatus"
+      width="600px"
+      :destroy-on-close="true"
+      :close-on-click-modal="false"
+    >
+      <el-form v-loading="visibleStatusLoading" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+        <el-form-item label-width="0" prop="remark">
+          <el-input type="textarea" v-model="ruleForm.remark" maxlength="50" show-word-limit :rows="4"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="visibleStatusLoading" type="primary" @click="submitForm('ruleForm')">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+import { pageList,setRemark } from '@/api/distribution/distributionapplication'
+export default {
+  name: "distributionapplication",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        type: undefined
+      },
+      visibleStatus: false,
+      visibleStatusLoading: false,
+      ruleForm: {},
+      rules: {
+        remark: [
+          { required: true, message: '请输入备注', trigger: ['blur','change'] },
+          { min: 0, max: 50, message: '长度在 0 到 50 个字符', trigger: ['blur','change'] }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      pageList(this.queryParams)
+      .then(response => {
+          this.dataList = response.data.rows;
+          this.dataList.forEach(item =>{
+            item.switchValue = item.status;
+          })
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.$set(this.queryParams, 'name', '');
+      this.$set(this.queryParams, 'mobile', '');
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    setRemark(data) {
+      this.visibleStatus = true
+      this.resetForm.id = data.id
+    },
+    submitForm(formName) {
+        this.$refs[formName].validate(async (valid) => {
+          if (valid) {
+            try { 
+              this.visibleStatusLoading = true
+              let res = await setRemark({
+                id: this.resetForm.id,
+                "remark": this.ruleForm.remark
+              })
+              this.visibleStatus = false
+              this.visibleStatusLoading = false
+              this.resetForm('ruleForm')
+              this.queryParams.pageNum = 1;
+              this.getList()
+            } catch (error) {
+              this.visibleStatusLoading = false
+            }
+            
+          } else {
+            this.visibleStatusLoading = false
+            return false;
+          }
+        });
+      },
+      resetForm(formName) {
+        this.$refs[formName].resetFields();
+      }
+  }
+};
+</script>

+ 14 - 10
src/views/distribution/personnelMr/index.vue

@@ -102,6 +102,7 @@
           </el-switch>
         </template>
       </el-table-column>
+      <el-table-column label="销售人员" align="center" prop="salePerson" />
       <el-table-column label="添加时间" align="center" prop="createTime" width="160">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
@@ -202,16 +203,19 @@
           </el-input>
         </el-form-item>
         <el-form-item label="提现门槛" prop="withdrawMinMoney">
-          <el-input
-            type="number"
-            v-model="setForm.withdrawMinMoney"
-            placeholder="请输入提现门槛,最低0.3元"
-            clearable
-            @change="changePriceAmount('withdrawMinMoney')"
-            style="width: 260px;"
-          >
-          </el-input>
-          <span style="margin-left: 5px">元以上方可提现 <i style="font-size: 12px;color: #333;">(注: 最低为0.3元)</i></span>
+          <div>
+            <el-input
+              type="number"
+              v-model="setForm.withdrawMinMoney"
+              placeholder="请输入提现门槛,最低0.3元"
+              clearable
+              @change="changePriceAmount('withdrawMinMoney')"
+              style="width: 260px;"
+            >
+            </el-input>
+            <span style="margin-left: 5px">元以上方可提现</span>
+          </div>
+          <span style="font-size: 14px;color: #777;">注: 最低提现为0.3元</span>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">

+ 28 - 22
src/views/order/writeOffMr/index.vue

@@ -12,7 +12,7 @@
       </el-form-item>
       <el-form-item label="用户身份信息" label-width="100px">
         <el-input
-          v-model="queryParams.memberMobile"
+          v-model="queryParams.idCard"
           placeholder="用户身份信息"
           clearable
           style="width: 240px;"
@@ -20,17 +20,23 @@
         />
       </el-form-item>
       <el-form-item label="核销剧目类型">
-        <el-input
-          v-model="queryParams.performName"
+        <el-select
+          v-model="queryParams.deviceType"
           placeholder="核销剧目类型"
           clearable
-          style="width: 240px;"
-          @keyup.enter.native="handleQuery"
-        />
+          style="width: 100%;"
+        >
+          <el-option
+            v-for="dict in dict.type.device_sys_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item label="设备名称" label-width="70px">
         <el-input
-          v-model="queryParams.performName"
+          v-model="queryParams.deviceName"
           placeholder="设备名称"
           clearable
           style="width: 240px;"
@@ -49,16 +55,20 @@
 
     <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="memberMobile" />
+      <el-table-column label="订单号" align="center" prop="orderId" />
+      <el-table-column label="用户身份证信息" align="center" prop="idCard" />
       <el-table-column label="核销剧目" align="center" prop="performName" />
       <el-table-column label="票务名称" align="center" prop="goodsName" />
       <el-table-column label="座位类型" align="center" prop="seatTypeName" />
-      <el-table-column label="核销设备类型" align="center" prop="quantity" />
-      <el-table-column label="设备名称" align="center" prop="refundReason" />
-      <el-table-column label="核销时间" align="center" prop="payTime" width="160" >
+      <el-table-column label="核销设备类型" align="center" prop="deviceType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.device_sys_type" :value="scope.row.deviceType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="设备名称" align="center" prop="deviceName" />
+      <el-table-column label="核销时间" align="center" prop="createTime" width="160" >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.payTime) }}</span>
+          <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
     </el-table>
@@ -79,12 +89,12 @@
 
 <script>
 
-import { pageList } from '@/api/order/orderMr'
+import { pageList } from '@/api/order/writeOffMr'
 import detailsDia from "./dialog/details.vue";
 
 export default {
   name: "agreement",
-  dicts: ['agreement_type'],
+  dicts: ['device_sys_type'],
   components: { detailsDia },
   data() {
     return {
@@ -147,13 +157,9 @@ export default {
     resetQuery() {
       this.dateRange = [];
       this.$set(this.queryParams, 'orderId', '');
-      this.$set(this.queryParams, 'status', '');
-      this.$set(this.queryParams, 'memberMobile', '');
-      this.$set(this.queryParams, 'source', '');
-      this.$set(this.queryParams, 'performName', '');
-      this.$set(this.queryParams, 'payBeginTime', '');
-      this.$set(this.queryParams, 'payEndTime', '');
-      this.$set(this.queryParams, 'time', '');
+      this.$set(this.queryParams, 'idCard', '');
+      this.$set(this.queryParams, 'deviceType', '');
+      this.$set(this.queryParams, 'deviceName', '');
       this.queryParams.pageNum = 1;
       this.handleQuery();
     },

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

@@ -163,7 +163,10 @@
             :on-change="beforeAvatarUpload"
             :file-list="form.fileList">
             <el-button size="small" type="primary"  :loading="uploadLoading">{{form.viewerList && form.viewerList.length == 0 ? '导入excel' : '重新导入excel'}}</el-button>
-            <div slot="tip" class="el-upload__tip">上传excel文件,导入模板表头序号、姓名、身份证号码</div>
+            <div slot="tip" class="el-upload__tip">
+              上传excel文件,导入模板表头序号、姓名、身份证号码
+              <i  @click="handleExport" style="color: #1890ff;cursor: pointer;">下载模板</i>
+            </div>
           </el-upload>
           <div v-if="form.viewerList && form.viewerList.length > 0">
             <el-table :data="form.viewerList" style="width: 100%" border>
@@ -193,7 +196,7 @@
 </template>
 
 <script>
-import { saveAndEdit, getSelectById, uploadExcel, queryPrice } from "@/api/team/applicationMr";
+import { saveAndEdit, getSelectById, uploadExcel, queryPrice,downloadModel } from "@/api/team/applicationMr";
 import { pagePerformTimeList } from '@/api/schedulingMr/schedulingMr'
 import Editor from "@/components/Editor";
 import { getToken } from "@/utils/auth";
@@ -552,6 +555,27 @@ export default {
         this.uploadLoading = false;
       }
     },
+    /** 导出按钮操作 */
+    async handleExport() {
+      //this.downloadGet('member/marketTeamApply/downTeamApplyTemplate', {}, `观影人员上传模板_${new Date().getTime()}.xlsx`)
+      try {
+        let res = await downloadModel()
+        let fileName = `观影人员上传模板_${new Date().getTime()}.xlsx`
+        let blob=new Blob([res])
+        let href=window.URL.createObjectURL(blob)
+        // 创建下载按钮a标签进行自动点击下载,下载完后移除按钮a标签
+        let downloadDom=document.createElement('a')
+        downloadDom.href=href
+        downloadDom.download=fileName //--不是必须 若需要【前端重命名文件夹】的话这句代码就需要
+        document.body.appendChild(downloadDom)
+        downloadDom.click()
+        document.body.removeChild(downloadDom)
+        window.URL.revokeObjectURL(href)
+
+      } catch (error) {
+        
+      }
+    }
   },
 };
 </script>