Commit 5b6d4fd0 authored by 罗超's avatar 罗超

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

parents 75c2f4c9 4b072390
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
"cos-js-sdk-v5": "^1.1.5", "cos-js-sdk-v5": "^1.1.5",
"echarts": "^5.1.2", "echarts": "^5.1.2",
"element-ui": "^2.14.1", "element-ui": "^2.14.1",
"flv.js": "^1.6.2",
"html2canvas": "^1.3.2", "html2canvas": "^1.3.2",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"jsencrypt": "^3.2.1", "jsencrypt": "^3.2.1",
...@@ -36,6 +37,8 @@ ...@@ -36,6 +37,8 @@
"quasar": "^1.0.0", "quasar": "^1.0.0",
"relation-graph": "^1.0.8", "relation-graph": "^1.0.8",
"v-viewer": "^1.5.1", "v-viewer": "^1.5.1",
"videojs-flash": "^2.2.1",
"videojs-swf": "^5.4.2",
"vue-amap": "^0.5.10", "vue-amap": "^0.5.10",
"vue-apexcharts": "^1.6.2", "vue-apexcharts": "^1.6.2",
"vue-draggable-resizable": "^1.7.2", "vue-draggable-resizable": "^1.7.2",
......
...@@ -51,11 +51,14 @@ module.exports = function (ctx) { ...@@ -51,11 +51,14 @@ module.exports = function (ctx) {
// API: 'http://192.168.10.46:8300/api', // API: 'http://192.168.10.46:8300/api',
// API: 'https://eduapi.oytour.com/api', // API: 'https://eduapi.oytour.com/api',
API_ZC: 'http://192.168.10.17:8087/api', API_ZC: 'http://192.168.10.17:8087/api',
API_SK: 'ws:192.168.10.214:' API_SK: 'ws:192.168.10.214:',
API_SIG: 'http://localhost:5001/messagecenter'
} : { } : {
API: 'https://eduapi.oytour.com/api', API: 'https://eduapi.oytour.com/api',
API_ZC: 'http://propertyedu.oytour.com/api', API_ZC: 'http://propertyedu.oytour.com/api',
API_SK: 'ws://47.96.23.199:' API_SK: 'ws://47.96.23.199:',
API_SK_WSS: 'wss://sk.kookaku.com',
API_SIG: 'http://eduapi.oytour.com/messagecenter'
}, },
// transpile: false, // transpile: false,
...@@ -75,12 +78,11 @@ module.exports = function (ctx) { ...@@ -75,12 +78,11 @@ module.exports = function (ctx) {
// https://quasar.dev/quasar-cli/handling-webpack // https://quasar.dev/quasar-cli/handling-webpack
extendWebpack(cfg) { extendWebpack(cfg) {
// cfg.module.rules.push({ cfg.module.rules.push({
// enforce: 'pre', enforce: 'pre',
// test: /\.(js|vue)$/, test: /\.swf$/,
// loader: 'eslint-loader', loader: 'url-loader'
// exclude: /node_modules/ })
// })
} }
}, },
...@@ -252,7 +254,7 @@ module.exports = function (ctx) { ...@@ -252,7 +254,7 @@ module.exports = function (ctx) {
// More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
nodeIntegration: true, nodeIntegration: true,
extendWebpack( /* cfg */ ) { extendWebpack( /* cfg */) {
// do something with Electron main process Webpack cfg // do something with Electron main process Webpack cfg
// chainWebpack also available besides this extendWebpack // chainWebpack also available besides this extendWebpack
} }
......
import request from '../../utils/request'
import request_zc from '../../utils/request_zc'
/*
* 获取意见调查表参与学员分页列表
*/
export function getActivitySurveyGuestPage(data) {
return request({
url: '/Survey/GetActivitySurveyGuestPage',
method: 'post',
data
})
}
/*
* 新增修改意见调查表参与学员
*/
export function setActivitySurveyGuest(data) {
return request({
url: '/Survey/SetActivitySurveyGuest',
method: 'post',
data
})
}
/*
* 根据编号获取学员信息
*/
export function getActivitySurveyGuestModule(data) {
return request({
url: '/Survey/GetActivitySurveyGuestModule',
method: 'post',
data
})
}
/*
* 根据编号删除学员信息
*/
export function removeActivitySurveyGuest(data) {
return request({
url: '/Survey/RemoveActivitySurveyGuest',
method: 'post',
data
})
}
\ No newline at end of file
...@@ -2,7 +2,12 @@ ...@@ -2,7 +2,12 @@
font-family: 'perfectFont'; font-family: 'perfectFont';
src: url('../font/MicrosoftYaHeiLight.woff') format('woff'); src: url('../font/MicrosoftYaHeiLight.woff') format('woff');
} }
@font-face { @font-face {
font-family: 'pingfang'; font-family: 'pingfang';
src: url('../font/PingFang2.ttf'); src: url('../font/PingFang2.ttf');
} }
.perfectFont {
font-family: 'perfectFont' !important;
}
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<q-btn size="10px" @click="addChild()" round color="primary" icon="iconfont icon-img_haha" /> <q-btn size="10px" @click="addChild()" round color="primary" icon="iconfont icon-img_haha" />
</div> </div>
</div> </div>
<div v-for="(item,index) in addMsg.SubtypeList" class="row wrap childConfig"> <div v-for="(item,index) in addMsg.SubtypeList" class="row wrap childConfig" :key="index">
<q-btn size="10px" @click="delChild(item,index)" class="SubChild" round color="red" <q-btn size="10px" @click="delChild(item,index)" class="SubChild" round color="red"
icon="iconfont icon-guanbi1" /> icon="iconfont icon-guanbi1" />
<div class="col-12 q-pr-lg q-pb-lg"> <div class="col-12 q-pr-lg q-pb-lg">
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
<div class="q-pb-lg"> <div class="q-pb-lg">
<q-btn size="10px" @click="addSun(index)" round color="primary" icon="iconfont icon-img_haha" /> <q-btn size="10px" @click="addSun(index)" round color="primary" icon="iconfont icon-img_haha" />
</div> </div>
<div class="row wrap" style="position:relative;" v-for="(subItem,subIndex) in item.OptionList"> <div class="row wrap" style="position:relative;" v-for="(subItem,subIndex) in item.OptionList" :key="subIndex">
<div class="col-4 q-pr-lg q-pb-lg"> <div class="col-4 q-pr-lg q-pb-lg">
<q-input filled v-model="subItem.LevelTitle" dense ref="SubTypeName" label="标题"></q-input> <q-input filled v-model="subItem.LevelTitle" dense ref="SubTypeName" label="标题"></q-input>
</div> </div>
......
...@@ -389,7 +389,7 @@ export default { ...@@ -389,7 +389,7 @@ export default {
that.injectTCCC( that.injectTCCC(
r.Data.Token, r.Data.Token,
1400617921, 1400617921,
this.userInfo.Email, that.userInfo.Email,
r.Data.SdkURL r.Data.SdkURL
); );
} }
......
<template>
<div class="page-body">
<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)"/>
<!-- @click="addObj(null)" -->
</div>
</template>
<template v-slot:body-cell-IsRequired="props">
<q-td :props="props">
<span v-if="props.row.IsRequired==0"></span>
<span v-if="props.row.IsRequired==1"></span>
</q-td>
</template>
<template v-slot:body-cell-IsShow="props">
<q-td :props="props">
<span v-if="props.row.IsShow==0"></span>
<span v-if="props.row.IsShow==1"></span>
</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="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>
<wenjuan-form v-if="isShowWenjuan" :save-obj="objOption" :ID="msg.ActivitySurveyId" @close="closeSaveForm" @success="resetSearch"></wenjuan-form>
</div>
</div>
</template>
<script>
import wenjuanForm from '../../components/activity/wenjuan-form'
export default {
meta: {
title: "意见调查表"
},
components: {
wenjuanForm
},
data() {
return {
columns: [
{
name: 'ID',
label: 'ID',
align: 'left',
field: 'ID'
},
{
name: 'Title',
label: '问题名称',
field: 'Title',
align: 'left'
},
{
name: 'FormTypeStr',
label: '问卷类型',
field: 'FormTypeStr',
align: 'left'
},
{
name: 'IsRequired',
label: '是否必填',
field: 'IsRequired',
align: 'left'
},
{
name: 'IsShow',
label: '是否显示',
field: 'IsShow',
align: 'left'
},
{
name: 'Sort',
label: '排序',
field: 'Sort',
align: 'left'
},
{
name: 'optioned',
label: '操作',
field: 'TId'
}
],
dataList: [],
loading: true,
ShowOpts: [{
label: '不限',
value: '-1'
},
{
label: '是',
value: '0'
},
{
label: '否',
value: '1'
}
],
msg:{
pageIndex:1,
pageSize:15,
rowsPerPage: 15,
PrizeType:0,
Title:'',
IsShow:'-1',
SurveyType:0,
ActivitySurveyId:1,//活动id
},
platList:[],
pageCount: 0,
isShowWenjuan: false,
objOption: null,
}
},
created() {
},
mounted() {
if(this.$route.query&&this.$route.query.ID){
this.msg.ActivitySurveyId = this.$route.query.ID;
}
this.getPlat();
this.getList();
},
methods: {
getPlat(){
this.apipostDS("/api/Survey/GetActivitySurveyGuestPage", {}, res => {
if(res.data.resultCode==1){
this.platList = res.data.data;
let obj = {
Id:0,
Name:'不限'
}
this.platList.unshift(obj);
}else {
this.Info(res.data.message);
}
console.log( '数据信息' + res.data)
})
},
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
getList(){
this.loading=true;
this.apipostDS("/api/Survey/GetPageList", 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.Info(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/DelSurvey",
{SurveyID: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();
},
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
This diff is collapsed.
<style scoped> <style scoped>
#player-con{ #player-con {
width: 100%; width: 100%;
height: 500px; height: 500px;
background-color: #eee; background-color: #eee;
} }
.no-video{ .no-video {
width: 800px; width: 800px;
height: 450px; height: 450px;
margin: 0 auto; margin: 0 auto;
background-color: #000; background-color: #000;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content:center; justify-content: center;
color: #fff; color: #fff;
font-size: 30px; font-size: 30px;
} }
.title{ .title {
color: #000000; color: #000000;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
margin-bottom: 20px; margin-bottom: 20px;
} }
.scheduInfo { .scheduInfo {
height: 100%; height: 100%;
width: 100%; width: 100%;
padding: 15px; padding: 15px;
background-color: #f2f4f7; background-color: #f2f4f7;
overflow: hidden; overflow: hidden;
} }
.scheduInfo .schedu_left { .scheduInfo .schedu_left {
width: 248px; width: 248px;
flex: 0 0 auto; flex: 0 0 auto;
position: relative; position: relative;
...@@ -37,49 +37,49 @@ ...@@ -37,49 +37,49 @@
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% auto; background-size: 100% auto;
height: 100%; height: 100%;
} }
.scheduInfo .okr-menu-active { .scheduInfo .okr-menu-active {
color: var(--q-color-primary); color: var(--q-color-primary);
font-weight: bold; font-weight: bold;
background: #ecf1ff; background: #ecf1ff;
} }
.mySched { .mySched {
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
} }
.schedu_ImgDiv { .schedu_ImgDiv {
width: 68px; width: 68px;
height: 68px; height: 68px;
border-radius: 20px; border-radius: 20px;
overflow: hidden; overflow: hidden;
margin: 75px auto 0; margin: 75px auto 0;
} }
.schedu_ImgDiv img { .schedu_ImgDiv img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.schedu_Name { .schedu_Name {
color: #fff; color: #fff;
font-size: 16px; font-size: 16px;
margin-top: 26px; margin-top: 26px;
text-align: center; text-align: center;
} }
.schedu_Status { .schedu_Status {
font-size: 12px; font-size: 12px;
color: #fff; color: #fff;
text-align: center; text-align: center;
margin-top: 15px; margin-top: 15px;
} }
.schedu_st { .schedu_st {
display: inline-block; display: inline-block;
width: 10px; width: 10px;
height: 10px; height: 10px;
...@@ -87,24 +87,24 @@ ...@@ -87,24 +87,24 @@
margin-right: 5px; margin-right: 5px;
position: relative; position: relative;
top: 1px; top: 1px;
} }
.zbz { .zbz {
background-color: #00DB4E; background-color: #00db4e;
} }
.xxz { .xxz {
background-color: #DBDBDB; background-color: #dbdbdb;
} }
.wdk { .wdk {
background-color: #FE4475; background-color: #fe4475;
} }
.clockon_Duty { .clockon_Duty {
width: 120px; width: 120px;
height: 34px; height: 34px;
background: linear-gradient(90deg, #00BDD3, #00D761); background: linear-gradient(90deg, #00bdd3, #00d761);
border-radius: 10px; border-radius: 10px;
margin: 100px auto 24px; margin: 100px auto 24px;
text-align: center; text-align: center;
...@@ -112,120 +112,120 @@ ...@@ -112,120 +112,120 @@
color: #fff; color: #fff;
font-size: 14px; font-size: 14px;
cursor: pointer; cursor: pointer;
} }
.sche_daka { .sche_daka {
font-size: 18px; font-size: 18px;
position: relative; position: relative;
left: 5px; left: 5px;
top: 2px; top: 2px;
} }
.schedu_jiaojie { .schedu_jiaojie {
width: 120px; width: 120px;
height: 34px; height: 34px;
line-height: 34px; line-height: 34px;
text-align: center; text-align: center;
border-radius: 10px; border-radius: 10px;
border: 1px solid #91AEFF; border: 1px solid #91aeff;
color: #C4D4FF; color: #c4d4ff;
font-size: 14px; font-size: 14px;
margin: auto; margin: auto;
cursor: pointer; cursor: pointer;
} }
.scheInfo_rightTop { .scheInfo_rightTop {
width: 100%; width: 100%;
/* height: 80px; */ /* height: 80px; */
padding: 20px 0; padding: 20px 0;
background-color: #fff; background-color: #fff;
} }
.schScroll { .schScroll {
background-color: #F6F8FA; background-color: #f6f8fa;
} }
.scheInfo_Topflex { .scheInfo_Topflex {
display: flex; display: flex;
/* width: 90%; */ /* width: 90%; */
/* height: 80px; */ /* height: 80px; */
align-items: center; align-items: center;
} }
.Sctop_Color { .Sctop_Color {
font-size: 18px; font-size: 18px;
color: #000000; color: #000000;
width: 246px; width: 246px;
text-align: center; text-align: center;
} }
.Scotop_little { .Scotop_little {
color: #AAAAAA; color: #aaaaaa;
font-size: 14px; font-size: 14px;
margin-right: 15px; margin-right: 15px;
display: inline-block; display: inline-block;
text-align: right; text-align: right;
width: 60px; width: 60px;
} }
.Scdu_benci::after { .Scdu_benci::after {
content: ""; content: "";
position: absolute; position: absolute;
height: 29px; height: 29px;
width: 2px; width: 2px;
background: #EBEBEB; background: #ebebeb;
right: 0; right: 0;
} }
.sche_mid { .sche_mid {
display: flex; display: flex;
width: 100%; width: 100%;
justify-content: space-between; justify-content: space-between;
} }
.sche_midList { .sche_midList {
width: 31.6%; width: 31.6%;
height: 300px; height: 300px;
background: #fff; background: #fff;
border-radius: 16px; border-radius: 16px;
border: 1px solid #EBEBEB; border: 1px solid #ebebeb;
box-shadow: 0px 1px 1px 0px #E4E7FB; box-shadow: 0px 1px 1px 0px #e4e7fb;
overflow: hidden; overflow: hidden;
font-family: 'MicrosoftYaHei'; font-family: "MicrosoftYaHei";
position: relative; position: relative;
} }
.Sche_Bottom { .Sche_Bottom {
margin: 26px 40px 0 40px; margin: 26px 40px 0 40px;
} }
.scheList_TOP { .scheList_TOP {
width: 100%; width: 100%;
height: 107px; height: 107px;
border-radius: 16px; border-radius: 16px;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
} }
.scheList_TOP img { .scheList_TOP img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.word_sche { .word_sche {
color: #fff; color: #fff;
font-size: 20px; font-size: 20px;
position: absolute; position: absolute;
top: 25px; top: 25px;
left: 32px; left: 32px;
} }
.word_scheNumber { .word_scheNumber {
display: inline-block; display: inline-block;
width: 36px; width: 36px;
height: 36px; height: 36px;
color: #fff; color: #fff;
background-color: #FE4475; background-color: #fe4475;
position: absolute; position: absolute;
top: 30px; top: 30px;
left: 130px; left: 130px;
...@@ -233,35 +233,33 @@ ...@@ -233,35 +233,33 @@
line-height: 36px; line-height: 36px;
border-radius: 8px; border-radius: 8px;
font-size: 25px; font-size: 25px;
} }
.scheList_Bottom { .scheList_Bottom {
font-size: 14px; font-size: 14px;
color: #000000; color: #000000;
height: 46px; height: 46px;
padding-bottom: 10px; padding-bottom: 10px;
border-bottom: 1px solid #F3F3F3; border-bottom: 1px solid #f3f3f3;
} }
.sche_Dian { .sche_Dian {
display: inline-block; display: inline-block;
width: 6px; width: 6px;
height: 6px; height: 6px;
background-color: #6D97FF; background-color: #6d97ff;
border-radius: 50%; border-radius: 50%;
margin-right: 10px; margin-right: 10px;
} }
.schScroll::-webkit-scrollbar { .schScroll::-webkit-scrollbar {
display: none; display: none;
} }
.Sch_MainColor { .Sch_MainColor {
font-size: 18px; font-size: 18px;
color: #000000; color: #000000;
}
}
</style> </style>
<template> <template>
...@@ -280,80 +278,80 @@ ...@@ -280,80 +278,80 @@
</div> </div>
</template> </template>
<script> <script>
import {getTimeDetail} from '../../api/classroom/index' import { getTimeDetail } from "../../api/classroom/index";
import {getVideoPlayAuth,getVideoPlayUrl} from '../../api/classroom/video' import { getVideoPlayAuth, getVideoPlayUrl } from "../../api/classroom/video";
import schedulVisit from './components/schedul-visit' import schedulVisit from "./components/schedul-visit";
import schedulHead from './components/schedul-head' import schedulHead from "./components/schedul-head";
export default { export default {
props: {}, props: {},
components: { components: {
schedulVisit, schedulVisit,
schedulHead, schedulHead
}, },
data() { data() {
return { return {
dataList: {}, dataList: {},
player:null, player: null
} };
}, },
created() { created() {
if (this.$route.query.id) { if (this.$route.query.id) {
this.id = this.$route.query.id; this.id = this.$route.query.id;
} }
}, },
mounted(){ mounted() {
this.getdata(); this.getdata();
}, },
methods: { methods: {
getdata(){ getdata() {
getTimeDetail({ID:this.id}).then(res=>{ getTimeDetail({ ID: this.id }).then(res => {
if(res.Code===1){ if (res.Code === 1) {
this.dataList=res.Data this.dataList = res.Data;
if(res.Data.VideoUrl){ if (res.Data.VideoUrl) {
this.getAuth(res.Data.VideoUrl) this.getAuth(res.Data.VideoUrl);
} // this.$nextTick(() => {
} // this.initPlayer(res.Data.VideoUrl);
}) // });
}
}
});
}, },
//初始化视频播放器 //初始化视频播放器
initPlayer(url,cover,auth){ initPlayer(url, cover, auth) {
this.player = new Aliplayer({ this.player = new Aliplayer(
"id": "player-con", {
"source": url, id: "player-con",
"width": "100%", source: url,
"height": "500px", width: "100%",
"autoplay": true, height: "500px",
"isLive": false, autoplay: false,
"rePlay": false, isLive: false,
"playsinline": true, rePlay: false,
"preload": true, playsinline: true,
"controlBarVisibility": "hover", preload: true,
"useH5Prism": true, controlBarVisibility: "hover",
"cover":cover, useH5Prism: true,
"playauth":auth, cover: cover,
}, function (player) { playauth: auth
},
} function(player) {}
); );
}, },
getAuth(url){ getAuth(url) {
getVideoPlayAuth({strVid:url}).then(res=>{ getVideoPlayAuth({ strVid: url }).then(res => {
if(res.Code===1&&res.Data.PlayAuth){ if (res.Code === 1 && res.Data.PlayAuth) {
this.getUrl(url,res.Data.PlayAuth) this.getUrl(url, res.Data.PlayAuth);
} }
});
})
}, },
getUrl(url,auth){ getUrl(url, auth) {
getVideoPlayUrl({strVid:url}).then(res=>{ getVideoPlayUrl({ strVid: url }).then(res => {
if(res.Code===1){ if (res.Code === 1) {
this.initPlayer(res.Data.URL,res.Data.VideoImg,auth) this.initPlayer(res.Data.URL, res.Data.VideoImg, auth);
} }
}) });
} }
},
} }
};
</script> </script>
...@@ -154,6 +154,9 @@ ...@@ -154,6 +154,9 @@
import { import {
EduDownLoad EduDownLoad
} from "../../../api/common/common"; } from "../../../api/common/common";
import {
mapState
} from "vuex";
export default { export default {
meta: { meta: {
title: "销售提成详情" title: "销售提成详情"
...@@ -169,7 +172,7 @@ ...@@ -169,7 +172,7 @@
SchoolId: '-1', SchoolId: '-1',
Status: '-2', Status: '-2',
OrderSourceType: '-1', OrderSourceType: '-1',
OrderSourceId: 0, OrderSourceId: '',
Q_SelectNormal: '2', Q_SelectNormal: '2',
UserDept: "", UserDept: "",
}, },
...@@ -207,6 +210,21 @@ ...@@ -207,6 +210,21 @@
DepartmentList: [], //部门列表 DepartmentList: [], //部门列表
} }
}, },
computed: mapState({
//是否有下载权限
isReturnperiods(state) {
if (state.user.userInfo && state.user.userInfo.ActionMenuList && state.user.userInfo.ActionMenuList.length >
0) {
let action = state.user.userInfo.ActionMenuList.find(x => {
if (x.FunctionCode == "Edit_Returnperiods") {
return x;
}
});
return action && action.FunctionCode;
}
return false;
}
}),
created() { created() {
this.getCustomFrom(); this.getCustomFrom();
this.queryDeptList(); this.queryDeptList();
...@@ -214,6 +232,9 @@ ...@@ -214,6 +232,9 @@
this.getStudentDorpDown() this.getStudentDorpDown()
this.GetCustomerList() this.GetCustomerList()
this.getStudentList(); //学员下拉 this.getStudentList(); //学员下拉
if(! this.isReturnperiods){
this.msg.OrderSourceType = 2;
}
}, },
mounted() { mounted() {
if (this.$route.query && this.$route.query.id) { if (this.$route.query && this.$route.query.id) {
...@@ -289,8 +310,19 @@ ...@@ -289,8 +310,19 @@
Name: '不限', Name: '不限',
Id: '-1' Id: '-1'
} }
if(this.isReturnperiods){
this.customFromList = res.Data; this.customFromList = res.Data;
this.customFromList.unshift(obj); this.customFromList.unshift(obj);
}else{
res.Data.forEach(data=>{
if(data.Id ==2){
this.customFromList.push(data);
}
})
}
} }
}) })
}, },
......
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
.el-table th { .el-table th {
padding: 5px 0; padding: 5px 0;
} }
</style> </style>
<template> <template>
<div class="page-body ReturnperiodsList"> <div class="page-body ReturnperiodsList">
...@@ -56,7 +55,7 @@ ...@@ -56,7 +55,7 @@
</el-date-picker> </el-date-picker>
</div> </div>
<div> <div>
<q-btn v-if='isgenerate==true' :loading="loading1"  color="primary"  size="11px"  label="生成返佣" <q-btn v-if='isReturnperiods' :loading="loading1"  color="primary"  size="11px"  label="生成返佣"
 @click="scCommission"  style="height:28px" />  @click="scCommission"  style="height:28px" />
