Commit 23ac59f8 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/luochao/confucius into master

# Conflicts:
#	src/api/sale/sale.js
#	src/components/school/student/stulist.vue
parents f39a0325 388d2162
......@@ -49,7 +49,7 @@ module.exports = function (ctx) {
env: ctx.dev ? {
// API: 'https://localhost:5001/api',
// API: 'http://192.168.20.24:8300/api',
API: 'http://192.168.20.8:8085/api',
API: 'http://192.168.10.46:8300/api',
// API: 'http://192.168.20.17:8017/api',
......@@ -98,7 +98,7 @@ module.exports = function (ctx) {
// https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework: {
iconSet: 'material-icons', // Quasar icon set
lang: 'en-us', // Quasar language pack
lang: 'zh-hans', // Quasar language pack
config: {},
// Possible values for "importStrategy":
......
......@@ -13,7 +13,7 @@ export default {
//alert("shouji");
} else {
//alert("diannao");
document.write('<link href="font.css" rel="stylesheet" type="text/css" media="screen" />');
document.write('<link href="http://edu.oytour.com/font.css" rel="stylesheet" type="text/css" media="screen" />');
}
},
};
......
......@@ -411,3 +411,14 @@ export function getOrderGuestRenewState(data) {
data
});
}
// 获取协助数据
export function GetStudentAssistList(data) {
return request({
url: '/CustomerStudent/GetStudentAssistList',
method: 'post',
data
});
}
......@@ -11,6 +11,14 @@ export function getStudentAttendanceDayStatistics(data) {
});
}
export function getTodayVisitList(data){
return request({
url: '/DutyPlan/GetDutyTodayVisit',
method: 'post',
data
});
}
//学管 获取访客列表
export function getVisitorAllPageList(data) {
return request({
......
This diff is collapsed.
<style>
.delAssist{
position: absolute;
right: 0;
top: 28px;
display: inline-block;
background: red;
border-radius: 50%;
color: #FFF;
width: 20px;
height: 20px;
text-align: center;
line-height: 20px;
cursor: pointer;
}
</style>
<template>
<div>
<div class="row wrap" style="flex-direction:row-reverse">
<q-btn label="新增" color="accent q-mb-lg" @click="addAssist" size="sm" />
</div>
<template v-if="AssitMsg.AssistList.length>0">
<div class="row wrap" v-for="(item,index) in AssitMsg.AssistList" :key="index">
<q-select filled stack-label option-label="Name" v-model="item.AssistType" option-value="Id"
:options="AssistDropList" label="角色" dense class="col-6 q-pb-lg q-pr-lg" emit-value
map-options />
<q-select filled dense v-model="item.AssistId" @filter="filterEmployee" use-input
:options="myEmployeeList" option-label="EmployeeName" class="col-6 q-pb-lg" option-value="Id" emit-value map-options />
<i class="iconfont icon-close delAssist" @click="delAssist(index)"></i>
</div>
<div class="row wrap" style="margin-bottom:10px;float:right;">
<q-btn label="保存" color="accent q-mb-lg" size="md" @click="saveAssit()" />
</div>
</template>
<!-- <div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
<div class="TimeLineDiv">
<q-timeline color="primary">
<q-timeline-entry v-for="(tItem,tIndex) in dataList" :key="tIndex">
<template v-slot:title>
<div class="visit_Cont">
<div class="Log_Content">
<div>约访时间:{{tItem.AppointmentTime}}</div>
<div>约访地点:{{tItem.AppointmentPoint}}</div>
<div class="StuCom_Remark">
<div class="StuCom_Left">备注</div>:
<div class="StuCom_Inner">{{tItem.Remark}}</div>
</div>
<div class="StuCom_Remark">
<div class="StuCom_Left">反馈</div>:
<div class="StuCom_Inner">{{tItem.Feedback}} </div>
</div>
</div>
<div style="display:flex;margin-top:10px;">
<div @click="delVisit(tItem.Id)" class="visit_delete text-negative">删除</div>
<div @click="clickItem(tItem)" class="stu_ComFeed">
{{tItem.Feedback==null||tItem.Feedback==''?'添加反馈':'编辑反馈'}}
<q-popup-proxy>
<q-banner v-if="isShowEdit">
<div class="row wrap" style="margin-top:10px;width:300px;">
<q-input filled v-model="feedBackMsg.Feedback" :rows="3" type="textarea"
class="col-12 q-pb-lg" label="反馈">
</q-input>
</div>
<div class="row wrap" style="float:right;margin-bottom:10px;">
<q-btn label="保存" color="accent" size="sm" @click="SetFeedBack()" />
</div>
</q-banner>
</q-popup-proxy>
</div>
</div>
</div>
</template>
<template v-slot:subtitle>
<div class="Time_TopList">
<div>{{ tItem.CreateTime }}</div>
<div>{{ tItem.CreateByName }}</div>
</div>
</template>
</q-timeline-entry>
</q-timeline>
</div>
</div>
<div style="margin-bottom:20px">
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="page_Count" input
@input="changePage" />
</div> -->
</div>
</template>
<script>
import {
GetAssistTypeList,
SetStudentAssist,
GetStudentAssistList
} from '../../../api/sale/sale'
import {
queryEmployee
} from '../../../api/users/user'
export default {
meta: {
title: ""
},
components: {
},
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
isShowAdd: false,
AssitMsg: {
StuId:1,//学员编号
AssistList:[]
},
msg: {
StuId:1
},
isShowEdit: false,
dataList: [],
page_Count: 0,
AssistDropList:[], //下拉数据
employeeList: [],
myEmployeeList:[],
}
},
created() {
if (this.saveObj && this.saveObj.StuId) {
this.AssitMsg.StuId = this.saveObj.StuId;
this.msg.StuId = this.saveObj.StuId;
}
},
mounted() {
this.getList();
this.GetAssistTypeList();
this.getEmployeeList();
},
methods: {
//获取协助人员
GetAssistTypeList(){
GetAssistTypeList({}).then(res => {
if(res.Code==1){
this.AssistDropList = res.Data;
}
})
},
//获取员工列表
getEmployeeList() {
queryEmployee({
IsLeave: 1
}).then(res => {
this.employeeList = res.Data;
this.myEmployeeList = res.Data;
})
},
//筛选员工
filterEmployee(val, update, abort) {
update(() => {
this.myEmployeeList = this.employeeList.filter(
v => v.EmployeeName.indexOf(val) > -1
);
});
},
//新增协助人员
addAssist(){
let obj = {
Id:0,//编号
AssistId:1,//员工编号
AssistType:1,//类型
StuId:1,//学员编号
}
this.AssitMsg.AssistList.push(obj);
},
//保存协同人员
saveAssit() {
SetStudentAssist(this.AssitMsg).then(res => {
if (res.Code == 1) {
}
}).catch(() => {
})
},
//获取数据
getList() {
GetStudentAssistList(this.msg).then(res => {
console.log(res,'数据');
if (res.Code == 1) {
}
}).catch(() => {
})
},
//删除到访
delAssist(index) {
this.AssitMsg.AssistList.splice(index,1);
},
changePage(val) {
this.msg.pageIndex = val;
this.getList();
}
}
}
</script>
......@@ -68,7 +68,7 @@
<div class="customer_info_Stage">
<div class="stage_label">客户名称</div>
<div class="stage_value">
<q-input filled v-model="customObj.StuName"></q-input>
<q-input filled v-model="customObj.StuName" dense></q-input>
</div>
</div>
</div>
......@@ -85,7 +85,7 @@
<div class="customer_info_Stage">
<div class="stage_label">电话</div>
<div class="stage_value">
<q-input filled v-model="customObj.StuTel"></q-input>
<q-input filled v-model="customObj.StuTel" dense></q-input>
</div>
</div>
</div>
......@@ -93,7 +93,7 @@
<div class="customer_info_Stage">
<div class="stage_label">出生日期</div>
<div class="stage_value">
<q-input filled v-model="customObj.StuBirth" style="width:182px;" mask="date" label="出生日期">
<q-input filled v-model="customObj.StuBirth" dense style="width:182px;" mask="date" label="出生日期">
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
......@@ -112,69 +112,62 @@
<div class="info_item">
<div class="item_label">客户来源</div>
<div class="item_value">
<q-select filled v-model="customObj.cusfrom" :options="customFrom" option-label="Name" option-value="Id"
<q-select filled v-model="customObj.cusfrom" dense :options="customFrom" option-label="Name" option-value="Id"
emit-value map-options label="客户来源" />
</div>
</div>
<div class="info_item">
<div class="item_label">创建人</div>
<div class="item_value">
<q-select filled v-model="customObj.CreateBy" disable @filter="filterEmployee" use-input
<q-select filled v-model="customObj.CreateBy" dense disable @filter="filterEmployee" use-input
:options="myEmployeeList" option-label="EmployeeName" option-value="Id" emit-value map-options />
</div>
</div>
<div class="info_item">
<div class="item_label">客户阶段状态</div>
<div class="item_value">
<q-select filled v-model="customObj.StuStage" :options="customState" option-label="Name" option-value="Id"
<q-select filled v-model="customObj.StuStage" dense :options="customState" option-label="Name" option-value="Id"
emit-value map-options label="客户状态" />
</div>
</div>
<div class="info_item">
<div class="item_label">日语基础</div>
<div class="item_value">
<q-select filled v-model="customObj.JapanBaseInfo" :options="basicList" option-label="Name"
<q-select filled v-model="customObj.JapanBaseInfo" dense :options="basicList" option-label="Name"
option-value="Id" emit-value map-options />
</div>
</div>
<div class="info_item">
<div class="item_label">职业</div>
<div class="item_value">
<q-input filled v-model="customObj.StuProfession"></q-input>
<q-input filled v-model="customObj.StuProfession" dense></q-input>
</div>
</div>
<div class="info_item">
<div class="item_label">学历</div>
<div class="item_value">
<q-select filled v-model="customObj.StuEducation" :options="educationList" option-label="Name"
<q-select filled v-model="customObj.StuEducation" dense :options="educationList" option-label="Name"
option-value="Id" emit-value map-options />
</div>
</div>
<div class="info_item">
<div class="item_label">学习目的</div>
<div class="item_value">
<q-select filled v-model="customObj.StuPurpose" :options="goalsList" option-label="Name" option-value="Id"
<q-select filled v-model="customObj.StuPurpose" dense :options="goalsList" option-label="Name" option-value="Id"
emit-value map-options />
</div>
</div>
<div class="info_item">
<div class="item_label">收客渠道</div>
<div class="item_value">
<q-select filled v-model="customObj.StuChannel" :options="StuChannelList" option-label="Name" option-value="Id"
<q-select filled v-model="customObj.StuChannel" dense :options="StuChannelList" option-label="Name" option-value="Id"
emit-value map-options />
</div>
</div>
<div class="info_item" v-if="customObj.StuChannel==6">
<div class="item_label">第三方平台名称</div>
<div class="item_value">
<q-input filled v-model="customObj.PlatformName"></q-input>
</div>
</div>
<div class="info_item">
<div class="item_label">协助人员</div>
<div class="item_value">
<q-select filled v-model="AssistPeople" :options="AssistDropList" option-label="Name" option-value="Id"
emit-value map-options />
<q-input filled v-model="customObj.PlatformName" dense></q-input>
</div>
</div>
<div class="info_item">
......@@ -194,8 +187,7 @@
getGuestBasicsEnumList,
getGuestEducationEnumList,
getGuestLearningGoalsEnumList,
GetStuChannelList,
GetAssistTypeList
GetStuChannelList
} from '../../../api/sale/sale'
import {
queryEmployee
......@@ -249,7 +241,6 @@
//员工列表
employeeList: [],
myEmployeeList: [],
AssistPeople:1,
StuChannelList: [], //收客渠道
AssistDropList: [] //协助人员
}
......@@ -261,13 +252,9 @@
this.queryGoalsList();
this.getEmployeeList();
this.GetStuChannelList();
this.GetAssistTypeList();
if (this.saveObj && this.saveObj.StuId > 0) {
this.customMsg.StuId = this.saveObj.StuId;
this.queryStuInfo();
if(this.customMsg.AssistList&&this.customMsg.AssistList.length>0){
this.customMsg.AssistList[0].StuId = this.saveObj.StuId;
}
}
},
mounted() {
......@@ -275,10 +262,6 @@
methods: {
//保存学员信息
saveStu() {
if(this.customMsg.AssistList&&this.customMsg.AssistList.length>0){
this.customMsg.AssistList[0].AssistId = this.customObj.CreateBy;
this.customMsg.AssistList[0].AssistType = this.AssistPeople;
}
saveStudent(this.customObj).then(res => {
if (res.Code == 1) {
this.$q.notify({
......@@ -312,14 +295,6 @@
}
})
},
//获取协助人员
GetAssistTypeList(){
GetAssistTypeList({}).then(res => {
if(res.Code==1){
this.AssistDropList = res.Data;
}
})
},
//筛选员工
filterEmployee(val, update, abort) {
update(() => {
......@@ -360,7 +335,21 @@
this.customObj = res.Data;
}
});
},
//新增协助人员
addAssist(){
let obj = {
Id:0,//编号
AssistId:1,//员工编号
AssistType:1,//类型
StuId:1,//学员编号
}
this.customObj.AssistList.push(obj);
},
//删除协助人员
delAssist(index){
this.customObj.AssistList.splice(index,1);
}
},
}
}
</script>
\ No newline at end of file
<style>
.Sysuser_Date .el-input__inner {
.Student_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
padding-right:0 !important;
height:28px!important;
}
</style>
<template>
......@@ -14,7 +16,7 @@
</div>
<template v-if="isShowAdd">
<div class="row wrap">
<q-input filled v-model="addMsg.ClassDate" ref="ClassDate" class="col-6 q-pb-lg q-pr-lg" mask="date"
<q-input filled v-model="addMsg.ClassDate" dense ref="ClassDate" class="col-6 q-pb-lg q-pr-lg" mask="date"
label="预约日期">
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
......@@ -24,17 +26,17 @@
</q-icon>
</template>
</q-input>
<div class="Sysuser_Date col-6">
<q-field filled class="q-pb-lg">
<div class="Student_Date col-6">
<q-field filled class="q-pb-lg" dense>
 <template v-slot:control>
