Commit e7a2a2b9 authored by 罗超's avatar 罗超

1

parent 0692a8d7
......@@ -239,3 +239,14 @@ export function setCustomerCareOf(data) {
data
})
}
/**
* 我的客户批量转入
*
*/
export function setMyStudentToGuest(data) {
return request({
url: 'order/SetMyStudentToGuest',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -2209,6 +2209,7 @@ export default {
OrderId: item.OrderId,
ClassId: item.ClassId,
SourceId: item.SourceId,
CustomerId:item.CustomerId,
isShow: this.AuthorityObj.isShowGuestBtn
}
});
......
<template>
<div class="batchTransfer">
<q-dialog
v-model="persistent"
persistent
transition-show="scale"
transition-hide="scale"
@hide="$emit('close')"
>
<q-card style="width: 800px;max-width:800px;">
<q-card-section class="row items-center q-pb-none">
<div class="text-h6">批量录入</div>
<q-space />
<q-btn icon="close" flat round dense v-close-popup />
</q-card-section>
<q-card-section class="row items-center q-pb-none">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-6">
<q-input
@input="resetSearch"
clearable
filled
v-model="msg.StuName"
label="昵称"
maxlength="20"
/>
</div>
<div class="col-6">
<q-input
@input="resetSearch"
clearable
filled
v-model="msg.StuTel"
label="电话"
maxlength="20"
/>
</div>
<div class="col-6">
<q-select
@input="resetSearch"
filled
v-model="msg.StuStage"
:options="customState"
option-label="Name"
option-value="Id"
emit-value
map-options
label="客户状态"
clearable
/>
</div>
<div class="col-6">
<q-field filled>
<template v-slot:control>
<el-date-picker
v-model="dateArray"
@change="resetSearch"
value-format="yyyy-MM-dd"
type="daterange"
style="border:none;"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
popper-class="popper"
/>
</template>
</q-field>
</div>
</div>
</div>
</q-card-section>
<q-card-section class="q-pt-none scroll">
<q-table
:pagination="pageMsg"
:loading="loading"
no-data-label="暂无相关数据"
flat
selection="multiple"
:selected.sync="selection"
class="sticky-right-column-table sticky-tow-column-table"
separator="none"
:data="data"
:columns="columns"
row-key="StuId"
>
<template v-slot:top="props"> </template>
<template v-slot:body-cell-StuSex="props">
<q-td :props="props">
<q-badge
:color="props.value == 1 ? 'negative' : 'primary'"
:label="props.value == 1 ? '女' : '男'"
/>
</q-td>
</template>
<template v-slot:body-cell-AssistList="props">
<q-td auto-width :props="props">
<template v-if="props.row.AssistList">
<template v-if="props.row.AssistList.length == 1">
{{ props.row.AssistList[0].AssistName }}
</template>
<template v-if="props.row.AssistList.length > 1">
{{ props.row.AssistList[0].AssistName }}
<span class="stulistNum">
{{ props.row.AssistList.length }}
<q-popup-proxy>
<q-banner>
<div style="max-height:600px;overflow-y:auto;">
<table
class="stuListTable"
style="border-collapse:collapse;"
>
<tr>
<th>协同人</th>
</tr>
<tr
v-for="(sItem, sIndex) in props.row.AssistList"
style="border-bottom:1px dashed #d1d1d1;"
:key="sIndex"
>
<td>{{ sItem.AssistName }}</td>
</tr>
</table>
</div>
</q-banner>
</q-popup-proxy>
</span>
</template>
<template v-if="props.row.AssistList.length == 0">
</template>
</template>
</q-td>
</template>
<template v-slot:bottom>
<q-pagination
class="full-width justify-end"
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
:input="true"
@input="changePage"
/>
</template>
</q-table>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn
label="取消"
flat
color="grey-10"
style="font-weight:400 !important"
v-close-popup
/>
<q-btn
label="保存"
color="accent q-px-md"
style="font-weight:400 !important"
@click="save"
:disable="selection.length == 0"
/>
</q-card-actions>
</q-card>
</q-dialog>
</div>
</template>
<script>
import {
getStudentPage,
getSchoolDropdown,
deleteStudent,
createStudentAccount,
queryStuStageList
} from "../../../api/school/index";
import { setMyStudentToGuest } from "../../../api/sale/peemanagement";
export default {
props: {
OrderId:{
type:[Number,String],
default:0
}
},
components: {},
data() {
return {
persistent: true,
data: [],
loading: true,
msg: {
pageIndex: 1,
pageSize: 5,
rowsPerPage: 12,
StuName: "",
StuTel: "",
Status: "-1",
CreateBy: "",
IsQueryMyStu: 1,
StuStage: "", //客户阶段
StartTime: "", //开始时间
EndTime: "", //结束时间
CustomerId: 0,
BelongType: 2, //归属类型
QCustomerType :0,
},
dateArray: [], //日期数组
pageCount: 0,
//客户阶段状态列表
customState: [],
myCustomerList: [], //同行列表
allCustomerList: [], //所有同行列表
dateArray: [], //日期数组
pageCount: 0,
selection: [],
pageMsg: {
rowsPerPage: 12
},
columns: [
{
name: "StuName",
required: true,
label: "昵称",
align: "left",
field: row => row.StuName
},
{
name: "StuSex",
label: "性别",
field: "StuSex",
align: "left"
},
{
name: "StuTel",
label: "电话",
field: "StuTel",
align: "left"
},
{
name: "StuStageName",
label: "客户阶段",
field: "StuStageName",
align: "left"
},
{
name: "StuProfession",
label: "职业",
field: "StuProfession",
align: "left"
},
{
name: "StuEducationName",
label: "学历",
field: "StuEducationName",
align: "left"
},
{
name: "StuPurposeName",
label: "目的",
field: "StuPurposeName",
align: "left"
},
{
name: "CreateByName",
label: "负责人",
align: "left",
field: "CreateByName"
},
{
name: "AssistList",
label: "协同人",
align: "left",
field: "AssistList"
},
{
name: "CreateTypeStr",
label: "客户来源",
field: "CreateTypeStr",
align: "left"
},
{
name: "StuSourceIdName",
label: "来源关联人",
field: "StuSourceIdName",
align: "left"
},
{
name: "StuChannelName",
label: "收客渠道",
field: "StuChannelName",
align: "left"
},
{
name: "VisitCount",
label: "到访次数",
field: "VisitCount",
align: "left"
},
{
name: "TrialLessonCount",
label: "试听次数",
field: "TrialLessonCount",
align: "left"
},
{
name: "CreateTimeStr",
label: "创建时间",
field: "CreateTimeStr",
align: "left"
},
{
name: "CustomerName",
label: "所属同行",
field: "CustomerName",
align: "left"
}
],
};
},
created() {
if (this.$route.query && this.$route.query.CustomerId) {
this.msg.CustomerId = this.$route.query.CustomerId;
}else{
this.msg.QCustomerType=1
}
this.getSchool();
this.getStuStageList();
},
mounted() {
this.getStudent();
},
methods: {
//获取客户阶段列表
getStuStageList() {
queryStuStageList().then(res => {
this.customState = res.Data;
});
},
resetSearch() {
this.msg.pageIndex = 1;
this.getStudent();
},
changePage(val) {
this.msg.pageIndex = val;
this.getStudent();
},
getSchool() {
getSchoolDropdown({}).then(res => {
this.schoolList = res.Data;
});
},
getStudent() {
if (this.dateArray && this.dateArray.length > 0) {
this.msg.StartTime = this.dateArray[0];
this.msg.EndTime = this.dateArray[1];
} else {
this.msg.StartTime = "";
this.msg.EndTime = "";
}
this.loading = true;
getStudentPage(this.msg)
.then(res => {
this.loading = false;
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
})
.catch(() => {
this.loading = false;
});
},
save() {
const setMsg={
OrderId:this.OrderId,
StuIds:this.selection.map(e=>e.StuId).toString()
}
setMyStudentToGuest(setMsg).then(res => {
if(res.Code==1){
this.persistent=false
this.$emit("success")
}
});
}
}
};
</script>
<style scoped>
/deep/.el-input__inner,
/deep/.el-range-input {
background-color: transparent;
border: none;
}
</style>
<style>
.popper {
z-index: 9999 !important;
}
::-webkit-scrollbar {
width: 5px;
height: 5px;
}
::-webkit-scrollbar-track {
background: #fff;
border-radius: 2px;
}
::-webkit-scrollbar-thumb {
background: #444;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #999;
}
::-webkit-scrollbar-corner {
background: #204754;
}
</style>
<style>
.page-content p {
margin: 0 !important;
}
.quetion_Title {
background: transparent !important;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 400px;
}
</style>
<template>
<div class="page-body">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-input
@input="resetSearch"
filled
clearable
v-model="msg.CustomerName"
label="同业名称"
maxlength="20"
/>
</div>
<div class="col-3">
<q-input
@input="resetSearch"
filled
clearable
v-model="msg.CustomerId"
label="同业ID"
maxlength="20"
/>
</div>
<div class="col-3">
<q-input
@input="resetSearch"
filled
clearable
v-model="msg.ContactNumber"
label="电话"
maxlength="20"
/>
</div>
<div class="col-3">
<q-select
@input="resetSearch"
clearable
filled
v-model="msg.ApproveState"
:options="ApproveStateList"
emit-value
map-options
label="审核状态"
/>
</div>
</div>
</div>
<div class="page-content">
<div>
<q-tabs
style="margin-bottom:20px;"
v-model="tabCheck"
@input="resetSearch()"
narrow-indicator
dense
align="left"
class="text-primary"
>
<q-tab :ripple="false" :name="1" label="正式客户" />
<q-tab :ripple="false" :name="2" label="非正式客户" />
<q-tab :ripple="false" :name="3" label="未通过客户" />
<q-tab :ripple="false" :name="4" label="黑名单客户" />
</q-tabs>
</div>
<b2bcustomlist
:dataList="dataList"
:authObj="authObj"
:loading="loading"
@success="getList"
:visibleColumns="visibleColumns"
sticky="sticky-tow-column-table sticky-right-column-table"
></b2bcustomlist>
<q-pagination
class="full-width justify-end"
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
:input="true"
@input="changePage"
/>
</div>
</div>
</template>
<script>
import { GetCustomerPage, RemoveCustomer } from "../../api/sale/peemanagement";
import b2bcustomlist from "../../components/sale/b2bcustomlist";
export default {
meta: {
title: "同行管理"
},
components: {
b2bcustomlist
},
data() {
return {
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 12,
rowsPerPage: 12,
CustomerName: "", //客户名称
ContactNumber: "", //联系电话
ApproveState: "", //审核状态
QCustomerState: "" //账号状态
},
loading: false,
visibleColumns: [
"CustomerName",
"CustomerType",
"EnterpriseName",
"ContactNumber",
"StuNum",
"OrderNum",
"OrderSales",
"ApproveStateStr",
"CreateByName",
"CreateTimeStr",
],
tabCheck: 1,
//审核状态列表
ApproveStateList: [
{
label: "通过",
value: "1"
},
{
label: "拒绝",
value: "2"
}
],
dataList: [],
//判断显示
authObj: {
isShowEdit: true, //显示新增、修改、删除
isShowBankBook: true, //显示幸福存折
isShowRebate: true //是否显示返佣
}
};
},
created() {
},
mounted() {
this.getList();
},
methods: {
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
//获取分页数据
getList() {
this.msg.QCustomerState = this.tabCheck;
GetCustomerPage(this.msg)
.then(res => {
this.dataList = res.Data.PageData;
this.loading = false;
this.pageCount = res.Data.PageCount;
})
.catch(() => {
this.loading = false;
});
}
}
};
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
<style>
._addUpload_stu {
._addUpload_stu {
display: block;
margin-top: 15px;
}
}
._addUpload_stu img {
._addUpload_stu img {
width: 100%;
}
}
._addUpload_stu>div {
._addUpload_stu > div {
display: inline-block;
width: 138px;
height: 92px;
......@@ -19,22 +19,22 @@
padding: 5px;
margin-right: 10px;
position: relative;
}
}
._addUpload_stu>div:hover {
._addUpload_stu > div:hover {
background-color: #f5f5f5;
}
}
.stuCard .el-upload-dragger {
.stuCard .el-upload-dragger {
font-size: 28px;
color: #8c939d;
width: 126px;
height: 80px;
line-height: 41px;
text-align: center;
}
}
._addUpload_stu .icon-guanbi1 {
._addUpload_stu .icon-guanbi1 {
font-size: 12px;
color: white;
display: inline-block;
......@@ -48,47 +48,80 @@
width: 20px;
text-align: center;
line-height: 20px;
}
}
.el-image-viewer__wrapper {
.el-image-viewer__wrapper {
z-index: 9999 !important;
}
.pri_Color {
}
.pri_Color {
color: var(--q-color-primary);
}
}
</style>
<template>
<div class="page-body">
<div class="page-content student_List">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="stickycreatInsertStr-column-table" separator="none" :data="data" :columns="columns" row-key="name"
:visible-columns="visibleColumns">
<q-table
:pagination="msg"
:loading="loading"
no-data-label="暂无相关数据"
flat
class="stickycreatInsertStr-column-table"
separator="none"
:data="data"
:columns="columns"
row-key="name"
:visible-columns="visibleColumns"
>
<template v-slot:top="props">
<div class="col-2 q-table__title" @click="goreturn" style="cursor:pointer">返回</div>
<div
class="col-2 q-table__title"
@click="goreturn"
style="cursor:pointer"
>
返回
</div>
<q-space />
<div class="page-option">
<q-btn color="accent" size="sm" v-if="isShowBtn" icon="add" label="新增名单" @click="addxue" />
<q-btn
color="accent"
size="sm"
v-if="isShowBtn"
icon="add"
label="批量录入"
@click="showBetchTransfer = true"
class="q-mr-md"
/>
<q-btn
color="accent"
size="sm"
v-if="isShowBtn"
icon="add"
label="新增名单"
@click="addxue"
/>
</div>
</template>
<template v-slot:body-cell-Sex="props">
<q-td :props="props">
<span>{{props.row.Sex==1?'男':'女'}}</span>
<span>{{ props.row.Sex == 1 ? "男" : "女" }}</span>
</q-td>
</template>
<template v-slot:body-cell-CourseName="props">
<q-td :props="props">
<span>{{props.row.CourseName}}
<div style="color:red;" v-if="props.row.IsChaBan==1">
<span
>{{ props.row.CourseName }}
<div style="color:red;" v-if="props.row.IsChaBan == 1">
插班报入
<q-tooltip :offset="[10, 10]">
              开始课时:{{props.row.StartClassHours}}<br  />
              课程: {{props.row.CourseName}}<br  />
              生效日期: {{props.row.EffectTime}}<br  />
              生效状态: {{props.row.EffectStatusStr}}<br  />
              <template v-if="props.row.UpOrderId&&props.row.UpOrderId>0">
                前置订单: {{props.row.UpOrderId}}<br  />
             </template>
<q-tooltip :offset="[10, 10]">
开始课时:{{ props.row.StartClassHours }}<br />
课程: {{ props.row.CourseName }}<br />
生效日期: {{ props.row.EffectTime }}<br />
生效状态: {{ props.row.EffectStatusStr }}<br />
<template
v-if="props.row.UpOrderId && props.row.UpOrderId > 0"
>
前置订单: {{ props.row.UpOrderId }}<br />
</template>
</q-tooltip>
</div>
</span>
......@@ -98,190 +131,539 @@
<q-td>
<el-popover placement="bottom" title="" width="350" trigger="hover">
<div style="width:300px;height:200px;">
<template v-if="props.row.BackClassList&&props.row.BackClassList.length>0">
<div>退课单据</div><br />
<span v-for="(item,index) in props.row.BackClassList" :key="index"
<template
v-if="
props.row.BackClassList &&
props.row.BackClassList.length > 0
"
>
<div>退课单据</div>
<br />
<span
v-for="(item, index) in props.row.BackClassList"
:key="index"
style="cursor:pointer;color:blue;text-decoration:underline;"
@click="goEduReceiptInfo(item.Id)">{{item.Id}}</span>
@click="goEduReceiptInfo(item.Id)"
>{{ item.Id }}</span
>
</template>
<template v-if="props.row.StopClassList&&props.row.StopClassList.length>0">
<div>停课单据</div><br />
<span v-for="(item,index) in props.row.StopClassList" :key="index"
<template
v-if="
props.row.StopClassList &&
props.row.StopClassList.length > 0
"
>
<div>停课单据</div>
<br />
<span
v-for="(item, index) in props.row.StopClassList"
:key="index"
style="cursor:pointer;color:blue;text-decoration:underline;"
@click="goEduReceiptInfo(item.Id)">{{item.Id}}</span>
@click="goEduReceiptInfo(item.Id)"
>{{ item.Id }}</span
>
</template>
<template v-if="props.row.InvitationClassList&&props.row.InvitationClassList.length>0">
<div>临时上课邀请单据</div><br />
<span v-for="(item,index) in props.row.InvitationClassList" :key="index"
<template
v-if="
props.row.InvitationClassList &&
props.row.InvitationClassList.length > 0
"
>
<div>临时上课邀请单据</div>
<br />
<span
v-for="(item, index) in props.row.InvitationClassList"
:key="index"
style="cursor:pointer;color:blue;text-decoration:underline;"
@click="goEduReceiptInfo(item.Id)">{{item.Id}}</span>
@click="goEduReceiptInfo(item.Id)"
>{{ item.Id }}</span
>
</template>
<template v-if="props.row.OrderTransClassList&&props.row.OrderTransClassList.length>0">
<div>订单转班单据</div><br />
<span v-for="(item,index) in props.row.OrderTransClassList" :key="index"
<template
v-if="
props.row.OrderTransClassList &&
props.row.OrderTransClassList.length > 0
"
>
<div>订单转班单据</div>
<br />
<span
v-for="(item, index) in props.row.OrderTransClassList"
:key="index"
style="cursor:pointer;color:blue;text-decoration:underline;"
@click="goEduReceiptInfo(item.Id)">{{item.Id}}</span>
@click="goEduReceiptInfo(item.Id)"
>{{ item.Id }}</span
>
</template>
<template v-if="props.row.OrderSplitClassList&&props.row.OrderSplitClassList.length>0">
<div>订单分拆单据</div><br />
<span v-for="(item,index) in props.row.OrderSplitClassList" :key="index"
<template
v-if="
props.row.OrderSplitClassList &&
props.row.OrderSplitClassList.length > 0
"
>
<div>订单分拆单据</div>
<br />
<span
v-for="(item, index) in props.row.OrderSplitClassList"
:key="index"
style="cursor:pointer;color:blue;text-decoration:underline;"
@click="goEduReceiptInfo(item.Id)">{{item.Id}}</span>
@click="goEduReceiptInfo(item.Id)"
>{{ item.Id }}</span
>
</template>
</div>
<span slot="reference" class="pri_Color" v-if="(props.row.BackClassList&&props.row.BackClassList.length>0)||(props.row.StopClassList&&props.row.StopClassList.length>0)
||(props.row.InvitationClassList&&props.row.InvitationClassList.length>0)||(props.row.OrderTransClassList&&props.row.OrderTransClassList.length>0)
||(props.row.OrderSplitClassList&&props.row.OrderSplitClassList.length>0)">查看单据</span>
<span
slot="reference"
class="pri_Color"
v-if="
(props.row.BackClassList &&
props.row.BackClassList.length > 0) ||
(props.row.StopClassList &&
props.row.StopClassList.length > 0) ||
(props.row.InvitationClassList &&
props.row.InvitationClassList.length > 0) ||
(props.row.OrderTransClassList &&
props.row.OrderTransClassList.length > 0) ||
(props.row.OrderSplitClassList &&
props.row.OrderSplitClassList.length > 0)
"
>查看单据</span
>
</el-popover>
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
<q-pagination
class="full-width justify-end"
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
:input="true"
@input="changePage"
/>
</template>
<template v-slot:body-cell-optioned="props" v-if="isShowBtn">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditRole(props.row)" />
<q-btn flat size="xs" icon="iconfont icon-shanchu" color="negative" style="font-weight:400" class="q-mr-xs"
label="删除" @click="deleteUser(props.row)" />
<q-btn
flat
size="xs"
icon="edit"
color="accent"
style="font-weight:400"
label="编辑"
@click="EditRole(props.row)"
/>
<q-btn
flat
size="xs"
icon="iconfont icon-shanchu"
color="negative"
style="font-weight:400"
class="q-mr-xs"
label="删除"
@click="deleteUser(props.row)"
/>
</q-td>
</template>
</q-table>
</div>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-dialog
v-model="persistent"
content-class="bg-grey-1"
persistent
transition-show="scale"
transition-hide="scale"
>
<q-card style="width: 800px;max-width:900px;" class="stuCard">
<q-card-section>
<div class="text-h6">{{addMsg.Id==0?'新增学员':'修改学员'}}</div>
<div class="text-h6">
{{ addMsg.Id == 0 ? "新增学员" : "修改学员" }}
</div>
</q-card-section>
<div class="text-caption q-mb-lg q-px-md text-grey-6">基础信息</div>
<q-card-section class="q-pt-none" v-if="msg.ClassId>0">
<q-card-section class="q-pt-none" v-if="msg.ClassId > 0">
<div class="row wrap">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GuestName" ref="GuestName"
label="姓名" :rules="[val => !!val || '姓名']" />
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.GuestName"
ref="GuestName"
label="姓名"
:rules="[val => !!val || '姓名']"
/>
<div class="col-6 q-pb-lg q-pr-lg">
<q-radio v-model="addMsg.Sex" val="1" label="男" />
<q-radio v-model="addMsg.Sex" val="2" label="女" />
</div>
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Profession" label="职业"
:rules="[val => !!val || '职业']" />
<q-input filled v-model="addMsg.BirthDate" :rules="[val => !!val || '请选择出生日期']" class="col-6 q-pb-lg"
ref="BirthDate" mask="date" label="出生日期">
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.Profession"
label="职业"
:rules="[val => !!val || '职业']"
/>
<q-input
filled
v-model="addMsg.BirthDate"
:rules="[val => !!val || '请选择出生日期']"
class="col-6 q-pb-lg"
ref="BirthDate"
mask="date"
label="出生日期"
>
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy3" transition-show="scale" transition-hide="scale">
<q-date v-model="addMsg.BirthDate" @input="() => $refs.qDateProxy3.hide()" />
<q-popup-proxy
ref="qDateProxy3"
transition-show="scale"
transition-hide="scale"
>
<q-date
v-model="addMsg.BirthDate"
@input="() => $refs.qDateProxy3.hide()"
/>
</q-popup-proxy>
</q-icon>
</template>
</q-input>
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" maxlength="5" disable v-model="addMsg.TotalHours"
label="总课时" :rules="[val => !!val || '请填写总课时']" @keyup.native="checkInteger(addMsg,'TotalHours')" />
<q-input clearable filled class="col-6 q-pb-lg" ref="Mobile" maxlength="20" v-model="addMsg.Mobile"
label="电话" :rules="[val => !!val || '电话']" />
<q-select class="col-6 q-pb-lg q-pr-lg" option-value="Name" ref="Basics" standout="bg-primary text-white"
option-label="Name" v-model="addMsg.Basics" :options="GBList" emit-value map-options label="语言基础"
use-input new-value-mode="add-unique" hint="自己输入语言基础的话,输入之后按回车!" />
<q-select class="col-6 q-pb-lg" option-value="Id" standout="bg-primary text-white" option-label="Name"
v-model="addMsg.Education" :options="GEList" emit-value map-options label="最高学历" />
<q-select class="col-6 q-pb-lg q-pr-lg" option-value="Id" standout="bg-primary text-white"
option-label="Name" v-model="addMsg.LearningGoals" :options="GLList" emit-value map-options
label="学习目的" />
<q-select class="col-6 q-pb-lg" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="addMsg.GuestSource" :options="OFList" emit-value map-options label="客人来源" />
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.ContactAddress" label="现居住地址" />
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
maxlength="5"
disable
v-model="addMsg.TotalHours"
label="总课时"
:rules="[val => !!val || '请填写总课时']"
@keyup.native="checkInteger(addMsg, 'TotalHours')"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg"
ref="Mobile"
maxlength="20"
v-model="addMsg.Mobile"
label="电话"
:rules="[val => !!val || '电话']"
/>
<q-select
class="col-6 q-pb-lg q-pr-lg"
option-value="Name"
ref="Basics"
standout="bg-primary text-white"
option-label="Name"
v-model="addMsg.Basics"
:options="GBList"
emit-value
map-options
label="语言基础"
use-input
new-value-mode="add-unique"
hint="自己输入语言基础的话,输入之后按回车!"
/>
<q-select
class="col-6 q-pb-lg"
option-value="Id"
standout="bg-primary text-white"
option-label="Name"
v-model="addMsg.Education"
:options="GEList"
emit-value
map-options
label="最高学历"
/>
<q-select
class="col-6 q-pb-lg q-pr-lg"
option-value="Id"
standout="bg-primary text-white"
option-label="Name"
v-model="addMsg.LearningGoals"
:options="GLList"
emit-value
map-options
label="学习目的"
/>
<q-select
class="col-6 q-pb-lg"
standout="bg-primary text-white"
option-value="Id"
option-label="Name"
v-model="addMsg.GuestSource"
:options="OFList"
emit-value
map-options
label="客人来源"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.ContactAddress"
label="现居住地址"
/>
<div class="col-6 q-pr-lg q-pb-lg">
<q-uploader
style="min-height:268px;max-width: 300px; background-repeat:no-repeat;background-position: 50% 50%;background-size: cover;"
:style="{'background-image':'url(' + addMsg.StuIcon + ')'}" max-files="1" hide-upload-btn
@rejected="onRejected" label="学生头像" :max-file-size="5*1024*1024" accept=".jpg, image/*" auto-upload
:factory="uploadFile" no-thumbnails>
:style="{ 'background-image': 'url(' + addMsg.StuIcon + ')' }"
max-files="1"
hide-upload-btn
@rejected="onRejected"
label="学生头像"
:max-file-size="5 * 1024 * 1024"
accept=".jpg, image/*"
auto-upload
:factory="uploadFile"
no-thumbnails
>
</q-uploader>
</div>
</div>
</q-card-section>
<q-card-section class="q-pt-none" v-if="msg.SourceId>0">
<q-card-section class="q-pt-none" v-if="msg.SourceId > 0">
<div class="row wrap">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GuestName" ref="GuestName"
label="姓名" :rules="[val => !!val || '姓名']" />
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.GuestName"
ref="GuestName"
label="姓名"
:rules="[val => !!val || '姓名']"
/>
<div class="col-6 q-pb-lg">
<q-radio v-model="addMsg.Sex" val="1" label="男" />
<q-radio v-model="addMsg.Sex" val="2" label="女" />
</div>
<q-input filled v-model="addMsg.BirthDate" :rules="[val => !!val || '请选择出生日期']"
class="col-6 q-pb-lg q-pr-lg" ref="BirthDate" mask="date" label="出生日期">
<q-input
filled
v-model="addMsg.BirthDate"
:rules="[val => !!val || '请选择出生日期']"
class="col-6 q-pb-lg q-pr-lg"
ref="BirthDate"
mask="date"
label="出生日期"
>
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy3" transition-show="scale" transition-hide="scale">
<q-date v-model="addMsg.BirthDate" @input="() => $refs.qDateProxy3.hide()" />
<q-popup-proxy
ref="qDateProxy3"
transition-show="scale"
transition-hide="scale"
>
<q-date
v-model="addMsg.BirthDate"
@input="() => $refs.qDateProxy3.hide()"
/>
</q-popup-proxy>
</q-icon>
</template>
</q-input>
<q-input clearable filled class="col-6 q-pb-lg" maxlength="20" v-model="addMsg.Mobile" ref="Mobile"
label="电话" :rules="[val => !!val || '电话']" />
<q-select class="col-6 q-pb-lg q-pr-lg" option-value="Name" filled :rules="[val => !!val || '请选择日语水平']"
ref="Basics" standout="bg-primary text-white" option-label="Name" v-model="addMsg.Basics"
:options="GBList" emit-value map-options label="日语水平" use-input new-value-mode="add-unique"
hint="自己输入日语水平的话,输入之后按回车!" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="addMsg.GraduatedSchool" label="毕业院校" />
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GraduatedMajor" label="毕业专业" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="addMsg.VolunteerMajor" label="志愿专业" />
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Price" label="价格"
@keyup.native="checkPrice(addMsg,'Price')" />
<q-input
clearable
filled
class="col-6 q-pb-lg"
maxlength="20"
v-model="addMsg.Mobile"
ref="Mobile"
label="电话"
:rules="[val => !!val || '电话']"
/>
<q-select
class="col-6 q-pb-lg q-pr-lg"
option-value="Name"
filled
:rules="[val => !!val || '请选择日语水平']"
ref="Basics"
standout="bg-primary text-white"
option-label="Name"
v-model="addMsg.Basics"
:options="GBList"
emit-value
map-options
label="日语水平"
use-input
new-value-mode="add-unique"
hint="自己输入日语水平的话,输入之后按回车!"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg"
v-model="addMsg.GraduatedSchool"
label="毕业院校"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.GraduatedMajor"
label="毕业专业"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg"
v-model="addMsg.VolunteerMajor"
label="志愿专业"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.Price"
label="价格"
@keyup.native="checkPrice(addMsg, 'Price')"
/>
<div class="col-6 q-pr-lg q-pb-lg">
<q-uploader style="display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style="{'background-image':'url(' + addMsg.StuIcon + ')'}" max-files="1" hide-upload-btn
@rejected="onRejected" label="学生头像" :max-file-size="5*1024*1024" accept=".jpg, image/*" auto-upload
:factory="uploadFile" no-thumbnails>
<q-uploader
style="display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style="{ 'background-image': 'url(' + addMsg.StuIcon + ')' }"
max-files="1"
hide-upload-btn
@rejected="onRejected"
label="学生头像"
:max-file-size="5 * 1024 * 1024"
accept=".jpg, image/*"
auto-upload
:factory="uploadFile"
no-thumbnails
>
</q-uploader>
</div>
</div>
</q-card-section>
<div class="text-caption q-mb-lg q-px-md text-grey-6" v-if="msg.ClassId>0">附加信息</div>
<div class="row wrap" style="margin:0 20px;" v-if="msg.ClassId>0">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.IDCard" label="身份证" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="addMsg.Domicile" label="身份证居住地" />
<div
class="text-caption q-mb-lg q-px-md text-grey-6"
v-if="msg.ClassId > 0"
>
附加信息
</div>
<div class="row wrap" style="margin:0 20px;" v-if="msg.ClassId > 0">
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.IDCard"
label="身份证"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg"
v-model="addMsg.Domicile"
label="身份证居住地"
/>
</div>
<div class="row wrap" style="margin:0 20px;" v-if="msg.ClassId > 0">
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.Contact"
label="重要联系人"
/>
<q-input
clearable
filled
class="col-6 q-pb-lg"
v-model="addMsg.ContactMobile"
label="重要联系电话"
/>
</div>
<div class="row wrap" style="margin:0 20px;" v-if="msg.ClassId>0">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Contact" label="重要联系人" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="addMsg.ContactMobile" label="重要联系电话" />
<div
class="text-caption q-mb-lg q-px-md text-grey-6"
v-if="msg.SourceId > 0"
>
备注信息
</div>
<div class="text-caption q-mb-lg q-px-md text-grey-6" v-if="msg.SourceId>0">备注信息</div>
<div class="row wrap" style="margin:0 20px;" v-if="msg.SourceId>0">
<q-input filled stack-label :dense="false" v-model="addMsg.StudyRemark" type="textarea" class="col-12"
label="备注" maxlength="300" />
<div class="row wrap" style="margin:0 20px;" v-if="msg.SourceId > 0">
<q-input
filled
stack-label
:dense="false"
v-model="addMsg.StudyRemark"
type="textarea"
class="col-12"
label="备注"
maxlength="300"
/>
</div>
<div class="row wrap" style="margin:0 20px;">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GuestContractNo" label="合同编号" />
<q-select class="col-6 q-pb-lg" ref="ContractType" @input="resetContractArr" standout="bg-primary text-white"
option-value="Id" option-label="Name" v-model="addMsg.ContractType" :options="ContractTypeList" emit-value
map-options label="上传类型" use-input new-value-mode="add-unique" />
<q-input
clearable
filled
class="col-6 q-pb-lg q-pr-lg"
v-model="addMsg.GuestContractNo"
label="合同编号"
/>
<q-select
class="col-6 q-pb-lg"
ref="ContractType"
@input="resetContractArr"
standout="bg-primary text-white"
option-value="Id"
option-label="Name"
v-model="addMsg.ContractType"
:options="ContractTypeList"
emit-value
map-options
label="上传类型"
use-input
new-value-mode="add-unique"
/>
</div>
<div class="row wrap" style="margin:0 20px;">
<div class="col-12 text-grey-6">
上传附件:<span class="fj-tip" style="font-size: 10px; color: #f00"></span>
上传附件:<span
class="fj-tip"
style="font-size: 10px; color: #f00"
></span>
</div>
</div>
<div>
<div class="_addUpload_stu" style="margin:15px 0 0 20px;min-height:100px;">
<div
class="_addUpload_stu"
style="margin:15px 0 0 20px;min-height:100px;"
>
<template v-for="(file, fIndex) in addMsg.ContractUrl">
<div v-if="addMsg.ContractType == 2">
<div style="width: 100%; height: 100%; overflow: hidden">
<el-image style="width: 100%; height: 100%" :src="file" :preview-src-list="addMsg.ContractUrl">
<el-image
style="width: 100%; height: 100%"
:src="file"
:preview-src-list="addMsg.ContractUrl"
>
</el-image>
</div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
<span
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div>
<div v-if="addMsg.ContractType == 1" style="float:left;">
<div class="iconfont icon-pdf" style="font-size:38px;color:green;text-align:center;line-height:75px;"
@click="showUpLoadFile(file)"></div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></span>
<div
class="iconfont icon-pdf"
style="font-size:38px;color:green;text-align:center;line-height:75px;"
@click="showUpLoadFile(file)"
></div>
<span
class="iconfont icon-guanbi1"
@click="deleteUploadFile(fIndex)"
></span>
</div>
</template>
<div class="_pic_upload">
<el-upload drag :http-request="uploadFileBtn" :multiple="true" :show-file-list="false" action="">
<el-upload
drag
:http-request="uploadFileBtn"
:multiple="true"
:show-file-list="false"
action=""
>
<i class="el-icon-plus avatar-uploader-icon"></i>
<div class="el-upload__text">
{{ $t("active.ld_djscwj") }}
......@@ -292,17 +674,34 @@
</div>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<q-btn label="保存" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="save_t()" />
<q-btn
label="取消"
flat
color="grey-10"
style="font-weight:400 !important"
@click="closeSaveForm"
/>
<q-btn
label="保存"
color="accent q-px-md"
style="font-weight:400 !important"
:loading="saveLoading"
@click="save_t()"
/>
</q-card-actions>
</q-card>
</q-dialog>
<betchTransfer
v-if="showBetchTransfer"
@close="closeBetchTransfer"
:OrderId="msg.OrderId"
@success="resetSearch"
></betchTransfer>
</div>
</template>
<script>
import {
import {
getOrderGuestPageList,
getGuestBasicsEnumList, //日语基础枚举
getGuestEducationEnumList, //学历枚举
......@@ -310,151 +709,154 @@
getOrderSourceEnumList, //来源枚举
setOrderGuestInfo, //保存
delOrderGuestInfo, //删除
GetSelectClassOrderList,
} from '../../api/sale/sale'
import {
UploadSelfFile,
} from '../../api/common/common'
GetSelectClassOrderList
} from "../../api/sale/sale";
export default {
import { UploadSelfFile } from "../../api/common/common";
import betchTransfer from "../../components/school/student/batchTransfer-order";
export default {
components: {
betchTransfer
},
data() {
return {
currentUrl: "",
columns: [{
name: 'GuestName',
label: '姓名',
columns: [
{
name: "GuestName",
label: "姓名",
required: true,
field: 'GuestName',
align: 'left'
field: "GuestName",
align: "left"
},
{
name: 'Profession',
field: 'Profession',
label: '职业',
align: 'left',
name: "Profession",
field: "Profession",
label: "职业",
align: "left"
},
{
name: 'Sex',
label: '性别',
align: 'left'
name: "Sex",
label: "性别",
align: "left"
},
{
name: 'BirthDate',
label: '出生日期',
field: 'BirthDate',
align: 'left'
name: "BirthDate",
label: "出生日期",
field: "BirthDate",
align: "left"
},
{
name: 'CourseName',
label: '课程名称',
field: 'CourseName',
align: 'left'
name: "CourseName",
label: "课程名称",
field: "CourseName",
align: "left"
},
{
name: 'GuestStateStr',
label: '学员状态',
field: 'GuestStateStr',
align: 'left'
name: "GuestStateStr",
label: "学员状态",
field: "GuestStateStr",
align: "left"
},
{
name: 'TotalHours',
label: '总课时',
field: 'TotalHours',
align: 'left'
name: "TotalHours",
label: "总课时",
field: "TotalHours",
align: "left"
},
{
name: 'ValidClassHours',
label: '有效课时',
field: 'ValidClassHours',
align: 'left'
name: "ValidClassHours",
label: "有效课时",
field: "ValidClassHours",
align: "left"
},
{
name: 'CompleteHours',
label: '已上课时',
field: 'CompleteHours',
align: 'left'
name: "CompleteHours",
label: "已上课时",
field: "CompleteHours",
align: "left"
},
{
name: 'SurplusHours',
label: '剩余课时',
field: 'SurplusHours',
align: 'left'
name: "SurplusHours",
label: "剩余课时",
field: "SurplusHours",
align: "left"
},
{
name: 'MakeUpHours',
label: '可补课时',
field: 'MakeUpHours',
align: 'left'
name: "MakeUpHours",
label: "可补课时",
field: "MakeUpHours",
align: "left"
},
{
name: 'BackClassList',
label: '业务单据',
field: 'BackClassList',
align: 'left'
name: "BackClassList",
label: "业务单据",
field: "BackClassList",
align: "left"
},
{
name: 'Mobile',
label: '电话',
field: 'Mobile',
align: 'left'
name: "Mobile",
label: "电话",
field: "Mobile",
align: "left"
},
{
name: 'Basics',
label: '日语基础',
field: 'Basics',
align: 'left'
name: "Basics",
label: "日语基础",
field: "Basics",
align: "left"
},
{
name: 'GuestSourceName',
label: '客户来源',
field: 'GuestSourceName',
align: 'left'
name: "GuestSourceName",
label: "客户来源",
field: "GuestSourceName",
align: "left"
},
{
name: 'LearningGoalsName',
label: '学日语目的',
field: 'LearningGoalsName',
align: 'left'
name: "LearningGoalsName",
label: "学日语目的",
field: "LearningGoalsName",
align: "left"
},
{
name: 'Contact',
label: '重要联系人',
field: 'Contact',
align: 'left'
name: "Contact",
label: "重要联系人",
field: "Contact",
align: "left"
},
{
name: 'ContactMobile',
label: '重要联系电话',
field: 'ContactMobile',
align: 'left'
name: "ContactMobile",
label: "重要联系电话",
field: "ContactMobile",
align: "left"
},
{
name: 'GraduatedSchool',
label: '毕业院校',
field: 'GraduatedSchool',
align: 'left'
name: "GraduatedSchool",
label: "毕业院校",
field: "GraduatedSchool",
align: "left"
},
{
name: 'GraduatedMajor',
label: '毕业专业',
field: 'GraduatedMajor',
align: 'left'
name: "GraduatedMajor",
label: "毕业专业",
field: "GraduatedMajor",
align: "left"
},
{
name: 'VolunteerMajor',
label: '志愿专业',
field: 'VolunteerMajor',
align: 'left'
name: "VolunteerMajor",
label: "志愿专业",
field: "VolunteerMajor",
align: "left"
},
{
name: 'Price',
label: '价格',
field: 'Price',
align: 'left'
name: "Price",
label: "价格",
field: "Price",
align: "left"
},
{
name: 'optioned',
label: '操作',
name: "optioned",
label: "操作"
}
],
data: [],
......@@ -466,8 +868,8 @@
OrderId: 0, //订单编号
ClassId: 0, //班级编号
SourceId: 0, //留学就业编号
GuestName: '',
GuestState: 0,
GuestName: "",
GuestState: 0
},
pageCount: 0,
persistent: false,
......@@ -475,20 +877,20 @@
addMsg: {
Id: 0,
OrderId: 0,
GuestName: '',
Profession: '',
Sex: '1',
GuestName: "",
Profession: "",
Sex: "1",
Age: 0,
Mobile: '',
Basics: '',
Education: '', //学历
GuestSource: '', //来源
Mobile: "",
Basics: "",
Education: "", //学历
GuestSource: "", //来源
LearningGoals: "", // 学习目的
Contact: '', //紧急联系人
ContactMobile: '', //紧急联系电话
IDCard: '', //身份证
Domicile: '', //身份证居住地
ContactAddress: '', //联系地址
Contact: "", //紧急联系人
ContactMobile: "", //紧急联系电话
IDCard: "", //身份证
Domicile: "", //身份证居住地
ContactAddress: "", //联系地址
SourceId: 0, //留学就业编号
GraduatedSchool: "", //毕业院校
GraduatedMajor: "", //毕业专业
......@@ -497,8 +899,8 @@
StudyRemark: "", //留学就业备注
BirthDate: "", //出生日期
TotalHours: 0, //总课时
StuIcon: '', //头像
GuestContractNo: '', //合同编号
StuIcon: "", //头像
GuestContractNo: "", //合同编号
ContractType: 1, //上传类型 1-PDF 2图片
ContractUrl: [] //合同链接
},
......@@ -509,18 +911,20 @@
isShowBtn: true, //默认显示新增名单
CourseClassHourse: 0, //课时
//表格可见列
visibleColumns: [
], //可见列
visibleColumns: [], //可见列
initialIndex: 0,
ContractTypeList: [{
Name: 'PDF',
ContractTypeList: [
{
Name: "PDF",
Id: 1
}, {
Name: '图片',
},
{
Name: "图片",
Id: 2
}]
}
],
showBetchTransfer: false
};
},
created() {
if (this.$route.query && this.$route.query.OrderId) {
......@@ -540,22 +944,47 @@
this.isShowBtn = false;
}
if (this.msg.ClassId > 0) {
this.visibleColumns = ['GuestName', 'Profession', 'Sex', 'BirthDate', 'Mobile', 'Basics', 'GuestSourceName',
'LearningGoalsName', 'Contact', 'ContactMobile', 'TotalHours', 'ValidClassHours', 'CompleteHours',
'MakeUpHours',
'SurplusHours', 'StartClassHours', 'CourseName', 'IsChaBan', 'BackClassList', 'GuestStateStr'
this.visibleColumns = [
"GuestName",
"Profession",
"Sex",
"BirthDate",
"Mobile",
"Basics",
"GuestSourceName",
"LearningGoalsName",
"Contact",
"ContactMobile",
"TotalHours",
"ValidClassHours",
"CompleteHours",
"MakeUpHours",
"SurplusHours",
"StartClassHours",
"CourseName",
"IsChaBan",
"BackClassList",
"GuestStateStr"
];
}
if (this.msg.SourceId > 0) {
this.visibleColumns = ['GuestName', 'Sex', 'BirthDate', 'Mobile', 'Basics', 'GraduatedSchool', 'GraduatedMajor',
'VolunteerMajor', 'Price'
this.visibleColumns = [
"GuestName",
"Sex",
"BirthDate",
"Mobile",
"Basics",
"GraduatedSchool",
"GraduatedMajor",
"VolunteerMajor",
"Price"
];
}
this.visibleColumns.push('optioned');
this.visibleColumns.push("optioned");
this.getOrderInfo();
this.getGuestBasics()
this.getGuestEducation()
this.getGuestLearning()
this.getGuestBasics();
this.getGuestEducation();
this.getGuestLearning();
this.getGuestSource();
},
mounted() {
......@@ -566,7 +995,7 @@
goEduReceiptInfo(Id) {
this.OpenNewUrl("/user/billquery", {
Id: Id
})
});
},
resetContractArr() {
this.addMsg.ContractUrl = [];
......@@ -586,20 +1015,21 @@
},
uploadFileBtn(file) {
// 1 文档 2 数据 3 图片,4压缩包,5视频
let typeArr = [{
let typeArr = [
{
stringArr: "GIF|JPG|JPEG|PNG|BMP|WEBP",
type: 2,
type: 2
},
{
stringArr: "PDF|pdf",
type: 1,
},
type: 1
}
];
let ft = file.file.name
.substring(file.file.name.lastIndexOf(".") + 1, file.file.name.length)
.toUpperCase();
let fileTypeNumber = 2;
typeArr.forEach((x) => {
typeArr.forEach(x => {
if (x.stringArr.indexOf(ft) != "-1") {
fileTypeNumber = x.type;
}
......@@ -607,38 +1037,38 @@
if (this.addMsg.ContractType == 1) {
if (fileTypeNumber != 1) {
this.$q.notify({
type: 'negative',
type: "negative",
position: "top",
message: `请上传pdf文件`
})
return
});
return;
}
}
if (this.addMsg.ContractType == 2) {
if (fileTypeNumber != 2) {
this.$q.notify({
type: 'negative',
type: "negative",
position: "top",
message: `请上传图片`
})
return
});
return;
}
}
this.$message.info(this.$t("tips.shangchuanzhong"));
UploadSelfFile(
"Temporary",
file.file,
(x) => {
x => {
if (x.Code == 1) {
if (this.addMsg.ContractType == 1) {
if (this.addMsg.ContractUrl.length < 1) {
this.addMsg.ContractUrl.push(x.FileUrl);
} else {
this.$q.notify({
type: 'negative',
type: "negative",
position: "top",
message: `只能上传一个PDF文件`
})
});
}
} else {
this.addMsg.ContractUrl.push(x.FileUrl);
......@@ -653,21 +1083,22 @@
var qMsg = {
ClassId: this.msg.ClassId,
OrderId: this.msg.OrderId
}
};
GetSelectClassOrderList(qMsg).then(res => {
if (res.Code == 1) {
var tempData = res.Data;
if (tempData && tempData.length == 1) {
this.CourseClassHourse = tempData[0].ClassHours - tempData[0].StartClassHours
this.CourseClassHourse =
tempData[0].ClassHours - tempData[0].StartClassHours;
}
}
})
});
},
//日语基础枚举
getGuestBasics() {
getGuestBasicsEnumList({}).then(res => {
if (res.Code == 1) {
this.GBList = res.Data
this.GBList = res.Data;
}
});
},
......@@ -684,18 +1115,20 @@
getGuestLearningGoalsEnumList({}).then(res => {
if (res.Code == 1) {
this.GLList = res.Data;
this.addMsg.LearningGoals = this.GLList[0].Id
this.addMsg.LearningGoals = this.GLList[0].Id;
}
});
},
//获取客人来源枚举
getGuestSource() {
getOrderSourceEnumList({}).then(res => {
getOrderSourceEnumList({})
.then(res => {
if (res.Code == 1) {
this.OFList = res.Data
this.addMsg.GuestSource = this.OFList[0].Id
this.OFList = res.Data;
this.addMsg.GuestSource = this.OFList[0].Id;
}
}).catch(() => {})
})
.catch(() => {});
},
//重新查询
resetSearch() {
......@@ -705,26 +1138,28 @@
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getGuestPage()
this.getGuestPage();
},
//获取学员名单
getGuestPage() {
this.loading = true;
getOrderGuestPageList(this.msg).then(res => {
this.loading = false
this.data = res.Data.PageData
this.pageCount = res.Data.PageCount
}).catch(() => {
this.loading = false
getOrderGuestPageList(this.msg)
.then(res => {
this.loading = false;
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
})
.catch(() => {
this.loading = false;
});
},
//返回
goreturn() {
this.$router.go(-1)
this.$router.go(-1);
},
//关闭弹窗
closeSaveForm() {
this.persistent = false
this.persistent = false;
},
//新增修改学员信息
save_t() {
......@@ -732,37 +1167,42 @@
this.$refs.Basics.validate();
this.$refs.BirthDate.validate();
this.$refs.Mobile.validate();
if (!this.$refs.GuestName.hasError && !this.$refs.Basics.hasError && !this.$refs.BirthDate.hasError && !this
.$refs.Mobile.hasError
if (
!this.$refs.GuestName.hasError &&
!this.$refs.Basics.hasError &&
!this.$refs.BirthDate.hasError &&
!this.$refs.Mobile.hasError
) {
if (this.msg.ClassId > 0) {
if (this.addMsg.Education == '') {
if (this.addMsg.Education == "") {
this.$q.notify({
type: 'negative',
type: "negative",
position: "top",
message: `请选择学历`
})
});
return;
}
}
this.saveLoading = true
setOrderGuestInfo(this.addMsg).then(res => {
this.saveLoading = true;
setOrderGuestInfo(this.addMsg)
.then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: '保存成功!',
position: 'top'
})
message: "保存成功!",
position: "top"
});
this.saveLoading = false;
this.persistent = false;
this.resetSearch()
this.initialize()
this.resetSearch();
this.initialize();
}
}).catch(() => {
this.saveLoading = false
})
.catch(() => {
this.saveLoading = false;
});
}
},
//初始化数据
......@@ -770,28 +1210,28 @@
this.addMsg = {
Id: 0,
OrderId: this.$route.query.OrderId,
GuestName: '',
Profession: '',
Sex: '1',
GuestName: "",
Profession: "",
Sex: "1",
Age: 0,
Mobile: '',
Basics: '',
Education: '', //学历
Mobile: "",
Basics: "",
Education: "", //学历
GuestSource: this.OFList[0].Id, //来源
LearningGoals: this.GLList[0].Id, // 学习目的
Contact: '', //紧急联系人
ContactMobile: '', //紧急联系电话
IDCard: '', //身份证
Domicile: '', //身份证居住地
ContactAddress: '', //联系地址
Contact: "", //紧急联系人
ContactMobile: "", //紧急联系电话
IDCard: "", //身份证
Domicile: "", //身份证居住地
ContactAddress: "", //联系地址
SourceId: this.$route.query.SourceId,
GraduatedSchool: "", //毕业院校
GraduatedMajor: "", //毕业专业
VolunteerMajor: "", //志愿专业
Price: 0, //价格
StudyRemark: "", //留学就业备注
TotalHours: this.CourseClassHourse,
}
TotalHours: this.CourseClassHourse
};
},
//新增学员弹窗
addxue() {
......@@ -800,17 +1240,17 @@
},
//修改学员信息
EditRole(item) {
this.addMsg.Id = item.Id
this.addMsg.GuestName = item.GuestName
this.addMsg.Profession = item.Profession
this.addMsg.Sex = item.Sex.toString()
this.addMsg.Age = item.Age
this.addMsg.Mobile = item.Mobile
this.addMsg.Basics = item.Basics
this.addMsg.Education = item.Education
this.addMsg.GuestSource = item.GuestSource
this.addMsg.LearningGoals = item.LearningGoals
this.addMsg.Contact = item.Contact
this.addMsg.Id = item.Id;
this.addMsg.GuestName = item.GuestName;
this.addMsg.Profession = item.Profession;
this.addMsg.Sex = item.Sex.toString();
this.addMsg.Age = item.Age;
this.addMsg.Mobile = item.Mobile;
this.addMsg.Basics = item.Basics;
this.addMsg.Education = item.Education;
this.addMsg.GuestSource = item.GuestSource;
this.addMsg.LearningGoals = item.LearningGoals;
this.addMsg.Contact = item.Contact;
this.addMsg.ContactMobile = item.ContactMobile;
this.addMsg.IDCard = item.IDCard;
this.addMsg.Domicile = item.Domicile;
......@@ -833,50 +1273,54 @@
},
//删除学员
deleteUser(item) {
let that = this
this.$q.dialog({
title: '提示信息',
message: '是否删除此学员!',
let that = this;
this.$q
.dialog({
title: "提示信息",
message: "是否删除此学员!",
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
cancel: "取消"
})
.onOk(() => {
delOrderGuestInfo({
GuestId: item.Id
}).then(res => {
if (res.Code == 1) {
that.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
icon: "iconfont icon-chenggong",
color: "accent",
timeout: 2000,
message: '操作成功',
position: 'top'
})
message: "操作成功",
position: "top"
});
that.getGuestPage();
}
});
})
}).onCancel(() => {});
.onCancel(() => {});
},
onRejected(rejectedEntries) {
this.$q.notify({
type: 'negative',
type: "negative",
position: "top",
message: `文件验证失败,请重新上传`
})
});
},
uploadFile(files) {
UploadSelfFile('studentIcon', files[0], res => {
UploadSelfFile("studentIcon", files[0], res => {
if (res.Code == 1) {
this.addMsg.StuIcon = res.FileUrl;
}
})
});
},
closeBetchTransfer() {
this.showBetchTransfer = false;
}
}
};
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
@import url('~assets/css/table.sass')
</style>
......@@ -875,7 +875,12 @@ const routes = [{
import("pages/sale/visitorRegistrat.vue")
},
{
path: "/sale/b2bcustomer", //销售 同行管理
path: "/sale/b2bcustomer", //销售 我的同行
component: () =>
import("pages/sale/b2bcustomer.vue")
},
{
path: "/sale/b2bAllCustomer", //销售 同行管理
component: () =>
import("pages/sale/b2bcustomer.vue")
},
......
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