<div style="font-size: 11px;color: #666;">*默认生成上月返佣</div> <div style="font-size: 11px;color: #666;">*默认生成上月返佣</div>
</div> </div>
...@@ -66,18 +65,20 @@ ...@@ -66,18 +65,20 @@
<template> <template>
<el-table ref="filterTable" :data="tableData" v-loading='loading' <el-table ref="filterTable" :data="tableData" v-loading='loading'
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%"> :header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column prop="BatchName" label="周期"></el-table-column> <el-table-column prop="BatchName" label="周期"></el-table-column>
<el-table-column prop="TotalMoney" label="累计金额"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="TotalMoney" label="累计金额"> </el-table-column>
<el-table-column prop="TotalEmployee" label="个人直客累计金额"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="TotalEmployee" label="个人直客累计金额"> </el-table-column>
<el-table-column prop="TotalCustomer" label="同业录入累计金额"> </el-table-column> <el-table-column prop="TotalCustomer" label="同业录入累计金额"> </el-table-column>
<el-table-column prop="TotalInternal" label="内部介绍累计金额"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="TotalInternal" label="内部介绍累计金额"> </el-table-column>
<el-table-column prop="TotalTrans" label="学员转介绍累计金额"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="TotalTrans" label="学员转介绍累计金额"> </el-table-column>
<el-table-column prop="CreateByName" label="创建人"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="CreateByName" label="创建人"> </el-table-column>
<el-table-column prop="CreateDate" label="创建时间"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="CreateDate" label="创建时间"> </el-table-column>
<el-table-column label="财务单据"> <el-table-column v-if="isReturnperiods" label="财务单据">
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="scope.row.FinanceIdList" v-for="item in scope.row.FinanceIdList"> <template v-if="scope.row.FinanceIdList" v-for="item in scope.row.FinanceIdList">
<a @click="goDetails(item)" style="cursor:pointer;color:blue;text-decoration:underline;display:inline-block;margin-right:10px;">{{item}}</a> <a @click="goDetails(item)"
style="cursor:pointer;color:blue;text-decoration:underline;display:inline-block;margin-right:10px;">{{item}}</a>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
...@@ -87,10 +88,13 @@ ...@@ -87,10 +88,13 @@
<el-tooltip class="item" effect="dark" content="查看" placement="top"> <el-tooltip class="item" effect="dark" content="查看" placement="top">
<i class="iconfont icon-sousuo" @click="goUrl(scope.row.Id)"></i> <i class="iconfont icon-sousuo" @click="goUrl(scope.row.Id)"></i>
</el-tooltip> </el-tooltip>
<templat v-if="isReturnperiods">
<el-tooltip class="item" effect="dark" v-if="scope.row.FinanceIds==''||scope.row.FinanceIds==null" <el-tooltip class="item" effect="dark" v-if="scope.row.FinanceIds==''||scope.row.FinanceIds==null"
content="生成财务单据" placement="top"> content="生成财务单据" placement="top">
<i class="iconfont icon-add" @click="setCommissionFinanace(scope.row.Id)"></i> <i class="iconfont icon-add" @click="setCommissionFinanace(scope.row.Id)"></i>
</el-tooltip> </el-tooltip>
</templat>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -116,6 +120,9 @@ ...@@ -116,6 +120,9 @@
getSellAchievementsSendEmployeeList, getSellAchievementsSendEmployeeList,
setSellAchievementsSendEmployee setSellAchievementsSendEmployee
} from '../../../api/finance/index' } from '../../../api/finance/index'
import {
mapState
} from "vuex";
export default { export default {
meta: { meta: {
title: "返佣期数列表" title: "返佣期数列表"
...@@ -158,6 +165,21 @@ ...@@ -158,6 +165,21 @@
CheckID: 0, CheckID: 0,
} }
}, },
computed: mapState({
//是否有下载权限
isReturnperiods(state) {
if (state.user.userInfo && state.user.userInfo.ActionMenuList && state.user.userInfo.ActionMenuList.length >
0) {
let action = state.user.userInfo.ActionMenuList.find(x => {
if (x.FunctionCode == "Edit_Returnperiods") {
return x;
}
});
return action && action.FunctionCode;
}
return false;
}
}),
created() { created() {
let userinfo = this.getLocalStorage(); let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x => { //判断权限 userinfo.ActionMenuList.map(x => { //判断权限
...@@ -275,9 +297,7 @@ ...@@ -275,9 +297,7 @@
}, },
}, },
} }
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style> </style>
\ No newline at end of file
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</template> </template>
</q-field> </q-field>
</div> </div>
<div class="col-2"> <div class="col-2" v-if="isHaveEdit">
<q-select filled v-model="msg.TeacherAccountId" dense use-input label="教师" :options="MyTeacherListData" <q-select filled v-model="msg.TeacherAccountId" dense use-input label="教师" :options="MyTeacherListData"
option-label="EmployeeName" @input="refreshPage" clearable option-value="Id" emit-value map-options /> option-label="EmployeeName" @input="refreshPage" clearable option-value="Id" emit-value map-options />
</div> </div>
...@@ -30,19 +30,11 @@ ...@@ -30,19 +30,11 @@
<div class="col-2 q-table__title">教师月度考核列表</div> <div class="col-2 q-table__title">教师月度考核列表</div>
<q-space /> <q-space />
<div class="page-option"> <div class="page-option">
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="考核" @click="goAssessTable()" /> <q-btn v-if="isHaveEdit" color="accent" size="sm" class="q-mr-md" icon="add" label="考核"
@click="goAssessTable()" />
</div> </div>
</template> </template>
<!-- <template v-slot:body-cell-AuditStatus="props">
<q-td :props="props">
<template v-if="props.row.AuditStatus==0">
待提交
</template>
<template v-else>
{{props.row.AuditStatusName}}
</template>
</q-td>
</template> -->
<template v-slot:body-cell-OptionId="props"> <template v-slot:body-cell-OptionId="props">
<q-td :props="props"> <q-td :props="props">
<!-- <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="submitApproval(props.row)" <!-- <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="submitApproval(props.row)"
...@@ -51,6 +43,8 @@ ...@@ -51,6 +43,8 @@
label="评价" /> label="评价" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="showForm(props.row,2)" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="showForm(props.row,2)"
label="建议" /> --> label="建议" /> -->
<q-btn v-if="isHaveEdit" flat size="xs" icon="edit" color="accent" style="font-weight:400"
@click="goAssessTable(props.row)" label="编辑" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="gotoDetail(props.row)" <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="gotoDetail(props.row)"
label="详情" /> label="详情" />
</q-td> </q-td>
...@@ -76,6 +70,9 @@ ...@@ -76,6 +70,9 @@
} from "../../api/users/user"; } from "../../api/users/user";
import behaviorForm from "../../components/teacher/behavior-form.vue"; import behaviorForm from "../../components/teacher/behavior-form.vue";
import helpForm from "../../components/teacher/help-form.vue"; import helpForm from "../../components/teacher/help-form.vue";
import {
mapState
} from "vuex";
export default { export default {
meta: { meta: {
title: "教师月度考评" title: "教师月度考评"
...@@ -132,12 +129,6 @@ ...@@ -132,12 +129,6 @@
field: "TotalScore", field: "TotalScore",
align: "left" align: "left"
}, },
// {
// name: "AuditStatus",
// label: "审核状态",
// field: "AuditStatus",
// align: "left"
// },
{ {
name: 'OptionId', name: 'OptionId',
label: '操作', label: '操作',
...@@ -152,6 +143,21 @@ ...@@ -152,6 +143,21 @@
MyTeacherListData: [], //教师列表 MyTeacherListData: [], //教师列表
} }
}, },
computed: mapState({
//是否有下载权限
isHaveEdit(state) {
if (state.user.userInfo && state.user.userInfo.ActionMenuList && state.user.userInfo.ActionMenuList.length >
0) {
let action = state.user.userInfo.ActionMenuList.find(x => {
if (x.FunctionCode == "Edit_TeacherAssessment") {
return x;
}
});
return action && action.FunctionCode;
}
return false;
}
}),
created() { created() {
let today = new Date(); let today = new Date();
this.msg.YearStr = today.getFullYear().toString(); this.msg.YearStr = today.getFullYear().toString();
...@@ -160,6 +166,10 @@ ...@@ -160,6 +166,10 @@
this.findData(); this.findData();
}, },
mounted() { mounted() {
if (!this.isHaveEdit) {
let userinfo = this.getLocalStorage();
this.msg.TeacherAccountId = userinfo.Id;
}
this.getTeacherAssessmentPage() this.getTeacherAssessmentPage()
}, },
methods: { methods: {
...@@ -197,8 +207,13 @@ ...@@ -197,8 +207,13 @@
this.getTeacherAssessmentPage(); this.getTeacherAssessmentPage();
}, },
//跳转考核新增修改页面 //跳转考核新增修改页面
goAssessTable() { goAssessTable(item) {
this.OpenNewUrl('/teacher/jobEvaluation', {}); var qObj = {};
if (item) {
qObj.Id = item.Id;
qObj.TeacherAccountId = item.TeacherAccountId;
}
this.OpenNewUrl('/teacher/jobEvaluation', qObj);
}, },
//跳转到考核详情页面 //跳转到考核详情页面
gotoDetail(item) { gotoDetail(item) {
......
...@@ -34,7 +34,8 @@ ...@@ -34,7 +34,8 @@
<div class="col-2 jobEvaluationDate q-mr-lg"> <div class="col-2 jobEvaluationDate q-mr-lg">
<q-field filled stack-label dense label="考核月份"> <q-field filled stack-label dense label="考核月份">
<template v-slot:control> <template v-slot:control>
<el-date-picker v-model="teacherDate" value-format="yyyy-MM" size="mini" type="month" placeholder="选择考核月份"> <el-date-picker v-model="teacherDate" value-format="yyyy-MM" size="mini" type="month"
placeholder="选择考核月份">
</el-date-picker> </el-date-picker>
</template> </template>
</q-field> </q-field>
...@@ -107,8 +108,8 @@ ...@@ -107,8 +108,8 @@
TotalScore: 0, //总分 TotalScore: 0, //总分
DetailsList: [], DetailsList: [],
CheckType: 0, //1-教学主管,2-教务主管 CheckType: 0, //1-教学主管,2-教务主管
IsJiaoWuFinish:0,//教务主管是否完成打分 IsJiaoWuFinish: 0, //教务主管是否完成打分
IsTeacherFinish:0,//教学主管是否完成打分 IsTeacherFinish: 0, //教学主管是否完成打分
}, },
isAuth: false, //是否有权限 isAuth: false, //是否有权限
saveLoading: false, saveLoading: false,
...@@ -122,7 +123,15 @@ ...@@ -122,7 +123,15 @@
this.GetTeacherList(); this.GetTeacherList();
}, },
mounted() { mounted() {
if (this.$route.query) {
if (this.$route.query.Id) {
this.saveObj.Id = this.$route.query.Id;
}
if (this.$route.query.TeacherAccountId) {
this.saveObj.TeacherAccountId = this.$route.query.TeacherAccountId
}
this.getInfo();
}
}, },
methods: { methods: {
changeStatus(subItem, optionItem) { changeStatus(subItem, optionItem) {
...@@ -161,6 +170,7 @@ ...@@ -161,6 +170,7 @@
TeacherAccountId: this.saveObj.TeacherAccountId, TeacherAccountId: this.saveObj.TeacherAccountId,
YearStr: this.saveObj.YearStr, YearStr: this.saveObj.YearStr,
MonthStr: this.saveObj.MonthStr, MonthStr: this.saveObj.MonthStr,
Id: this.saveObj.Id,
}; };
queryTeacherAssessmentInfo(qMsg).then(res => { queryTeacherAssessmentInfo(qMsg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
...@@ -176,8 +186,8 @@ ...@@ -176,8 +186,8 @@
this.saveObj.TotalScore = tempData.TotalScore; this.saveObj.TotalScore = tempData.TotalScore;
this.saveObj.CheckType = tempData.CheckType; this.saveObj.CheckType = tempData.CheckType;
this.saveObj.DetailsList = tempData.DetailsList; this.saveObj.DetailsList = tempData.DetailsList;
this.saveObj.IsTeacherFinish=tempData.IsTeacherFinish; this.saveObj.IsTeacherFinish = tempData.IsTeacherFinish;
this.saveObj.IsJiaoWuFinish=tempData.IsJiaoWuFinish; this.saveObj.IsJiaoWuFinish = tempData.IsJiaoWuFinish;
} else { } else {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
...@@ -203,7 +213,19 @@ ...@@ -203,7 +213,19 @@
color: 'accent', color: 'accent',
timeout: 2000, timeout: 2000,
message: '数据保存成功!', message: '数据保存成功!',
position: 'top' position: 'top',
actions: [{
label: "点击查看",
color: "primary",
handler: () => {
this.$router.push({
path: "/teacher/appraisalList",
query: {
}
});
}
}],
}) })
} }
}).catch(() => { }).catch(() => {
......
...@@ -210,7 +210,6 @@ ...@@ -210,7 +210,6 @@
this.getInfo(); this.getInfo();
}, },
methods: { methods: {
//获取教师下拉 //获取教师下拉
GetTeacherList() { GetTeacherList() {
var qMsg = { var qMsg = {
......
...@@ -347,7 +347,6 @@ ...@@ -347,7 +347,6 @@
} from '../../api/course/index' } from '../../api/course/index'
import { import {
queryEmployee, queryEmployee,
} from "../../api/users/user"; } from "../../api/users/user";
import { import {
queryGuestStateList, queryGuestStateList,
......
...@@ -191,6 +191,11 @@ export default { ...@@ -191,6 +191,11 @@ export default {
immediate: true immediate: true
} }
}, },
mounted() {
if (tccc && tccc.Agent) {
tccc.Agent.offline();
}
},
methods: { methods: {
callBackUserInfo(code) { callBackUserInfo(code) {
setUserCodeCallBack({ setUserCodeCallBack({
...@@ -228,7 +233,7 @@ export default { ...@@ -228,7 +233,7 @@ export default {
const s = document.createElement("script"); const s = document.createElement("script");
s.type = "text/javascript"; s.type = "text/javascript";
s.src = s.src =
"http://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.5.js"; "https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.5.js";
const wxElement = document.body.appendChild(s); const wxElement = document.body.appendChild(s);
// 调用企业微信二维码方法 // 调用企业微信二维码方法
wxElement.onload = function() { wxElement.onload = function() {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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