Commit ff859a2b by 罗承锋

添加用户院校配置、单移产品修改、添加羊城通、存量升级、学校管理套餐添加收起按钮、修改统一证件审核

parent 22421249
...@@ -12,7 +12,7 @@ const local = { ...@@ -12,7 +12,7 @@ const local = {
'^/api/auth/ciop': '/auth/ciop' '^/api/auth/ciop': '/auth/ciop'
} }
}, },
'/api/api/ciop': { '/api/ciop': {
target: 'http://localhost:11091', target: 'http://localhost:11091',
//target: 'http://132.97.54.60:58334', //target: 'http://132.97.54.60:58334',
ws: false, ws: false,
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
that.$store.commit('TOGGLE_DEVICE', 'desktop') that.$store.commit('TOGGLE_DEVICE', 'desktop')
that.$store.dispatch('setSidebar', true) that.$store.dispatch('setSidebar', true)
} }
}) })
} }
} }
......
...@@ -10,6 +10,9 @@ let choosepages = (params) => postAction(prefix + "/packageManagement/package/ch ...@@ -10,6 +10,9 @@ let choosepages = (params) => postAction(prefix + "/packageManagement/package/ch
// 编辑 // 编辑
let modify = (params) => postAction(prefix + "/productManagement/package/update" , params); let modify = (params) => postAction(prefix + "/productManagement/package/update" , params);
// 批量下架
let batchUpdate = (params) => postAction(prefix + "/packageManagement/package/batchUpdate", params);
//新增 //新增
let insert= (params) => postAction(prefix + "/packageManagement/package/insert" , params); let insert= (params) => postAction(prefix + "/packageManagement/package/insert" , params);
...@@ -18,5 +21,5 @@ let delet= (params) => postAction(prefix + "/packageManagement/package/delete" , ...@@ -18,5 +21,5 @@ let delet= (params) => postAction(prefix + "/packageManagement/package/delete" ,
//套餐全称列表 //套餐全称列表
let packageAllList= () => postAction(prefix + "/packageManagement/package/packageAllList" ); let packageAllList= () => postAction(prefix + "/packageManagement/package/packageAllList" );
export { export {
findByList,choosepages,modify,insert,packageAllList,delet findByList,choosepages,modify,insert,packageAllList,delet, batchUpdate
} }
<template>
<div class="flex-container">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<!-- 搜索区域 -->
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="12">
<a-form-item label="时间选择:">
<a-range-picker @change="onChange" format="YYYY-MM-DD HH:mm:ss"/>
</a-form-item>
</a-col>
<a-col :md="3" :sm="6">
<a-form-item label="客户类型:">
<a-select v-model="queryParam.userType" style="width: 120px">
<a-select-option value>全部客户</a-select-option>
<a-select-option value="1">老用户办理</a-select-option>
<a-select-option value="0">新用户办理</a-select-option>
<a-select-option value="2">老用户续约</a-select-option>
<a-select-option value="3">融合办理</a-select-option>
<a-select-option value="4">抽奖业务</a-select-option>
<a-select-option value="5">单宽业务</a-select-option>
<a-select-option value="6">羊城通业务</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="4" :sm="12">
<a-form-item label="订单编号:">
<a-input placeholder="订单编号" v-model="queryParam.orderNumber"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="12">
<a-form-item label="客户姓名:">
<a-input placeholder="客户姓名" v-model="queryParam.customerName"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="12">
<a-form-item label="办理号码:">
<a-input placeholder="办理号码" v-model="queryParam.businessNumber"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="12">
<a-form-item label="联系号码:">
<a-input placeholder="联系号码" v-model="queryParam.contactNumber"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="12">
<a-form-item label="合伙人姓名:">
<a-input placeholder="合伙人姓名" v-model="queryParam.hehuorenName"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="12">
<a-form-item label="合伙人学校:">
<a-input placeholder="合伙人学校" v-model="queryParam.hehuorenSchool"></a-input>
</a-form-item>
</a-col>
<a-col :md="3" :sm="6">
<a-form-item label="状态:">
<a-select v-model="queryParam.orderStatus">
<a-select-option value>请选择</a-select-option>
<a-select-option value="待处理">待处理</a-select-option>
<a-select-option value="待选号">待选号</a-select-option>
<a-select-option value="待识别">待识别</a-select-option>
<a-select-option value="待活体">待活体</a-select-option>
<a-select-option value="审核中">审核中</a-select-option>
<a-select-option value="待审核">待配送</a-select-option>
<a-select-option value="待审核">待审核</a-select-option>
<a-select-option value="待受理">待受理</a-select-option>
<a-select-option value="已发货">已发货</a-select-option>
<a-select-option value="已完成">已完成</a-select-option>
<a-select-option value="异常单">异常单</a-select-option>
<a-select-option value="待派奖">待派奖</a-select-option>
<a-select-option value="已派奖">已派奖</a-select-option>
<a-select-option value="重新下单">重新下单</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="12">
<a-button @click="search()" type="primary">查询</a-button>
<a-button @click="handleSubmit" style="margin-left: 10px">导出</a-button>
<a-dropdown>
<a-menu slot="overlay" @click="handleMenuClick">
<a-menu-item key="1">
<a-icon type="arrow-up"/>
受理单
</a-menu-item>
<a-menu-item key="2">
<a-icon type="arrow-up"/>
快递
</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px">
导入
<a-icon type="down"/>
</a-button>
</a-dropdown>
</a-col>
</a-row>
</a-form>
</div>
<!--列表-->
<s-table
:columns="columns"
:data="rowdata"
bordered
ref="table"
size="small"
class="flex-filling"
:locale="emptyText"
>
<!--拦截器-->
<template slot="productLastUpdateTime" slot-scope="text">{{ text | dayjs}}</template>
<!--拦截器-->
<template slot="productCreateTime" slot-scope="text">{{ text | dayjs}}</template>
<template slot="text" slot-scope="text">
<p style="white-space: pre-line;">{{text}}</p>
</template>
<template slot="userType" slot-scope="text">
<p v-if="text=='1'">老用户办理</p>
<p v-if="text=='0'">新用户办理</p>
<p v-if="text=='2'">老用户续约</p>
<p v-if="text=='3'">融合办理</p>
<p v-if="text=='4'">抽奖业务</p>
<p v-if="text=='5'">单宽业务</p>
<p v-if="text=='6'">羊城通业务</p>
</template>
<template slot="studentCardCheckStatus" slot-scope="text">
<p v-if="text=='0'">未审核</p>
<p v-if="text=='1'">已审核</p>
</template>
<template slot="operation" slot-scope="text, record">
<span>
<a @click="showDrawer(record)">查看</a>
<a-divider type="vertical"/>
<a @click="abnormal(record.id)">设为异常单</a>
<a-divider v-if="record.orderStatus === '待审核' " type="vertical"/>
<a v-show="record.orderStatus === '待审核'" @click="reviewStudentIdCard(record)">审核学生证</a>
</span>
</template>
</s-table>
<!----抽屉-->
<a-drawer width="1280" placement="right" :closable="false" @close="onClose" :visible="visible">
<a-form :form="orderInfo">
<a-tabs type="card">
<a-tab-pane tab="订单基本信息" key="1" activeKey>
<a-divider orientation="left">基础信息</a-divider>
<a-row>
<a-col :span="6">
<p>客户名称:{{ orderInfo.customerName }}</p>
</a-col>
<a-col :span="6">
<p>卡品:{{ orderInfo.kapin }}</p>
</a-col>
<a-col :span="6">
<p>用户学校:{{ orderInfo.userSchool }}</p>
</a-col>
<a-col :span="6">
<p>小白卡单号:{{ orderInfo.xbOrderId }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<p>订单完成时间:{{ orderInfo.successTime | dayjs }}</p>
</a-col>
<a-col :span="6">
<p>学号:{{ orderInfo.studentNumber }}</p>
</a-col>
<a-col :span="6">
<p>班级:{{ orderInfo.classNumber }}</p>
</a-col>
<a-col :span="6">
<p>父母名字:{{ orderInfo.parentName }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<p>联系电话:{{ orderInfo.contactNumber }}</p>
</a-col>
<a-col :span="6">
<p>身份证号:{{ orderInfo.idCard }}</p>
</a-col>
<a-col :span="6">
<p>办理号码:{{ orderInfo.businessNumber }}</p>
</a-col>
<a-col :span="6">
<p>创建时间:{{ orderInfo.createTime | dayjs }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<p>地址:{{ orderInfo.address }}</p>
</a-col>
<a-col :span="6">
<p>省市县:{{ orderInfo.site }}</p>
</a-col>
<a-col :span="6">
<p>资费:{{ orderInfo.expenses }}</p>
</a-col>
<a-col :span="6">
<p>办理标识:{{ orderInfo.identifyin }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<p>备注:{{ orderInfo.remarks }}</p>
</a-col>
<a-col :span="12">
<p>错误原因:{{ orderInfo.checkFail }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<p>宽带账号:{{ orderInfo.netNumber }}</p>
</a-col>
<a-col :span="6">
<p>宽带密码:{{ orderInfo.netPassword }}</p>
</a-col>
<a-col :span="6">
<p>奖品账号:{{ orderInfo.giftAccount }}</p>
</a-col>
<a-col :span="6">
<p>奖品密码:{{ orderInfo.giftPassword }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<p>学生证审核状态:{{ orderInfo.studentCardCheckStatus }}</p>
</a-col>
<a-col :span="6">
<p>宽带订单id:{{ orderInfo.kdOrderId }}</p>
</a-col>
<a-col :span="6">
<p>智能平台订单号:{{ orderInfo.orderId }}</p>
</a-col>
<a-col :span="6">
<p>智能平台订单状态:{{ orderInfo.thStatus }}</p>
</a-col>
</a-row>
<a-divider orientation="left">附件</a-divider>
<div v-show="!imgShow">无附件</div>
<div v-show="imgShow" style="margin-bottom: 50px">
<a-carousel arrows dotsClass="slick-dots slick-thumb">
<a slot="customPaging" slot-scope="props">
<img :src="getImgUrl(props.i)"/>
</a>
<div @click="pictureSize" v-for="item in certificatePhoto.length">
<img :style="imgStype" :src="certificatePhoto[item - 1]"/>
</div>
</a-carousel>
</div>
<a-divider orientation="left">受理信息</a-divider>
<a-row>
<a-col :span="6">
<p>客户名称 :{{ orderInfo.customerName }}</p>
</a-col>
<a-col :span="6">
<p>联系电话 :{{ orderInfo.contactNumber }}</p>
</a-col>
<a-col :span="6">
<p>现有套餐 :{{ orderInfo.nowPackage }}</p>
</a-col>
<a-col :span="6">
<p>升级套餐 :{{ orderInfo.businessPackage }}</p>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<p>受理人:{{ orderInfo.acceptName }}</p>
</a-col>
<a-col :span="6">
<p>受理结果 :{{ orderInfo.acceptResult }}</p>
</a-col>
<a-col :span="6">
<p>受理意见 :{{ orderInfo.acceptComment }}</p>
</a-col>
<a-col :span="6">
<p>受理时间 :{{ orderInfo.acceptDate | dayjs }}</p>
</a-col>
</a-row>
</a-tab-pane>
<a-tab-pane tab="操作日志" key="3">
<a-list :grid="{ column: 4 }" :dataSource="title">
<a-list-item slot="renderItem" slot-scope="item, index">
<a-card :title="item.title" :bordered="false">
<a-card-grid style="width:100%;" v-for="item in abnormalInfo">
<div
style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;height: 20px"
>
<a-tooltip placement="left">
<template slot="title">{{item[index]}}</template>
{{ item[index] }}
</a-tooltip>
</div>
</a-card-grid>
</a-card>
</a-list-item>
</a-list>
</a-tab-pane>
</a-tabs>
</a-form>
</a-drawer>
<a-modal
title="批量导入"
:visible="modifyvisible"
@ok="createfunctionOk"
@cancel="createfunctionCancel"
html-type="submit"
width="400px"
>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p style="text-align:center">{{ importTile }}</p>
</a-col>
</a-row>
<import-btn :url="importUrl" :responseFun="doPush">
<a-tooltip placement="topLeft" title="导入文件" arrowPointAtCenter>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p>
选择文件:
<a-button type="primary">选择文件</a-button>
</p>
</a-col>
</a-row>
</a-tooltip>
</import-btn>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p v-show="YRYMmoBan">
模板下载:
<a-button type="primary" @click="downloadMoBan">一人一码受理单模板</a-button>
</p>
<p v-show="KDmoBan">
模板下载:
<a-button type="primary" @click="downloadMoBanKD">快递清单模板</a-button>
</p>
</a-col>
</a-row>
<a-row :gutter="24" :v-show="KDmoBan">
<a-col :md="24" :sm="12">
<p>说明:</p>
<p>1.批量导入请严格按照模版进行导入;</p>
</a-col>
</a-row>
</a-modal>
<a-modal
title="学生证审核"
:visible="review"
@ok="reviewOk"
@cancel="reviewCancel"
html-type="submit"
width="1024px"
>
<div align="center">
<img :src="reviewStudentImg"/>
</div>
<a-row :gutter="24" style="text-align: right">
<a-col :md="6" :sm="12">
<p>审核状态:</p>
</a-col>
<a-col :md="6" :sm="12">
<a-radio-group :options="options" v-model="reviewStudent.studentCardCheckStatus"/>
</a-col>
</a-row>
<a-row :gutter="24" style="text-align: right">
<a-col :md="6" :sm="12">
<p>审核不通过原因:</p>
</a-col>
<a-col :md="12" :sm="12">
<a-input placeholder="审核不通过原因" v-model="reviewStudent.checkFail"></a-input>
</a-col>
</a-row>
</a-modal>
</div>
</template>
<script>
import STable from "@/components/table";
import {
orderList,
download,
abnormal,
selectOrderHis,
downloadMoBan,
downloadMoBanKD,
reviewStudentIdCard
} from "../../../api/school-center/orderAPI";
import {cloneObject, exportFile} from "@/utils/util";
import moment from "moment";
import ConstantActivity from "@/constant/ConstantActivity";
import ImportBtn from "../../../components/sysmanage/ImportBtn";
const options = [
{label: "审核通过", value: "1"},
{label: "审核不通过", value: "0"}
];
export default {
name: "orderView",
components: {
STable,
ImportBtn
},
data() {
return {
emptyText: {emptyText: '暂无数据'},
reviewStudentImg: "",
reviewStudent: {
id: "",
checkFail: "",
studentCardCheckStatus: ""
},
options,
review: false,
imgShow: false,
imgStype: {width: "300px", heigth: "300px"},
baseUrl:
"https://raw.githubusercontent.com/vueComponent/ant-design-vue/master/components/vc-slick/assets/img/react-slick/",
certificatePhoto: [],
childrenDrawer: false,
YRYMmoBan: false,
KDmoBan: false,
importUrl: "",
importTile: "",
modifyvisible: false,
title: ConstantActivity.title,
Formtable: this.$form.createForm(this),
visible: false,
abnormalInfo: [],
pStyle: {
fontSize: "16px",
color: "rgba(0,0,0,0.85)",
lineHeight: "24px",
display: "block",
marginBottom: "16px"
},
pStyle2: {
marginBottom: "24px"
},
apis: '',
queryParam: {
createTimeStart: "",
createTimeEnd: "",
userType: "",
orderNumber: "",
customerName: "",
businessNumber: "",
contactNumber: "",
hehuorenSchool: "",
hehuorenName: "",
orderStatus: ""
},
orderInfo: {},
columns: [
{dataIndex: "customerName", width: 100, title: "客户姓名", fixed: "left"},
{dataIndex: "orderNumber", width: 200, title: "订单编号", fixed: "left"},
{dataIndex: "orderStatus", width: 100, title: "订单状态"},
{
dataIndex: "studentCardCheckStatus",
width: 100,
title: "学生证状态",
scopedSlots: {customRender: "studentCardCheckStatus"}
},
{dataIndex: "businessPackage", width: 120, title: "升级套餐"},
{
dataIndex: "userType",
width: 100,
title: "订单类型",
scopedSlots: {customRender: "userType"}
},
{dataIndex: "contactNumber", width: 160, title: "联系号码"},
{dataIndex: "businessNumber", width: 160, title: "办理号码"},
{dataIndex: "kapin", width: 200, title: "办理套餐"},
{dataIndex: "hehuorenSchool", width: 220, title: "合伙人学校"},
{dataIndex: "hehuorenName", width: 150, title: "合伙人姓名"},
{dataIndex: "hehuorenPhone", width: 150, title: "合伙人手机"},
{
dataIndex: "operation",
width: 180,
title: "操作",
scopedSlots: {customRender: "operation"},
fixed: "right"
}
],
rowdata: parameter => {
const env = process.env.NODE_ENV; //获取当前环境
if (env === 'development') { //测试环境默认添加前缀
this.apis = '/api/';
}
let params = {
pageNo: parameter.pageNo,
pageSize: parameter.pageSize
};
let obj = cloneObject(this.queryParam);
//表示
return broadBandList(Object.assign(params, obj)).then(res => {
console.log("宽带订单");
console.log(res);
let data = {};
if (res.state !== "success") {
this.$message.error("查询失败!", 5);
this.emptyText.emptyText = '查询失败!'
data = {
data: [],
pageSize: parameter.pageSize,
pageNo: 1,
totalCount: 0
};
} else {
data = {
data: res.data.records,
pageSize: parameter.pageSize,
pageNo: parameter.pageNo,
totalCount: res.data.total
};
}
return data;
});
}
};
},
methods: {
moment,
handleMenuClick(e) {
if (e.key == "1") {
this.handleSubmit1();
}
if (e.key == "2") {
this.handleSubmit2();
}
},
reviewStudentIdCard(res) {
this.reviewStudentImg = this.apis + res.studenCard;
/*this.reviewStudentImg =this.baseUrl+'abstract0'+1+'.jpg'*/
this.reviewStudent.studentCardCheckStatus = res.studentCardCheckStatus;
this.reviewStudent.checkFail = res.checkFail;
this.reviewStudent.id = res.id;
this.review = true;
},
reviewOk() {
if (this.reviewStudent.studentCardCheckStatus == "0") {
if (
this.reviewStudent.checkFail == "" ||
this.reviewStudent.checkFail == undefined
) {
this.$notification.error({
message: "审核不通过必须填写不通过原因!",
description: "",
duration: 4
});
}
} else {
if (
this.reviewStudent.checkFail != "" &&
this.reviewStudent.checkFail != undefined
) {
this.$notification.error({
message: "审核通过无须填写不通过原因!",
description: "",
duration: 4
});
}
}
if (
this.reviewStudent.checkFail == "" ||
this.reviewStudent.checkFail == undefined
) {
this.reviewStudent.checkFail == "";
}
let obj = cloneObject(this.reviewStudent);
reviewStudentIdCard(Object.assign(obj)).then(res => {
if (res.state == "success") {
this.$notification.success({
message: "审核成功!",
description: "",
duration: 4
});
this.search();
} else {
this.$notification.error({
message: "审核失败!",
description: "",
duration: 4
});
}
});
this.reviewClear();
},
reviewCancel() {
this.reviewClear();
},
reviewClear() {
this.reviewStudentImg = "";
this.reviewStudent.id = "";
this.reviewStudent.studentCardCheckStatus = "";
this.reviewStudent.checkFail = "";
this.review = false;
},
pictureSize() {
if (this.imgStype.width == "700px") {
this.imgStype = {width: "300px", heigth: "300px"};
} else {
this.imgStype = {width: "700px", heigth: "500px"};
}
},
getImgUrl(i) {
return this.certificatePhoto[i];
},
showChildrenDrawer() {
this.childrenDrawer = true;
},
onChildrenDrawerClose() {
this.childrenDrawer = false;
},
downloadMoBan: function () {
exportFile(downloadMoBan(), "一人一码受理单.xlsx");
},
downloadMoBanKD: function () {
exportFile(downloadMoBanKD(), "快递清单.xlsx");
},
// 执行上传
doPush(res) {
console.log(res);
if (!res || !res.response) {
this.$message.error("上传文件出错!", 10);
return false;
}
const response = res.response;
if (response.state !== "success") {
this.$message.error(response.msg ? response.msg : "上传文件出错!", 10);
return false;
}
this.$message.success("上传成功!" + response.data, 5);
},
createfunctionCancel() {
this.modifyvisible = false;
this.clearmodel();
},
clearmodel() {
this.importTile = "";
this.YRYMmoBan = false;
this.KDmoBan = false;
this.importUrl = "";
},
createfunctionOk() {
this.modifyvisible = false;
this.clearmodel();
},
handleSubmit1() {
this.importTile = "批量导入受理单";
this.YRYMmoBan = true;
this.importUrl = "manager/ciop/order/importDate";
this.modifyvisible = true;
},
handleSubmit2() {
this.importTile = "批量导入快递清单";
this.KDmoBan = true;
this.importUrl = "manager/ciop/order/importExpressDelivery";
this.modifyvisible = true;
},
search() {
this.$refs.table.refresh({search: true});
},
onClose() {
this.certificatePhoto = [];
this.orderInfo = {
acceptResult: "",
nowPackage: "",
businessPackage: "",
acceptName: "",
acceptComment: "",
acceptDate: "",
customerName: "",
kapin: "",
userSchool: "",
xbOrderId: "",
successTime: "",
orderId: "",
studentNumber: "",
classNumber: "",
parentName: "",
contactNumber: "",
idCard: "",
businessNumber: "",
createTime: "",
address: "",
site: "",
remarks: "",
checkFail: "",
expenses: "",
identifying: "",
netNumber: "",
netPassword: "",
giftAccount: "",
giftPassword: "",
kuaidiOrder: "",
company: "",
studentCardCheckStatus: "",
kdOrderId: "",
thStatus: ""
};
this.visible = false;
},
showDrawer(data) {
this.certificatePhoto.push(this.apis + data.idCardz);
this.certificatePhoto.push(this.apis + data.idCardf);
this.certificatePhoto.push(this.apis + data.idCardzs);
this.certificatePhoto.push(this.apis + data.studenCard);
/* this.certificatePhoto.push('http://yrym.winsun-aly.com/gdtel-xyzx-hhr/images/yrym-ruanyan-logo.png')
this.certificatePhoto.push('http://yrym.winsun-aly.com/gdtel-xyzx-hhr/images/yrym-ruanyan-logo.png')
this.certificatePhoto.push('http://yrym.winsun-aly.com/gdtel-xyzx-hhr/images/yrym-ruanyan-logo.png')
this.certificatePhoto.push('http://yrym.winsun-aly.com/gdtel-xyzx-hhr/images/yrym-ruanyan-logo.png')*/
if (
this.certificatePhoto[0] == '/api/null' &&
this.certificatePhoto[1] == '/api/null' &&
this.certificatePhoto[2] == '/api/null' &&
this.certificatePhoto[3] == '/api/null'
) {
this.imgShow = false;
} else {
this.imgShow = true;
}
this.orderInfo = {
acceptResult: data.acceptResult,
nowPackage: data.nowPackage,
businessPackage: data.businessPackage,
acceptName: data.acceptName,
acceptComment: data.acceptComment,
acceptDate: data.acceptDate,
customerName: data.customerName,
kapin: data.kapin,
userSchool: data.userSchool,
xbOrderId: data.xbOrderId,
successTime: data.successTime,
orderId: data.orderId,
studentNumber: data.studentNumber,
classNumber: data.classNumber,
parentName: data.parentName,
contactNumber: data.contactNumber,
idCard: data.idCard,
businessNumber: data.businessNumber,
createTime: data.createTime,
address: data.address,
site: data.site,
remarks: data.remarks,
checkFail: data.checkFail,
expenses: data.expenses,
identifying: data.identifying,
netNumber: data.netNumber,
netPassword: data.netPassword,
giftAccount: data.giftAccount,
giftPassword: data.giftPassword,
kuaidiOrder: data.kuaidiOrder,
company: data.company,
studentCardCheckStatus: data.studentCardCheckStatus,
kdOrderId: data.kdOrderId,
thStatus: data.thStatus
};
this.selectOrderHis(data.id);
this.visible = true;
},
//时间事件
onChange(date, dateString) {
if (dateString.length == 0) {
this.queryParam.createTimeStart = "";
this.queryParam.createTimeEnd = "";
} else {
this.queryParam.createTimeStart = dateString[0];
this.queryParam.createTimeEnd = dateString[1];
}
},
handleSubmit() {
let downqueryParam = this.queryParam;
download(downqueryParam).then(res => {
if (res.state == "success") {
this.search();
this.$message.success(res.data, 5);
} else {
this.$message.error(res.msg, 5);
}
})
/* if (this.callback == true) {
this.$message.warn("正在导出中...", 5);
}
let downqueryParam = this.queryParam;
let nowdate = moment().format("YYYY-MM-DD");
this.callback = true;
exportFile(
download(downqueryParam),
"订单清单" + nowdate + ".xls",
this.downloadstatu
);*/
},
/* downloadstatu(exportId) {
let nowdate = moment().format("YYYY-MM-DD");
exportFile(
uploadExcel({exportId}),
"订单清单" + nowdate + ".xls",
);
},*/
selectOrderHis(orderId) {
selectOrderHis({orderId}).then(res => {
let liu = res.data;
for (let i = 0; i < liu.length; i++) {
let resdate = [];
resdate.push(liu[i]["operator"]);
let startTime = moment(new Date(liu[i]["create_date"])).format(
this.YYYY_MM_DD_HH_MI_SS
);
resdate.push(startTime);
resdate.push(liu[i]["status"]);
this.abnormalInfo.push(resdate);
}
});
},
abnormal(orderId) {
abnormal({orderId}).then(res => {
if (res.state == "success") {
this.search();
this.$message.success(res.data, 5);
} else {
this.$message.error(res.msg, 5);
}
});
}
}
};
</script>
<style scoped>
.ant-carousel >>> .slick-dots {
height: auto;
}
.ant-carousel >>> .slick-slide img {
border: 5px solid #fff;
display: block;
margin: auto;
max-width: 80%;
}
.ant-carousel >>> .slick-thumb {
bottom: -45px;
}
.ant-carousel >>> .slick-thumb li {
width: 60px;
height: 45px;
}
.ant-carousel >>> .slick-thumb li img {
width: 100%;
height: 100%;
filter: grayscale(100%);
}
.ant-carousel >>> .slick-thumb li.slick-active img {
filter: grayscale(0%);
}
</style>
<template>
<div class="flex-container">
<!-- 查询区域 -->
<div class="table-page-search-wrapper" v-show="searchShow">
<!-- 搜索区域 -->
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item label="激活号码:">
<a-input placeholder="" v-model="queryParam.orderPhone"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="销售人:">
<a-input placeholder="" v-model="queryParam.name"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="4">
<a-form-item label="销售县分">
<a-select v-model="queryParam.salesSubst" @change="getSchool">
<a-select-option key="">--全部--</a-select-option>
<a-select-option v-for="d in subNames" :key="d.value" :value="d.value">{{d.text}}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="8" :sm="8">
<a-form-item label="销售学校">
<a-select v-model="queryParam.salesSchool">
<a-select-option key="">--全部--</a-select-option>
<a-select-option v-for="d in schoolNames" :key="d.value" :value="d.value">{{d.text}}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="激活时间:">
<a-range-picker @change="onChangeActivateTime" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="上传时间:">
<a-range-picker @change="onChangeCreateTime" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="销售账号:">
<a-input placeholder="" v-model="queryParam.account"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="审核状态">
<a-select placeholder="请选择" v-model="queryParam.status">
<a-select-option key="">请选择</a-select-option>
<a-select-option key="0">重复放号</a-select-option>
<a-select-option key="1">未审核</a-select-option>
<a-select-option key="2">系统审核不通过</a-select-option>
<a-select-option key="3">充值审核通过</a-select-option>
<a-select-option key="4">充值审核不通过</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="销售时段">
<a-select placeholder="请选择" v-model="queryParam.preType">
<a-select-option key="">请选择</a-select-option>
<a-select-option key="前置">前置</a-select-option>
<a-select-option key="开学">开学</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="审核锁定">
<a-select placeholder="请选择" v-model="queryParam.lockState">
<a-select-option key="">全部</a-select-option>
<a-select-option key="是"></a-select-option>
<a-select-option key="否"></a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-button @click="search()" type="primary">查询</a-button>
<a-divider type="vertical"/>
<a-button v-show="!callback" @click="exportList()" style="margin-left: 10px">导出</a-button>
<a-dropdown>
<a-menu slot="overlay" @click="handleMenuClick">
<a-menu-item key="1">
<a-icon type="arrow-up" />放号上传
</a-menu-item>
<a-menu-item key="2">
<a-icon type="arrow-up" />充值审核
</a-menu-item>
<a-menu-item key="3">
<a-icon type="arrow-up" />批量修改导入
</a-menu-item>
<a-menu-item key="4">
<a-icon type="arrow-up" />锁定导入
</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px">
导入
<a-icon type="down" />
</a-button>
</a-dropdown>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-page-search-wrapper show-search-button">
<a-button size="small" type="link" @click="changeSearchShow">
<span v-if="searchShow">
收起<a-icon type='up'/>
</span>
<span v-else>
展开<a-icon type='down'/>
</span>
</a-button>
</div>
<!--列表-->
<s-table :locale="emptyText" :columns="columns" :data="rowdata" :pageSize="pageSize" bordered ref="table" size="small" class="flex-filling">
<template slot="imageUrl" slot-scope="text">
<img style="width: 20%" :src="apis + text" @click="imgClick(text)">
</template>
<template slot="operation" slot-scope="text,record">
<!-- <a @click="modifyfunction(record)">编辑</a>-->
<!--<a-divider type="vertical"/>-->
<a @click="showModal(record)">备注</a>
<!--<a-divider type="vertical"/>-->
</template>
<template slot="orderTypeScope" slot-scope="text">
<p v-if="text=='1'">放号登记</p>
<p v-if="text=='0'">新用户办卡</p>
<p v-if="text=='2'">存量升级</p>
<p v-if="text=='3'">小白卡</p>
<p v-if="text=='4'">羊城通</p>
<p v-if="text=='5'">线上预制卡</p>
<p v-if="text=='6'">线上小白卡</p>
<p v-if="text=='7'">自助终端</p>
</template>
<template slot="statusScope" slot-scope="text">
<p v-if="text=='0'">重复放号</p>
<p v-if="text=='1'">未审核</p>
<p v-if="text=='2'">系统审核不通过</p>
<p v-if="text=='3'">充值审核通过</p>
<p v-if="text=='4'">系统审核不通过</p>
</template>
</s-table>
<a-modal v-model="visible" title="备注" ok-text="确认" cancel-text="取消" @ok="hideModal">
<span>备注内容:</span>
<a-input v-model="customRemark"></a-input>
</a-modal>
<a-modal
title="批量导入"
:visible="modifyvisible"
@ok="createfunctionOk"
@cancel="createfunctionCancel"
html-type="submit"
width="400px"
>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p style="text-align:center">{{ importTile }}</p>
</a-col>
</a-row>
<import-btn :url="importUrl" :responseFun="doPush">
<a-tooltip placement="topLeft" title="导入文件" arrowPointAtCenter>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p>
选择文件:
<a-button type="primary">选择文件</a-button>
</p>
</a-col>
</a-row>
</a-tooltip>
</import-btn>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p v-show="FHTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplateFH">放号上传模板</a-button>
</p>
<p v-show="CZTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplateCZ">充值审核模板</a-button>
</p>
<p v-show="PLTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplatePL">批量修改模板</a-button>
</p>
<p v-show="SDTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplateSD">锁定导入模板</a-button>
</p>
<!-- <p v-show="LJTemplate">-->
<!-- 模板下载:-->
<!-- <a-button type="primary" @click="downloadTemplateLJ">累计审核模板</a-button>-->
<!-- </p>-->
</a-col>
</a-row>
</a-modal>
</div>
</template>
<script>
import STable from '@/components/table';
import moment from 'dayjs'
import {
getList,
deleteOrder,getSubstList,getSchoolList,
downloadTemplateFH,downloadTemplateCZ,downloadTemplatePL, downloadTemplateSD,
downloadResult,exportList,customRemark
} from "@/api/school-center/salesListAPI"
import {cloneObject,exportFile} from '@/utils/util';
import ImportBtn from "../../../components/sysmanage/ImportBtn";
import {getSchoolNames, initSubstName} from "../../../api/school-center/louZhang/louZhangManagerAPI";
export default {
name: "clsjSalesList",
components: {
STable,ImportBtn
},
data: function () {
return {
pageSize: 200,
searchShow: true,
emptyText: {emptyText: '暂无数据'},
previewVisible: false,
previewImage: '',
fileList: [],
apis:'',
fileid:{},
visible: false,
customRemark: '',
customId: 0,
brackgroundurl:"manager/ciop/school/schoolManagement/qrcodeUpload",
// form
Formtable: this.$form.createForm(this, {name: 'Formtable'}),
FHTemplate: false,
CZTemplate: false,
PLTemplate: false,
SDTemplate: false,
importUrl: "",
importTile: "",
modifyvisible: false,
modifyForm: {
id: '',
title: '',
desc: '',
integral: '',
activityType: '',
subclass: '',
imageUrl: '',
range: '',
sort: '',
},
subNameList: [],
packageName:[],
chosePages:[],
products:[],
schoolNames: [],
subNames: [],
//输入框列表
queryParam: {
orderPhone: '',
name: '',
account: '',
status: '',
orderType: '2',
salesSubst: '',
salesSchool: '',
createTimeStart: '',
createTimeEnd: '',
activateTimeStart: '',
activateTimeEnd: '',
preType: '',
lockState: ''
},
columns: [
{dataIndex: 'salesSchool', width: 200, title: '销售学校', align: "center"},
{dataIndex: 'salesSubst', width: 80, title: '销售县分', align: "center"},
{dataIndex: 'orderPhone', width: 120, title: '电信激活号码', align: "center"},
{dataIndex: 'name', width: 80, title: '放号人', align: "center"},
{dataIndex: 'account', width: 120, title: '放号人账号', align: "center"},
{dataIndex: 'createTime', width: 160, title: '上传时间', align: "center",
customRender: (text, row, index) => {
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{
dataIndex: 'orderType', width: 80, title: '订单类型', align: "center",
scopedSlots: {customRender: "orderTypeScope"}
},
{dataIndex: "preType", width:80, title:'销售时段', align : "center"},
{dataIndex: "lockState", width:80, title:'是否锁定', align : "center"},
{dataIndex: 'networkName', width: 200, title: '所属网点', align: "center"},
{dataIndex: 'networkCode', width: 130, title: '网点编码', align: "center"},
{
dataIndex: 'status', width: 120, title: '审核状态', align: "center",
scopedSlots: {customRender: "statusScope"}
},
{dataIndex: 'remark', width: 240, title: '审核备注', align: "center",ellipsis:true},
{dataIndex: 'auditTime', width: 160, title: '审核时间', align: "center",
customRender: (text, row, index) => {
if (text == null) {
return "";
}
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{dataIndex: 'activateTime', width: 160, title: '激活时间', align: "center",
customRender: (text, row, index) => {
if (text == null) {
return "";
}
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{dataIndex: 'recentlyAmount', width: 80, title: '最近充值', align: "center"},
{dataIndex: 'recentlyBonus', width: 120, title: '最近充值激励', align: "center"},
{dataIndex: 'allBonus', width: 120, title: '应发总激励', align: "center"},
{dataIndex: 'nonSendBonus', width: 80, title: '未发激励', align: "center"},
{dataIndex: 'sendBonus', width: 80, title: '已发激励', align: "center"},
{dataIndex: 'oldCombo', width: 200, title: '原套餐', align: "center"},
{dataIndex: 'upgradeCombo', width: 200, title: '升级套餐', align: "center"},
{dataIndex: 'customRemark', width: 120, title: '备注', align: "center"},
{
dataIndex: 'operation',
width: 120,
title: '操作',
align: "center",
scopedSlots: {customRender: 'operation'},
},
]
,
rowdata: parameter => {
const env = process.env.NODE_ENV; //获取当前环境
if(env === 'development'){ //测试环境默认添加前缀
this.apis = '/api/';
}
let params = {
pageNo: parameter.pageNo,
pageSize: parameter.pageSize
}
//表示
let obj = cloneObject(this.queryParam)
return getList(Object.assign(params, obj)).then(res => {
console.log("列表数据");
console.log(res);
let data = {}
if (res.state !== 'success') {
this.emptyText.emptyText = '查询失败!'
this.$message.error("查询失败!", 5);
data = {
data: [],
pageSize: parameter.pageSize,
pageNo: 1,
totalCount: 0
}
} else {
if (res.data.records.length==0){
return data
}
data = {
data: res.data.records,
pageSize: parameter.pageSize,
pageNo: parameter.pageNo,
totalCount: res.data.total
}
}
return data
})
}
}
},
methods:{
showModal(record) {
if (record == undefined || record == null) {
this.customRemark = "";
this.customId = 0;
}else{
this.customId = record.id;
this.customRemark = record.customRemark;
}
this.visible = true;
},
hideModal() {
this.visible = false;
let params = {};
params.id = this.customId;
params.customRemark = this.customRemark;
customRemark(params).then(res => {
if(res.state == "success"){
this.$message.success(res.data ? res.data : '更新成功', 5)
this.search();
return null;
}else{
this.$message.error(res.data ? res.data : '更新失败', 5)
}
})
},
changeSearchShow() {
this.searchShow = this.searchShow ? false : true;
this.$refs.table.setHeight();
this.$nextTick(() =>{
setTimeout(()=>{ //为防止表头高度变化,延迟300s
this.$refs.table.setHeight();
},100)
})
},
search() {
this.$refs.table.refresh({search: true})
},
handleMenuClick(e) {
if (e.key == "1") {
this.handleSubmit1();
}
if (e.key == "2") {
this.handleSubmit2();
}
if (e.key == "3") {
this.handleSubmit3();
}
if (e.key == "4") {
this.handleSubmit4();
}
},
handleSubmit1() {
this.importTile = "放号上传";
this.FHTemplate = true;
this.importUrl = "manager/ciop/salesList/importOrder";
this.modifyvisible = true;
},
handleSubmit2() {
this.importTile = "充值审核";
this.CZTemplate = true;
this.importUrl = "manager/ciop/salesList/importRechargeData";
this.modifyvisible = true;
},
handleSubmit3() {
this.importTile = "批量修改";
this.PLTemplate = true;
this.importUrl = "manager/ciop/salesList/importBatchUpdate";
this.modifyvisible = true;
},
handleSubmit4() {
this.importTile = "审核锁定";
this.SDTemplate = true;
this.importUrl = "manager/ciop/salesList/importAuditLock";
this.modifyvisible = true;
},
downloadTemplateFH: function() {
exportFile(downloadTemplateFH(), "放号上传清单.xlsx");
},
downloadTemplateCZ: function() {
exportFile(downloadTemplateCZ(), "充值审核清单.xlsx");
},
downloadTemplatePL: function () {
exportFile(downloadTemplatePL(), "批量修改清单.xlsx");
},
downloadTemplateSD: function () {
exportFile(downloadTemplateSD(), "锁定导入清单.xlsx");
},
// downloadTemplateLJ: function() {
// exportFile(downloadMoBanKD(), "累计充值审核清单.xlsx");
// },
createfunctionOk() {
this.modifyvisible = false;
this.clearmodel();
},
createfunctionCancel() {
this.modifyvisible = false;
this.clearmodel();
},
clearmodel() {
this.importTile = "";
this.FHTemplate = false;
this.CZTemplate = false;
this.PLTemplate = false;
this.SDTemplate = false;
this.importUrl = "";
},
// 执行上传
doPush(res) {
console.log(res);
if (!res || !res.response) {
this.$message.error("上传文件出错!", 10);
return false;
}
const response = res.response;
if (response.state !== "success") {
this.$message.error(response.msg ? response.msg : "上传文件出错!", 5);
return false;
}
this.$message.success("上传成功!" + response.data, 5);
if(response.data.msg.indexOf("返回导入结果清单") > -1){
exportFile(downloadResult({"key": response.data.key}), "导入结果清单.xlsx");
}
this.createfunctionCancel();
this.search();
},
deleteOrder(id){
let params = {};
params.id = id;
deleteOrder(params).then(res => {
if(res.state == "success"){
this.$message.success(res.data ? res.data : '删除成功', 5)
this.search();
return null;
}
this.$message.success(res.data ? res.data : '删除失败', 5);
})
},
exportList(){
exportFile(exportList(this.queryParam),'销售清单.xlsx');
},
getSchool() {
this.schoolNames = [];
this.queryParam.salesSchool = '';
getSchoolNames({"substName": this.queryParam.salesSubst}).then((res) => {
if (res.state == "success") {
const result = res.data
result.forEach((r) => {
if (r.schoolName === 'null')
return;
this.schoolNames.push({
value: r.schoolName,
text: r.schoolName
})
})
}
})
},
initSubstName() {
initSubstName().then((res) => {
if (res.state == "success") {
const result = res.data
result.forEach((r) => {
if (r.subName === 'null')
return;
this.subNames.push({
value: r.subName,
text: r.subName
})
})
}
})
},
onChangeActivateTime(date, dateString) {
console.log("入网时间");
console.log(dateString);
this.queryParam.activateTimeStart = dateString[0];
this.queryParam.activateTimeEnd = dateString[1];
},
onChangeCreateTime(date, dateString) {
console.log("上传时间");
console.log(dateString);
this.queryParam.createTimeStart = dateString[0];
this.queryParam.createTimeEnd = dateString[1];
}
},
mounted() {
this.initSubstName();
this.getSchool();
}
}
</script>
<style scoped>
.show-search-button {
text-align: right;
margin: 0px 0px 10px 0px;
}
.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th{
padding:10px 0px;
}
.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td{
padding:0px;
}
</style>
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
</a-menu> </a-menu>
<a-button style="margin-left: 8px">导入<a-icon type="down"/></a-button> <a-button style="margin-left: 8px">导入<a-icon type="down"/></a-button>
</a-dropdown> </a-dropdown>
<a-button @click="handleSubmit3" style="margin-left: 8px"><a-icon type="arrow-up"/>预制卡批量填号</a-button> <a-button @click="handleSubmit3" style="margin-left: 8px"><a-icon type="arrow-up"/>iccid批量填号</a-button>
</a-col> </a-col>
</a-row> </a-row>
</a-form> </a-form>
......
...@@ -111,10 +111,10 @@ ...@@ -111,10 +111,10 @@
<a-icon type="arrow-up" />充值审核 <a-icon type="arrow-up" />充值审核
</a-menu-item> </a-menu-item>
<a-menu-item key="3"> <a-menu-item key="3">
<a-icon type="arrow-up" />批量修改导入 <a-icon type="arrow-up" />批量修改
</a-menu-item> </a-menu-item>
<a-menu-item key="4"> <a-menu-item key="4">
<a-icon type="arrow-up" />锁定导入 <a-icon type="arrow-up" />锁定
</a-menu-item> </a-menu-item>
</a-menu> </a-menu>
<a-button style="margin-left: 8px"> <a-button style="margin-left: 8px">
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
import moment from 'dayjs' import moment from 'dayjs'
import { import {
getList, getList,
deleteOrder,getSubstList,getSchoolList, deleteOrder,
downloadTemplateFH,downloadTemplateCZ,downloadTemplatePL, downloadTemplateSD, downloadTemplateFH,downloadTemplateCZ,downloadTemplatePL, downloadTemplateSD,
downloadResult,exportList,customRemark downloadResult,exportList,customRemark
} from "@/api/school-center/salesListAPI" } from "@/api/school-center/salesListAPI"
...@@ -369,8 +369,6 @@ ...@@ -369,8 +369,6 @@
//表示 //表示
let obj = cloneObject(this.queryParam) let obj = cloneObject(this.queryParam)
return getList(Object.assign(params, obj)).then(res => { return getList(Object.assign(params, obj)).then(res => {
console.log("列表数据");
console.log(res);
let data = {} let data = {}
if (res.state !== 'success') { if (res.state !== 'success') {
this.emptyText.emptyText = '查询失败!' this.emptyText.emptyText = '查询失败!'
...@@ -409,7 +407,6 @@ ...@@ -409,7 +407,6 @@
this.customRemark = record.customRemark; this.customRemark = record.customRemark;
} }
this.visible = true; this.visible = true;
}, },
hideModal() { hideModal() {
this.visible = false; this.visible = false;
......
<template>
<div class="flex-container">
<!-- 查询区域 -->
<div class="table-page-search-wrapper" v-show="searchShow">
<!-- 搜索区域 -->
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item label="激活号码:">
<a-input placeholder="" v-model="queryParam.orderPhone"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="销售人:">
<a-input placeholder="" v-model="queryParam.name"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="4">
<a-form-item label="销售县分">
<a-select v-model="queryParam.salesSubst" @change="getSchool">
<a-select-option key="">--全部--</a-select-option>
<a-select-option v-for="d in subNames" :key="d.value" :value="d.value">{{d.text}}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="8" :sm="8">
<a-form-item label="销售学校">
<a-select v-model="queryParam.salesSchool">
<a-select-option key="">--全部--</a-select-option>
<a-select-option v-for="d in schoolNames" :key="d.value" :value="d.value">{{d.text}}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="激活时间:">
<a-range-picker @change="onChangeActivateTime" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="上传时间:">
<a-range-picker @change="onChangeCreateTime" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="销售账号:">
<a-input placeholder="" v-model="queryParam.account"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="审核状态">
<a-select placeholder="请选择" v-model="queryParam.status">
<a-select-option key="0">重复放号</a-select-option>
<a-select-option key="1">未审核</a-select-option>
<a-select-option key="2">系统审核不通过</a-select-option>
<a-select-option key="4">充值审核不通过</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="问题备注">
<a-select placeholder="请选择" v-model="queryParam.remark">
<a-select-option key="">请选择</a-select-option>
<a-select-option key="该学校的网点信息未添加">网点信息未添加</a-select-option>
<a-select-option key="充值金额小于50">充值金额小于50元</a-select-option>
<a-select-option key="激活号码所属学校与上报学校不一致">学校不一致</a-select-option>
<a-select-option key="重复记录">重复记录</a-select-option>
<a-select-option key="重复上传">重复上传</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="审核锁定">
<a-select placeholder="请选择" v-model="queryParam.lockState">
<a-select-option key="">全部</a-select-option>
<a-select-option key="是"></a-select-option>
<a-select-option key="否"></a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-button @click="search()" type="primary">查询</a-button>
<a-divider type="vertical"/>
<a-button v-show="!callback" @click="exportList()" style="margin-left: 10px">导出</a-button>
<a-button @click="batchUpdate()">批量修改</a-button>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-page-search-wrapper show-search-button">
<a-button size="small" type="link" @click="changeSearchShow">
<span v-if="searchShow">
收起<a-icon type='up'/>
</span>
<span v-else>
展开<a-icon type='down'/>
</span>
</a-button>
</div>
<!--列表-->
<s-table :locale="emptyText" :columns="columns" :data="rowdata" :pageSize="pageSize" bordered ref="table" size="small" class="flex-filling">
<template slot="imageUrl" slot-scope="text">
<img style="width: 20%" :src="apis + text" @click="imgClick(text)">
</template>
<template slot="operation" slot-scope="text,record">
<!-- <a @click="modifyfunction(record)">编辑</a>-->
<!--<a-divider type="vertical"/>-->
<a @click="showModal(record)">备注</a>
<!--<a-divider type="vertical"/>-->
</template>
<template slot="orderTypeScope" slot-scope="text">
<p v-if="text=='1'">放号登记</p>
<p v-if="text=='0'">新用户办卡</p>
<p v-if="text=='2'">存量升级</p>
<p v-if="text=='3'">小白卡</p>
<p v-if="text=='4'">羊城通</p>
<p v-if="text=='5'">线上预制卡</p>
<p v-if="text=='6'">线上小白卡</p>
<p v-if="text=='7'">自助终端</p>
</template>
<template slot="statusScope" slot-scope="text">
<p v-if="text=='0'">重复放号</p>
<p v-if="text=='1'">未审核</p>
<p v-if="text=='2'">系统审核不通过</p>
<p v-if="text=='3'">充值审核通过</p>
<p v-if="text=='4'">系统审核不通过</p>
</template>
</s-table>
<a-modal v-model="visible" title="备注" ok-text="确认" cancel-text="取消" @ok="hideModal">
<span>备注内容:</span>
<a-input v-model="customRemark"></a-input>
</a-modal>
<a-modal
title="批量导入"
:visible="modifyvisible"
@ok="createfunctionOk"
@cancel="createfunctionCancel"
html-type="submit"
width="400px"
>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p style="text-align:center">{{ importTile }}</p>
</a-col>
</a-row>
<import-btn :url="importUrl" :responseFun="doPush">
<a-tooltip placement="topLeft" title="导入文件" arrowPointAtCenter>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p>
选择文件:
<a-button type="primary">选择文件</a-button>
</p>
</a-col>
</a-row>
</a-tooltip>
</import-btn>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p v-show="PLTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplatePL">批量修改模板</a-button>
</p>
</a-col>
</a-row>
</a-modal>
</div>
</template>
<script>
import STable from '@/components/table';
import moment from 'dayjs'
import {
getList, downloadTemplatePL,
downloadResult, exportList, customRemark
} from "@/api/school-center/salesListAPI"
import {cloneObject,exportFile} from '@/utils/util';
import ImportBtn from "../../../components/sysmanage/ImportBtn";
import {getSchoolNames, initSubstName} from "../../../api/school-center/louZhang/louZhangManagerAPI";
export default {
name: "salesList",
components: {
STable,ImportBtn
},
data: function () {
return {
pageSize: 200,
searchShow: true,
emptyText: {emptyText: '暂无数据'},
previewVisible: false,
previewImage: '',
fileList: [],
apis:'',
fileid:{},
visible: false,
customRemark: '',
customId: 0,
brackgroundurl:"manager/ciop/school/schoolManagement/qrcodeUpload",
// form
Formtable: this.$form.createForm(this, {name: 'Formtable'}),
FHTemplate: false,
CZTemplate: false,
PLTemplate: false,
SDTemplate: false,
importUrl: "",
importTile: "",
modifyvisible: false,
modifyForm: {
id: '',
title: '',
desc: '',
integral: '',
activityType: '',
subclass: '',
imageUrl: '',
range: '',
sort: '',
},
subNameList: [],
packageName:[],
chosePages:[],
products:[],
schoolNames: [],
subNames: [],
//输入框列表
queryParam: {
orderPhone: '',
name: '',
account: '',
status: '0',
orderType: '',
salesSubst: '',
salesSchool: '',
createTimeStart: '',
createTimeEnd: '',
activateTimeStart: '',
activateTimeEnd: '',
preType: '',
lockState: '',
remark: ''
},
columns: [
{dataIndex: 'salesSchool', width: 200, title: '销售学校', align: "center"},
{dataIndex: 'salesSubst', width: 80, title: '销售县分', align: "center"},
{dataIndex: 'orderPhone', width: 120, title: '电信激活号码', align: "center"},
{dataIndex: 'name', width: 80, title: '放号人', align: "center"},
{dataIndex: 'account', width: 120, title: '放号人账号', align: "center"},
{dataIndex: 'createTime', width: 160, title: '上传时间', align: "center",
customRender: (text) => {
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{
dataIndex: 'orderType', width: 80, title: '订单类型', align: "center",
scopedSlots: {customRender: "orderTypeScope"}
},
{dataIndex: "preType", width:80, title:'销售时段', align : "center"},
{dataIndex: "lockState", width:80, title:'是否锁定', align : "center"},
{dataIndex: 'networkName', width: 200, title: '所属网点', align: "center"},
{dataIndex: 'networkCode', width: 130, title: '网点编码', align: "center"},
{
dataIndex: 'status', width: 120, title: '审核状态', align: "center",
scopedSlots: {customRender: "statusScope"}
},
{dataIndex: 'remark', width: 240, title: '审核备注', align: "center",ellipsis:true},
{dataIndex: 'auditTime', width: 160, title: '审核时间', align: "center",
customRender: (text) => {
if (text == null) {
return "";
}
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{dataIndex: 'activateTime', width: 160, title: '激活时间', align: "center",
customRender: (text) => {
if (text == null) {
return "";
}
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{dataIndex: 'recentlyAmount', width: 80, title: '最近充值', align: "center"},
{dataIndex: 'recentlyBonus', width: 120, title: '最近充值激励', align: "center"},
{dataIndex: 'allBonus', width: 120, title: '应发总激励', align: "center"},
{dataIndex: 'nonSendBonus', width: 80, title: '未发激励', align: "center"},
{dataIndex: 'sendBonus', width: 80, title: '已发激励', align: "center"},
{dataIndex: 'oldCombo', width: 200, title: '原套餐', align: "center"},
{dataIndex: 'upgradeCombo', width: 200, title: '升级套餐', align: "center"},
{dataIndex: 'customRemark', width: 120, title: '备注', align: "center"},
{
dataIndex: 'operation',
width: 120,
title: '操作',
align: "center",
scopedSlots: {customRender: 'operation'},
},
]
,
rowdata: parameter => {
const env = process.env.NODE_ENV; //获取当前环境
if(env === 'development'){ //测试环境默认添加前缀
this.apis = '/api/';
}
let params = {
pageNo: parameter.pageNo,
pageSize: parameter.pageSize
}
//表示
let obj = cloneObject(this.queryParam)
return getList(Object.assign(params, obj)).then(res => {
console.log("列表数据");
console.log(res);
let data = {}
if (res.state !== 'success') {
this.emptyText.emptyText = '查询失败!'
this.$message.error("查询失败!", 5);
data = {
data: [],
pageSize: parameter.pageSize,
pageNo: 1,
totalCount: 0
}
} else {
if (res.data.records.length==0){
return data
}
data = {
data: res.data.records,
pageSize: parameter.pageSize,
pageNo: parameter.pageNo,
totalCount: res.data.total
}
}
return data
})
}
}
},
methods:{
batchUpdate() {
this.importTile = "批量修改";
this.PLTemplate = true;
this.importUrl = "manager/ciop/salesList/importBatchUpdate";
this.modifyvisible = true;
},
showModal(record) {
if (record == undefined || record == null) {
this.customRemark = "";
this.customId = 0;
}else{
this.customId = record.id;
this.customRemark = record.customRemark;
}
this.visible = true;
},
hideModal() {
this.visible = false;
let params = {};
params.id = this.customId;
params.customRemark = this.customRemark;
customRemark(params).then(res => {
if(res.state == "success"){
this.$message.success(res.data ? res.data : '更新成功', 5)
this.search();
return null;
}else{
this.$message.error(res.data ? res.data : '更新失败', 5)
}
})
},
changeSearchShow() {
this.searchShow = this.searchShow ? false : true;
this.$refs.table.setHeight();
this.$nextTick(() =>{
setTimeout(()=>{ //为防止表头高度变化,延迟300s
this.$refs.table.setHeight();
},100)
})
},
search() {
this.$refs.table.refresh({search: true})
},
exportList(){
exportFile(exportList(this.queryParam),'销售清单.xlsx');
},
getSchool() {
this.schoolNames = [];
this.queryParam.salesSchool = '';
getSchoolNames({"substName": this.queryParam.salesSubst}).then((res) => {
if (res.state == "success") {
const result = res.data
result.forEach((r) => {
if (r.schoolName === 'null')
return;
this.schoolNames.push({
value: r.schoolName,
text: r.schoolName
})
})
}
})
},
initSubstName() {
initSubstName().then((res) => {
if (res.state == "success") {
const result = res.data
result.forEach((r) => {
if (r.subName === 'null')
return;
this.subNames.push({
value: r.subName,
text: r.subName
})
})
}
})
},
onChangeActivateTime(date, dateString) {
console.log("入网时间");
console.log(dateString);
this.queryParam.activateTimeStart = dateString[0];
this.queryParam.activateTimeEnd = dateString[1];
},
onChangeCreateTime(date, dateString) {
console.log("上传时间");
console.log(dateString);
this.queryParam.createTimeStart = dateString[0];
this.queryParam.createTimeEnd = dateString[1];
},
downloadTemplatePL: function () {
exportFile(downloadTemplatePL(), "批量修改清单.xlsx");
},
createfunctionOk() {
this.modifyvisible = false;
this.clearmodel();
},
createfunctionCancel() {
this.modifyvisible = false;
this.clearmodel();
},
// 执行上传
doPush(res) {
console.log(res);
if (!res || !res.response) {
this.$message.error("上传文件出错!", 10);
return false;
}
const response = res.response;
if (response.state !== "success") {
this.$message.error(response.msg ? response.msg : "上传文件出错!", 5);
return false;
}
this.$message.success("上传成功!" + response.data, 5);
if(response.data.msg.indexOf("返回导入结果清单") > -1){
exportFile(downloadResult({"key": response.data.key}), "导入结果清单.xlsx");
}
this.createfunctionCancel();
this.search();
},
},
mounted() {
this.initSubstName();
this.getSchool();
}
}
</script>
<style scoped>
.show-search-button {
text-align: right;
margin: 0px 0px 10px 0px;
}
.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th{
padding:10px 0px;
}
.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td{
padding:0px;
}
</style>
<template>
<div class="flex-container">
<!-- 查询区域 -->
<div class="table-page-search-wrapper" v-show="searchShow">
<!-- 搜索区域 -->
<a-form layout="inline">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item label="激活号码:">
<a-input placeholder="" v-model="queryParam.orderPhone"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="销售人:">
<a-input placeholder="" v-model="queryParam.name"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="4">
<a-form-item label="销售县分">
<a-select v-model="queryParam.salesSubst" @change="getSchool">
<a-select-option key="">--全部--</a-select-option>
<a-select-option v-for="d in subNames" :key="d.value" :value="d.value">{{d.text}}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="8" :sm="8">
<a-form-item label="销售学校">
<a-select v-model="queryParam.salesSchool">
<a-select-option key="">--全部--</a-select-option>
<a-select-option v-for="d in schoolNames" :key="d.value" :value="d.value">{{d.text}}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="激活时间:">
<a-range-picker @change="onChangeActivateTime" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="上传时间:">
<a-range-picker @change="onChangeCreateTime" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item label="销售账号:">
<a-input placeholder="" v-model="queryParam.account"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="审核状态">
<a-select placeholder="请选择" v-model="queryParam.status">
<a-select-option key="">请选择</a-select-option>
<a-select-option key="0">重复放号</a-select-option>
<a-select-option key="1">未审核</a-select-option>
<a-select-option key="2">系统审核不通过</a-select-option>
<a-select-option key="3">充值审核通过</a-select-option>
<a-select-option key="4">充值审核不通过</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="销售时段">
<a-select placeholder="请选择" v-model="queryParam.preType">
<a-select-option key="">请选择</a-select-option>
<a-select-option key="前置">前置</a-select-option>
<a-select-option key="开学">开学</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}" label="审核锁定">
<a-select placeholder="请选择" v-model="queryParam.lockState">
<a-select-option key="">全部</a-select-option>
<a-select-option key="是"></a-select-option>
<a-select-option key="否"></a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="6">
<a-button @click="search()" type="primary">查询</a-button>
<a-divider type="vertical"/>
<a-button v-show="!callback" @click="exportList()" style="margin-left: 10px">导出</a-button>
<a-dropdown>
<a-menu slot="overlay" @click="handleMenuClick">
<a-menu-item key="1">
<a-icon type="arrow-up" />放号上传
</a-menu-item>
<a-menu-item key="2">
<a-icon type="arrow-up" />充值审核
</a-menu-item>
<a-menu-item key="3">
<a-icon type="arrow-up" />批量修改导入
</a-menu-item>
<a-menu-item key="4">
<a-icon type="arrow-up" />锁定导入
</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px">
导入
<a-icon type="down" />
</a-button>
</a-dropdown>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-page-search-wrapper show-search-button">
<a-button size="small" type="link" @click="changeSearchShow">
<span v-if="searchShow">
收起<a-icon type='up'/>
</span>
<span v-else>
展开<a-icon type='down'/>
</span>
</a-button>
</div>
<!--列表-->
<s-table :locale="emptyText" :columns="columns" :data="rowdata" :pageSize="pageSize" bordered ref="table" size="small" class="flex-filling">
<template slot="imageUrl" slot-scope="text">
<img style="width: 20%" :src="apis + text" @click="imgClick(text)">
</template>
<template slot="operation" slot-scope="text,record">
<!-- <a @click="modifyfunction(record)">编辑</a>-->
<!--<a-divider type="vertical"/>-->
<a @click="showModal(record)">备注</a>
<!--<a-divider type="vertical"/>-->
</template>
<template slot="orderTypeScope" slot-scope="text">
<p v-if="text=='1'">放号登记</p>
<p v-if="text=='0'">新用户办卡</p>
<p v-if="text=='2'">存量升级</p>
<p v-if="text=='3'">小白卡</p>
<p v-if="text=='4'">羊城通</p>
<p v-if="text=='5'">线上预制卡</p>
<p v-if="text=='6'">线上小白卡</p>
<p v-if="text=='7'">自助终端</p>
</template>
<template slot="statusScope" slot-scope="text">
<p v-if="text=='0'">重复放号</p>
<p v-if="text=='1'">未审核</p>
<p v-if="text=='2'">系统审核不通过</p>
<p v-if="text=='3'">充值审核通过</p>
<p v-if="text=='4'">系统审核不通过</p>
</template>
</s-table>
<a-modal v-model="visible" title="备注" ok-text="确认" cancel-text="取消" @ok="hideModal">
<span>备注内容:</span>
<a-input v-model="customRemark"></a-input>
</a-modal>
<a-modal
title="批量导入"
:visible="modifyvisible"
@ok="createfunctionOk"
@cancel="createfunctionCancel"
html-type="submit"
width="400px"
>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p style="text-align:center">{{ importTile }}</p>
</a-col>
</a-row>
<import-btn :url="importUrl" :responseFun="doPush">
<a-tooltip placement="topLeft" title="导入文件" arrowPointAtCenter>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p>
选择文件:np
<a-button type="primary">选择文件</a-button>
</p>
</a-col>
</a-row>
</a-tooltip>
</import-btn>
<a-row :gutter="24">
<a-col :md="24" :sm="12">
<p v-show="FHTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplateFH">放号上传模板</a-button>
</p>
<p v-show="CZTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplateCZ">充值审核模板</a-button>
</p>
<p v-show="PLTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplatePL">批量修改模板</a-button>
</p>
<p v-show="SDTemplate">
模板下载:
<a-button type="primary" @click="downloadTemplateSD">锁定导入模板</a-button>
</p>
<!-- <p v-show="LJTemplate">-->
<!-- 模板下载:-->
<!-- <a-button type="primary" @click="downloadTemplateLJ">累计审核模板</a-button>-->
<!-- </p>-->
</a-col>
</a-row>
</a-modal>
</div>
</template>
<script>
import STable from '@/components/table';
import moment from 'dayjs'
import {
getList,
deleteOrder,getSubstList,getSchoolList,
downloadTemplateFH,downloadTemplateCZ,downloadTemplatePL, downloadTemplateSD,
downloadResult,exportList,customRemark
} from "@/api/school-center/salesListAPI"
import {cloneObject,exportFile} from '@/utils/util';
import ImportBtn from "../../../components/sysmanage/ImportBtn";
import {getSchoolNames, initSubstName} from "../../../api/school-center/louZhang/louZhangManagerAPI";
export default {
name: "yctSalesList",
components: {
STable,ImportBtn
},
data: function () {
return {
pageSize: 200,
searchShow: true,
emptyText: {emptyText: '暂无数据'},
previewVisible: false,
previewImage: '',
fileList: [],
apis:'',
fileid:{},
visible: false,
customRemark: '',
customId: 0,
brackgroundurl:"manager/ciop/school/schoolManagement/qrcodeUpload",
// form
Formtable: this.$form.createForm(this, {name: 'Formtable'}),
FHTemplate: false,
CZTemplate: false,
PLTemplate: false,
SDTemplate: false,
importUrl: "",
importTile: "",
modifyvisible: false,
modifyForm: {
id: '',
title: '',
desc: '',
integral: '',
activityType: '',
subclass: '',
imageUrl: '',
range: '',
sort: '',
},
subNameList: [],
packageName:[],
chosePages:[],
products:[],
schoolNames: [],
subNames: [],
//输入框列表
queryParam: {
orderPhone: '',
name: '',
account: '',
status: '',
orderType: '4',
salesSubst: '',
salesSchool: '',
createTimeStart: '',
createTimeEnd: '',
activateTimeStart: '',
activateTimeEnd: '',
preType: '',
lockState: ''
},
columns: [
{dataIndex: 'salesSchool', width: 200, title: '销售学校', align: "center"},
{dataIndex: 'salesSubst', width: 80, title: '销售县分', align: "center"},
{dataIndex: 'orderPhone', width: 120, title: '电信激活号码', align: "center"},
{dataIndex: 'name', width: 80, title: '放号人', align: "center"},
{dataIndex: 'account', width: 120, title: '放号人账号', align: "center"},
{dataIndex: 'createTime', width: 160, title: '上传时间', align: "center",
customRender: (text, row, index) => {
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{
dataIndex: 'orderType', width: 80, title: '订单类型', align: "center",
scopedSlots: {customRender: "orderTypeScope"}
},
{dataIndex: "preType", width:80, title:'销售时段', align : "center"},
{dataIndex: "lockState", width:80, title:'是否锁定', align : "center"},
{dataIndex: 'networkName', width: 200, title: '所属网点', align: "center"},
{dataIndex: 'networkCode', width: 130, title: '网点编码', align: "center"},
{
dataIndex: 'status', width: 120, title: '审核状态', align: "center",
scopedSlots: {customRender: "statusScope"}
},
{dataIndex: 'remark', width: 240, title: '审核备注', align: "center",ellipsis:true},
{dataIndex: 'auditTime', width: 160, title: '审核时间', align: "center",
customRender: (text, row, index) => {
if (text == null) {
return "";
}
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{dataIndex: 'activateTime', width: 160, title: '激活时间', align: "center",
customRender: (text, row, index) => {
if (text == null) {
return "";
}
return moment(text).format("YYYY-MM-DD HH:mm:ss");
}
},
{dataIndex: 'recentlyAmount', width: 80, title: '最近充值', align: "center"},
{dataIndex: 'recentlyBonus', width: 120, title: '最近充值激励', align: "center"},
{dataIndex: 'allBonus', width: 120, title: '应发总激励', align: "center"},
{dataIndex: 'nonSendBonus', width: 80, title: '未发激励', align: "center"},
{dataIndex: 'sendBonus', width: 80, title: '已发激励', align: "center"},
{dataIndex: 'oldCombo', width: 200, title: '原套餐', align: "center"},
{dataIndex: 'upgradeCombo', width: 200, title: '升级套餐', align: "center"},
{dataIndex: 'customRemark', width: 120, title: '备注', align: "center"},
{
dataIndex: 'operation',
width: 120,
title: '操作',
align: "center",
scopedSlots: {customRender: 'operation'},
},
]
,
rowdata: parameter => {
const env = process.env.NODE_ENV; //获取当前环境
if(env === 'development'){ //测试环境默认添加前缀
this.apis = '/api/';
}
let params = {
pageNo: parameter.pageNo,
pageSize: parameter.pageSize
}
//表示
let obj = cloneObject(this.queryParam)
return getList(Object.assign(params, obj)).then(res => {
console.log("列表数据");
console.log(res);
let data = {}
if (res.state !== 'success') {
this.emptyText.emptyText = '查询失败!'
this.$message.error("查询失败!", 5);
data = {
data: [],
pageSize: parameter.pageSize,
pageNo: 1,
totalCount: 0
}
} else {
if (res.data.records.length==0){
return data
}
data = {
data: res.data.records,
pageSize: parameter.pageSize,
pageNo: parameter.pageNo,
totalCount: res.data.total
}
}
return data
})
}
}
},
methods:{
showModal(record) {
if (record == undefined || record == null) {
this.customRemark = "";
this.customId = 0;
}else{
this.customId = record.id;
this.customRemark = record.customRemark;
}
this.visible = true;
},
hideModal() {
this.visible = false;
let params = {};
params.id = this.customId;
params.customRemark = this.customRemark;
customRemark(params).then(res => {
if(res.state == "success"){
this.$message.success(res.data ? res.data : '更新成功', 5)
this.search();
return null;
}else{
this.$message.error(res.data ? res.data : '更新失败', 5)
}
})
},
changeSearchShow() {
this.searchShow = this.searchShow ? false : true;
this.$refs.table.setHeight();
this.$nextTick(() =>{
setTimeout(()=>{ //为防止表头高度变化,延迟300s
this.$refs.table.setHeight();
},100)
})
},
search() {
this.$refs.table.refresh({search: true})
},
handleMenuClick(e) {
if (e.key == "1") {
this.handleSubmit1();
}
if (e.key == "2") {
this.handleSubmit2();
}
if (e.key == "3") {
this.handleSubmit3();
}
if (e.key == "4") {
this.handleSubmit4();
}
},
handleSubmit1() {
this.importTile = "放号上传";
this.FHTemplate = true;
this.importUrl = "manager/ciop/salesList/importOrder";
this.modifyvisible = true;
},
handleSubmit2() {
this.importTile = "充值审核";
this.CZTemplate = true;
this.importUrl = "manager/ciop/salesList/importRechargeData";
this.modifyvisible = true;
},
handleSubmit3() {
this.importTile = "批量修改";
this.PLTemplate = true;
this.importUrl = "manager/ciop/salesList/importBatchUpdate";
this.modifyvisible = true;
},
handleSubmit4() {
this.importTile = "审核锁定";
this.SDTemplate = true;
this.importUrl = "manager/ciop/salesList/importAuditLock";
this.modifyvisible = true;
},
downloadTemplateFH: function() {
exportFile(downloadTemplateFH(), "放号上传清单.xlsx");
},
downloadTemplateCZ: function() {
exportFile(downloadTemplateCZ(), "充值审核清单.xlsx");
},
downloadTemplatePL: function () {
exportFile(downloadTemplatePL(), "批量修改清单.xlsx");
},
downloadTemplateSD: function () {
exportFile(downloadTemplateSD(), "锁定导入清单.xlsx");
},
// downloadTemplateLJ: function() {
// exportFile(downloadMoBanKD(), "累计充值审核清单.xlsx");
// },
createfunctionOk() {
this.modifyvisible = false;
this.clearmodel();
},
createfunctionCancel() {
this.modifyvisible = false;
this.clearmodel();
},
clearmodel() {
this.importTile = "";
this.FHTemplate = false;
this.CZTemplate = false;
this.PLTemplate = false;
this.SDTemplate = false;
this.importUrl = "";
},
// 执行上传
doPush(res) {
console.log(res);
if (!res || !res.response) {
this.$message.error("上传文件出错!", 10);
return false;
}
const response = res.response;
if (response.state !== "success") {
this.$message.error(response.msg ? response.msg : "上传文件出错!", 5);
return false;
}
this.$message.success("上传成功!" + response.data, 5);
if(response.data.msg.indexOf("返回导入结果清单") > -1){
exportFile(downloadResult({"key": response.data.key}), "导入结果清单.xlsx");
}
this.createfunctionCancel();
this.search();
},
deleteOrder(id){
let params = {};
params.id = id;
deleteOrder(params).then(res => {
if(res.state == "success"){
this.$message.success(res.data ? res.data : '删除成功', 5)
this.search();
return null;
}
this.$message.success(res.data ? res.data : '删除失败', 5);
})
},
exportList(){
exportFile(exportList(this.queryParam),'销售清单.xlsx');
},
getSchool() {
this.schoolNames = [];
this.queryParam.salesSchool = '';
getSchoolNames({"substName": this.queryParam.salesSubst}).then((res) => {
if (res.state == "success") {
const result = res.data
result.forEach((r) => {
if (r.schoolName === 'null')
return;
this.schoolNames.push({
value: r.schoolName,
text: r.schoolName
})
})
}
})
},
initSubstName() {
initSubstName().then((res) => {
if (res.state == "success") {
const result = res.data
result.forEach((r) => {
if (r.subName === 'null')
return;
this.subNames.push({
value: r.subName,
text: r.subName
})
})
}
})
},
onChangeActivateTime(date, dateString) {
console.log("入网时间");
console.log(dateString);
this.queryParam.activateTimeStart = dateString[0];
this.queryParam.activateTimeEnd = dateString[1];
},
onChangeCreateTime(date, dateString) {
console.log("上传时间");
console.log(dateString);
this.queryParam.createTimeStart = dateString[0];
this.queryParam.createTimeEnd = dateString[1];
}
},
mounted() {
this.initSubstName();
this.getSchool();
}
}
</script>
<style scoped>
.show-search-button {
text-align: right;
margin: 0px 0px 10px 0px;
}
.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th{
padding:10px 0px;
}
.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td{
padding:0px;
}
</style>
...@@ -189,9 +189,10 @@ ...@@ -189,9 +189,10 @@
<a-form-item :labelCol="{span: 6}" :wrapperCol="{span: 15, offset: 1}" label="套餐选择"> <a-form-item :labelCol="{span: 6}" :wrapperCol="{span: 15, offset: 1}" label="套餐选择">
<a-checkbox-group v-model="chosePages" @change="chosePagesfunction"> <a-checkbox-group v-model="chosePages" @change="chosePagesfunction">
<a-row> <a-row>
<a-col :span="8" v-for=" (data,index) in package" v-if="index < more"><a-checkbox :value="data.value" >{{data.label}}</a-checkbox></a-col> <a-col :span="8" v-for=" (p,index) in package" v-if="index < more"><a-checkbox :value="p.value" >{{p.label}}</a-checkbox></a-col>
</a-row> </a-row>
<a-button @click="showMore" v-show="isShowMore">更多</a-button> <a-button @click="showMore" v-show="isShowMore">更多</a-button>
<a-button @click="hideMore" v-show="!isShowMore">收起</a-button>
</a-checkbox-group> </a-checkbox-group>
</a-form-item> </a-form-item>
</a-form> </a-form>
...@@ -466,6 +467,10 @@ ...@@ -466,6 +467,10 @@
this.isShowMore = false; this.isShowMore = false;
this.more = (this.packageName.length + 1); this.more = (this.packageName.length + 1);
}, },
hideMore() {
this.isShowMore = true;
this.more = 6;
},
onTreeChange(value) { onTreeChange(value) {
const values = []; const values = [];
value.forEach(v => { value.forEach(v => {
...@@ -624,7 +629,8 @@ ...@@ -624,7 +629,8 @@
} }
this.package = head; this.package = head;
} }
console.log(this.chosePages); console.log(this.package);
console.log(this.packageName);
} }
}) })
......
...@@ -252,16 +252,21 @@ ...@@ -252,16 +252,21 @@
auditDate: ['', ''], auditDate: ['', ''],
}, },
columns: [ columns: [
{dataIndex: 'userName', width: 100, title: '姓名'}, {dataIndex: 'userName', width: 100, title: '用户姓名'},
{dataIndex: 'orderPhone', width: 100, title: '办理号码'}, {dataIndex: 'orderPhone', width: 100, title: '办理号码'},
{dataIndex: 'linkPhone', width: 100, title: '联系号码'}, {dataIndex: 'linkPhone', width: 100, title: '联系号码'},
{dataIndex: 'idCard', width: 100, title: '身份证'},
{dataIndex: 'uploadDate', width: 100, title: '上传时间', scopedSlots: {customRender: "uploadDate"}},
{dataIndex: 'isFirstUpload', width: 100, title: '是否首次上传', ellipsis: true, scopedSlots: {customRender: "isFirstUpload"}},
{ dataIndex: 'auditState',width: 100,title: '是否通过审核',ellipsis: true,scopedSlots: {customRender: "auditState"}},
{dataIndex: 'auditName', width: 100, title: '审核人姓名'}, {dataIndex: 'auditName', width: 100, title: '审核人姓名'},
{dataIndex: 'county', width: 80, title: '县分'},
{dataIndex: 'school', width: 120, title: '学校'},
{dataIndex: 'studentCardUrl', width: 180, title: '学生证封面照片', scopedSlots: {customRender: "studentCardUrl"}}, {dataIndex: 'studentCardUrl', width: 180, title: '学生证封面照片', scopedSlots: {customRender: "studentCardUrl"}},
{dataIndex: 'otherImgUrl1', width: 180, title: '学生证内页照片', scopedSlots: {customRender: "otherImgUrl1"}}, {dataIndex: 'otherImgUrl1', width: 180, title: '学生证内页照片', scopedSlots: {customRender: "otherImgUrl1"}},
{dataIndex: 'otherImgUrl2', width: 180, title: '身份证照片', scopedSlots: {customRender: "otherImgUrl2"}}, {dataIndex: 'otherImgUrl2', width: 180, title: '身份证照片', scopedSlots: {customRender: "otherImgUrl2"}},
{dataIndex: 'otherImgUrl3', width: 180, title: '补充照片', scopedSlots: {customRender: "otherImgUrl3"}}, {dataIndex: 'otherImgUrl3', width: 180, title: '补充照片', scopedSlots: {customRender: "otherImgUrl3"}},
/*{dataIndex: 'county', width: 80, title: '县分'},
{dataIndex: 'school', width: 120, title: '学校'},
{dataIndex: 'isComboMoney49', width: 100, title: '办理号码是否新49', ellipsis: true, scopedSlots: {customRender: "isComboMoney49"}}, {dataIndex: 'isComboMoney49', width: 100, title: '办理号码是否新49', ellipsis: true, scopedSlots: {customRender: "isComboMoney49"}},
{dataIndex: 'isFull', width: 100, title: '是否已上传学生证照片、学校等必填信息', ellipsis: true, scopedSlots: {customRender: "isFull"}}, {dataIndex: 'isFull', width: 100, title: '是否已上传学生证照片、学校等必填信息', ellipsis: true, scopedSlots: {customRender: "isFull"}},
{dataIndex: 'isClear', width: 100, title: '学生证照片是否清晰', ellipsis: true, scopedSlots: {customRender: "isClear"}}, {dataIndex: 'isClear', width: 100, title: '学生证照片是否清晰', ellipsis: true, scopedSlots: {customRender: "isClear"}},
...@@ -269,13 +274,9 @@ ...@@ -269,13 +274,9 @@
{dataIndex: 'isStudentAccordance', width: 100, title: '号码被实名人员与上传学生证用户是否一致', ellipsis: true, scopedSlots: {customRender: "isStudentAccordance"}}, {dataIndex: 'isStudentAccordance', width: 100, title: '号码被实名人员与上传学生证用户是否一致', ellipsis: true, scopedSlots: {customRender: "isStudentAccordance"}},
{dataIndex: 'isSchoolAccordance', width: 100, title: '学生证所属学校与号码所属学校是否一致', ellipsis: true, scopedSlots: {customRender: "isSchoolAccordance"}}, {dataIndex: 'isSchoolAccordance', width: 100, title: '学生证所属学校与号码所属学校是否一致', ellipsis: true, scopedSlots: {customRender: "isSchoolAccordance"}},
{dataIndex: 'isUploadBeforeActivate', width: 100, title: '资料上传时间是否早于CRM系统激活时间', ellipsis: true, scopedSlots: {customRender: "isUploadBeforeActivate"}}, {dataIndex: 'isUploadBeforeActivate', width: 100, title: '资料上传时间是否早于CRM系统激活时间', ellipsis: true, scopedSlots: {customRender: "isUploadBeforeActivate"}},
{dataIndex: 'uploadDate', width: 100, title: '上传时间', scopedSlots: {customRender: "uploadDate"}},
{dataIndex: 'crnActivateDate', width: 100, title: 'crm激活时间', scopedSlots: {customRender: "crnActivateDate"}}, {dataIndex: 'crnActivateDate', width: 100, title: 'crm激活时间', scopedSlots: {customRender: "crnActivateDate"}},
{dataIndex: 'isFirstUpload', width: 100, title: '是否首次上传', ellipsis: true, scopedSlots: {customRender: "isFirstUpload"}},
{dataIndex: 'agentBusinessman', width: 100, title: '代理商'}, {dataIndex: 'agentBusinessman', width: 100, title: '代理商'},
{ dataIndex: 'auditState',width: 100,title: '是否通过审核',ellipsis: true,scopedSlots: {customRender: "auditState"}}, {dataIndex: 'auditDate', width: 100, title: '审核时间', scopedSlots: {customRender: "auditDate"}}*/
{dataIndex: 'auditDate', width: 100, title: '审核时间', scopedSlots: {customRender: "auditDate"}},
], ],
rowdata: parameter => { rowdata: parameter => {
let params = { let params = {
......
...@@ -256,6 +256,20 @@ ...@@ -256,6 +256,20 @@
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item :labelCol="{span: 6}" :wrapperCol="{span: 8, offset: 1}" label="院校配置">
<template>
<a-tree-select
v-model="treeModelValue"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
:tree-data="treeData"
tree-checkable
:show-checked-strategy="SHOW_PARENT"
placeholder="Please select"
/>
</template>
</a-form-item>
<a-form-item :labelCol="{span: 6}" :style="leaderDisplay" :wrapperCol="{span: 8, offset: 1}" label="学子公司上级"> <a-form-item :labelCol="{span: 6}" :style="leaderDisplay" :wrapperCol="{span: 8, offset: 1}" label="学子公司上级">
<a-select placeholder="请选择" v-model="modifyForm.parentId"> <a-select placeholder="请选择" v-model="modifyForm.parentId">
<a-select-option key="">请选择</a-select-option> <a-select-option key="">请选择</a-select-option>
...@@ -295,6 +309,8 @@ ...@@ -295,6 +309,8 @@
userRoleTreeList, userRoleTreeList,
} from '@/api/system'; } from '@/api/system';
import {getSchoolNames, initSubstName} from "../../../api/school-center/userManager/newUserAPI"; import {getSchoolNames, initSubstName} from "../../../api/school-center/userManager/newUserAPI";
import { TreeSelect } from 'ant-design-vue';
const SHOW_PARENT = TreeSelect.SHOW_PARENT;
export default { export default {
name: "PartnerManagement", name: "PartnerManagement",
...@@ -309,6 +325,9 @@ ...@@ -309,6 +325,9 @@
Formtable: this.$form.createForm(this, {name: 'Formtable'}), Formtable: this.$form.createForm(this, {name: 'Formtable'}),
addFormtable: this.$form.createForm(this, {name: 'addFormtable'}), addFormtable: this.$form.createForm(this, {name: 'addFormtable'}),
titleName : "新增", titleName : "新增",
treeModelValue: [],
treeData: [],
SHOW_PARENT,
queryParam: { queryParam: {
name: '', name: '',
account: '', account: '',
...@@ -434,6 +453,11 @@ ...@@ -434,6 +453,11 @@
userRoleTreeList:userRoleTreeList, userRoleTreeList:userRoleTreeList,
} }
}, },
watch : {
treeModelValue(data) {
console.log(data);
}
},
methods:{ methods:{
search() { search() {
this.$refs.table.refresh({search: true}) this.$refs.table.refresh({search: true})
...@@ -453,7 +477,12 @@ ...@@ -453,7 +477,12 @@
grade: data.grade, grade: data.grade,
ysm: data.ysm, ysm: data.ysm,
}) })
console.log(data.schools);
if (data.schools == undefined) {
this.treeModelValue = [];
}else{
this.treeModelValue = data.schools.split(",");
}
this.modifyForm.subName = data.substName; this.modifyForm.subName = data.substName;
this.modifyForm.roleId = data.roleid; this.modifyForm.roleId = data.roleid;
this.modifyForm.position = data.position; this.modifyForm.position = data.position;
...@@ -479,7 +508,22 @@ ...@@ -479,7 +508,22 @@
this.modifyForm.sex=values.sex this.modifyForm.sex=values.sex
this.modifyForm.ysm=values.ysm this.modifyForm.ysm=values.ysm
this.modifyForm.password = values.password this.modifyForm.password = values.password
debugger
const subNames = [];
const schools = [];
console.log(this.treeModelValue);
console.log(this.subNames);
out : for(let i = 0; i < this.treeModelValue.length; ++i) {
for(let j = 0; j < this.subNames.length; ++j) {
if (this.treeModelValue[i] == this.subNames[j].value) {
subNames.push(this.subNames[j].value);
continue out;
}
}
schools.push(this.treeModelValue[i]);
}
this.modifyForm.subNames = subNames;
this.modifyForm.schools = schools;
if(this.modifyForm.idCard.length != 18){ if(this.modifyForm.idCard.length != 18){
this.$message.error( '身份证不合法', 5); this.$message.error( '身份证不合法', 5);
return null; return null;
...@@ -524,7 +568,7 @@ ...@@ -524,7 +568,7 @@
parentId: '', parentId: '',
ysm: '', ysm: '',
}) })
this.treeModelValue = [];
this.addForm.subName = ''; this.addForm.subName = '';
this.addForm.position = ''; this.addForm.position = '';
this.addForm.parentIds = ''; this.addForm.parentIds = '';
...@@ -573,6 +617,21 @@ ...@@ -573,6 +617,21 @@
this.addForm.ysm=values.ysm this.addForm.ysm=values.ysm
this.addForm.substName="" this.addForm.substName=""
const subNames = [];
const schools = [];
out : for(let i = 0; i < this.treeModelValue.length; ++i) {
for(let j = 0; j < this.subNames.length; ++j) {
if (this.treeModelValue[i] == this.subNames[j].value) {
subNames.push(this.subNames[j].value);
continue out;
}
}
schools.push(this.treeModelValue);
}
this.modifyForm.subNames = subNames;
this.modifyForm.schools = schools;
if(this.addForm.idCard.length != 18){ if(this.addForm.idCard.length != 18){
this.$message.error( '身份证不合法', 5); this.$message.error( '身份证不合法', 5);
return null; return null;
...@@ -634,7 +693,7 @@ ...@@ -634,7 +693,7 @@
parentId: '', parentId: '',
ysm: '', ysm: '',
}) })
this.treeModelValue = [];
this.addForm.subName = ''; this.addForm.subName = '';
this.addForm.position = ''; this.addForm.position = '';
this.addForm.parentIds = ''; this.addForm.parentIds = '';
...@@ -755,7 +814,6 @@ ...@@ -755,7 +814,6 @@
this.keyRecord = '' this.keyRecord = ''
res.data.forEach((key) => { res.data.forEach((key) => {
this.xzUserList.push(key) this.xzUserList.push(key)
}) })
if(type == 1){ if(type == 1){
...@@ -816,7 +874,32 @@ ...@@ -816,7 +874,32 @@
value: r.subName, value: r.subName,
text: r.subName text: r.subName
}) })
this.treeData.push({
title: r.subName,
value: r.subName,
key: r.subName
});
})
for (let i = 0;i < this.treeData.length; ++i) {
getSchoolNames({"substName": this.treeData[i].value}).then((res) => {
if (res.state == "success") {
const temp = [];
const result = res.data
result.forEach((r) => {
if (r.schoolName === 'null')
return;
temp.push({
key: r.id,
value: r.id,
title: r.schoolName
});
})
this.treeData[i].children = temp;
console.log(this.treeData);
}
}) })
}
} }
}) })
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment