Commit 84cda05e authored by 罗超's avatar 罗超

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

# Conflicts:
#	src/App.vue
parents 2f7789bb bee348e6
...@@ -25,7 +25,7 @@ export default { ...@@ -25,7 +25,7 @@ export default {
</script> </script>
<style> <style>
@import url("//at.alicdn.com/t/font_2077629_s183916p0bb.css"); @import url("//at.alicdn.com/t/font_2077629_9ty53q1g2bo.css");
@font-face { @font-face {
font-family: "din"; font-family: "din";
src: url("./assets/font/DIN-Bold.otf") format("opentype"); src: url("./assets/font/DIN-Bold.otf") format("opentype");
......
...@@ -868,4 +868,15 @@ export function GetReserveClassBalanceSheet(data) { ...@@ -868,4 +868,15 @@ export function GetReserveClassBalanceSheet(data) {
method: 'post', method: 'post',
data data
}); });
}
/**
* 获取下拉数据
*/
export function GetFinanceIncomeFeeRate(data) {
return request({
url: '/Finance/GetFinanceIncomeFeeRate',
method: 'post',
data
});
} }
\ No newline at end of file
...@@ -132,9 +132,9 @@ export function GetPaperPage(data) { ...@@ -132,9 +132,9 @@ export function GetPaperPage(data) {
} }
/** /**
* 获取试卷分页列表 * 获取试卷分页列表
* @param {JSON参数} data * @param {JSON参数} data
*/ */
export function submitApproval(data) { export function submitApproval(data) {
return request({ return request({
url: '/Exam/SubmitApproval', url: '/Exam/SubmitApproval',
...@@ -315,8 +315,8 @@ export function getExaminationStudentPage(data) { ...@@ -315,8 +315,8 @@ export function getExaminationStudentPage(data) {
} }
/** 删除试卷、文件夹 /** 删除试卷、文件夹
* @param {*} data * @param {*} data
*/ */
export function deletePaperInfo(data) { export function deletePaperInfo(data) {
return request({ return request({
url: '/Exam/DeletePaper', url: '/Exam/DeletePaper',
...@@ -398,6 +398,19 @@ export function GetTeacherDay(data) { ...@@ -398,6 +398,19 @@ export function GetTeacherDay(data) {
}) })
} }
/**
* 教师月度汇总
* @param {*} data
*/
export function GetTeacherMonthStatic(data) {
return request({
url: '/TeacherStatic/GetTeacherMonthStatic',
method: 'post',
data
})
}
/** /**
* 获取教师端每月统计 * 获取教师端每月统计
* @param {*} data * @param {*} data
...@@ -446,8 +459,160 @@ export function GetTeacherStaticYearRate(data) { ...@@ -446,8 +459,160 @@ export function GetTeacherStaticYearRate(data) {
}) })
} }
/**
* 获取教师端每月成长率统计
* @param {*} data
*/
export function queryAssessmentTypeList(data) {
return request({
url: '/TeacherAssessment/GetAssessmentTypeList',
method: 'post',
data
})
}
/**
* 获取配置数据
* @param {*} data
*/
export function GetAssessmentType(data) {
return request({
url: '/TeacherAssessment/GetAssessmentType',
method: 'post',
data
})
}
/**
* 保存配置数据
* @param {*} data
*/
export function SetAssessmentType(data) {
return request({
url: '/TeacherAssessment/SetAssessmentType',
method: 'post',
data
})
}
/**
* 删除列表数据
* @param {*} data
*/
export function RemoveAssessmentType(data) {
return request({
url: '/TeacherAssessment/RemoveAssessmentType',
method: 'post',
data
})
}
/**
* 删除子类数据
* @param {*} data
*/
export function RemoveAssessmentSubtype(data) {
return request({
url: '/TeacherAssessment/RemoveAssessmentSubtype',
method: 'post',
data
})
}
/**
* 获取列表数据
* @param {*} data
*/
export function GetAssessmentTypeList(data) {
return request({
url: '/TeacherAssessment/GetAssessmentTypeList',
method: 'post',
data
})
}
/**
* 获取教师考核分页列表
* @param {*} data
*/
export function queryTeacherAssessmentPage(data) {
return request({
url: '/TeacherAssessment/GetTeacherAssessmentPage',
method: 'post',
data
})
}
/**
* 获取教师考核信息
* @param {*} data
*/
export function queryTeacherAssessmentInfo(data) {
return request({
url: '/TeacherAssessment/GetTeacherAssessmentInfo',
method: 'post',
data
})
}
/**
* 保存老师考核信息
* @param {*} data
*/
export function setTeacherAssessmentInfo(data) {
return request({
url: '/TeacherAssessment/SaveTeacherAssessmentInfo',
method: 'post',
data
})
}
/**
* 根据编号获取老师考核数据信息
* @param {*} data
*/
export function getTeacherAssessmentById(data) {
return request({
url: '/TeacherAssessment/GetTeacherAssessmentDetail',
method: 'post',
data
})
}
/**
* 新增修改考核表现
* @param {*} data
*/
export function saveTeacherAssessmentInfo(data) {
return request({
url: '/TeacherAssessment/SetTeacherAssessmentInfo',
method: 'post',
data
})
}
/**
* 员工提交建议和意见等
* @param {*} data
*/
export function setTeacherHelp(data) {
return request({
url: '/TeacherAssessment/TeacherSetHelp',
method: 'post',
data
})
}
/**
* 员工提交建议和意见等
* @param {*} data
*/
export function SubmitTeacherAssessmentApproval(data) {
return request({
url: '/TeacherAssessment/SubmitTeacherAssessmentApproval',
method: 'post',
data
})
}
\ No newline at end of file
<style>
.el-picker-panel {
z-index: 9999 !important;
}
.el-range-editor--small.el-input__inner {
background-color: transparent !important;
border: 0 !important;
height: 40px;
line-height: 40px;
}
.el-range-editor .el-range-input {
background-color: transparent !important;
}
.el-range-editor--small .el-range-separator {
line-height: 30px !important;
}
</style>
<template>
<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;">
<q-card-section>
<div class="text-h6">{{addMsg.ID==0?'新增活动信息':'修改活动信息'}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<q-input filled v-model="addMsg.Title" class="col-6 q-pr-lg q-pb-lg" :rules="[val => !!val || '请填写标题']"
ref="Title" label="标题">
</q-input>
<q-input filled v-model="addMsg.SurveyNum" @keyup.native="checkInteger(addMsg,'SurveyNum')" class="col-6 q-pb-lg" :rules="[val => !!val || '请填写数量']"
ref="SurveyNum" label="问卷调查份数">
</q-input>
<q-field filled dense class="col-6 q-pb-lg q-pr-lg">
<template v-slot:control>
<el-date-picker v-model="dateList" size="small" type="datetimerange" range-separator="至"
value-format="yyyy-MM-dd HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</template>
</q-field>
<q-select filled stack-label option-value="Id" option-label="Name" v-model="addMsg.PrizeType"
:options="platList" label="领奖方式" ref="PrizeType" :rules="[val => !!val || '请填写标题']" class="col-6 q-pb-lg" emit-value map-options />
<q-input filled v-model="addMsg.PrizeAddress" class="col-6 q-pb-lg q-pr-lg"
:rules="[val => !!val || '请填写奖品地址']" ref="PrizeAddress" label="奖品地址">
</q-input>
<q-input filled type="textarea" :rows="3" v-model="addMsg.Description" class="col-12 q-pb-lg"
:rules="[val => !!val || '请填写活动说明']" ref="Description" label="活动说明">
</q-input>
</div>
</q-card-section>
<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="saveActive" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
export default {
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
addMsg: {
ID: 0,
Title: '',
StartDate: '',
EndDate: "",
SurveyNum: '',
Description: '',
PrizeAddress: '',
PrizeType: '',
},
platList: [],
dateList: [],
saveLoading: false,
}
},
mounted() {
this.GetPrizeTypeEnumList();
this.initObj()
},
methods: {
//初始化表单
initObj() {
if (this.saveObj && this.saveObj.ID > 0) {
this.apipostDS("/api/Survey/GetActivitySurvey", {
ID: this.saveObj.ID
}, res => {
this.addMsg = res.data.data;
this.addMsg.PrizeType = this.addMsg.PrizeType.toString()
this.dateList = [this.addMsg.StartDate, this.addMsg.EndDate]
})
}
},
//关闭弹窗
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
GetPrizeTypeEnumList() {
this.apipostDS("/api/Survey/GetPrizeTypeEnumList", {}, res => {
if (res.data.resultCode == 1) {
this.platList = res.data.data
} else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
},
//保存数据
saveActive() {
this.$refs.Title.validate();
this.$refs.SurveyNum.validate();
this.$refs.PrizeType.validate();
this.$refs.PrizeAddress.validate();
this.$refs.Description.validate();
if (this.dateList && this.dateList.length > 0) {
this.addMsg.StartDate = this.dateList[0];
this.addMsg.EndDate = this.dateList[1];
} else {
this.$q.notify({
type: 'negative',
position: "top",
message: '请选择活动时间'
})
return false
}
if (!this.$refs.Title.hasError && !this.$refs.SurveyNum.hasError && !this.$refs.PrizeType.hasError && !this.$refs.PrizeAddress.hasError
&& !this.$refs.Description.hasError) {
this.apipostDS("/api/Survey/SetActivitySurvey", this.addMsg, res => {
if (res.data.resultCode == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit('close');
this.$emit('success');
} else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
}
}
}
}
</script>
This diff is collapsed.
<style scoped>
.wenjuan_Shuru{
position:relative;
}
.SurverDel{
position:absolute;
right:-5px;
top:-5px;
}
</style>
<template>
<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;">
<q-card-section>
<div class="text-h6">{{addMsg.ID==0?'新增问卷调查':'修改问卷调查'}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<q-input filled v-model="addMsg.Title" class="col-6 q-pr-lg q-pb-lg" :rules="[val => !!val || '请填写标题']"
ref="Title" label="标题">
</q-input>
<q-select filled stack-label option-value="Id" option-label="Name" v-model="addMsg.SurveyType"
:options="platList" label="类型" ref="SurveyType" @input="getPlat()" :rules="[val => !!val || '请选择类型']" class="col-6 q-pb-lg" emit-value map-options />
<q-select filled stack-label option-value="Id" option-label="Name" v-model="addMsg.FormType"
:options="FormTypeList" label="问卷类型" ref="FormType" :rules="[val => !!val || '请选择问卷类型']" class="col-6 q-pb-lg q-pr-lg" emit-value map-options />
<q-input filled v-model="addMsg.Sort" class="col-6 q-pb-lg" ref="Sort" label="排序" :rules="[val => !!val || '请填写排序']"></q-input>
<q-select filled stack-label option-value="Id" option-label="Name" v-model="addMsg.IsShow"
:options="ShowList" label="是否显示" ref="IsShow" class="col-6 q-pb-lg q-pr-lg" emit-value map-options />
<q-select filled stack-label option-value="Id" option-label="Name" v-model="addMsg.IsRequired"
:options="requireList" label="是否必填" ref="IsRequired" class="col-6 q-pb-lg" emit-value map-options />
<template v-if="addMsg.SurveyType==2||addMsg.SurveyType==3">
<div v-for="(item,index) in addMsg.SurveyOptionsList" class="row wrap wenjuan_Shuru" style="width:100%" :key="index">
<q-input filled v-model="item.OptionsName" class="col-6 q-pb-lg q-pr-lg" :label="'选项'+(index+1)"> </q-input>
<q-input filled v-model="item.Sort" @keyup.native="checkInteger(item,'Sort')" class="col-6 q-pb-lg" label="排序"> </q-input>
<q-btn size="8px" class="SurverDel" @click="deleteSurveyType(index)" round color="red"
icon="iconfont icon-guanbi1" />
</div>
<div style="text-align:right;width:100%;">
<q-btn label="新增" color="accent q-px-md" style="font-weight:400 !important" @click="addSurver" />
</div>
</template>
</div>
</q-card-section>
<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="saveActive" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
export default {
props: {
saveObj: {
type: Object,
default: null
},
ID: {
type: String,
default: null
}
},
data() {
return {
persistent: true,
addMsg:{
ID:0,
SurveyType:'',
Title:'',
Sort:'',
IsShow:0,
FormType:'',
ActivitySurveyId:0,
SurveyOptionsList:[],
IsRequired:0
},
platList: [],
dateList: [],
FormTypeList: [],
ShowList:[{
Id:0,
Name:'是'
},{
Id:1,
Name:'否'
}],
requireList:[{
Id:0,
Name:'不必填'
},{
Id:1,
Name:'必填'
}],
saveLoading: false,
}
},
mounted() {
this.GetSurveyTypeEnumList();
this.GetFormTypeEnumEnumList();
this.initObj()
},
methods: {
//初始化表单
initObj() {
if (this.saveObj && this.saveObj.ID > 0) {
this.apipostDS("/api/Survey/GetSurvey", {
SurveyID:this.saveObj.ID
}, res => {
this.addMsg = res.data.data;
this.addMsg.SurveyType = this.addMsg.SurveyType.toString()
this.addMsg.FormType = this.addMsg.FormType.toString()
})
}else{
this.addMsg.ID = 0;
this.addMsg.SurveyType = ''
this.addMsg.Title = '';
this.addMsg.Sort = '';
this.addMsg.IsShow = 1;
this.addMsg.IsRequired = 1;
this.addMsg.FormType = '';
this.addMsg.ActivitySurveyId = this.ID;
this.addMsg.SurveyOptionsList = [];
}
},
//关闭弹窗
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
GetSurveyTypeEnumList(){
this.apipostDS("/api/Survey/GetSurveyTypeEnumList", {}, res => {
if(res.data.resultCode==1){
this.platList = res.data.data
}else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
},
GetFormTypeEnumEnumList(){
this.apipostDS("/api/Survey/GetFormTypeEnumEnumList", {}, res => {
if(res.data.resultCode==1){
this.FormTypeList = res.data.data
}else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
},
//选择类型
getPlat(){
if(this.addMsg.SurveyType==2 || this.addMsg.SurveyType==3){
this.addMsg.SurveyOptionsList= [
{ID:0,SurveyID:0,OptionsName:'',Sort:0,}
]
}else {
this.addMsg.SurveyOptionsList=[]
};
},
//新增
addSurver(){
this.addMsg.SurveyOptionsList.push({ID:0,SurveyID:0,OptionsName:'',Sort:0,})
},
//删除
deleteSurveyType(index){
this.addMsg.SurveyOptionsList.splice(index,1);
},
//保存数据
saveActive() {
this.$refs.Title.validate();
this.$refs.SurveyType.validate();
this.$refs.FormType.validate();
this.$refs.Sort.validate();
if (!this.$refs.Title.hasError&&!this.$refs.SurveyType.hasError&&!this.$refs.FormType.hasError&&!this.$refs.Sort.hasError) {
this.apipostDS("/api/Survey/SetSurvey", this.addMsg, res => {
if (res.data.resultCode == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit('close');
this.$emit('success');
} else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
}
}
}
}
</script>
...@@ -124,6 +124,12 @@ ...@@ -124,6 +124,12 @@
<q-input filled stack-label v-model="objOption.ScrollMaxNum" ref="ScrollMaxNum" class="col-6 q-pr-lg q-pb-lg" <q-input filled stack-label v-model="objOption.ScrollMaxNum" ref="ScrollMaxNum" class="col-6 q-pr-lg q-pb-lg"
label="最大上课人数" :rules="[val => !!val || '请填写最大上课人数']" /> label="最大上课人数" :rules="[val => !!val || '请填写最大上课人数']" />
</div> </div>
<div class="row">
<q-input filled stack-label v-model="objOption.FreeCoffeeNum" ref="FreeCoffeeNum" class="col-6 q-pr-lg q-pb-lg"
label="赠送咖啡杯数" :rules="[val => val >=0 || '请填写赠送咖啡杯数']" />
<q-input filled stack-label v-model="objOption.AddHoursMoney" ref="AddHoursMoney" class="col-6 q-pr-lg q-pb-lg"
label="课程增加课时费" :rules="[val => val >=0 || '请填写课程增加课时费']" />
</div>
<div class="row wrap"> <div class="row wrap">
<div class="col-6"> <div class="col-6">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="CourseEmphasis" multiple <q-select filled stack-label option-value="Id" option-label="Name" v-model="CourseEmphasis" multiple
...@@ -258,6 +264,8 @@ ...@@ -258,6 +264,8 @@
IsScrollClass: 0, // 是否开启滚动开班 1是 0否(默认) IsScrollClass: 0, // 是否开启滚动开班 1是 0否(默认)
ScrollMinNum: 0, // 最小上课人数 ScrollMinNum: 0, // 最小上课人数
ScrollMaxNum: 0, // 最大上课人数 ScrollMaxNum: 0, // 最大上课人数
FreeCoffeeNum: 0, // 赠送咖啡
AddHoursMoney: 0, // 课程增加课时费
CourseTimeId: 0, // 关联上课时段 CourseTimeId: 0, // 关联上课时段
ContractInfo: "",//合同补充协议 ContractInfo: "",//合同补充协议
OpenBankLevelList: [] OpenBankLevelList: []
...@@ -498,6 +506,8 @@ ...@@ -498,6 +506,8 @@
this.objOption.IsScrollClass = res.Data.IsScrollClass; this.objOption.IsScrollClass = res.Data.IsScrollClass;
this.objOption.ScrollMinNum = res.Data.ScrollMinNum; this.objOption.ScrollMinNum = res.Data.ScrollMinNum;
this.objOption.ScrollMaxNum = res.Data.ScrollMaxNum; this.objOption.ScrollMaxNum = res.Data.ScrollMaxNum;
this.objOption.FreeCoffeeNum = res.Data.FreeCoffeeNum;
this.objOption.AddHoursMoney = res.Data.AddHoursMoney;
this.objOption.CourseTimeId = res.Data.CourseTimeId; this.objOption.CourseTimeId = res.Data.CourseTimeId;
this.objOption.OpenBankLevelList = res.Data.OpenBankLevelList; this.objOption.OpenBankLevelList = res.Data.OpenBankLevelList;
this.CourseEmphasis = []; this.CourseEmphasis = [];
...@@ -556,6 +566,8 @@ ...@@ -556,6 +566,8 @@
this.objOption.IsScrollClass = 0; this.objOption.IsScrollClass = 0;
this.objOption.ScrollMinNum = 0; this.objOption.ScrollMinNum = 0;
this.objOption.ScrollMaxNum = 0; this.objOption.ScrollMaxNum = 0;
this.objOption.FreeCoffeeNum = 0;
this.objOption.AddHoursMoney = 0;
this.objOption.CourseTimeId = 0; this.objOption.CourseTimeId = 0;
this.objOption.OpenBankLevelList = []; this.objOption.OpenBankLevelList = [];
} }
...@@ -570,10 +582,14 @@ ...@@ -570,10 +582,14 @@
this.$refs.CourseName.validate(); this.$refs.CourseName.validate();
this.$refs.ClassHours.validate(); this.$refs.ClassHours.validate();
this.$refs.CateId.validate(); this.$refs.CateId.validate();
this.$refs.FreeCoffeeNum.validate();
this.$refs.AddHoursMoney.validate();
if ( if (
!this.$refs.CourseName.hasError && !this.$refs.CourseName.hasError &&
!this.$refs.ClassHours.hasError && !this.$refs.ClassHours.hasError &&
!this.$refs.CateId.hasError !this.$refs.CateId.hasError &&
!this.$refs.FreeCoffeeNum.hasError &&
!this.$refs.AddHoursMoney.hasError
) { ) {
this.saveCourseLoading = true; this.saveCourseLoading = true;
var Teacher_Ids = ""; var Teacher_Ids = "";
......
<style>
.changeClassProcess {
width: 350px;
}
.changeClassProcess .processList {
width: 100%;
height: auto;
}
.changeClassProcess .processTop {
width: 100%;
height: 54px;
background-color: #F1F1F1;
color: #000000;
text-align: center;
line-height: 54px;
border-radius: 2px;
cursor: pointer;
position: relative;
}
.changeClassProcess .processLine {
width: 100%;
height: 54px;
background-color: #fff;
color: #bbb6b6;
text-align: center;
line-height: 54px;
}
.changeClassProcess .processLine i {
font-size: 25px;
font-weight: bold;
}
.changeClassProcess .otherList {
background-color: #2961FE !important;
color: #fff;
font-weight: bold;
}
.changeClassProcess .process_TwoList {
display: flex;
background-color: #2961FE !important;
color: #fff;
font-weight: bold;
align-items: center;
justify-content: center;
}
.changeClassProcess .process_He {
width: 36px;
height: 36px;
background-color: #3FC4FF;
text-align: center;
line-height: 36px;
color: #fff;
border-radius: 50%;
}
.changeClassProcess .process_Left {
width: 40%;
height: 100%;
text-align: right;
}
.changeClassProcess .process_center {
width: 20%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.changeClassProcess .process_Right {
width: 40%;
height: 100%;
text-align: left;
}
.changeClassProcess .process_OR {
background-color: #F28C1D;
}
.changeClassProcess .addProcessBtn {
width: 100%;
height: 45px;
text-align: center;
line-height: 45px;
color: #2961FE;
border: 1px dashed #2961FE;
border-radius: 2px;
cursor: pointer;
}
.changeClassProcess .process_BtnList {
margin-top: 30px;
width: 100%;
display: flex;
justify-content: center;
}
.changeClassProcess .process_BtnOne {
width: 90px;
height: 38px;
text-align: center;
line-height: 38px;
border-radius: 2px;
border: 1px solid #A1AAB2;
color: #000000;
cursor: pointer;
margin-right: 50px;
}
.changeClassProcess .SetShouSun {
display: inline-block;
border-radius: 2px;
background-color: #8175FB;
color: #fff;
position: absolute;
right: 10px;
width: 60px;
height: 27px;
left: 0;
top: 0;
line-height: 27px;
font-size: 13px;
}
.changeClassProcess .operationDiv {
position: absolute;
right: 0;
top: 0;
height: 30px;
line-height: 30px;
padding-right: 10px;
vertical-align: top;
}
.changeClassProcess .operationDiv i:first-child {
font-size: 13px;
}
.changeClassProcess .operationDiv i:hover {
color: red;
}
.changeClassProcess .justTwoClass {
margin-left: 8px;
}
</style>
<template>
<div class="changeClassProcess">
<div class="processList">
<div class="processTop">发起人</div>
<div class="processLine">
<i class="iconfont icon-down"></i>
</div>
</div>
<template v-for="(item,index) in flowObj.FlowNodeList">
<div class="processList" @click="getItem(index)" :key="index">
<template v-if="item.FlowAduitList&&item.FlowAduitList.length==1">
<div class="processTop otherList">
{{item.FlowAduitList[0].AduitName}}
<template v-if="item.FlowAduitList&&item.FlowAduitList.length>0 && item.FlowAduitList[0].IsSpecNode==1">
<span class="SetShouSun">设定收损</span>
</template>
<div class="operationDiv">
<i class="iconfont icon-shanchu" style="position:relative;top:-2px;" @click.stop="DeleteNode(index)"></i>
<i style="margin:0 8px;" class="iconfont icon-shangyi2" v-if="index!=0"
@click.stop="moveDown(index,0)"></i>
<i class="iconfont icon-xiayi" :class="{'justTwoClass':index==0}" @click.stop="moveDown(index,1)"
v-if="index!=flowObj.FlowNodeList.length-1"></i>
</div>
</div>
<div class="processLine" v-if="index!=flowObj.FlowNodeList.length-1">
<i class="iconfont icon-down"></i>
</div>
</template>
<template v-else>
<div class="processTop process_TwoList">
<div class="process_Left">{{item.FlowAduitList[0].AduitName}}</div>
<div class="process_center">
<template v-if="item.FlowAduitList[0].AuditWay==2">
<div class="process_He"></div>
</template>
<template v-if="item.FlowAduitList[0].AuditWay==3">
<div class="process_He process_OR">或者</div>
</template>
</div>
<div class="process_Right">
<template v-for="(subItem,subIndex) in item.FlowAduitList" v-if="subIndex>0">
{{subItem.AduitName}}
</template>
</div>
<template v-if="item.FlowAduitList&&item.FlowAduitList.length>0 && item.FlowAduitList[0].IsSpecNode==1">
<span class="SetShouSun">设定收损</span>
</template>
<div class="operationDiv">
<i class="iconfont icon-shanchu" style="position:relative;top:-2px;" @click.stop="DeleteNode(index)"></i>
<i style="margin:0 8px;" class="iconfont icon-shangyi2" v-if="index!=0"
@click.stop="moveDown(index,0)"></i>
<i class="iconfont icon-xiayi" :class="{'justTwoClass':index==0}" @click.stop="moveDown(index,1)"
v-if="index!=flowObj.FlowNodeList.length-1"></i>
</div>
</div>
<div class="processLine" v-if="index!=flowObj.FlowNodeList.length-1">
<i class="iconfont icon-down"></i>
</div>
</template>
</div>
</template>
<br />
<div class="addProcessBtn" @click="AddNode">新增节点</div>
<div class="process_BtnList">
<q-btn label="保存" color="accent q-px-md" style="font-weight:400 !important" @click="setBackClassFlow" />
</div>
<process-form v-if="isShowProcess" :save-obj="processObj" :NodeIndex="ChooseNodeIndex" @close="closeProcessForm"
@success="refreshPage" :authObj="showObj">
</process-form>
</div>
</template>
<script>
import processForm from '../../components/flow/process-form';
import {
queryBackClassFlow,
saveBackClassFlow
} from '../../api/system/index'
export default {
meta: {
title: ""
},
components: {
processForm
},
data() {
return {
msg: {
FlowId: 12
},
isShowProcess: false, //显示旁边弹窗
processObj: {}, //传递子组件
flowObj: {
FlowId: 12,
FlowName: "教师考核审批流程",
FlowNodeList: [], //审核节点列表
},
//显示对象
showObj: {
isShowShouSun: 0, //不显示收损
},
ChooseNodeIndex: 0,
}
},
created() {},
mounted() {
this.getBackClassFlow();
},
methods: {
//新增节点
AddNode() {
this.flowObj.FlowNodeList.push({
FlowId: 0,
NodeId: 0,
NodeName: "新增节点",
SortNum: 0,
FlowAduitList: [{
AduitName: "新增节点",
AuditType: 2,
AuditWay: 2,
CheckId: 0,
FlowId: 0,
IsSpecNode: 0,
NodeId: 8,
PostType: 0,
UserId: 0,
}]
});
},
//删除节点
DeleteNode(index) {
this.$q.dialog({
title: '提示信息',
message: '是否确定删除该流程',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
this.flowObj.FlowNodeList.splice(index, 1);
}).onCancel(() => {
});
},
getBackClassFlow() {
queryBackClassFlow(this.msg).then(res => {
if (res.Code == 1 && res.Data) {
this.flowObj = res.Data;
}
})
},
//点开旁边
getItem(nodeIndex) {
this.processObj = this.flowObj;
this.ChooseNodeIndex = nodeIndex;
this.isShowProcess = true;
},
//关闭
closeProcessForm() {
this.isShowProcess = false
},
//成功刷新
refreshPage() {
this.isShowProcess = false;
this.getBackClassFlow();
},
//保存退课流程
setBackClassFlow() {
saveBackClassFlow(this.flowObj).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
this.refreshPage();
}
})
},
//下移下移
moveDown(index, IsUp) {
var currentItem = this.flowObj.FlowNodeList[index];
if (IsUp == 0) {
if (index > 0) {
var upItem = this.flowObj.FlowNodeList[index - 1];
this.$set(this.flowObj.FlowNodeList, index - 1, currentItem);
this.$set(this.flowObj.FlowNodeList, index, upItem);
}
} else {
if (index != this.flowObj.FlowNodeList.length - 1) {
var downItem = this.flowObj.FlowNodeList[index + 1];
this.$set(this.flowObj.FlowNodeList, index + 1, currentItem);
this.$set(this.flowObj.FlowNodeList, index, downItem);
}
}
}
}
}
</script>
\ No newline at end of file
...@@ -404,7 +404,8 @@ ...@@ -404,7 +404,8 @@
//获取员工列表 //获取员工列表
getEmployee() { getEmployee() {
var qMsg = { var qMsg = {
EmployeeName: "" EmployeeName: "",
IsLeave:1,
} }
queryEmployee(qMsg).then(res => { queryEmployee(qMsg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
<div class="col q-mr-md" > <div class="col q-mr-md" >
<q-select dense standout behavior="menu" filled v-model="model.Type" ref="type" <q-select dense standout behavior="menu" filled v-model="model.Type" ref="type"
:options="typeOption" option-label="name" option-value="id" label="类型" emit-value map-options :options="typeOption" option-label="name" option-value="id" label="类型" emit-value map-options
:rules="[val => !!val || '请选择类型']"/> :rules="[val => !!val || '请选择类型']"
@input="changeSelect"/>
</div> </div>
<div class="col "> <div class="col ">
<q-input standout bottom-slots filled v-model="model.Remark" type="text" ref="Remark" label="备注" dense/> <q-input standout bottom-slots filled v-model="model.Remark" type="text" ref="Remark" label="备注" dense/>
...@@ -20,7 +21,7 @@ ...@@ -20,7 +21,7 @@
<span>列表</span> <span>列表</span>
<q-space /> <q-space />
<q-btn color="primary" size="11px" @click="showhaocai" v-if="model.Type===2">选择耗材</q-btn> <q-btn color="primary" size="11px" @click="showhaocai" v-if="model.Type===2">选择耗材</q-btn>
<q-btn color="primary" size="11px" @click="addclass_haocai" v-if="model.Type===1">添加</q-btn></q-btn> <q-btn color="primary" size="11px" @click="addclass_haocai" v-if="model.Type===1||model.Type===3">添加</q-btn>
</div> </div>
<div class="q-mt-md"> <div class="q-mt-md">
<!-- 班级相关 --> <!-- 班级相关 -->
...@@ -36,9 +37,11 @@ ...@@ -36,9 +37,11 @@
</template> </template>
<template v-slot:body-cell-ClassName="props"> <template v-slot:body-cell-ClassName="props">
<q-td :props="props" class="text-negative"> <q-td :props="props" class="text-negative">
<q-select dense standout behavior="menu" filled v-model="props.row.ClassId" ref="class" use-input <q-select v-show="model.Type==1" dense standout behavior="menu" filled v-model="props.row.ClassId" ref="class" use-input
:options="classList" option-label="allName" option-value="ClassId" emit-value map-options @filter="classfilter" :options="classList" option-label="allName" option-value="ClassId" emit-value map-options @filter="classfilter"
:rules="[val => !!val || '请选择班级']" @input ='filterCourseFn($event,props.rowIndex)'/> :rules="[val => !!val || '请选择班级']" @input='filterCourseFn($event,props.rowIndex)'/>
<q-input v-show="model.Type==3" dense standout filled v-model="props.row.OrderId"
label="订单ID" :rules="[val => !!val || '请输入约课订单']" @blur='filterOrderFn($event,props.rowIndex)'/>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Name="props"> <template v-slot:body-cell-Name="props">
...@@ -208,12 +211,17 @@ import { ...@@ -208,12 +211,17 @@ import {
getSchoolDropdown,//获取班级下拉列表 getSchoolDropdown,//获取班级下拉列表
getClassPage_ck getClassPage_ck
} from '../../api/school/index';//获取校区列表 } from '../../api/school/index';//获取校区列表
import {getClassOrderForDetail} from '../../api/sale/sale'; //获取约课列表
import {GetMaterialPageList,SuppliesStockOutApply} from '../../api/sale/StockOutApplyFor' import {GetMaterialPageList,SuppliesStockOutApply} from '../../api/sale/StockOutApplyFor'
export default { export default {
props: ["obj"], props: ["obj"],
data() { data() {
return { return {
typeOption: [{ typeOption: [{
id: 3,
name: "约课订单"
},
{
id: 1, id: 1,
name: "班级相关" name: "班级相关"
}, },
...@@ -223,7 +231,7 @@ import { ...@@ -223,7 +231,7 @@ import {
} }
], ],
model: { model: {
Type:1, Type:3,
Remark:"", Remark:"",
DetailList:[] DetailList:[]
}, },
...@@ -240,9 +248,9 @@ import { ...@@ -240,9 +248,9 @@ import {
required: true, required: true,
label: "班级", label: "班级",
align: "left", align: "left",
style:"width:200px" style:"width:400px"
}, },
{ {
name: "CourseName", name: "CourseName",
required: true, required: true,
label: "课程", label: "课程",
...@@ -384,7 +392,8 @@ import { ...@@ -384,7 +392,8 @@ import {
ClassName:"", ClassName:"",
ClassId:0, ClassId:0,
CourseName:"", CourseName:"",
haocaiList:[] haocaiList:[],
OrderId:'',
}, },
], ],
dataList: [ dataList: [
...@@ -474,11 +483,13 @@ import { ...@@ -474,11 +483,13 @@ import {
}) })
}else{ }
if(this.model.Type===2){
this.model.DetailList=[] this.model.DetailList=[]
this.dataList_class.map(item=>{ this.dataList_class.map(item=>{
if(item.haocaiList.length>0){ if(item.haocaiList.length>0){
item.haocaiList.map(_item=>{ item.haocaiList.map(_item=>{
let obj= { let obj= {
SchoolName:item.SchoolName, SchoolName:item.SchoolName,
SchoolId:item.SchoolId, SchoolId:item.SchoolId,
...@@ -494,6 +505,31 @@ import { ...@@ -494,6 +505,31 @@ import {
return return
} }
}) })
}
if(this.model.Type===3){
this.model.DetailList=[]
this.dataList_class.map(item=>{
if(item.haocaiList.length>0){
item.haocaiList.map(_item=>{
let obj= {
SchoolName:item.SchoolName,
SchoolId:item.SchoolId,
ClassName:item.CourseName,
ClassId:item.ClassId,
CourseName:item.ClassName,
SuppliesId:_item.Id,
Number:_item.Number
}
this.model.DetailList.push(obj)
})
}else{
return
}
})
} }
SuppliesStockOutApply(this.model).then(res=>{ SuppliesStockOutApply(this.model).then(res=>{
if(res.data.resultCode===1){ if(res.data.resultCode===1){
...@@ -542,7 +578,18 @@ import { ...@@ -542,7 +578,18 @@ import {
} }
}) })
}, },
classfilter(val, update) {//课程的栓选 //获取订单详情
getOrderDetails(data,index){
getClassOrderForDetail(data).then(res => {
if (res.Code == 1) {
this.dataList_class[index].ClassName=res.Data.ClassId;
this.dataList_class[index].ClassId=res.Data.OrderId;
this.dataList_class[index].CourseName=res.Data.ClassName;
this.$forceUpdate();
}
})
},
classfilter(val,update) {//课程的栓选
update(() => { update(() => {
if (val === '') { if (val === '') {
this.classList = this.allclassList this.classList = this.allclassList
...@@ -561,12 +608,35 @@ import { ...@@ -561,12 +608,35 @@ import {
this.$forceUpdate(); this.$forceUpdate();
}, },
filterCourseFn(val,index) { filterCourseFn(val,index) {
let course=this.classList.filter(item=>{ let course=this.classList.filter(item=>{
return item.ClassId==val return item.ClassId==val
}) })
this.dataList_class[index].CourseName=course[0].CourseName this.dataList_class[index].CourseName=course[0].CourseName
this.dataList_class[index].ClassName=course[0].ClassName this.dataList_class[index].ClassName=course[0].ClassName
this.$forceUpdate(); this.$forceUpdate();
},
filterOrderFn(val,index) {
let data={
OrderId:this.dataList_class[index].OrderId
}
this.getOrderDetails(data,index)
},
changeSelect(value){
let arr = []
this.dataList_class.forEach(item=>{
let obj= {
SchoolName:item.SchoolName,
SchoolId:item.SchoolId,
ClassName:'',
ClassId:'',
CourseName:'',
SuppliesId:item.Id,
Number:item.Number,
haocaiList:item.hcItemList,
}
arr.push(obj)
})
this.dataList_class=arr
}, },
//显示耗材列表 //显示耗材列表
showhaocai(index){ showhaocai(index){
......
This diff is collapsed.
...@@ -399,10 +399,10 @@ ...@@ -399,10 +399,10 @@
</template> </template>
</q-table> </q-table>
<!--成本单--> <!--成本单-->
<div class="row " style="align-items: center;margin: 20px 0;" v-if="saveObj.OrderType==2 "> <div class="row " style="align-items: center;margin: 20px 0;" v-if="saveObj.OrderType==2 || saveObj.ClassScrollType == 2">
<div style="width: 3px;height: 15px;background: #3FC4FF;margin-right: 10px"></div>成本单 <div style="width: 3px;height: 15px;background: #3FC4FF;margin-right: 10px"></div>成本单
</div> </div>
<q-table v-if="saveObj.OrderType==2 " :pagination="financiaMsg" style="padding-bottom:80px;" :loading="floading" no-data-label="暂无相关数据" flat <q-table v-if="saveObj.OrderType==2 || saveObj.OrderType===1 || saveObj.ClassScrollType == 2" :pagination="financiaMsg" style="padding-bottom:80px;" :loading="floading" no-data-label="暂无相关数据" flat
class="sticky-tow-column-table" :hide-pagination="true" :data="dataListCB" :columns="receiptColumns" class="sticky-tow-column-table" :hide-pagination="true" :data="dataListCB" :columns="receiptColumns"
row-key="name"> row-key="name">
<template v-slot:body-cell-FrID="props"> <template v-slot:body-cell-FrID="props">
...@@ -826,13 +826,13 @@ ...@@ -826,13 +826,13 @@
this.getfinanciaALLPageList(2, TCID, OrderID) this.getfinanciaALLPageList(2, TCID, OrderID)
} else { } else {
if(this.saveObj.OrderType==1){ if(this.saveObj.OrderType==1 && this.saveObj.ClassScrollType == 1){
this.dataListP = data; this.dataListP = data;
}else if(this.saveObj.OrderType==2){//等于留学的时候 成本单据 }else if(this.saveObj.OrderType==2 || this.saveObj.ClassScrollType == 2){//等于留学的时候 成本单据
this.dataListCB = [] this.dataListCB = []
this.dataListP = [] this.dataListP = []
data.forEach(x=>{ data.forEach(x=>{
if(x.OtherType==45){ if(x.OtherType==45||x.OtherType==33){
this.dataListCB.push(x) this.dataListCB.push(x)
}else{ }else{
this.dataListP.push(x) this.dataListP.push(x)
......
...@@ -214,6 +214,11 @@ ...@@ -214,6 +214,11 @@
补交提成:{{ item.CommissionBack }} 补交提成:{{ item.CommissionBack }}
</div> </div>
</template> </template>
<template v-if="item.BrokerageMoney >0">
<div style="color:red;cursor: pointer;text-decoration: underline;" @click="gourlfy(item)">
累计返佣:{{ item.BrokerageMoney}}
</div>
</template>
</td> </td>
<td style="border:none;width:7%">{{ item.GuestNum }}人</td> <td style="border:none;width:7%">{{ item.GuestNum }}人</td>
<td style="border:none;width:7%"> <td style="border:none;width:7%">
...@@ -759,7 +764,7 @@ ...@@ -759,7 +764,7 @@
</template> </template>
</div> </div>
<div class="row wrap"> <div class="row wrap">
<div class="finance row" v-for="(x, j) in item.RefundFinanceList" v-if="x.OtherType != 45" :key="j" <div class="finance row" v-for="(x, j) in item.RefundFinanceList" v-if="x.OtherType != 45&&x.OtherType != 33" :key="j"
:style="{ :style="{
background: background:
x.ColorState == 1 x.ColorState == 1
...@@ -781,7 +786,7 @@ ...@@ -781,7 +786,7 @@
<span style="cursor: pointer" @click="goOrderdetails(item, 4)">{{ x.FrID }}</span> <span style="cursor: pointer" @click="goOrderdetails(item, 4)">{{ x.FrID }}</span>
</div> </div>
</div> </div>
<div class="row" style="justify-content: space-between" v-if="item.OrderType == 2"> <div class="row" style="justify-content: space-between" v-if="item.OrderType == 2 || item.ClassScrollType == 2">
<span>成本单据:</span> <span>成本单据:</span>
<q-btn flat size="xs" icon="edit" v-if=" <q-btn flat size="xs" icon="edit" v-if="
AuthorityObj.isShowFinanceBtn && AuthorityObj.isShowFinanceBtn &&
...@@ -815,14 +820,14 @@ ...@@ -815,14 +820,14 @@
</tr> </tr>
</table> </table>
</div> </div>
<q-btn color="accent" size="sm" class="q-mr-md" @click="chanceType(item, 2)" label="制单" <q-btn color="accent" size="sm" class="q-mr-md" @click="chanceType(item, 3)" label="制单"
style="min-width:70px;float:right;margin-top:10px" /> style="min-width:70px;float:right;margin-top:10px" />
</q-banner> </q-banner>
</q-popup-proxy> </q-popup-proxy>
</template> </template>
</div> </div>
<div class="row wrap" v-if="item.OrderType == 2"> <div class="row wrap" v-if="item.OrderType == 2 || item.ClassScrollType == 2">
<div class="finance row" v-for="(x, j) in item.RefundFinanceList" v-if="x.OtherType == 45" :key="j" <div class="finance row" v-for="(x, j) in item.RefundFinanceList" v-if="x.OtherType == 45||x.OtherType == 33" :key="j"
:style="{ :style="{
background: background:
x.ColorState == 1 x.ColorState == 1
...@@ -1635,6 +1640,7 @@ ...@@ -1635,6 +1640,7 @@
item.tab = tab; item.tab = tab;
this.myorderObjOption = item; this.myorderObjOption = item;
this.isShowmyorderForm = true; this.isShowmyorderForm = true;
console.log(this.myorderObjOption,'====')
}, },
//关闭订单详情 //关闭订单详情
closeMOSaveForm() { closeMOSaveForm() {
...@@ -1803,6 +1809,14 @@ ...@@ -1803,6 +1809,14 @@
if (this.chooseStudent != "") { if (this.chooseStudent != "") {
guestId = this.chooseStudent; guestId = this.chooseStudent;
} }
if(obj && obj.OrderType == 2 && obj.GuestList.length > 0 && guestId == 0){
//默认取第一个人的 (现基本都是单人订单 如果有多人订单 需调整)
guestId = obj.GuestList[0].Id;
}
if(obj && obj.OrderType == 1 && obj.ClassScrollType == 2 && type == 3){
orderObj.OtherType = 45; //成本单据 (约课的订单上做成本单据)
type = 2;//付款单据
}
this.$router.push({ this.$router.push({
path: "/financial/financalDocument/ChoiceAddFinancialDocuments", path: "/financial/financalDocument/ChoiceAddFinancialDocuments",
query: { query: {
...@@ -1852,6 +1866,10 @@ ...@@ -1852,6 +1866,10 @@
if (this.chooseStudent != "") { if (this.chooseStudent != "") {
guestId = this.chooseStudent; guestId = this.chooseStudent;
} }
if(obj && obj.OrderType == 2 && obj.GuestList.length > 0 && guestId == 0){
//默认取第一个人的 (现基本都是单人订单 如果有多人订单 需调整)
guestId = obj.GuestList[0].Id;
}
this.$router.push({ this.$router.push({
path: "/financial/financalDocument/ChoiceAddFinancialDocuments", path: "/financial/financalDocument/ChoiceAddFinancialDocuments",
query: { query: {
...@@ -1950,6 +1968,11 @@ ...@@ -1950,6 +1968,11 @@
} }
} }
}, },
gourlfy(obj) {
this.OpenNewUrl("/financial/returnPassbook/returnpassbookStatistics", {
OrderId: obj.OrderId
});
},
//合同提交审核 //合同提交审核
goContractAudit(subItem) { goContractAudit(subItem) {
let msg = { let msg = {
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<template> <template>
<div> <div>
<!--课程顾问 或有教师权限--> <!--课程顾问 或有教师权限-->
<template v-if="userInfo.IsCourseConsultant == 1||isHaveTeacherEdit"> <template v-if="userInfo.IsCourseConsultant == 1||isHaveTeacherEdit||isHaveXueManager">
<q-btn label="新增" color="accent q-mb-lg" size="sm" @click="isShowAdd = true" /> <q-btn label="新增" color="accent q-mb-lg" size="sm" @click="isShowAdd = true" />
</template> </template>
<template v-else> <template v-else>
...@@ -43,11 +43,14 @@ ...@@ -43,11 +43,14 @@
@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 stack-label option-label="Name" @input="getRole" v-model="AssitMsg.AssistType" <q-select filled stack-label option-label="Name" @input="changeData" v-model="AssitMsg.AssistType"
option-value="Id" :options="AssistDropList" label="角色" dense class="col-6 q-pb-lg q-pr-lg" emit-value option-value="Id" :options="AssistDropList" label="角色" dense class="col-6 q-pb-lg q-pr-lg" emit-value
map-options /> map-options />
<q-select filled dense v-if="AssitMsg.AssistType == 2" v-model="AssitMsg.AssistId" :options="RoleListData" <q-select filled dense v-if="AssitMsg.AssistType == 2" v-model="AssitMsg.AssistId" :options="RoleListData"
option-label="EmployeeName" class="col-6 q-pb-lg" option-value="Id" emit-value map-options /> option-label="EmployeeName" class="col-6 q-pb-lg" option-value="Id" emit-value map-options />
<q-select filled dense v-if="AssitMsg.AssistType == 4" v-model="AssitMsg.AssistId"
:options="TeacherList" option-label="EmployeeName" class="col-6 q-pb-lg" option-value="Id" emit-value
map-options />
<q-select filled dense v-else v-model="AssitMsg.AssistId" @filter="filterEmployee" use-input <q-select filled dense v-else v-model="AssitMsg.AssistId" @filter="filterEmployee" use-input
:options="myEmployeeList" option-label="EmployeeName" class="col-6 q-pb-lg" option-value="Id" emit-value :options="myEmployeeList" option-label="EmployeeName" class="col-6 q-pb-lg" option-value="Id" emit-value
map-options /> map-options />
...@@ -70,8 +73,8 @@ ...@@ -70,8 +73,8 @@
<td>{{ item.AssistTypeName }}</td> <td>{{ item.AssistTypeName }}</td>
<td>{{ item.AssistName }}</td> <td>{{ item.AssistName }}</td>
<td> <td>
<template v-if="userInfo.IsCourseConsultant == 1||isHaveTeacherEdit"> <template v-if="userInfo.IsCourseConsultant == 1||isHaveTeacherEdit||isHaveXueManager">
<div v-if="userInfo.IsCourseConsultant == 1&&item.AssistType != 2 && item.AssistType != 4"> <div v-if="userInfo.IsCourseConsultant == 1&&(item.AssistType == 2 ||item.AssistType == 3)">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="修改" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="修改"
@click="getEditInfo(item)"></q-btn> @click="getEditInfo(item)"></q-btn>
<q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除" <q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除"
...@@ -83,12 +86,7 @@ ...@@ -83,12 +86,7 @@
<q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除" <q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除"
@click="deleteAssits(item.Id)" /> @click="deleteAssits(item.Id)" />
</div> </div>
<div v-if="isShowBian(item)">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="修改"
@click="getGuwenEditInfo(item)"></q-btn>
</div>
</template> </template>
</td> </td>
</tr> </tr>
</table> </table>
...@@ -141,6 +139,7 @@ ...@@ -141,6 +139,7 @@
page_Count: 0, page_Count: 0,
AssistDropList: [], //下拉数据 AssistDropList: [], //下拉数据
RoleListData: [], //课程顾问下拉数据 RoleListData: [], //课程顾问下拉数据
TeacherList: [], //教师列表
employeeList: [], employeeList: [],
myEmployeeList: [], myEmployeeList: [],
userInfo: {} userInfo: {}
...@@ -170,12 +169,12 @@ ...@@ -170,12 +169,12 @@
} }
} }
return false; return false;
} },
}), }),
mounted() { mounted() {
this.getList(); this.getList();
this.GetAssistTypeList(); this.GetAssistTypeList();
this.getEmployeeList();
}, },
methods: { methods: {
//获取协助人员 //获取协助人员
...@@ -185,41 +184,48 @@ ...@@ -185,41 +184,48 @@
if (res.Code == 1) { if (res.Code == 1) {
let template = res.Data; let template = res.Data;
template.forEach(x => { template.forEach(x => {
if (this.userInfo.IsCourseConsultant == 1 && this.isHaveTeacherEdit) { if (this.userInfo.IsCourseConsultant == 1) {
if (x.Id != 1) { if (x.Id != 1) {
this.AssistDropList.push(x); this.AssistDropList.push(x);
} }
} else if (this.userInfo.IsCourseConsultant == 1 && !this.isHaveTeacherEdit) { if (x.Id == 4 && this.isHaveTeacherEdit) {
if (x.Id != 1 && x.Id != 4) {
this.AssistDropList.push(x); this.AssistDropList.push(x);
} }
} else if (this.userInfo.IsCourseConsultant == 0 && this.isHaveTeacherEdit) { } else if (this.userInfo.IsCourseConsultant == 0) {
if (x.Id == 4) { if (this.isHaveTeacherEdit) {
this.AssistDropList.push(x); if (x.Id == 4) {
this.AssistDropList.push(x);
}
} }
} }
}); });
} }
}); });
}, },
//获取员工列表 changeData() {
getEmployeeList() { var queryObj = {
queryEmployee({
IsLeave: 1,
UserRole: 0
}).then(res => {
this.employeeList = res.Data;
this.myEmployeeList = res.Data;
});
},
//切换课程顾问
getRole() {
queryEmployee({
IsLeave: 1, IsLeave: 1,
UserRole: 2 UserRole: 0,
}).then(res => { AccountTypeStr: "",
this.RoleListData = res.Data; };
}); if (this.AssitMsg.AssistType == 2) {
queryObj.UserRole = 2;
queryEmployee(queryObj).then(res => {
this.RoleListData = res.Data;
});
}
if (this.AssitMsg.AssistType == 4) {
queryObj.AccountTypeStr = "2"
queryEmployee(queryObj).then(res => {
this.TeacherList = res.Data;
});
} else {
queryObj.UserRole = 0;
queryEmployee(queryObj).then(res => {
this.employeeList = res.Data;
this.myEmployeeList = res.Data;
});
}
}, },
//筛选员工 //筛选员工
filterEmployee(val, update, abort) { filterEmployee(val, update, abort) {
...@@ -241,6 +247,7 @@ ...@@ -241,6 +247,7 @@
message: "数据保存成功!", message: "数据保存成功!",
position: "top" position: "top"
}); });
this.$emit("success");
this.getList(); this.getList();
this.isShowAdd = false; this.isShowAdd = false;
this.clearMsg(); this.clearMsg();
...@@ -263,16 +270,6 @@ ...@@ -263,16 +270,6 @@
}) })
.catch(() => {}); .catch(() => {});
}, },
//课程顾问是本人 显示编辑按钮
isShowBian(item) {
let isShow = false;
if (item.AssistTypeName == '课程顾问') {
// if (this.userInfo.AccountName == item.AssistName) {
isShow = true
// }
}
return isShow;
},
//删除协同 //删除协同
deleteAssits(Id) { deleteAssits(Id) {
let that = this; let that = this;
......
...@@ -214,7 +214,7 @@ ...@@ -214,7 +214,7 @@
stuData: {}, stuData: {},
userInfo: {}, userInfo: {},
isconsult: false, //学生咨询弹窗 isconsult: false, //学生咨询弹窗
IsHaveCurseManager:false,//是否存在课程顾问 IsHaveCurseManager: false, //是否存在课程顾问
}; };
}, },
created() { created() {
......
This diff is collapsed.
<style scoped>
.wenjuan_Shuru {
position: relative;
}
.SurverDel {
position: absolute;
right: -5px;
top: -5px;
}
.childConfig {
border: 1px dashed #d1d1d1;
padding: 20px;
margin-bottom: 20px;
position: relative;
}
.SubChild {
position: absolute;
right: 0;
top: 0;
}
</style>
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 600px;max-width:600px;">
<q-card-section>
<div class="text-h6">{{addMsg.Id==0?'新增配置':'修改配置'}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<div class="col-12 q-pb-lg">
<q-input filled v-model="addMsg.TypeName" ref="TypeName" label="标题"></q-input>
</div>
<div class="q-pb-lg">
<q-btn size="10px" @click="addChild()" round color="primary" icon="iconfont icon-img_haha" />
</div>
</div>
<div v-for="(item,index) in addMsg.SubtypeList" class="row wrap childConfig">
<q-btn size="10px" @click="delChild(item,index)" class="SubChild" round color="red"
icon="iconfont icon-guanbi1" />
<div class="col-12 q-pr-lg q-pb-lg">
<q-input filled v-model="item.SubTypeName" ref="SubTypeName" label="标题"></q-input>
</div>
<div class="q-pb-lg">
<q-btn size="10px" @click="addSun(index)" round color="primary" icon="iconfont icon-img_haha" />
</div>
<div class="row wrap" style="position:relative;" v-for="(subItem,subIndex) in item.OptionList">
<div class="col-4 q-pr-lg q-pb-lg">
<q-input filled v-model="subItem.LevelTitle" dense ref="SubTypeName" label="标题"></q-input>
</div>
<div class="col-4 q-pr-lg q-pb-lg">
<q-input filled v-model="subItem.LevelDesc" dense ref="LevelDesc" label="描述"></q-input>
</div>
<div class="col-4 q-pr-lg q-pb-lg">
<q-input filled v-model="subItem.LevelScore" dense ref="LevelScore" label="分数"></q-input>
</div>
<q-btn size="5px" @click="delSun(index,subIndex)" class="SubChild" round color="red"
icon="iconfont icon-guanbi1" />
</div>
</div>
</q-card-section>
<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="saveConfig" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
SetAssessmentType,
GetAssessmentType,
RemoveAssessmentSubtype
} from '../../api/teacher/index';
export default {
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
addMsg: {
Id: 0,
TypeName: "基本素质",
SubtypeList: []
},
saveLoading: false,
}
},
mounted() {
this.initObj()
},
methods: {
//初始化表单
initObj() {
if (this.saveObj && this.saveObj.Id > 0) {
let obj = {
Id: this.saveObj.Id
}
GetAssessmentType(obj).then(res => {
if (res.Code == 1) {
this.addMsg = res.Data;
}
})
} else {
this.addMsg.Id = 0;
this.addMsg.TypeName = '';
this.addMsg.SubtypeList = [];
}
},
//关闭弹窗
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
//新增子类
addChild() {
let obj = {
Id: 0,
SubTypeName: "",
OptionList: []
};
this.addMsg.SubtypeList.push(obj);
},
//新增孙类
addSun(index) {
let obj = {
LevelTitle: "",
LevelDesc: "",
LevelScore: ''
};
this.addMsg.SubtypeList[index].OptionList.push(obj);
},
//保存数据
saveConfig() {
this.saveLoading = true;
SetAssessmentType(this.addMsg).then(res => {
this.saveLoading = false;
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit('success');
this.$emit('close');
}
})
},
//删除子类
delChild(obj, index) {
if (obj.Id > 0) {
let msg = {
Id:obj.Id
}
RemoveAssessmentSubtype(msg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据删除成功!',
position: 'top'
})
this.addMsg.SubtypeList.splice(index, 1);
}
})
}
},
//删除孙类
delSun(index1, index2) {
this.addMsg.SubtypeList[index1].OptionList.splice(index2, 1);
}
}
}
</script>
This diff is collapsed.
<style>
</style>
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale">
<q-card style="width: 600px;max-width:900px;" class="CLM-Form">
<q-card-section>
<div class="text-h6">考核评价</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<div class="col-12">
<q-select filled stack-label use-input option-value="Id" option-label="Name" v-model="objOption.Behavior"
:options="behaviorList" label="该员工的综合工作表现" :dense="false" class="col-12 q-pr-lg q-pb-lg" emit-value
map-options />
</div>
</div>
<div class="row wrap">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.Advantage"
class="col-12 q-pr-lg q-pb-lg" label="主要优点" />
</div>
</div>
<div class="row wrap">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.ShortComing"
class="col-12 q-pr-lg q-pb-lg" label="主要缺点" />
</div>
</div>
<div class="row wrap">
<div class="col-12">
<q-select filled stack-label use-input option-value="Id" option-label="Name" v-model="objOption.Potential"
:options="potentialList" label="该员工发展潜力" :dense="false" class="col-12 q-pr-lg q-pb-lg" emit-value
map-options />
</div>
</div>
<div class="row wrap" v-if="objOption.Potential=='其他'">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.PotentialOther"
class="col-12 q-pr-lg q-pb-lg" label="其他" />
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeBehaviorForm" />
<q-btn label="提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveBehaviorLoading"
@click="saveBehavior">
</q-btn>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
saveTeacherAssessmentInfo,
} from '../../api/teacher/index';
export default {
components: {},
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
saveBehaviorLoading: false,
behaviorList: [{
Id: "表现最好的员工之一",
Name: "表现最好的员工之一"
},
{
Id: "表现优良",
Name: "表现优良"
},
{
Id: "表现基本满意",
Name: "表现基本满意"
},
{
Id: "尚需若干改进才能达到满意的地步",
Name: "尚需若干改进才能达到满意的地步"
},
{
Id: "需大幅改进才能达到满意的地步",
Name: "需大幅改进才能达到满意的地步"
},
],
potentialList: [{
Id: "潜力很大",
Name: "潜力很大"
},
{
Id: "需再学习改进",
Name: "需再学习改进"
},
{
Id: "尚可",
Name: "尚可"
},
{
Id: "其他",
Name: "其他"
}
],
objOption: {
Id: 0,
Behavior: "",
Advantage: "",
ShortComing: "",
Potential: "",
PotentialOther: ""
},
}
},
created() {
},
mounted() {
this.initData();
},
methods: {
initData() {
this.objOption.Id = this.saveObj.Id;
this.objOption.Behavior = this.saveObj.Behavior;
this.objOption.Advantage = this.saveObj.Advantage;
this.objOption.ShortComing = this.saveObj.ShortComing;
this.objOption.Potential = this.saveObj.Potential;
this.objOption.PotentialOther = this.saveObj.PotentialOther;
},
//关闭弹窗
closeBehaviorForm() {
this.$emit('close')
this.persistent = false
},
//保存信息
saveBehavior() {
this.saveBehaviorLoading = true;
saveTeacherAssessmentInfo(this.objOption).then(res => {
this.saveBehaviorLoading = false;
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit('success');
this.$emit('close');
}
});
},
},
}
</script>
\ No newline at end of file
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale">
<q-card style="width: 600px;max-width:900px;" class="CLM-Form">
<q-card-section>
<div class="text-h6">员工建议</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.Help"
class="col-12 q-pr-lg q-pb-lg" label="您的上级怎样帮助你,将使你未来的工作绩效更高" />
</div>
</div>
<div class="row wrap">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.Suggest"
class="col-12 q-pr-lg q-pb-lg" label="对公司的发展有什么建议" />
</div>
</div>
<div class="row wrap">
<div class="col-12">
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.Other"
class="col-12 q-pr-lg q-pb-lg" label="其他意见" />
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeHelpForm" />
<q-btn label="提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveHelpLoading" @click="saveHelp">
</q-btn>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
setTeacherHelp
} from '../../api/teacher/index';
export default {
components: {},
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
saveHelpLoading: false,
objOption: {
Id: 0,
Help: "",
Suggest: "",
Other: "",
},
}
},
created() {
},
mounted() {
this.initData();
},
methods: {
initData() {
this.objOption.Id = this.saveObj.Id;
this.objOption.Help=this.saveObj.Help;
this.objOption.Suggest=this.saveObj.Suggest;
this.objOption.Other=this.saveObj.Other;
},
//关闭弹窗
closeHelpForm() {
this.$emit('close')
this.persistent = false
},
//保存信息
saveHelp() {
this.saveHelpLoading = true;
setTeacherHelp(this.objOption).then(res => {
this.saveHelpLoading = false;
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit('success');
this.$emit('close');
}
});
},
},
}
</script>
\ No newline at end of file
...@@ -37,7 +37,10 @@ ...@@ -37,7 +37,10 @@
</q-btn>--> </q-btn>-->
<q-btn flat @click="changeMenu(3)" :color="chosenMenu==3?'primary':'blue-grey-14'" :class="[chosenMenu==3?'text-weight-bold':'']" label="我的排班计划"></q-btn> <q-btn flat @click="changeMenu(3)" :color="chosenMenu==3?'primary':'blue-grey-14'" :class="[chosenMenu==3?'text-weight-bold':'']" label="我的排班计划"></q-btn>
<q-btn flat @click="changeMenu(4)" v-if="AccountType==2" :color="chosenMenu==4?'primary':'blue-grey-14'" :class="[chosenMenu==4?'text-weight-bold':'']" label="我的上课计划"></q-btn> <q-btn flat @click="changeMenu(4)" v-if="AccountType==2" :color="chosenMenu==4?'primary':'blue-grey-14'" :class="[chosenMenu==4?'text-weight-bold':'']" label="我的上课计划"></q-btn>
<q-btn flat @click="changeMenu(6)" :color="chosenMenu==6?'primary':'blue-grey-14'" :class="[chosenMenu==6?'text-weight-bold':'']" label="活动日历"></q-btn>
</div>
<div class="bg-white col" v-if="chosenMenu==6">
<eventsCalendar></eventsCalendar>
</div> </div>
<div class="bg-white col" v-if="chosenMenu==5"> <div class="bg-white col" v-if="chosenMenu==5">
<work></work> <work></work>
...@@ -78,6 +81,7 @@ ...@@ -78,6 +81,7 @@
import mySchedule from './scheduling/mySchedule' import mySchedule from './scheduling/mySchedule'
import myClassmate from './scheduling/myClassmate'; import myClassmate from './scheduling/myClassmate';
import work from '../components/work/index' import work from '../components/work/index'
import eventsCalendar from '../components/stuMan/eventsCalendar'
export default { export default {
components:{ components:{
...@@ -87,7 +91,8 @@ ...@@ -87,7 +91,8 @@
noticeForm, noticeForm,
mySchedule, mySchedule,
myClassmate, myClassmate,
work work,
eventsCalendar
}, },
name: 'PageIndex', name: 'PageIndex',
data(){ data(){
......
<template>
<div class="page-body">
<div class="page-search row items-center">
<div class="col row wrap q-col-gutter-md">
<div class="col-3">
<q-input @input="resetSearch" clearable dense filled v-model="msg.Title" label="问卷调查名称" maxlength="20" />
</div>
<div class="col-3">
<q-select @input="resetSearch" filled dense stack-label option-value="Id" option-label="Name"
v-model="msg.PrizeType" ref="SurveyType" :options="platList" emit-value map-options label="领奖方式" />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-right-column-table sticky-column-table" separator="none" :data="dataList" :columns="columns"
row-key="name">
<template v-slot:top>
<div class="col-2 q-table__title">问卷信息</div>
<q-space />
<div class="page-option">
<q-btn color="accent" size="sm" icon="add" label="新增" @click="addObj(null)" />
</div>
</template>
<template v-slot:body-cell-StartDateStr="props">
<q-td :props="props">
<div>{{props.row.StartDateStr}}</div>
<div>{{props.row.EndDateStr}}</div>
</q-td>
</template>
<template v-slot:body-cell-PrizeAddress="props">
<q-td :props="props">
<div style="max-width: 150px; overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;">
{{props.row.PrizeAddress}}
<q-tooltip :offset="[10, 10]">
{{props.row.PrizeAddress}}
</q-tooltip>
</div>
</q-td>
</template>
<template v-slot:body-cell-Description="props">
<q-td :props="props">
<div style="max-width: 200px; overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;">
{{props.row.Description}}
<q-tooltip :offset="[10, 10]">
{{props.row.Description}}
</q-tooltip>
</div>
</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>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="iconfont icon-view" color="accent" style="font-weight:400" label="配置"
@click="GoYijian(props.row)" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="addObj(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除"
@click="delQuestion(props.row)" />
</q-td>
</template>
</q-table>
<quesactive-form v-if="isShowWenjuan" :save-obj="objOption" @close="closeSaveForm" @success="resetSearch">
</quesactive-form>
</div>
</div>
</template>
<script>
import quesactiveForm from '../../components/activity/quesactive-form'
export default {
meta: {
title: "意见调查表配置"
},
components: {
quesactiveForm
},
data() {
return {
columns: [{
name: 'ID',
label: 'ID',
align: 'left',
field: 'ID'
},
{
name: 'Title',
label: '问卷标题',
field: 'Title',
align: 'left'
},
{
name: 'StartDateStr',
label: '时间',
field: 'StartDateStr',
align: 'left'
},
{
name: 'PrizeTypeStr',
label: '领奖方式',
field: 'PrizeTypeStr',
align: 'left'
},
{
name: 'PrizeAddress',
label: '领奖地址',
field: 'PrizeAddress',
align: 'left'
},
{
name: 'Description',
label: '奖品说明',
field: 'Description',
align: 'left'
},
{
name: 'SurveyNum',
label: '问卷调查份数',
field: 'SurveyNum',
align: 'left'
},
{
name: 'optioned',
label: '操作',
field: 'TId'
}
],
dataList: [],
loading: true,
msg: {
pageIndex: 1,
pageSize: 12,
PrizeType: 0,
Title: '',
rowsPerPage: 12,
},
platList: [],
pageCount: 0,
isShowWenjuan: false,
objOption: null,
}
},
created() {
},
mounted() {
this.GetPrizeTypeEnumList();
this.getList();
},
methods: {
GetPrizeTypeEnumList() {
this.apipostDS("/api/Survey/GetPrizeTypeEnumList", {}, res => {
if (res.data.resultCode == 1) {
this.platList = res.data.data;
let obj = {
Id: 0,
Name: '不限'
}
this.platList.unshift(obj);
} else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
},
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
getList() {
this.loading = true;
this.apipostDS("/api/Survey/GetActivitySurveyPageList", this.msg, res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.dataList = res.data.data.pageData;
this.pageCount = res.data.data.pageCount;
} else {
this.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
})
},
addObj(obj) {
if (obj) {
this.objOption = obj
} else {
this.objOption = null
}
this.isShowWenjuan = true;
},
//删除问卷
delQuestion(row) {
let that = this;
this.$q.dialog({
title: "提示",
message: '是否删除该活动信息?',
cancel: {
label: "取消",
flat: true
},
ok: {
label: "确认",
flat: true,
focus: true
}
}).onOk(() => {
that.apipostDS(
"/api/Survey/DelActivitySurvey", {
ID: row.ID
},
res => {
if (res.data.resultCode == 1) {
that.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据删除成功!',
position: 'top'
})
that.getList();
} else {
that.$q.notify({
type: 'negative',
position: "top",
message: res.data.message
})
}
},
);
});
},
closeSaveForm() {
this.isShowWenjuan = false;
},
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
//跳转到意见调查表
GoYijian(row) {
this.OpenNewUrl('/activity/questionnaireList', {
ID: row.ID
});
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
...@@ -535,8 +535,15 @@ ...@@ -535,8 +535,15 @@
</tr> </tr>
<tr> <tr>
<td colspan="1">{{$t('fnc.shouxufei')}}<br /><span class="_font_size12">{{$t('fnc.khyuanbi')}}</span></td> <td colspan="1">{{$t('fnc.shouxufei')}}<br /><span class="_font_size12">{{$t('fnc.khyuanbi')}}</span></td>
<td colspan="3"><input class="_border_b_1 w80" type="number" v-model="msg.OriginalFee" <td colspan="3">
@change="countFee()"></input></td> <div style="display:flex;">
<input class="_border_b_1 w80" type="number" disabled v-model="msg.OriginalFee"
@change="countFee()"></input>
<el-select v-model="myRate" class="w120" @change="getMyRateArr()">
<el-option :label="x" v-for="(x,k) in RateArr" :value="x" :key="k"></el-option>
</el-select>
</div>
</td>
<td colspan="1">{{$t('fnc.shouxufei')}}<br /><span class="_font_size12">{{$t('fnc.khbweibi')}}</span></td> <td colspan="1">{{$t('fnc.shouxufei')}}<br /><span class="_font_size12">{{$t('fnc.khbweibi')}}</span></td>
<td colspan="3"><span class=" w80" type="number">{{msg.Fee}}</span></td> <td colspan="3"><span class=" w80" type="number">{{msg.Fee}}</span></td>
</tr> </tr>
...@@ -703,6 +710,7 @@ ...@@ -703,6 +710,7 @@
import myFlowChartModule from "../components/FlowChartModule.vue"; import myFlowChartModule from "../components/FlowChartModule.vue";
import TicketingModule from "../components/TicketingModule.vue"; import TicketingModule from "../components/TicketingModule.vue";
import {getSchoolDropdown} from '../../../api/school/index' import {getSchoolDropdown} from '../../../api/school/index'
import {GetFinanceIncomeFeeRate} from '../../../api/finance/index'
import {getDeptList} from '../../../api/system/dept' import {getDeptList} from '../../../api/system/dept'
import { import {
UploadSelfFile UploadSelfFile
...@@ -858,6 +866,9 @@ ...@@ -858,6 +866,9 @@
}, },
costmode:true, costmode:true,
iscopy:1,//是否是复制1是修改 2 为复制 iscopy:1,//是否是复制1是修改 2 为复制
myRate:0, //用于计算手续费
myTotal:0,
RateArr:[]
} }
}, },
methods: { methods: {
...@@ -1419,6 +1430,16 @@ ...@@ -1419,6 +1430,16 @@
this.$set(this.msg.detailList, i, this.msg.detailList[i]); this.$set(this.msg.detailList, i, this.msg.detailList[i]);
}, },
addList(t, i) { // 添加 addList(t, i) { // 添加
//计算总费用
this.myTotal=0;
this.$nextTick(() => {
if(this.msg.detailList.length>0){
this.msg.detailList.forEach(x=>{
this.myTotal+=x.bTotalPrice
})
this.getMyRateArr();
}
})
this.edit = false; this.edit = false;
let list = {}; let list = {};
if (t == 2 && i) { if (t == 2 && i) {
...@@ -1688,6 +1709,7 @@ ...@@ -1688,6 +1709,7 @@
} }
}) })
allPrice = allPrice + parseFloat(x.bTotalPrice); allPrice = allPrice + parseFloat(x.bTotalPrice);
this.myTotal = allPrice;
}); });
this.allPrice = allPrice; this.allPrice = allPrice;
this.allPriceTo = this.$commonUtils.addCommas(Math.round(data.Money * 100) / 100) this.allPriceTo = this.$commonUtils.addCommas(Math.round(data.Money * 100) / 100)
...@@ -1850,6 +1872,25 @@ ...@@ -1850,6 +1872,25 @@
}) })
}, },
//获取下拉数据
getFeeRate(){
GetFinanceIncomeFeeRate({}).then(res => {
if (res.Code == 1) {
this.RateArr = res.Data.split(',');
this.RateArr.unshift(0);
}
}).catch(() => {
})
},
//改变事件
getMyRateArr(){
if(this.myTotal>0){
let num = this.myRate*this.myTotal;
this.msg.OriginalFee = num.toFixed(2);
this.countFee();
}
},
}, },
created() { created() {
let that = this; let that = this;
...@@ -1890,6 +1931,7 @@ ...@@ -1890,6 +1931,7 @@
this.msg.Cmd = this.$route.query.Cmd ? this.$route.query.Cmd : ''; this.msg.Cmd = this.$route.query.Cmd ? this.$route.query.Cmd : '';
this.getCompany(); this.getCompany();
this.getFeeRate();
if (this.$route.query.edit) { if (this.$route.query.edit) {
this.edit = this.$route.query.edit; this.edit = this.$route.query.edit;
this.msg.FrID = this.$route.query.FrID; this.msg.FrID = this.$route.query.FrID;
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="OrderId" label="订单号"> <el-table-column prop="OrderId" label="订单号">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="cursor: pointer;text-decoration: underline;" @click="goUrlorderList('/sale/orderStatistics',scope.row)">{{scope.row.OrderId}} </div> <div style="cursor: pointer;text-decoration: underline;" @click="goUrlorderList(scope.row.ClassType == -1 ? '/sale/studyOrderStatistics' : '/sale/orderStatistics',scope.row)">{{scope.row.OrderId}} </div>
</template> </template>
</el-table-column> </el-table-column>
......
This diff is collapsed.
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
<span v-if="GetDetail.Type===0">不限</span> <span v-if="GetDetail.Type===0">不限</span>
<span v-if="GetDetail.Type===1">主营业务</span> <span v-if="GetDetail.Type===1">主营业务</span>
<span v-if="GetDetail.Type===2">其他业务</span> <span v-if="GetDetail.Type===2">其他业务</span>
<span v-if="GetDetail.Type===3">约课订单</span>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<span>创建人 :</span> <span>创建人 :</span>
......
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat <q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class=" sticky-right-column-table sticky-column-table" :data="data" :columns="columns" row-key="name"> class=" sticky-right-column-table sticky-column-table" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props"> <template v-slot:top="props">
<div class="col-2 q-table__title">出库管理</div> <!-- <div class="col-2 q-table__title">出库管理</div> -->
<q-space /> <q-space />
<q-btn color="accent" size="11px" icon="add" @click="showAdd">新增出库单</q-btn> <q-btn color="accent" size="11px" icon="add" @click="showAdd">新增出库单</q-btn>
</template> </template>
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
<template v-slot:body-cell-CourseName="props"> <template v-slot:body-cell-CourseName="props">
<q-td :props="props"> <q-td :props="props">
<div v-for="item in props.row.DetailList" :key="item.Id" class="td_height"> <div v-for="item in props.row.DetailList" :key="item.Id" class="td_height">
{{item.CourseName}} <p v-if="props.row.Type!=3">{{item.CourseName}}</p>
</div> </div>
</q-td> </q-td>
</template> </template>
...@@ -212,6 +212,7 @@ ...@@ -212,6 +212,7 @@
</template> </template>
<template v-slot:body-cell-Type="props"> <template v-slot:body-cell-Type="props">
<q-td :props="props"> <q-td :props="props">
<div v-if="props.row.Type===3">约课订单</div>
<div v-if="props.row.Type===1">班级相关</div> <div v-if="props.row.Type===1">班级相关</div>
<div v-if="props.row.Type===2">其他业务</div> <div v-if="props.row.Type===2">其他业务</div>
</q-td> </q-td>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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