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) { ...@@ -49,7 +49,7 @@ module.exports = function (ctx) {
env: ctx.dev ? { env: ctx.dev ? {
// API: 'https://localhost:5001/api', // API: 'https://localhost:5001/api',
// API: 'http://192.168.20.24:8300/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', // API: 'http://192.168.20.17:8017/api',
...@@ -98,7 +98,7 @@ module.exports = function (ctx) { ...@@ -98,7 +98,7 @@ module.exports = function (ctx) {
// https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework: { framework: {
iconSet: 'material-icons', // Quasar icon set iconSet: 'material-icons', // Quasar icon set
lang: 'en-us', // Quasar language pack lang: 'zh-hans', // Quasar language pack
config: {}, config: {},
// Possible values for "importStrategy": // Possible values for "importStrategy":
......
...@@ -13,7 +13,7 @@ export default { ...@@ -13,7 +13,7 @@ export default {
//alert("shouji"); //alert("shouji");
} else { } else {
//alert("diannao"); //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) { ...@@ -411,3 +411,14 @@ export function getOrderGuestRenewState(data) {
data data
}); });
} }
// 获取协助数据
export function GetStudentAssistList(data) {
return request({
url: '/CustomerStudent/GetStudentAssistList',
method: 'post',
data
});
}
...@@ -11,6 +11,14 @@ export function getStudentAttendanceDayStatistics(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) { export function getVisitorAllPageList(data) {
return request({ return request({
......
<style> <style>
.schedulVisit { .schedulVisit {
min-height: calc(100% - 30px); min-height: calc(100% - 30px);
padding: 15px; padding: 15px;
margin-top: 30px; margin-top: 30px;
border-radius: 8px; border-radius: 8px;
background: #fff; background: #fff;
} }
.schedulVisit .fangkeTitle { .schedulVisit .fangkeTitle {
color: #000000; color: #000000;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
} }
.schedulVisit .fangkeNumb { .schedulVisit .fangkeNumb {
display: inline-block; display: inline-block;
background-color: #BCCEFD; background-color: #bccefd;
color: #2966FE; color: #2966fe;
font-size: 15px; font-size: 15px;
border-radius: 6px; border-radius: 6px;
text-align: center; text-align: center;
line-height: 22px; line-height: 22px;
margin-left: 15px; margin-left: 15px;
padding: 0px 6px; padding: 0px 6px;
} }
.schedulVisit .visit_Date { .schedulVisit .visit_Date {
margin-left: 60px; margin-left: 60px;
color: #000000; color: #000000;
font-size: 16px; font-size: 16px;
} }
.schedulVisit .visit_Date i { .schedulVisit .visit_Date i {
color: #B4B4B4; color: #b4b4b4;
margin-right: 10px; margin-right: 10px;
} }
.page-option .el-input__inner { .page-option .el-input__inner {
background-color: #F1F3F5; background-color: #f1f3f5;
border: 0; border: 0;
height: 34px; height: 34px;
line-height: 34px; line-height: 34px;
border-radius: 10px; border-radius: 10px;
} }
.page-option .el-input__icon { .page-option .el-input__icon {
line-height: 34px; line-height: 34px;
} }
.schedul_Vtable tr th { .schedul_Vtable tr th {
color: #8E8E8E; color: #8e8e8e;
} }
.schedul_Vtable tr td { .schedul_Vtable tr td {
color: #2D2D2D; color: #2d2d2d;
} }
.visit_FORM .el-input__inner { .visit_FORM .el-input__inner {
background: #F0F2F5; background: #f0f2f5;
border-radius: 10px; border-radius: 10px;
height: 34px; height: 34px;
line-height: 34px; line-height: 34px;
border: 0; border: 0;
} }
.visit_FORM .el-input__icon { .visit_FORM .el-input__icon {
line-height: 34px; line-height: 34px;
} }
.schedulVisit .q-table { .schedulVisit .q-table {
padding-bottom: 5px; padding-bottom: 5px;
} }
.schedulVisit .q-table tbody td:before { .schedulVisit .q-table tbody td:before {
background: '' !important; background: "" !important;
} }
.schedulVisit .q-table tbody tr:hover { .schedulVisit .q-table tbody tr:hover {
box-shadow: 0px 2px 20px 0px #E4E7FB; box-shadow: 0px 2px 20px 0px #e4e7fb;
background: #fff; background: #fff;
border-radius: 16px border-radius: 16px;
} }
.schedulVisit .q-table tbody td:before { .schedulVisit .q-table tbody td:before {
background: transparent !important; background: transparent !important;
} }
.scheduVipop .el-textarea__inner { .scheduVipop .el-textarea__inner {
background: #F0F2F5 !important; background: #f0f2f5 !important;
border: 0; border: 0;
} }
</style> </style>
<template> <template>
<div class="schedulVisit"> <div class="schedulVisit">
<div class="row">
<div class="col q-mr-lg">
<q-tabs
style="margin-bottom:20px;"
v-model="tabCheck"
narrow-indicator
dense
align="left"
class="text-primary"
>
<q-tab :ripple="false" name="first" label="预约到访" />
<q-tab :ripple="false" name="second" label="访客登记" />
<q-tab :ripple="false" name="third" label="预约试听" />
</q-tabs>
</div>
<div v-if="tabCheck == 'first'" class="col-3">
<q-input
dense
debounce
v-model="searchObj.arriveVisitKey"
input-style="font-size:13px;"
filled
placeholder="请输入到访者姓名或电话"
@keydown.enter="changeVisitList"
>
<template v-slot:prepend>
<q-icon name="search" color="gery-3" />
</template>
</q-input>
</div>
</div>
<div class="page-content"> <div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat <q-table
class="stickycreatInsertStr-column-table schedul_Vtable" separator="none" :data="data" :columns="columns" :pagination="msg"
row-key="name"> :loading="loadingObj.visitLoading"
no-data-label="暂无相关数据"
flat
class="stickycreatInsertStr-column-table schedul_Vtable"
separator="none"
:data="data"
:columns="columns"
row-key="name"
v-if="tabCheck == 'second'"
>
<template> <template>
<div class="fangkeTitle" ref="fkdj">访客登记</div> <div class="fangkeTitle" ref="fkdj">访客登记</div>
<span class="fangkeNumb">{{data.length}}</span> <span class="fangkeNumb">{{ data.length }}</span>
<div class="visit_Date"> <div class="visit_Date">
<i class="iconfont icon-img-rili" style=""></i>{{saveObj.PlanDate}} <i class="iconfont icon-img-rili" style=""></i
>{{ saveObj.PlanDate }}
</div> </div>
<q-space /> <q-space />
<div class="page-option" style="margin-right:20px;width:250px;"> <div class="page-option" style="margin-right:20px;width:250px;">
<el-input placeholder="姓名/电话/微信" v-model="msg.KeyWords" @input="resetSearch"> <el-input
placeholder="姓名/电话/微信"
v-model="msg.KeyWords"
@input="resetSearch"
>
<i slot="prefix" class="el-input__icon el-icon-search"></i> <i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input> </el-input>
</div> </div>
<div class="page-option addVisit"> <div class="page-option addVisit">
<el-popover placement="left" popper-class="scheduVipop" width="300" trigger="click"> <el-popover
placement="left"
popper-class="scheduVipop"
width="300"
trigger="click"
>
<div> <div>
<el-form label-width="80px" :model="addMsg" ref="addMsg1" :rules="rules" style="margin-top:10px;" <el-form
class="visit_FORM"> label-width="80px"
:model="addMsg"
ref="addMsg1"
:rules="rules"
style="margin-top:10px;"
class="visit_FORM"
>
<el-form-item label="姓名" prop="Name"> <el-form-item label="姓名" prop="Name">
<el-input v-model="addMsg.Name" placeholder="请输入姓名"></el-input> <el-input
v-model="addMsg.Name"
placeholder="请输入姓名"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="电话" prop="Tel"> <el-form-item label="电话" prop="Tel">
<el-input v-model="addMsg.Tel" placeholder="请输入电话号码"></el-input> <el-input
v-model="addMsg.Tel"
placeholder="请输入电话号码"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="微信号"> <el-form-item label="微信号">
<el-input v-model="addMsg.WeChatNum" placeholder="请输入微信号"></el-input> <el-input
v-model="addMsg.WeChatNum"
placeholder="请输入微信号"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="兴趣课程" prop="CourseName"> <el-form-item label="兴趣课程" prop="CourseName">
<el-input v-model="addMsg.CourseName" placeholder="请输入兴趣课程"></el-input> <el-input
v-model="addMsg.CourseName"
placeholder="请输入兴趣课程"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="学习时间" prop="StudyTime"> <el-form-item label="学习时间" prop="StudyTime">
<el-input v-model="addMsg.StudyTime" placeholder="请输入学习时间"></el-input> <el-input
v-model="addMsg.StudyTime"
placeholder="请输入学习时间"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="当前水平" prop="LevelType"> <el-form-item label="当前水平" prop="LevelType">
<el-select v-model="addMsg.LevelType" style="width:200px;" placeholder="请选择"> <el-select
<el-option v-for="item in GBList" :key="item.Id" :label="item.Name" :value="item.Name"> v-model="addMsg.LevelType"
style="width:200px;"
placeholder="请选择"
>
<el-option
v-for="item in GBList"
:key="item.Id"
:label="item.Name"
:value="item.Name"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="VisitorStatus"> <el-form-item label="状态" prop="VisitorStatus">
<el-select v-model="addMsg.VisitorStatus" style="width:200px;" placeholder="请选择"> <el-select
<el-option v-for="item in statusList" :key="item.Id" :label="item.Name" :value="item.Id"> v-model="addMsg.VisitorStatus"
style="width:200px;"
placeholder="请选择"
>
<el-option
v-for="item in statusList"
:key="item.Id"
:label="item.Name"
:value="item.Id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="意向评估" prop="Evaluate"> <el-form-item label="意向评估" prop="Evaluate">
<el-input v-model="addMsg.Evaluate" placeholder="请输入意向评估"></el-input> <el-input
v-model="addMsg.Evaluate"
placeholder="请输入意向评估"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="备注"> <el-form-item label="备注">
<el-input type="textarea" v-model="addMsg.Remark" :rows="4" placeholder="请输入备注"></el-input> <el-input
type="textarea"
v-model="addMsg.Remark"
:rows="4"
placeholder="请输入备注"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<q-btn color="accent" size="sm" @click="submitForm('addMsg1')" style="float:right;margin-bottom:10px;" <q-btn
label="保存" /> color="accent"
size="sm"
@click="submitForm('addMsg1')"
style="float:right;margin-bottom:10px;"
label="保存"
/>
</div> </div>
<q-btn color="accent" slot="reference" size="sm" icon="add" @click="clearAddMsg" label="添加访客" <q-btn
v-if="DutyAuthObj.isShowAdd" /> color="accent"
slot="reference"
size="sm"
icon="add"
@click="clearAddMsg"
label="添加访客"
v-if="DutyAuthObj.isShowAdd"
/>
</el-popover> </el-popover>
</div> </div>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount" <q-pagination
:input="true" @input="changePage" /> class="full-width justify-end"
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
:input="true"
@input="changePage"
/>
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<el-popover placement="left" popper-class="scheduVipop" width="300" ref="popover2" trigger="click"> <el-popover
placement="left"
popper-class="scheduVipop"
width="300"
ref="popover2"
trigger="click"
>
<div> <div>
<el-form label-width="80px" :model="addMsg" ref="addMsg2" :rules="rules" style="margin-top:10px;" <el-form
class="visit_FORM"> label-width="80px"
:model="addMsg"
ref="addMsg2"
:rules="rules"
style="margin-top:10px;"
class="visit_FORM"
>
<el-form-item label="姓名" prop="Name"> <el-form-item label="姓名" prop="Name">
<el-input v-model="addMsg.Name" placeholder="请输入姓名" maxlength="50"></el-input> <el-input
v-model="addMsg.Name"
placeholder="请输入姓名"
maxlength="50"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="电话" prop="Tel"> <el-form-item label="电话" prop="Tel">
<el-input v-model="addMsg.Tel" placeholder="请输入电话号码" maxlength="50"></el-input> <el-input
v-model="addMsg.Tel"
placeholder="请输入电话号码"
maxlength="50"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="微信号"> <el-form-item label="微信号">
<el-input v-model="addMsg.WeChatNum" placeholder="请输入微信号" maxlength="50"></el-input> <el-input
v-model="addMsg.WeChatNum"
placeholder="请输入微信号"
maxlength="50"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="兴趣课程" prop="CourseName"> <el-form-item label="兴趣课程" prop="CourseName">
<el-input v-model="addMsg.CourseName" placeholder="请输入兴趣课程" maxlength="50"></el-input> <el-input
v-model="addMsg.CourseName"
placeholder="请输入兴趣课程"
maxlength="50"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="学习时间" prop="StudyTime"> <el-form-item label="学习时间" prop="StudyTime">
<el-input v-model="addMsg.StudyTime" placeholder="请输入学习时间" maxlength="100"></el-input> <el-input
v-model="addMsg.StudyTime"
placeholder="请输入学习时间"
maxlength="100"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="当前水平" prop="LevelType"> <el-form-item label="当前水平" prop="LevelType">
<el-select v-model="addMsg.LevelType" style="width:200px;" placeholder="请选择"> <el-select
<el-option v-for="item in GBList" :key="item.Name" :label="item.Name" :value="item.Name"> v-model="addMsg.LevelType"
style="width:200px;"
placeholder="请选择"
>
<el-option
v-for="item in GBList"
:key="item.Name"
:label="item.Name"
:value="item.Name"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="VisitorStatus"> <el-form-item label="状态" prop="VisitorStatus">
<el-select v-model="addMsg.VisitorStatus" style="width:200px;" placeholder="请选择"> <el-select
<el-option v-for="item in statusList" :key="item.Id" :value="item.Id" :label="item.Name"> v-model="addMsg.VisitorStatus"
style="width:200px;"
placeholder="请选择"
>
<el-option
v-for="item in statusList"
:key="item.Id"
:value="item.Id"
:label="item.Name"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="意向评估" prop="Evaluate"> <el-form-item label="意向评估" prop="Evaluate">
<el-input v-model="addMsg.Evaluate" placeholder="请输入意向评估" maxlength="500"></el-input> <el-input
v-model="addMsg.Evaluate"
placeholder="请输入意向评估"
maxlength="500"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="备注"> <el-form-item label="备注">
<el-input type="textarea" v-model="addMsg.Remark" :rows="4" placeholder="请输入备注" maxlength="500"> <el-input
type="textarea"
v-model="addMsg.Remark"
:rows="4"
placeholder="请输入备注"
maxlength="500"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<q-btn color="accent" size="sm" @click="submitForm2('addMsg2')" style="float:right;margin-bottom:10px;" <q-btn
label="保存" /> color="accent"
size="sm"
@click="submitForm2('addMsg2')"
style="float:right;margin-bottom:10px;"
label="保存"
/>
</div> </div>
<q-btn flat size="xs" icon="edit" slot="reference" @click="EditVisitor(props.row.Id)" color="accent" <q-btn
style="font-weight:400" label="编辑" v-if="DutyAuthObj.isShowEdit" /> flat
size="xs"
icon="edit"
slot="reference"
@click="EditVisitor(props.row.Id)"
color="accent"
style="font-weight:400"
label="编辑"
v-if="DutyAuthObj.isShowEdit"
/>
</el-popover> </el-popover>
<q-btn flat size="xs" @click="getDetail(props.row)" icon="iconfont icon-View" color="accent" <q-btn
style="font-weight:400" label="详情" /> flat
size="xs"
@click="getDetail(props.row)"
icon="iconfont icon-View"
color="accent"
style="font-weight:400"
label="详情"
/>
</q-td>
</template>
</q-table>
<q-table
v-if="tabCheck == 'first'"
hide-bottom
:columns="visitColumns"
:data="showTodayVist"
:loading="loadingObj.visitLoading"
no-data-label="暂无相关数据"
flat
class="sticky-right-column-table sticky-column-table"
separator="none"
>
<template v-slot:body-cell-Option="props">
<q-td :props="props">
<q-btn dense flat color="primary" v-if="props.row.IsVisit != 1">
<q-icon
name="edit"
color="primary"
style="font-size:11px"
class="q-mr-xs"
></q-icon>
<span style="font-size:12px;">到访</span>
</q-btn>
</q-td>
</template>
<template v-slot:body-cell-IsVisitStr="props">
<q-td :props="props" class="text-negative">
<span :class="{ 'text-primary': props.row.IsVisit == 1 }">{{
props.row.IsVisitStr
}}</span>
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
</div> </div>
<schedulFanke v-if="isShowDetail" @close="closeDetail" :save-obj="sendObj"></schedulFanke> <schedulFanke
v-if="isShowDetail"
@close="closeDetail"
:save-obj="sendObj"
></schedulFanke>
</div> </div>
</template> </template>
<script> <script>
import { import { getTodayVisitList } from "../../api/stuMan/index";
getStudentPage, import { getStudentPage, saveStudent, getStudentInfo } from "../../api/school";
saveStudent, import { getGuestBasicsEnumList } from "../../api/sale/sale";
getStudentInfo, import schedulFanke from "../schedul/schedul-fanke";
} from "../../api/school";
import {
getGuestBasicsEnumList
} from '../../api/sale/sale'
import schedulFanke from '../schedul/schedul-fanke'
export default { export default {
props: { props: {
saveObj: { saveObj: {
type: Object, type: Object,
...@@ -246,54 +471,117 @@ ...@@ -246,54 +471,117 @@
}, },
data() { data() {
return { return {
columns: [{ tabCheck: "first",
name: 'StuName', columns: [
label: '姓名', {
name: "StuName",
label: "姓名",
required: true, required: true,
field: 'StuName', field: "StuName",
align: 'left' align: "left"
},
{
name: "StuSexStr",
field: "StuSexStr",
label: "性别",
align: "left"
},
{
name: "StuTel",
field: "StuTel",
label: "客户电话",
align: "left"
},
{
name: "StuStageName",
field: "StuStageName",
label: "客户阶段",
align: "left"
},
{
name: "CreateTimeStr",
field: "CreateTimeStr",
label: "创建时间",
align: "left"
},
{
name: "CreateByName",
label: "关联人员",
field: "CreateByName",
align: "left"
}, },
{ {
name: 'StuSexStr', name: "VisitTimes",
field: 'StuSexStr', label: "到访次数",
label: '性别', field: "VisitTimes",
align: 'left', align: "left"
}, },
{ {
name: 'StuTel', name: "optioned",
field: 'StuTel', label: "操作"
label: '电话', }
align: 'left', ],
visitColumns: [
{
name: "StuName",
label: "姓名",
field: "StuName",
align: "left"
},
{
name: "StuTel",
field: "StuTel",
label: "客户电话",
align: "left"
},
{
name: "VisitTime",
label: "预计到访时间",
field: "VisitTime",
align: "left"
}, },
{ {
name: 'StuStageName', name: "SchoolName",
field: 'StuStageName', label: "预计校区",
label: '客户阶段', field: "SchoolName",
align: 'left', align: "left"
}, },
{ {
name: 'CreateTimeStr', name: "ReceptionPersionName",
field: 'CreateTimeStr', label: "对接人",
label: '创建时间', field: "ReceptionPersionName",
align: 'left', align: "left"
}, },
{ {
name: 'CreateByName', name: "ReceptionPersionTel",
label: '关联人员', label: "对接人电话",
field: 'CreateByName', field: "ReceptionPersionTel",
align: 'left' align: "left"
}, },
{ {
name: 'VisitTimes', name: "Remark",
label: '到访次数', label: "备注",
field: 'VisitTimes', field: "Remark",
align: 'left' align: "left"
}, },
{ {
name: 'optioned', name: "IsVisitStr",
label: '操作', label: "到访状态",
field: "IsVisitStr",
align: "left"
},
{
name: "Option",
label: "操作",
field: "Option"
} }
], ],
searchObj: {
arriveVisitKey: ""
},
loadingObj: {
visitLoading: true
},
data: [], data: [],
loading: true, loading: true,
pageCount: 0, pageCount: 0,
...@@ -303,7 +591,7 @@ ...@@ -303,7 +591,7 @@
pageSize: 5, pageSize: 5,
rowsPerPage: 5, rowsPerPage: 5,
IsQueryMyStu: 1, IsQueryMyStu: 1,
KeyWords: "", KeyWords: ""
}, },
addMsg: { addMsg: {
Id: 0, //编号 Id: 0, //编号
...@@ -314,70 +602,89 @@ ...@@ -314,70 +602,89 @@
StudyTime: "", //学习时间 StudyTime: "", //学习时间
LevelType: "", //当前水平 LevelType: "", //当前水平
PlanId: 0, //值班编号 PlanId: 0, //值班编号
VisitorStatus: '', //状态 VisitorStatus: "", //状态
Evaluate: '', //意向评估 Evaluate: "", //意向评估
Remark: '' //备注 Remark: "" //备注
}, },
statusList: [{ statusList: [
{
Id: 1, Id: 1,
Name: '正常' Name: "正常"
}, { },
{
Id: 2, Id: 2,
Name: '贵宾' Name: "贵宾"
}, { },
{
Id: 3, Id: 3,
Name: '黑名单' Name: "黑名单"
}], }
SearchKey: '', //搜索条件 ],
SearchKey: "", //搜索条件
isShowVform: false, isShowVform: false,
isShowVedit: false, isShowVedit: false,
//权限显示对象 //权限显示对象
DutyAuthObj: { DutyAuthObj: {
isShowAdd: true, //是否显示新增按钮【默认显示】 isShowAdd: true, //是否显示新增按钮【默认显示】
isShowEdit: true, //是否显示编辑按钮【默认显示】 isShowEdit: true //是否显示编辑按钮【默认显示】
}, },
rules: {
rules: { //表单必填验证 //表单必填验证
Name: [{ Name: [
{
required: true, required: true,
message: '请输入姓名', message: "请输入姓名",
trigger: 'blur' trigger: "blur"
}], }
Tel: [{ ],
Tel: [
{
required: true, required: true,
message: '请输入电话', message: "请输入电话",
trigger: 'blur' trigger: "blur"
}], }
CourseName: [{ ],
CourseName: [
{
required: true, required: true,
message: '请输入兴趣课程', message: "请输入兴趣课程",
trigger: 'blur' trigger: "blur"
}], }
StudyTime: [{ ],
StudyTime: [
{
required: true, required: true,
message: '请输入学习时间', message: "请输入学习时间",
trigger: 'blur' trigger: "blur"
}], }
LevelType: [{ ],
LevelType: [
{
required: true, required: true,
message: '请选择当前水平', message: "请选择当前水平",
trigger: 'change' trigger: "change"
}], }
VisitorStatus: [{ ],
VisitorStatus: [
{
required: true, required: true,
message: '请选择状态', message: "请选择状态",
trigger: 'change' trigger: "change"
}], }
Evaluate: [{ ],
Evaluate: [
{
required: true, required: true,
message: '请输入意向评估', message: "请输入意向评估",
trigger: 'blur' trigger: "blur"
}] }
]
}, },
sendObj: {}, sendObj: {},
isShowDetail: false isShowDetail: false,
todayVistList: [],
} showTodayVist: []
};
}, },
watch: { watch: {
//有默认值 //有默认值
...@@ -386,20 +693,20 @@ ...@@ -386,20 +693,20 @@
this.initAuth(); this.initAuth();
}, },
immediate: true immediate: true
}
}, },
}, created() {},
created() {
},
mounted() { mounted() {
this.msg.PlanId = this.saveObj.Id; this.msg.PlanId = this.saveObj.Id;
this.getGuestBasics(); this.getGuestBasics();
this.initAuth() this.initAuth();
this.getVisitoryPage(); this.getVisitoryPage();
this.initTodayVistList();
}, },
methods: { methods: {
submitForm(addMsg1) { //提交创建、修改表单 submitForm(addMsg1) {
this.$refs[addMsg1].validate((valid) => { //提交创建、修改表单
this.$refs[addMsg1].validate(valid => {
if (valid) { if (valid) {
this.SaveVisitor(); this.SaveVisitor();
} else { } else {
...@@ -408,7 +715,7 @@ ...@@ -408,7 +715,7 @@
}); });
}, },
submitForm2(addMsg2) { submitForm2(addMsg2) {
this.$refs[addMsg2].validate((valid) => { this.$refs[addMsg2].validate(valid => {
if (valid) { if (valid) {
this.SaveVisitor(); this.SaveVisitor();
} else { } else {
...@@ -446,46 +753,21 @@ ...@@ -446,46 +753,21 @@
//翻页 //翻页
changePage(val) { changePage(val) {
this.msg.pageIndex = val; this.msg.pageIndex = val;
this.getVisitoryPage() this.getVisitoryPage();
}, },
//获取访客列表 //获取访客列表
getVisitoryPage() { getVisitoryPage() {
this.loading = true; this.loading = true;
getStudentPage(this.msg).then(res => { getStudentPage(this.msg)
console.log("res", res) .then(res => {
this.loading = false console.log("res", res);
this.loading = false;
this.data = res.Data.PageData; this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount; this.pageCount = res.Data.PageCount;
}).catch(() => {
this.loading = false
})
},
//新增修改访客
EditVisitor(Id) {
if (Id > 0) {
queryVisitor({
Id: Id
}).then(res => {
if (res.Code == 1) {
var tempData = res.Data;
if (tempData) {
this.addMsg.Id = tempData.Id;
this.addMsg.Name = tempData.Name;
this.addMsg.Tel = tempData.Tel;
this.addMsg.WeChatNum = tempData.WeChatNum;
this.addMsg.CourseName = tempData.CourseName;
this.addMsg.StudyTime = tempData.StudyTime;
this.addMsg.LevelType = tempData.LevelType;
this.addMsg.PlanId = tempData.PlanId;
this.addMsg.VisitorStatus = tempData.VisitorStatus;
this.addMsg.Evaluate = tempData.Evaluate;
this.addMsg.Remark = tempData.Remark;
}
}
}) })
} else { .catch(() => {
this.clearAddMsg(); this.loading = false;
} });
}, },
clearAddMsg() { clearAddMsg() {
this.addMsg.Id = 0; this.addMsg.Id = 0;
...@@ -496,7 +778,7 @@ ...@@ -496,7 +778,7 @@
this.addMsg.StudyTime = ""; this.addMsg.StudyTime = "";
this.addMsg.LevelType = ""; this.addMsg.LevelType = "";
this.msg.PlanId = this.saveObj.Id; this.msg.PlanId = this.saveObj.Id;
this.addMsg.VisitorStatus = ''; this.addMsg.VisitorStatus = "";
this.addMsg.Evaluate = ""; this.addMsg.Evaluate = "";
this.addMsg.Remark = ""; this.addMsg.Remark = "";
this.$refs.addMsg1.resetFields(); this.$refs.addMsg1.resetFields();
...@@ -511,12 +793,12 @@ ...@@ -511,12 +793,12 @@
this.clearAddMsg(); this.clearAddMsg();
this.$refs.addMsg1.resetFields(); this.$refs.addMsg1.resetFields();
this.$refs.addMsg2.resetFields(); this.$refs.addMsg2.resetFields();
}) });
}, },
//过滤备注显示 //过滤备注显示
getRemarks(remark) { getRemarks(remark) {
if (remark.length > 10) { if (remark.length > 10) {
return remark.substring(0, 10) + '...'; return remark.substring(0, 10) + "...";
} else { } else {
return remark; return remark;
} }
...@@ -529,10 +811,37 @@ ...@@ -529,10 +811,37 @@
//关闭 //关闭
closeDetail() { closeDetail() {
this.isShowDetail = false; this.isShowDetail = false;
},
changeVisitList() {
this.loadingObj.visitLoading = true;
this.showTodayVist = [];
this.$nextTick(() => {
this.showTodayVist = this.todayVistList.filter(x => {
return (
x.StuName.indexOf(this.searchObj.arriveVisitKey) != -1 ||
x.StuTel.indexOf(this.searchObj.arriveVisitKey) != -1
);
});
this.loadingObj.visitLoading = false;
});
},
initTodayVistList() {
this.loadingObj.visitLoading = true;
if (this.$route.query.Id) {
let msg = { Id: this.$route.query.Id };
getTodayVisitList(msg).then(r => {
console.log(r);
this.todayVistList = r.Data;
this.showTodayVist = this.todayVistList;
this.loadingObj.visitLoading = false;
});
} else {
this.loadingObj.visitLoading = false;
} }
} }
} }
};
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style> </style>
<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 @@ ...@@ -68,7 +68,7 @@
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label">客户名称</div> <div class="stage_label">客户名称</div>
<div class="stage_value"> <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> </div>
</div> </div>
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label">电话</div> <div class="stage_label">电话</div>
<div class="stage_value"> <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> </div>
</div> </div>
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label">出生日期</div> <div class="stage_label">出生日期</div>
<div class="stage_value"> <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> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale"> <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
...@@ -112,69 +112,62 @@ ...@@ -112,69 +112,62 @@
<div class="info_item"> <div class="info_item">
<div class="item_label">客户来源</div> <div class="item_label">客户来源</div>
<div class="item_value"> <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="客户来源" /> emit-value map-options label="客户来源" />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">创建人</div> <div class="item_label">创建人</div>
<div class="item_value"> <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 /> :options="myEmployeeList" option-label="EmployeeName" option-value="Id" emit-value map-options />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">客户阶段状态</div> <div class="item_label">客户阶段状态</div>
<div class="item_value"> <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="客户状态" /> emit-value map-options label="客户状态" />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">日语基础</div> <div class="item_label">日语基础</div>
<div class="item_value"> <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 /> option-value="Id" emit-value map-options />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">职业</div> <div class="item_label">职业</div>
<div class="item_value"> <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> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">学历</div> <div class="item_label">学历</div>
<div class="item_value"> <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 /> option-value="Id" emit-value map-options />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">学习目的</div> <div class="item_label">学习目的</div>
<div class="item_value"> <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 /> emit-value map-options />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">收客渠道</div> <div class="item_label">收客渠道</div>
<div class="item_value"> <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 /> emit-value map-options />
</div> </div>
</div> </div>
<div class="info_item" v-if="customObj.StuChannel==6"> <div class="info_item" v-if="customObj.StuChannel==6">
<div class="item_label">第三方平台名称</div> <div class="item_label">第三方平台名称</div>
<div class="item_value"> <div class="item_value">
<q-input filled v-model="customObj.PlatformName"></q-input> <q-input filled v-model="customObj.PlatformName" dense></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 />
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
...@@ -194,8 +187,7 @@ ...@@ -194,8 +187,7 @@
getGuestBasicsEnumList, getGuestBasicsEnumList,
getGuestEducationEnumList, getGuestEducationEnumList,
getGuestLearningGoalsEnumList, getGuestLearningGoalsEnumList,
GetStuChannelList, GetStuChannelList
GetAssistTypeList
} from '../../../api/sale/sale' } from '../../../api/sale/sale'
import { import {
queryEmployee queryEmployee
...@@ -249,7 +241,6 @@ ...@@ -249,7 +241,6 @@
//员工列表 //员工列表
employeeList: [], employeeList: [],
myEmployeeList: [], myEmployeeList: [],
AssistPeople:1,
StuChannelList: [], //收客渠道 StuChannelList: [], //收客渠道
AssistDropList: [] //协助人员 AssistDropList: [] //协助人员
} }
...@@ -261,13 +252,9 @@ ...@@ -261,13 +252,9 @@
this.queryGoalsList(); this.queryGoalsList();
this.getEmployeeList(); this.getEmployeeList();
this.GetStuChannelList(); this.GetStuChannelList();
this.GetAssistTypeList();
if (this.saveObj && this.saveObj.StuId > 0) { if (this.saveObj && this.saveObj.StuId > 0) {
this.customMsg.StuId = this.saveObj.StuId; this.customMsg.StuId = this.saveObj.StuId;
this.queryStuInfo(); this.queryStuInfo();
if(this.customMsg.AssistList&&this.customMsg.AssistList.length>0){
this.customMsg.AssistList[0].StuId = this.saveObj.StuId;
}
} }
}, },
mounted() { mounted() {
...@@ -275,10 +262,6 @@ ...@@ -275,10 +262,6 @@
methods: { methods: {
//保存学员信息 //保存学员信息
saveStu() { 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 => { saveStudent(this.customObj).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$q.notify({ this.$q.notify({
...@@ -312,14 +295,6 @@ ...@@ -312,14 +295,6 @@
} }
}) })
}, },
//获取协助人员
GetAssistTypeList(){
GetAssistTypeList({}).then(res => {
if(res.Code==1){
this.AssistDropList = res.Data;
}
})
},
//筛选员工 //筛选员工
filterEmployee(val, update, abort) { filterEmployee(val, update, abort) {
update(() => { update(() => {
...@@ -360,7 +335,21 @@ ...@@ -360,7 +335,21 @@
this.customObj = res.Data; 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> </script>
\ No newline at end of file
<style> <style>
.Sysuser_Date .el-input__inner { .Student_Date .el-input__inner {
background: transparent !important; background: transparent !important;
border: 0 !important; border: 0 !important;
padding-right:0 !important;
height:28px!important;
} }
</style> </style>
<template> <template>
...@@ -14,7 +16,7 @@ ...@@ -14,7 +16,7 @@
</div> </div>
<template v-if="isShowAdd"> <template v-if="isShowAdd">
<div class="row wrap"> <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="预约日期"> label="预约日期">
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
...@@ -24,17 +26,17 @@ ...@@ -24,17 +26,17 @@
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
<div class="Sysuser_Date col-6"> <div class="Student_Date col-6">
<q-field filled class="q-pb-lg"> <q-field filled class="q-pb-lg" dense>
 <template v-slot:control>  <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', start: '09:00',
step: '00:15', step: '00:15',
end: '21:00', end: '21:00',
maxTime:addMsg.EndTime maxTime:addMsg.EndTime
}" placeholder="预约开始时间"> }" placeholder="预约开始时间">
</el-time-select> </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', start: '09:00',
step: '00:15', step: '00:15',
end: '21:00', end: '21:00',
...@@ -46,17 +48,17 @@ ...@@ -46,17 +48,17 @@
</div> </div>
</div> </div>
<div class="row wrap"> <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" @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 /> 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" <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 /> map-options />
</div> </div>
<div class="row wrap"> <div class="row wrap">
<q-select filled stack-label option-value="RoomId" option-label="RoomName" v-model="addMsg.ClassRoomId" <q-select filled stack-label option-value="RoomId" dense option-label="RoomName" v-model="addMsg.ClassRoomId"
ref="ClassRoomId" :options="ClassRoomList" label="关联教室" :dense="false" class="col-6 q-pb-lg q-pr-lg" ref="ClassRoomId" :options="ClassRoomList" label="关联教室" class="col-6 q-pb-lg q-pr-lg"
emit-value map-options /> emit-value map-options />
</div> </div>
<div class="row wrap" style="margin-bottom:10px;"> <div class="row wrap" style="margin-bottom:10px;">
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
@click="isShowAdd=false" /> @click="isShowAdd=false" />
<template v-if="isShowAdd"> <template v-if="isShowAdd">
<div class="row wrap"> <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="到访校区" /> 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> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale"> <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</q-input> </q-input>
</div> </div>
<div class="row warp"> <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> <template v-slot:append>
<q-icon name="access_time" class="cursor-pointer"> <q-icon name="access_time" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale"> <q-popup-proxy transition-show="scale" transition-hide="scale">
...@@ -34,12 +34,12 @@ ...@@ -34,12 +34,12 @@
</q-icon> </q-icon>
</template> </template>
</q-input> </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 :options="myEmployeeList" option-label="EmployeeName" use-input option-value="Id" emit-value map-options
label="接待人" /> label="接待人" />
</div> </div>
<div class="row wrap"> <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> </q-input>
</div> </div>
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
</div> </div>
<template v-if="isShowAdd"> <template v-if="isShowAdd">
<div class="row wrap"> <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 class="col-6 q-pb-lg q-pr-lg" dense v-model="yueMsg.AppointmentPoint" label="约访地点"></q-input>
<q-input filled v-model="yueMsg.AppointmentTime"> <q-input filled v-model="yueMsg.AppointmentTime" dense>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale"> <q-popup-proxy transition-show="scale" transition-hide="scale">
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</q-input> </q-input>
</div> </div>
<div class="row wrap"> <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> </q-input>
</div> </div>
<div class="row wrap" style="margin-bottom:10px;"> <div class="row wrap" style="margin-bottom:10px;">
......
...@@ -34,11 +34,12 @@ ...@@ -34,11 +34,12 @@
</div> </div>
<div class="detail-travel"> <div class="detail-travel">
<div class="detail_first"> <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="1" label="记录" />
<q-tab name="2" label="操作" /> <q-tab name="2" label="操作" />
<q-tab name="3" label="订单" /> <q-tab name="3" label="订单" />
<q-tab name="4" label="合同" /> <q-tab name="4" label="合同" />
<q-tab name="5" label="协同人员" />
</q-tabs> </q-tabs>
<div class="operate_Content" style="flex:1;"> <div class="operate_Content" style="flex:1;">
<div class="detail_Main"> <div class="detail_Main">
...@@ -68,6 +69,9 @@ ...@@ -68,6 +69,9 @@
<template v-if="ckedTab==4"> <template v-if="ckedTab==4">
<student-hetong :save-obj="baseObj" @success="refreshStudentPage"></student-hetong> <student-hetong :save-obj="baseObj" @success="refreshStudentPage"></student-hetong>
</template> </template>
<template v-if="ckedTab==5">
<student-Assit :save-obj="baseObj" @success="refreshStudentPage"></student-Assit>
</template>
</div> </div>
</div> </div>
</div> </div>
...@@ -96,6 +100,7 @@ ...@@ -96,6 +100,7 @@
import studentShiting from '../student/student-shiting'; import studentShiting from '../student/student-shiting';
import studentHetong from '../student/student-hetong'; import studentHetong from '../student/student-hetong';
import studentOrder from '../student/student-order'; import studentOrder from '../student/student-order';
import studentAssit from '../student/student-Assit';
export default { export default {
meta: { meta: {
title: "学员管理" title: "学员管理"
...@@ -108,7 +113,8 @@ ...@@ -108,7 +113,8 @@
studentGenjin, studentGenjin,
studentShiting, studentShiting,
studentHetong, studentHetong,
studentOrder studentOrder,
studentAssit
}, },
props: { props: {
saveObj: { saveObj: {
......
...@@ -94,6 +94,7 @@ ...@@ -94,6 +94,7 @@
</style> </style>
<template> <template>
<div class="schedulVisit"> <div class="schedulVisit">
<div class="page-content"> <div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat <q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="stickycreatInsertStr-column-table schedul_Vtable" separator="none" :data="data" :columns="columns" class="stickycreatInsertStr-column-table schedul_Vtable" separator="none" :data="data" :columns="columns"
...@@ -143,6 +144,7 @@ ...@@ -143,6 +144,7 @@
}, },
data() { data() {
return { return {
tabCheck:"first",
columns: [{ columns: [{
name: 'GuestName', name: 'GuestName',
label: '姓名', label: '姓名',
......
...@@ -122,15 +122,18 @@ ...@@ -122,15 +122,18 @@
} }
.Sctop_Color { .Sctop_Color {
font-size: 18px; font-size: 15px;
color: #000000; color: #000000;
width: 19%; width: 19%;
text-align: center; text-align: center;
font-weight: 600;
font-family: pingfang;
} }
.Scotop_little { .Scotop_little {
color: #AAAAAA; color: #AAAAAA;
font-size: 14px; font-size: 12px;
font-weight: 400;
margin-right: 15px; margin-right: 15px;
display: inline-block; display: inline-block;
text-align: right; text-align: right;
......
<style> <style>
.Sysuser_Date .el-range-editor .el-range-input { .Sysuser_Date .el-input__inner {
background-color: transparent; background-color: transparent;
width: 100%; width: 100%;
border: none; border: none;
} }
.Sysuser_Date .el-range-input{
background-color: transparent;
}
</style> </style>
<template> <template>
<div class="page-body"> <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