<el-time-select v-model="addMsg.ClassTime" ref="ClassTime" style="width:50%" :picker-options="{
<el-time-select v-model="addMsg.ClassTime" size="small" ref="ClassTime" style="width:50%" :picker-options="{
start: '09:00',
step: '00:15',
end: '21:00',
maxTime:addMsg.EndTime
}" placeholder="预约开始时间">
</el-time-select>
<el-time-select v-model="addMsg.EndTime" ref="EndTime" style="width:50%" :picker-options="{
<el-time-select v-model="addMsg.EndTime" size="small" dense ref="EndTime" style="width:50%" :picker-options="{
start: '09:00',
step: '00:15',
end: '21:00',
......@@ -46,17 +48,17 @@
</div>
</div>
<div class="row wrap">
<q-select filled stack-label option-value="Name" option-label="Name"
<q-select filled stack-label option-value="Name" dense option-label="Name"
@input="getTeacherChoose(addMsg.ClassContent)" v-model="addMsg.ClassContent" ref="ClassContent"
:options="ContentList" :rules="[val => !!val || '请选择主讲内容']" label="主讲内容" :dense="false"
:options="ContentList" :rules="[val => !!val || '请选择主讲内容']" label="主讲内容"
class="col-6 q-pb-lg q-pr-lg" emit-value map-options />
<q-select filled stack-label option-value="TId" option-label="TeacherName" v-model="addMsg.TeacherId"
ref="TeacherId" :options="TeacherList" label="选择教师" :dense="false" class="col-6 q-pb-lg" emit-value
ref="TeacherId" :options="TeacherList" label="选择教师" dense class="col-6 q-pb-lg" emit-value
map-options />
</div>
<div class="row wrap">
<q-select filled stack-label option-value="RoomId" option-label="RoomName" v-model="addMsg.ClassRoomId"
ref="ClassRoomId" :options="ClassRoomList" label="关联教室" :dense="false" class="col-6 q-pb-lg q-pr-lg"
<q-select filled stack-label option-value="RoomId" dense option-label="RoomName" v-model="addMsg.ClassRoomId"
ref="ClassRoomId" :options="ClassRoomList" label="关联教室" class="col-6 q-pb-lg q-pr-lg"
emit-value map-options />
</div>
<div class="row wrap" style="margin-bottom:10px;">
......
......@@ -8,9 +8,9 @@
@click="isShowAdd=false" />
<template v-if="isShowAdd">
<div class="row wrap">
<q-select filled option-value="SId" class="col-6 q-pb-lg q-pr-lg" option-label="SName"
<q-select filled option-value="SId" dense class="col-6 q-pb-lg q-pr-lg" option-label="SName"
v-model="VisitMsg.School_Id" :options="schoolList" emit-value map-options label="到访校区" />
<q-input filled v-model="VisitMsg.Date" class="col-6 q-pb-lg" mask="date" label="日期">
<q-input filled v-model="VisitMsg.Date" dense class="col-6 q-pb-lg" mask="date" label="日期">
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
......@@ -21,7 +21,7 @@
</q-input>
</div>
<div class="row warp">
<q-input filled mask="time" v-model="VisitMsg.VisitTime" :rules="['time']" class="col-6 q-pb-lg q-pr-lg">
<q-input filled mask="time" dense v-model="VisitMsg.VisitTime" :rules="['time']" class="col-6 q-pb-lg q-pr-lg">
<template v-slot:append>
<q-icon name="access_time" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale">
......@@ -34,12 +34,12 @@
</q-icon>
</template>
</q-input>
<q-select filled v-model="VisitMsg.ReceptionPersion" @filter="filterEmployee" class="col-6 q-pb-lg"
<q-select filled v-model="VisitMsg.ReceptionPersion" dense @filter="filterEmployee" class="col-6 q-pb-lg"
:options="myEmployeeList" option-label="EmployeeName" use-input option-value="Id" emit-value map-options
label="接待人" />
</div>
<div class="row wrap">
<q-input filled v-model="VisitMsg.Remark" :rows="3" type="textarea" class="col-12 q-pb-lg" label="备注">
<q-input filled v-model="VisitMsg.Remark" dense :rows="3" type="textarea" class="col-12 q-pb-lg" label="备注">
</q-input>
</div>
......
......@@ -10,8 +10,8 @@
</div>
<template v-if="isShowAdd">
<div class="row wrap">
<q-input filled class="col-6 q-pb-lg q-pr-lg" v-model="yueMsg.AppointmentPoint" label="约访地点"></q-input>
<q-input filled v-model="yueMsg.AppointmentTime">
<q-input filled class="col-6 q-pb-lg q-pr-lg" dense v-model="yueMsg.AppointmentPoint" label="约访地点"></q-input>
<q-input filled v-model="yueMsg.AppointmentTime" dense>
<template v-slot:prepend>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale">
......@@ -37,7 +37,7 @@
</q-input>
</div>
<div class="row wrap">
<q-input filled v-model="yueMsg.Remark" :rows="3" type="textarea" class="col-12 q-pb-lg" label="备注">
<q-input filled v-model="yueMsg.Remark" dense :rows="3" type="textarea" class="col-12 q-pb-lg" label="备注">
</q-input>
</div>
<div class="row wrap" style="margin-bottom:10px;">
......
......@@ -34,11 +34,12 @@
</div>
<div class="detail-travel">
<div class="detail_first">
<q-tabs v-model="ckedTab" dense align="left" class="text-teal" style="width:300px;margin-bottom:20px;">
<q-tabs v-model="ckedTab" dense align="left" class="text-teal" style="margin-bottom:20px;">
<q-tab name="1" label="记录" />
<q-tab name="2" label="操作" />
<q-tab name="3" label="订单" />
<q-tab name="4" label="合同" />
<q-tab name="5" label="协同人员" />
</q-tabs>
<div class="operate_Content" style="flex:1;">
<div class="detail_Main">
......@@ -68,6 +69,9 @@
<template v-if="ckedTab==4">
<student-hetong :save-obj="baseObj" @success="refreshStudentPage"></student-hetong>
</template>
<template v-if="ckedTab==5">
<student-Assit :save-obj="baseObj" @success="refreshStudentPage"></student-Assit>
</template>
</div>
</div>
</div>
......@@ -96,6 +100,7 @@
import studentShiting from '../student/student-shiting';
import studentHetong from '../student/student-hetong';
import studentOrder from '../student/student-order';
import studentAssit from '../student/student-Assit';
export default {
meta: {
title: "学员管理"
......@@ -108,7 +113,8 @@
studentGenjin,
studentShiting,
studentHetong,
studentOrder
studentOrder,
studentAssit
},
props: {
saveObj: {
......
......@@ -94,6 +94,7 @@
</style>
<template>
<div class="schedulVisit">
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="stickycreatInsertStr-column-table schedul_Vtable" separator="none" :data="data" :columns="columns"
......@@ -143,6 +144,7 @@
},
data() {
return {
tabCheck:"first",
columns: [{
name: 'GuestName',
label: '姓名',
......
......@@ -122,15 +122,18 @@
}
.Sctop_Color {
font-size: 18px;
font-size: 15px;
color: #000000;
width: 19%;
text-align: center;
font-weight: 600;
font-family: pingfang;
}
.Scotop_little {
color: #AAAAAA;
font-size: 14px;
font-size: 12px;
font-weight: 400;
margin-right: 15px;
display: inline-block;
text-align: right;
......
<style>
.Sysuser_Date .el-range-editor .el-range-input {
.Sysuser_Date .el-input__inner {
background-color: transparent;
width: 100%;
border: none;
}
.Sysuser_Date .el-range-input{
background-color: transparent;
}
</style>
<template>
<div class="page-body">
......
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