Commit 80e505b4 authored by zhengke's avatar zhengke

修改

parent 030c6d27
...@@ -20,7 +20,7 @@ export default { ...@@ -20,7 +20,7 @@ export default {
</script> </script>
<style> <style>
@import url("//at.alicdn.com/t/font_2077629_9j9u1nj8nka.css"); @import url("//at.alicdn.com/t/font_2077629_70it4rlfqmf.css");
.q-scrollarea__thumb { .q-scrollarea__thumb {
z-index: 999999 !important; z-index: 999999 !important;
} }
......
<template>
<q-dialog v-model="persistent" full-height maximized position="right" persistent @hide="closeCutomer"
transition-show="slide-left">
<div class="customMain">
<div class="custom_Top">
<div class="custom_HLeft">
<div class="nameplate_avatar">
<img v-if="baseObj.StuIcon" style="width:100%;height:100%;"
:src="baseObj.StuIcon" alt />
<div class="student_Name" v-else>
<span v-if="baseObj.StuName">{{baseObj.StuName.substring(0,1)}}</span>
</div>
</div>
<div class="Name_List">
<div class="F_16">{{baseObj.StuName}}</div>
<!-- <div class="wechat_Name">张飞微信</div> -->
</div>
</div>
<div class="custom_HRight">
<q-btn color="primary" size="sm" label="创建待办" />
</div>
</div>
<div class="custom_Bottom">
<div class="detail-info">
<div class="info_title">客户管理</div>
<div class="info_content" style="margin-bottom:0;">
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">客户名称</div>
<div class="stage_value">
<q-input filled v-model="baseObj.StuName"></q-input>
</div>
</div>
</div>
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">性别</div>
<div class="stage_value">
<q-radio v-model="baseObj.StuSex" :val="0" label="男" />
<q-radio v-model="baseObj.StuSex" :val="1" label="女" />
</div>
</div>
</div>
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">电话</div>
<div class="stage_value">
<q-input filled v-model="baseObj.StuTel"></q-input>
</div>
</div>
</div>
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">出生日期</div>
<div class="stage_value">
<q-input filled v-model="baseObj.StuBirthStr" 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">
<q-date v-model="baseObj.StuBirthStr" @input="() => $refs.qDateProxy1.hide()" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</div>
</div>
</div>
<div class="customer_info_component">
<div class="customer_info_Stage">
<div class="stage_label">所属校区</div>
<div class="stage_value">
<q-input filled v-model="baseObj.SName"></q-input>
</div>
</div>
</div>
<div class="custom_Line"></div>
<div class="info_title">基本资料</div>
<div class="info_content">
<div class="info_item">
<div class="item_label">客户来源</div>
<div class="item_value">
<q-select filled v-model="customMsg.cusfrom" :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-input filled v-model="customMsg.createBy"></q-input>
</div>
</div>
<div class="info_item">
<div class="item_label">状态</div>
<div class="item_value">
<q-select filled v-model="customMsg.customState" :options="customState" option-label="Name" option-value="Id"
emit-value map-options label="客户状态" />
</div>
</div>
</div>
</div>
</div>
<div class="detail-travel">
<div class="detail_first">
<q-tabs v-model="ckedTab" dense align="left" class="text-teal" style="width:200px;">
<q-tab name="1" label="操作记录" />
<q-tab name="2" label="操作" />
</q-tabs>
<div style="flex:1;overflow:hidden;">
<div class="detail_Main">
<div class="tripTypeContent" style="flex-shrink:0" v-if="ckedTab==2">
<div v-for="(qItem,qIndex) in visitList" :key="qIndex"
:class="{ 'ckedClass': qIndex+1 == secondType }" @click="getckedType(qItem)">{{ qItem.Name }}
</div>
</div>
<template v-if="ckedTab==1">
<div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
<div class="TimeLineDiv">
1
<!-- <q-timeline color="primary">
<q-timeline-entry v-for="(tItem,tIndex) in data.tripDataList" :key="tIndex">
<template v-slot:title>
<div style="font-size:14px;">{{ tItem.Description }}</div>
</template>
<template v-slot:subtitle>
<div class="customUpdateTime">
<div>{{ tItem.UpdateTime }}</div>
<div>{{ tItem.UpdateByName }}</div>
</div>
</template>
<div>
<div>{{ tItem.Remark }}</div>
<div class="img_box">
<img v-for="(e,i) in tItem.ImageList" :key="i" :src="e" class="img" />
</div>
<div class="file_box">
<div v-for="(e,i) in tItem.FileList" :key="i" class="flex items-center file_name">附件:<span
style="color:#000">{{ e.FileName }}</span>
<div class="del_btn" @click="DownLoadFileByUrl(e.FileUrl,e.FileName)">下载</div>
</div>
</div>
</div>
</q-timeline-entry>
</q-timeline> -->
</div>
</div>
<div style="margin:20px 0;">
<!-- <q-pagination class="full-width justify-end" v-model="customTripMsg.pageIndex" color="primary"
:max="data.TripPageCount" input @update:model-value="changePage" /> -->
</div>
</template>
<template v-else>
<template v-if="secondType==1">
<div class="row wrap" style="margin-top:20px;">
<q-input filled class="col-6 q-pb-lg" label="校区"></q-input>
</div>
<div class="row wrap">
<q-input filled 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">
<q-date @input="() => $refs.qDateProxy1.hide()" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</div>
<div class="row warp">
<q-input filled mask="time" :rules="['time']" class="col-6 q-pb-lg">
<template v-slot:append>
<q-icon name="access_time" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale">
<q-time>
<div class="row items-center justify-end">
<q-btn v-close-popup label="Close" color="primary" flat />
</div>
</q-time>
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</div>
<div class="row wrap">
<q-input filled class="col-6 q-pb-lg" label="接待人"></q-input>
</div>
<div class="row wrap">
<q-input filled type="textarea" class="col-6 q-pb-lg" label="备注"></q-input>
</div>
</template>
<template v-if="secondType==2">
2
</template>
<template v-if="secondType==3">
3
</template>
<template v-if="secondType==4">
4
</template>
</template>
</div>
</div>
</div>
</div>
</div>
<div class="dialog-out-close" @click="closeCutomer">
<i class="iconfont icon-close" style="font-size:26px;" />
</div>
</div>
</q-dialog>
</template>
<script>
export default {
meta: {
title: "学员管理"
},
components: {},
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
ckedTab: 1,
secondType:1,
visitList:[{
Name:'到访',
Id:1
},{
Name:'约访',
Id:2
},{
Name:'跟进',
Id:3
},{
Name:'试听',
Id:4
}],
customFrom:[{
Name:'员工录入',
Id:1
},{
Name:'同业录入',
Id:2
}],
customState:[{
Name:'无效客户',
Id:1
},{
Name:'有效客户',
Id:2
},{
Name:'新客户',
Id:3
}],
msg: {
},
baseObj:{},
customMsg:{
cusfrom:1,
createBy:'',
customState:1
}
}
},
mounted() {
console.log(this.saveObj,'saveObj');
this.baseObj = this.saveObj;
},
methods: {
closeCutomer() {
this.$emit('close')
},
//点击第二排
getckedType(obj){
this.secondType = obj.Id;
}
},
}
</script>
<style lang="scss" scoped>
.custom_RModel {
width: 500px;
height: 100%;
}
.customMain {
width: 1000px !important;
display: flex;
flex-direction: column;
height: 100 vh;
padding: 15px 17px 0 17px;
background-color: #f4f4f6;
}
.custom_Top {
width: 100%;
padding: 22px;
background: #fff;
border-radius: 8px;
display: flex;
justify-content: space-between;
align-items: center;
}
.custom_HLeft {
display: flex;
}
.nameplate_avatar {
width: 60px;
height: 60px;
flex-shrink: 0;
margin-right: 14px;
border-radius: 5px;
overflow: hidden;
}
.F_16 {
font-size: 16px;
}
.Name_List {
display: flex;
flex-direction: column;
justify-content: space-around;
overflow: hidden;
}
.wechat_Name {
color: #9999a8;
display: flex;
font-size: 14px;
}
.custom_Bottom {
margin-top: 17px;
flex: 1;
display: flex;
margin-top: 17px;
overflow: hidden;
}
.detail-info {
flex-shrink: 0;
box-sizing: border-box;
display: flex;
flex-direction: column;
width: 350px;
height: 100%;
padding: 28px 0;
margin-right: 13px;
background: #fff;
border-radius: 8px 8px 0 0;
overflow: auto;
}
.detail-info::-webkit-scrollbar {
display: none;
}
.detail-travel {
width: 100%;
flex-grow: 1;
display: flex;
flex-direction: column;
padding-top: 28px;
background: #fff;
border-radius: 8px 8px 0 0;
overflow: hidden;
}
.info_title {
padding: 0 22px;
margin-bottom: 20px;
flex-shrink: 0;
font-size: 16px;
font-weight: 700;
font-family: Microsoft YaHei, Avenir, Helvetica, Arial, sans-serif !important;
}
.info_content {
margin-bottom: 30px;
}
.customer_info_Stage {
width: 100%;
padding: 0 7px;
cursor: pointer;
display: flex;
align-items: center;
width: 100%;
padding: 12px 22px;
justify-content: space-between;
}
.stage_label {
color: #606266;
flex-shrink: 0;
margin-right: 10px;
}
.stage_value {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.customer_info_component {
width: 100%;
}
.edit_bar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 22px;
}
.item_label {
color: #606266;
flex-shrink: 0;
width: 120px;
font-size: 14px;
}
.edit_info_wrap {
padding: 0 22px 12px;
}
.info_item {
position: relative;
display: flex;
padding: 12px 22px;
align-items: center;
}
.item_value {
flex: 1;
font-size: 14px;
word-break: break-all;
overflow: hidden;
}
.custom_Line {
width: calc(100% - 44px);
margin: 16px 22px;
border-bottom: 1px solid #d7d7d7;
}
.custom_Edit {
display: flex;
justify-content: center;
align-items: center;
width: 78px;
height: 26px;
margin-right: 3px;
border: 1px dashed #858598;
border-radius: 4px;
font-size: 12px;
cursor: pointer;
}
.tripTypeContent {
display: flex;
margin-top: 20px;
overflow-x: auto;
white-space: nowrap;
}
.ckedClass {
color: #3470ff;
font-weight: 700;
}
.tripTypeContent div {
margin-right: 20px;
cursor: pointer;
}
.TimeLineDiv {
margin-top: 20px;
overflow: auto;
// height:620px;
flex: 1;
height: 100%;
padding-right: 20px;
}
.q-timeline__title {
margin-bottom: 5px;
}
.customUpdateTime {
display: flex;
justify-content: space-between;
font-size: 14px;
color: #9696a6;
}
.q-timeline__subtitle {
opacity: 1;
font-weight: normal;
}
.follow_Component {
padding: 0 22px;
margin-top: 10px;
width: 100%;
background-color: #f6f6f6;
border-radius: 5px;
}
.q-textarea .q-field__native {
padding-top: 0;
}
.editer_input .q-field__native {
height: 50px;
}
.detail_first {
margin: 0 22px;
display: flex;
flex-direction: column;
height: 100%;
}
.detail_Main {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
padding-top: 10px;
overflow: hidden;
}
.img_box {
margin-top: 10px;
.img {
width: 100px;
height: 100px;
object-fit: cover;
box-shadow: 0px 10px 30px 0px rgba(36, 36, 36, 0.2);
margin: 5px;
border-radius: 10px;
}
}
.file_box {
margin-top: 10px;
.file_name {
font-size: 14px;
color: #9696A6;
margin: 3px 0;
.del_btn {
margin-left: 10px;
padding-left: 5px;
border-left: 1px solid var(--q-primary);
color: var(--q-primary);
cursor: pointer;
}
}
}
.student_Name{
width:100%;
height:100%;
background: #004d40;
color:#fff;
text-align: center;
line-height: 60px;
font-size:20px;
}
</style>
...@@ -31,12 +31,12 @@ ...@@ -31,12 +31,12 @@
<img :src="props.value" /> <img :src="props.value" />
</q-avatar> </q-avatar>
<q-avatar size="md" color="teal-10" text-color="white" v-if="!props.value"> <q-avatar size="md" color="teal-10" text-color="white" v-if="!props.value">
{{props.row.StuName}}</q-avatar> {{props.row.StuName.substring(0,1)}}</q-avatar>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-StuName="props"> <template v-slot:body-cell-StuName="props">
<q-td :props="props"> <q-td :props="props">
<div class="text-blue cursor-pointer">{{props.value}}</div> <div class="text-blue cursor-pointer" @click="getStuRight(props.row)">{{props.value}}</div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-StuSex="props"> <template v-slot:body-cell-StuSex="props">
...@@ -54,21 +54,10 @@ ...@@ -54,21 +54,10 @@
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount" <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" /> :input="true" @input="changePage" />
</template> </template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<div style="min-width:190px;width:100%">
<q-btn v-if="props.row.StudentAccount==''" flat size="xs" icon="iconfont icon-ziyuan" color="warning"
style="font-weight:400" class="q-mr-xs" label="创建账号" @click="createAccount(props.row.StuId)" />
<q-btn flat size="xs" icon="iconfont icon-ziyuan" color="warning" style="font-weight:400" class="q-mr-xs"
label="重置密码" @click="resetPw(props.row.StuId)" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditStudent(props.row)" />
</div>
</q-td>
</template>
</q-table> </q-table>
<student-form v-if="isShowStuForm" :save-obj="stuOption" @close="closeStuForm" @success="refreshPage"> <student-form v-if="isShowStuForm" :save-obj="stuOption" @close="closeStuForm" @success="refreshPage">
</student-form> </student-form>
<studentRight-form v-if="isShowStuRight" :save-obj="stuOption" @close="closeStuForm" @success="refreshPage"></studentRight-form>
</div> </div>
</div> </div>
</template> </template>
...@@ -83,12 +72,15 @@ ...@@ -83,12 +72,15 @@
resetPassword resetPassword
} from '../../api/users/user.js' } from '../../api/users/user.js'
import studentForm from '../../components/school/student/student-form' import studentForm from '../../components/school/student/student-form'
import studentRightForm from '../../components/school/student/studentRight-form'
export default { export default {
meta: { meta: {
title: "学员管理" title: "学员管理"
}, },
components: { components: {
studentForm, studentForm,
studentRightForm
}, },
data() { data() {
return { return {
...@@ -130,12 +122,6 @@ ...@@ -130,12 +122,6 @@
field: 'SName', field: 'SName',
align: 'left', align: 'left',
}, },
{
name: 'AreaName',
label: '区域',
field: 'AreaName',
align: 'left',
},
{ {
name: 'Status', name: 'Status',
label: '状态', label: '状态',
...@@ -147,23 +133,6 @@ ...@@ -147,23 +133,6 @@
label: '创建人', label: '创建人',
align: 'left', align: 'left',
field: 'CreateByName' field: 'CreateByName'
},
{
name: 'CreateTimeStr',
label: '入学时间',
align: 'left',
field: 'CreateTimeStr'
},
{
name: 'StudentAccount',
label: '账号',
align: 'left',
field: 'StudentAccount'
},
{
name: 'optioned',
label: '操作',
field: 'StuId'
} }
], ],
data: [], data: [],
...@@ -195,7 +164,8 @@ ...@@ -195,7 +164,8 @@
stuOption: null, stuOption: null,
schoolList: [], schoolList: [],
isShowStuForm: false, isShowStuForm: false,
resetLoading: false resetLoading: false,
isShowStuRight: false
} }
}, },
mounted() { mounted() {
...@@ -346,6 +316,16 @@ ...@@ -346,6 +316,16 @@
}, },
closeStuForm() { closeStuForm() {
this.isShowStuForm = false; this.isShowStuForm = false;
this.isShowStuRight = false;
},
//点击学生姓名弹出
getStuRight(obj){
if (obj) {
this.stuOption = obj;
} else {
this.stuOption = null;
}
this.isShowStuRight = true;
} }
}, },
} }
......
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