Commit 42bb9997 authored by liudong1993's avatar liudong1993

1

parent 5b6d4fd0
...@@ -7,257 +7,257 @@ ...@@ -7,257 +7,257 @@
// https://quasar.dev/quasar-cli/quasar-conf-js // https://quasar.dev/quasar-cli/quasar-conf-js
/* eslint-env node */ /* eslint-env node */
module.exports = function (ctx) { module.exports = function(ctx) {
return { return {
// https://quasar.dev/quasar-cli/supporting-ts // https://quasar.dev/quasar-cli/supporting-ts
supportTS: false, supportTS: false,
// https://quasar.dev/quasar-cli/prefetch-feature // https://quasar.dev/quasar-cli/prefetch-feature
// preFetch: true, // preFetch: true,
// app boot file (/src/boot) // app boot file (/src/boot)
// --> boot files are part of "main.js" // --> boot files are part of "main.js"
// https://quasar.dev/quasar-cli/boot-files // https://quasar.dev/quasar-cli/boot-files
boot: [ boot: [
'i18n', 'i18n',
'axios', 'axios',
'permission', 'permission',
'inline-svg' 'inline-svg'
], ],
// https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [ css: [
'app.sass' 'app.sass'
], ],
// https://github.com/quasarframework/quasar/tree/dev/extras // https://github.com/quasarframework/quasar/tree/dev/extras
extras: [ extras: [
// 'ionicons-v4', // 'ionicons-v4',
'mdi-v5', 'mdi-v5',
// 'fontawesome-v5', // 'fontawesome-v5',
// 'eva-icons', // 'eva-icons',
// 'themify', // 'themify',
// 'line-awesome', // 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
'roboto-font', // optional, you are not bound to it 'roboto-font', // optional, you are not bound to it
'material-icons' // optional, you are not bound to it 'material-icons' // optional, you are not bound to it
], ],
// Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build: { build: {
vueRouterMode: 'hash', // available values: 'hash', 'history' vueRouterMode: 'hash', // available values: 'hash', 'history'
env: ctx.dev ? { env: ctx.dev ? {
API: 'http://localhost:5001/api', //API: 'http://localhost:5001/api',
// 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_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_SK_WSS: 'wss://sk.kookaku.com',
API_SIG: 'http://eduapi.oytour.com/messagecenter' API_SIG: 'http://eduapi.oytour.com/messagecenter'
}, },
// transpile: false, // transpile: false,
// Add dependencies for transpiling with Babel (Array of string/regex) // Add dependencies for transpiling with Babel (Array of string/regex)
// (from node_modules, which are by default not transpiled). // (from node_modules, which are by default not transpiled).
// Applies only if "transpile" is set to true. // Applies only if "transpile" is set to true.
// transpileDependencies: [], // transpileDependencies: [],
// rtl: false, // https://quasar.dev/options/rtl-support // rtl: false, // https://quasar.dev/options/rtl-support
// preloadChunks: true, // preloadChunks: true,
// showProgress: false, // showProgress: false,
// gzip: true, // gzip: true,
// analyze: true, // analyze: true,
// Options below are automatically set depending on the env, set them if you want to override // Options below are automatically set depending on the env, set them if you want to override
// extractCSS: false, // extractCSS: false,
// 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: /\.swf$/, test: /\.swf$/,
loader: 'url-loader' loader: 'url-loader'
}) })
} }
}, },
// Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
devServer: {
https: false,
port: 8181,
open: true // opens browser window automatically
},
// https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
framework: { devServer: {
iconSet: 'material-icons', // Quasar icon set https: false,
lang: 'zh-hans', // Quasar language pack port: 8181,
config: {}, open: true // opens browser window automatically
},
// Possible values for "importStrategy": // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
// * 'auto' - (DEFAULT) Auto-import needed Quasar components & directives framework: {
// * 'all' - Manually specify what to import iconSet: 'material-icons', // Quasar icon set
importStrategy: 'auto', lang: 'zh-hans', // Quasar language pack
config: {},
// For special cases outside of where "auto" importStrategy can have an impact // Possible values for "importStrategy":
// (like functional components as one of the examples), // * 'auto' - (DEFAULT) Auto-import needed Quasar components & directives
// you can manually specify Quasar components/directives to be available everywhere: // * 'all' - Manually specify what to import
// importStrategy: 'auto',
components: [
'QLayout',
'QHeader',
'QDrawer',
'QPageContainer',
'QPage',
'QToolbar',
'QToolbarTitle',
'QBtn',
'QIcon',
'QList',
'QItem',
'QItemSection',
'QItemLabel',
'QTabs',
'QRouteTab',
'QAvatar',
'QBtnDropdown',
'QFooter',
'QMenu',
'QCarousel',
'QCarouselControl',
'QCarouselSlide',
'QInput',
'QDate',
'QPopupProxy',
'QBanner',
'QSeparator',
'QChip',
'QTab',
'QSelect',
'QVideo',
'QImg',
'QResizeObserver',
'QMarkupTable',
'QForm',
'QTable',
'QTh',
'QTr',
'QTd',
'QCard',
'QCheckbox',
'QTree',
'QOptionGroup',
'QRadio',
'QBtnGroup'
],
directives: [
'ClosePopup'
],
// Quasar plugins // For special cases outside of where "auto" importStrategy can have an impact
plugins: [ // (like functional components as one of the examples),
'Meta', // you can manually specify Quasar components/directives to be available everywhere:
'Notify', //
'Dialog', components: [
'LoadingBar' 'QLayout',
] 'QHeader',
}, 'QDrawer',
'QPageContainer',
'QPage',
'QToolbar',
'QToolbarTitle',
'QBtn',
'QIcon',
'QList',
'QItem',
'QItemSection',
'QItemLabel',
'QTabs',
'QRouteTab',
'QAvatar',
'QBtnDropdown',
'QFooter',
'QMenu',
'QCarousel',
'QCarouselControl',
'QCarouselSlide',
'QInput',
'QDate',
'QPopupProxy',
'QBanner',
'QSeparator',
'QChip',
'QTab',
'QSelect',
'QVideo',
'QImg',
'QResizeObserver',
'QMarkupTable',
'QForm',
'QTable',
'QTh',
'QTr',
'QTd',
'QCard',
'QCheckbox',
'QTree',
'QOptionGroup',
'QRadio',
'QBtnGroup'
],
directives: [
'ClosePopup'
],
// animations: 'all', // --- includes all animations // Quasar plugins
// https://quasar.dev/options/animations plugins: [
animations: [], 'Meta',
'Notify',
'Dialog',
'LoadingBar'
]
},
// https://quasar.dev/quasar-cli/developing-ssr/configuring-ssr // animations: 'all', // --- includes all animations
ssr: { // https://quasar.dev/options/animations
pwa: false animations: [],
},
// https://quasar.dev/quasar-cli/developing-pwa/configuring-pwa // https://quasar.dev/quasar-cli/developing-ssr/configuring-ssr
pwa: { ssr: {
workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest' pwa: false
workboxOptions: {}, // only for GenerateSW
manifest: {
name: 'com.viitto.confuius',
short_name: 'com.viitto.confuius',
description: 'jiahe japen school system',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [{
src: 'icons/icon-128x128.png',
sizes: '128x128',
type: 'image/png'
},
{
src: 'icons/icon-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'icons/icon-256x256.png',
sizes: '256x256',
type: 'image/png'
}, },
{
src: 'icons/icon-384x384.png', // https://quasar.dev/quasar-cli/developing-pwa/configuring-pwa
sizes: '384x384', pwa: {
type: 'image/png' workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
workboxOptions: {}, // only for GenerateSW
manifest: {
name: 'com.viitto.confuius',
short_name: 'com.viitto.confuius',
description: 'jiahe japen school system',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [{
src: 'icons/icon-128x128.png',
sizes: '128x128',
type: 'image/png'
},
{
src: 'icons/icon-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'icons/icon-256x256.png',
sizes: '256x256',
type: 'image/png'
},
{
src: 'icons/icon-384x384.png',
sizes: '384x384',
type: 'image/png'
},
{
src: 'icons/icon-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
}
}, },
{
src: 'icons/icon-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
}
},
// Full list of options: https://quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova // Full list of options: https://quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
cordova: { cordova: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
}, },
// Full list of options: https://quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor // Full list of options: https://quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor: { capacitor: {
hideSplashscreen: true hideSplashscreen: true
}, },
// Full list of options: https://quasar.dev/quasar-cli/developing-electron-apps/configuring-electron // Full list of options: https://quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
electron: { electron: {
bundler: 'packager', // 'packager' or 'builder' bundler: 'packager', // 'packager' or 'builder'
packager: { packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store // OS X / Mac App Store
// appBundleId: '', // appBundleId: '',
// appCategoryType: '', // appCategoryType: '',
// osxSign: '', // osxSign: '',
// protocol: 'myapp://path', // protocol: 'myapp://path',
// Windows only // Windows only
// win32metadata: { ... } // win32metadata: { ... }
}, },
builder: { builder: {
// https://www.electron.build/configuration/configuration // https://www.electron.build/configuration/configuration
appId: 'confucius' appId: 'confucius'
}, },
// 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
} }
}
} }
} }
} \ No newline at end of file
import request from '../../utils/request' import request from '../../utils/request'
import request_zc from '../../utils/request_zc'
/* /*
......
<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:800px;">
<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-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-12 q-pb-lg" emit-value map-options />
-->
<q-input
filled
v-model="addMsg.Sort"
class="col-12 q-pb-lg"
ref="Sort"
label="学员编号"
:rules="[val => !!val || '请填写排序']"
></q-input>
<div class="col-12 q-pb-lg">
<q-input
filled
v-model="addMsg.StartTime"
mask="####-##-## ##:##:##"
ref="SignStartTime"
label="开始时间"
:rules="[val => !!val || '请选择开始时间']"
>
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy" transition-show="scale" transition-hide="scale">
<div class="q-gutter-md row items-start">
<q-date
v-model="addMsg.StartTime"
mask="YYYY-MM-DD HH:mm:ss"
@input="date"
/>
<q-time
v-model="addMsg.StartTime"
format24h
mask="YYYY-MM-DD HH:mm:ss"
@input="time"
/>
</div>
<q-btn v-close-popup label="关闭" color="primary" flat style="float:right" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</div>
<div class="col-12 q-pb-lg">
<q-input filled v-model="addMsg.EndTime" mask="####-##-## ##:##:##" ref="SignEndTime" label="结束时间" :rules="[val => !!val || '请选择结束时间']">
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy" transition-show="scale" transition-hide="scale">
<div class="q-gutter-md row items-start">
<q-date
v-model="addMsg.EndTime"
mask="YYYY-MM-DD HH:mm:ss"
@input="endDate"
/>
<q-time
v-model="addMsg.EndTime"
format24h
mask="YYYY-MM-DD HH:mm:ss"
@input="endTime"
/>
</div>
<q-btn v-close-popup label="关闭" color="primary" flat style="float:right" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</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="saveActive" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
setActivitySurveyGuest,
getActivitySurveyGuestModule
} from '../../api/studentmsg/index'
export default {
props: {
saveObj: {
type: Object,
default: null
},
ID: {
type: String,
default: null
}
},
data() {
return {
persistent: true,
addMsg: {
Id: 0, //新增传0
GuestType: 2, //客户类型(1-小程序用户,2-学员用户)
GuestId: 2644, //学员编号
StartTime: "2022-04-20 00:00:00", //开始时间
EndTime: "2022-04-25 18:00:00", //结束时间
SurveyId: 0 //意见调查表编号
},
platList: [],
dateList: [],
FormTypeList: [],
saveLoading: false
};
},
mounted() {
this.initObj();
},
methods: {
// 选择报名开始时间
date(val) {
this.addMsg.SignStartTime = val;
},
time(val) {
this.addMsg.SignStartTime = val;
},
// 选择报名结束时间
endDate(val) {
this.addMsg.SignEndTime = val;
},
endTime(val) {
this.addMsg.SignEndTime = val;
},
//初始化表单
initObj() {
this.addMsg.SurveyId = this.ID
if (this.saveObj && this.saveObj.ID > 0) {
getActivitySurveyGuestModule({
Id: saveObj.ID
}).then(res => {
this.addMsg = res.data.data;
console.log("11111", res);
})
} else {
this.addMsg.Id = 0;
// this.addMsg.GuestId = 1;
// this.StartTime = '';
// this.EndTime = '';
}
},
//关闭弹窗
closeSaveForm() {
this.$emit("close");
this.persistent = false;
},
saveActive() {
setActivitySurveyGuest(this.addMsg).then(res => {
if (res.data.Id == 0) {
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>
\ No newline at end of file
...@@ -287,9 +287,19 @@ ...@@ -287,9 +287,19 @@
<div> <div>
<div class="eventsCalendar_Form"> <div class="eventsCalendar_Form">
<div style="text-align:right;margin:12px 20px 8px 0"> <div style="text-align:right;margin:12px 20px 8px 0">
<el-date-picker style="width:190px" v-model="date" type="month" size="small"  value-format="yyyy-M-d" <el-date-picker
@change="getList()" placeholder="选择日期"> style="width:190px"
v-model="date"
type="date"
:clearable="false"
value-format="yyyy-MM-d"
:picker-options="pickerOptions"
:editable="false"
placeholder="选择日期"
@change="getList"
>
</el-date-picker> </el-date-picker>
</div> </div>
<template> <template>
<el-calendar v-model="date" id="calendar" style="margin-bottom:40px;"> <el-calendar v-model="date" id="calendar" style="margin-bottom:40px;">
......
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
</div> --> </div> -->
<q-btn-group <q-btn-group
outline outline
style="position: fixed;top: 75px;right:20px;z-index: 666666;" style="position: fixed;top: 15px;right:20px;z-index: 666666;"
> >
<q-btn <q-btn
dense dense
......
...@@ -7,235 +7,282 @@ ...@@ -7,235 +7,282 @@
<el-tab-pane :label="item.label" :name="item.value" :key="item.value" v-for="(item, index) in options"></el-tab-pane> <el-tab-pane :label="item.label" :name="item.value" :key="item.value" v-for="(item, index) in options"></el-tab-pane>
</el-tabs> </el-tabs>
</div> --> </div> -->
<q-btn flat @click="changeMenu(5)" :color="chosenMenu==5?'primary':'blue-grey-14'" :class="[chosenMenu==5?'text-weight-bold':'']" label="工作台"></q-btn> <q-btn
<q-btn @click="changeMenu(1)" flat :color="chosenMenu==1?'primary':'blue-grey-14'" :class="[chosenMenu==1?'text-weight-bold':'']" label="OKR 工作区"> flat
<q-menu v-if="chosenMenu==1"> @click="changeMenu(6)"
:color="chosenMenu == 6 ? 'primary' : 'blue-grey-14'"
:class="[chosenMenu == 6 ? 'text-weight-bold' : '']"
label="活动日历"
></q-btn>
<q-btn
flat
@click="changeMenu(5)"
:color="chosenMenu == 5 ? 'primary' : 'blue-grey-14'"
:class="[chosenMenu == 5 ? 'text-weight-bold' : '']"
label="工作台"
></q-btn>
<q-btn
@click="changeMenu(1)"
flat
:color="chosenMenu == 1 ? 'primary' : 'blue-grey-14'"
:class="[chosenMenu == 1 ? 'text-weight-bold' : '']"
label="OKR 工作区"
>
<q-menu v-if="chosenMenu == 1">
<q-list> <q-list>
<q-item clickable @click="okrMenu=1"> <q-item clickable @click="okrMenu = 1">
<q-item-section q-item-section avatar> <q-item-section q-item-section avatar>
<inline-svg class="svg-icon svg-icon-secondary" src="icons/svg/Text/Edit-text.svg"></inline-svg> <inline-svg
class="svg-icon svg-icon-secondary"
src="icons/svg/Text/Edit-text.svg"
></inline-svg>
</q-item-section> </q-item-section>
<q-item-section>OKR</q-item-section> <q-item-section>OKR</q-item-section>
</q-item> </q-item>
<q-separator /> <q-separator />
<q-item clickable @click="okrMenu=2"> <q-item clickable @click="okrMenu = 2">
<q-item-section q-item-section avatar> <q-item-section q-item-section avatar>
<inline-svg class="svg-icon svg-icon-secondary" src="icons/svg/General/Visible.svg"></inline-svg> <inline-svg
class="svg-icon svg-icon-secondary"
src="icons/svg/General/Visible.svg"
></inline-svg>
</q-item-section> </q-item-section>
<q-item-section>对齐视图</q-item-section> <q-item-section>对齐视图</q-item-section>
</q-item> </q-item>
<q-item clickable> <q-item clickable>
<q-item-section q-item-section avatar> <q-item-section q-item-section avatar>
<inline-svg class="svg-icon svg-icon-secondary" src="icons/svg/Shopping/Chart-pie.svg"></inline-svg> <inline-svg
class="svg-icon svg-icon-secondary"
src="icons/svg/Shopping/Chart-pie.svg"
></inline-svg>
</q-item-section> </q-item-section>
<q-item-section>数据看板</q-item-section> <q-item-section>数据看板</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
</q-menu> </q-menu>
</q-btn> </q-btn>
<!-- <q-btn @click="changeMenu(2)" v-if="AccountType==2 || ispower==true" flat :color="chosenMenu==2?'primary':'blue-grey-14'" :class="[chosenMenu==2?'text-weight-bold':'']" label="备课管理"> <!-- <q-btn @click="changeMenu(2)" v-if="AccountType==2 || ispower==true" flat :color="chosenMenu==2?'primary':'blue-grey-14'" :class="[chosenMenu==2?'text-weight-bold':'']" label="备课管理">
</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
<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> flat
<q-btn flat @click="changeMenu(6)" :color="chosenMenu==6?'primary':'blue-grey-14'" :class="[chosenMenu==6?'text-weight-bold':'']" label="活动日历"></q-btn> @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>
</div> </div>
<div class="bg-white col" v-if="chosenMenu==6"> <div class="bg-white col" v-if="chosenMenu == 6">
<eventsCalendar></eventsCalendar> <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>
</div> </div>
<div v-if="chosenMenu==1" class="flex col" style="flex: 1"> <div v-if="chosenMenu == 1" class="flex col" style="flex: 1">
<okr v-if="okrMenu==1"></okr> <okr v-if="okrMenu == 1"></okr>
<align-view v-if="okrMenu==2"></align-view> <align-view v-if="okrMenu == 2"></align-view>
</div> </div>
<div v-if="chosenMenu==2" class="col comWorkDiv" style="overflow: auto"> <div v-if="chosenMenu == 2" class="col comWorkDiv" style="overflow: auto">
<teachplan></teachplan> <teachplan></teachplan>
</div> </div>
<!-- 备课管理 --> <!-- 备课管理 -->
<div v-if="chosenMenu==3" class="comWorkDiv" style="overflow: auto"> <div v-if="chosenMenu == 3" class="comWorkDiv" style="overflow: auto">
<mySchedule></mySchedule> <mySchedule></mySchedule>
</div> </div>
<!-- 我的上课计划 --> <!-- 我的上课计划 -->
<div v-if="chosenMenu==4" class="comWorkDiv" style="overflow: auto"> <div v-if="chosenMenu == 4" class="comWorkDiv" style="overflow: auto">
<myClassmate></myClassmate> <myClassmate></myClassmate>
</div> </div>
<!-- zk新增公告弹窗 --> <!-- zk新增公告弹窗 -->
<notice-form v-if="isShowNotice" @fathergoBefore="fathergoBefore" @fathergoAfter="fathergoAfter" :seting-obj="noticeObj" @close="closeNoticeForm"> <notice-form
v-if="isShowNotice"
@fathergoBefore="fathergoBefore"
@fathergoAfter="fathergoAfter"
:seting-obj="noticeObj"
@close="closeNoticeForm"
>
</notice-form> </notice-form>
</div> </div>
</template> </template>
<script> <script>
import { GetMyNoticePageList } from "../api/course/index";
import { import teachplan from "./course/teacherLesson";
GetMyNoticePageList import okr from "./okr/index";
} from '../api/course/index' import alignView from "./okr/okr-align-view";
import noticeForm from "../components/course/notice-form";
import teachplan from './course/teacherLesson' import mySchedule from "./scheduling/mySchedule";
import okr from './okr/index' import myClassmate from "./scheduling/myClassmate";
import alignView from './okr/okr-align-view' import work from "../components/work/index";
import noticeForm from '../components/course/notice-form' import eventsCalendar from "../components/stuMan/eventsCalendar";
import mySchedule from './scheduling/mySchedule'
import myClassmate from './scheduling/myClassmate';
import work from '../components/work/index'
import eventsCalendar from '../components/stuMan/eventsCalendar'
export default {
components:{
teachplan,
okr,
alignView,
noticeForm,
mySchedule,
myClassmate,
work,
eventsCalendar
},
name: 'PageIndex',
data(){
return{
options:[
{label: 'OKR', value: 'one'},
],
model: 'one',
AccountType:1,
ispower:false,//是否显示备课管理
chosenMenu:5,
okrMenu:1,
//通知请求参数 export default {
noticeMsg:{ components: {
pageIndex:1, teachplan,
pageSize:1, okr,
          LookTime:"" alignView,
}, noticeForm,
isShowNotice:false, mySchedule,
noticeObj:{}, myClassmate,
TimeList:[], //存放时间作为比较 work,
} eventsCalendar
}, },
created() { name: "PageIndex",
data() {
return {
options: [{ label: "OKR", value: "one" }],
model: "one",
AccountType: 1,
ispower: false, //是否显示备课管理
chosenMenu: 6,
okrMenu: 1,
}, //通知请求参数
mounted() { noticeMsg: {
let userInfo = this.getLocalStorage(); pageIndex: 1,
this.AccountType = userInfo.AccountType pageSize: 1,
if(userInfo.AccountType && userInfo.AccountType==2){ //是否是教师1不是 2是 LookTime: ""
this.options=[ },
{label: 'OKR', value: 'one'}, isShowNotice: false,
{label: '备课管理', value: 'two'}, noticeObj: {},
]; TimeList: [] //存放时间作为比较
} };
this.ispower = false; },
if(userInfo.MenuList.length>0){ created() {},
this.getMapList(userInfo.MenuList)//判断菜单权限是否有 mounted() {
} let userInfo = this.getLocalStorage();
if(this.ispower==true){ this.AccountType = userInfo.AccountType;
this.options=[ if (userInfo.AccountType && userInfo.AccountType == 2) {
{label: 'OKR', value: 'one'}, //是否是教师1不是 2是
{label: '备课管理', value: 'two'}, this.options = [
]; { label: "OKR", value: "one" },
} { label: "备课管理", value: "two" }
var notifyTime = window.localStorage.getItem('notifyTime'); ];
if(notifyTime){ }
this.ispower = false;
if (userInfo.MenuList.length > 0) {
this.getMapList(userInfo.MenuList); //判断菜单权限是否有
}
if (this.ispower == true) {
this.options = [
{ label: "OKR", value: "one" },
{ label: "备课管理", value: "two" }
];
}
var notifyTime = window.localStorage.getItem("notifyTime");
if (notifyTime) {
this.noticeMsg.LookTime = notifyTime; this.noticeMsg.LookTime = notifyTime;
} }
this.getNoticeList(); this.getNoticeList();
},
methods: {
changeMenu(i) {
if (i == 1) {
this.okrMenu = 1;
}
this.chosenMenu = i;
}, },
methods:{ getMapList(list) {
changeMenu(i){ list.forEach(x => {
if(i==1){ if (x.MenuUrl == "/course/teacherLesson") {
this.okrMenu=1 this.ispower = true;
} }
this.chosenMenu=i if (x.SubList.length > 0) {
}, this.getMapList(x.SubList);
getMapList(list){ }
list.forEach(x=>{ });
if(x.MenuUrl == '/course/teacherLesson'){ },
this.ispower=true
}
if(x.SubList.length>0){
this.getMapList(x.SubList)
}
})
},
//获取获取公告弹窗数据 //获取获取公告弹窗数据
getNoticeList(){ getNoticeList() {
GetMyNoticePageList(this.noticeMsg).then(res => { GetMyNoticePageList(this.noticeMsg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.noticeObj = res.Data; this.noticeObj = res.Data;
if(res.Data.PageData.length>0){ if (res.Data.PageData.length > 0) {
this.isShowNotice=true; this.isShowNotice = true;
}
if(res.Data.PageData[0]&&res.Data.PageData[0].UpdateTimeStr){
this.TimeList.push(new Date(res.Data.PageData[0].UpdateTimeStr));
var maxDate=new Date(Math.max.apply(null,this.TimeList));
var date = new Date(maxDate);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var notifyData = y+'-'+m+'-'+d+' '+ date.getHours() + ':' +date.getMinutes() + ':' + date.getSeconds();
localStorage.setItem("notifyTime", notifyData);
}
} }
}) if (res.Data.PageData[0] && res.Data.PageData[0].UpdateTimeStr) {
}, this.TimeList.push(new Date(res.Data.PageData[0].UpdateTimeStr));
//关闭公告弹窗 var maxDate = new Date(Math.max.apply(null, this.TimeList));
closeNoticeForm(){ var date = new Date(maxDate);
this.isShowNotice=false; var y = date.getFullYear();
}, var m = date.getMonth() + 1;
//向后翻页 m = m < 10 ? "0" + m : m;
fathergoAfter(){ var d = date.getDate();
this.noticeMsg.pageIndex++; d = d < 10 ? "0" + d : d;
this.getNoticeList(); var notifyData =
}, y +
//往回翻页 "-" +
fathergoBefore(){ m +
this.noticeMsg.pageIndex--; "-" +
this.getNoticeList(); d +
} " " +
date.getHours() +
":" +
date.getMinutes() +
":" +
date.getSeconds();
localStorage.setItem("notifyTime", notifyData);
}
}
});
},
//关闭公告弹窗
closeNoticeForm() {
this.isShowNotice = false;
},
//向后翻页
fathergoAfter() {
this.noticeMsg.pageIndex++;
this.getNoticeList();
},
//往回翻页
fathergoBefore() {
this.noticeMsg.pageIndex--;
this.getNoticeList();
} }
} }
};
</script> </script>
<style> <style>
.homebx .box{ .homebx .box {
width: 100%; width: 100%;
height: 50px; height: 50px;
}
.homebx {
margin: 0;
}
.myscroll::-webkit-scrollbar {
display: none;
}
} .box .el-tabs__header {
.homebx { margin: 0;
margin: 0; }
} .sub-header {
.myscroll::-webkit-scrollbar { position: fixed;
display: none; height: 56px;
} top: 0;
left: 0;
.box .el-tabs__header{ right: 0;
margin: 0; transition: top 0.3s ease;
} z-index: 95;
.sub-header{ box-shadow: 0 10px 30px 0 rgba(82, 63, 105, 0.08);
position: fixed; background-color: #fff;
height: 56px; border-top: 1px solid #ebedf3;
top: 60px; margin: 0;
left: 0; padding: 10px 20px;
right: 0; }
transition: top .3s ease; .comWorkDiv {
z-index: 95; height: 100vh;
box-shadow: 0 10px 30px 0 rgba(82,63,105,.08); }
background-color: #fff;
border-top: 1px solid #ebedf3;
margin: 0;
padding: 10px 20px;
}
.comWorkDiv{
height: 100vh
}
</style> </style>
...@@ -58,12 +58,14 @@ ...@@ -58,12 +58,14 @@
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<q-btn flat size="xs" icon="iconfont icon-view" color="accent" style="font-weight:400" label="配置学员"
@click="Gochild(props.row)" />
<q-btn flat size="xs" icon="iconfont icon-view" color="accent" style="font-weight:400" label="配置" <q-btn flat size="xs" icon="iconfont icon-view" color="accent" style="font-weight:400" label="配置"
@click="GoYijian(props.row)" /> @click="GoYijian(props.row)" />
<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="addObj(props.row)" /> @click="addObj(props.row)" />
<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="delQuestion(props.row)" /> @click="delQuestion(props.row)" />
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
...@@ -248,6 +250,12 @@ ...@@ -248,6 +250,12 @@
this.msg.pageIndex = val; this.msg.pageIndex = val;
this.getList(); this.getList();
}, },
// 跳转到配置学员详情页
Gochild(row){
this.OpenNewUrl('/activity/configurationstudentsList',{
ID: row.ID
});
},
//跳转到意见调查表 //跳转到意见调查表
GoYijian(row) { GoYijian(row) {
this.OpenNewUrl('/activity/questionnaireList', { this.OpenNewUrl('/activity/questionnaireList', {
......
...@@ -12,23 +12,23 @@ ...@@ -12,23 +12,23 @@
<!-- @click="addObj(null)" --> <!-- @click="addObj(null)" -->
</div> </div>
</template> </template>
<template v-slot:body-cell-IsRequired="props"> <template v-slot:body-cell-IsRequired="props">
<q-td :props="props"> <q-td :props="props">
<span v-if="props.row.IsRequired==0"></span> <span v-if="props.row.IsRequired==0"></span>
<span v-if="props.row.IsRequired==1"></span> <span v-if="props.row.IsRequired==1"></span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-IsShow="props"> <template v-slot:body-cell-IsShow="props">
<q-td :props="props"> <q-td :props="props">
<span v-if="props.row.IsShow==0"></span> <span v-if="props.row.IsShow==0"></span>
<span v-if="props.row.IsShow==1"></span> <span v-if="props.row.IsShow==1"></span>
</q-td> </q-td>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount" <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" /> :input="true" @input="changePage" />
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<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="addObj(props.row)" /> @click="addObj(props.row)" />
...@@ -36,196 +36,146 @@ ...@@ -36,196 +36,146 @@
@click="delQuestion(props.row)" /> @click="delQuestion(props.row)" />
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
<wenjuan-form v-if="isShowWenjuan" :save-obj="objOption" :ID="msg.ActivitySurveyId" @close="closeSaveForm" @success="resetSearch"></wenjuan-form> <student-form v-if="isShowWenjuan" :save-obj="objOption" :ID="msg.ActivitySurveyId" @close="closeSaveForm" @success="resetSearch"></student-form>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import wenjuanForm from '../../components/activity/wenjuan-form' import studentForm from '../../components/activity/student-from'
export default { import {
meta: { getActivitySurveyGuestPage,
title: "意见调查表" removeActivitySurveyGuest
}, } from '../../api/studentmsg/index'
components: { export default {
wenjuanForm meta: {
}, title: "意见调查表"
data() { },
return { components: {
columns: [ studentForm
{ },
name: 'ID', data() {
label: 'ID', return {
align: 'left', columns: [{
field: 'ID' name: 'Id',
}, label: 'ID',
{ align: 'left',
name: 'Title', field: 'Id'
label: '问题名称', }, {
field: 'Title', name: 'GuestName',
align: 'left' label: '学员名称',
}, field: 'GuestName',
{ align: 'left'
name: 'FormTypeStr', },
label: '问卷类型',
field: 'FormTypeStr', {
align: 'left' name: 'optioned',
}, label: '操作',
{ field: 'TId'
name: 'IsRequired', }
label: '是否必填', ],
field: 'IsRequired', dataList: [],
align: 'left' loading: true,
}, msg: {
{ pageIndex: 1,
name: 'IsShow', pageSize: 12,
label: '是否显示', rowsPerPage: 12,
field: 'IsShow', SurveyId: 1,
align: 'left' },
},
{ pageCount: 0,
name: 'Sort', isShowWenjuan: false,
label: '排序', objOption: null,
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 { created() {
this.Info(res.data.message); if (this.$route.query && this.$route.query.ID) {
} this.msg.ActivitySurveyId = this.$route.query.ID;
console.log( '数据信息' + res.data) }
}) },
}, mounted() {
resetSearch() {
this.msg.pageIndex = 1; this.getList();
this.getList(); },
}, methods: {
getList(){
this.loading=true; resetSearch() {
this.apipostDS("/api/Survey/GetPageList", this.msg, res => { this.msg.pageIndex = 1;
this.loading=false; this.getList();
if(res.data.resultCode==1){ },
this.dataList = res.data.data.pageData; getList() {
this.pageCount = res.data.data.pageCount; this.loading = true;
}else { getActivitySurveyGuestPage(this.msg).then(res => {
this.Info(res.data.message); this.loading = false;
} if (res.Code == 1) {
}) this.dataList = res.Data.PageData;
}, this.pageCount = res.Data.Count
addObj(obj) { }
if (obj) { console.log("res", res);
this.objOption = obj });
} else {
this.objOption = null },
} addObj(obj) {
this.isShowWenjuan = true; if (obj) {
}, this.objOption = obj
//删除问卷 } else {
delQuestion(row){ this.objOption = null
let that = this; }
this.$q.dialog({ this.isShowWenjuan = true;
title: "提示", },
message: '是否删除该活动信息?', //删除当前行信息
cancel: { delQuestion(row) {
label: "取消", let that = this;
flat: true this.$q.dialog({
}, title: "提示",
ok: { message: '是否删除该活动信息?',
label: "确认", cancel: {
flat: true, label: "取消",
focus: true flat: true
} },
}).onOk(() => { ok: {
that.apipostDS( label: "确认",
"/api/Survey/DelSurvey", flat: true,
{SurveyID:row.ID}, focus: true
res => { }
if (res.data.resultCode == 1) { }).onOk(() => {
that.$q.notify({ removeActivitySurveyGuest({
icon: 'iconfont icon-chenggong', Id: row.Id
color: 'accent', }).then(res => {
timeout: 2000, this.dataList = '';
message: '数据删除成功!', this.pageCount = '';
position: 'top' console.log(res + '111111')
}) if (res.Code == 1) {
that.getList(); that.$q.notify({
} else { icon: 'iconfont icon-chenggong',
that.$q.notify({ color: 'accent',
type: 'negative', timeout: 2000,
position: "top", message: '数据删除成功!',
message: res.data.message position: 'top'
})
that.getList();
} else {
that.$q.notify({
type: 'negative',
position: "top",
message: res.data.message,
})
}
})
}) })
}
}, },
);
}); closeSaveForm() {
}, this.isShowWenjuan = false;
closeSaveForm(){ },
this.isShowWenjuan=false; changePage(val) {
}, this.msg.pageIndex = val;
changePage(val) { this.getList();
this.msg.pageIndex = val; },
this.getList(); },
}, }
},
}
</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
...@@ -28,23 +28,23 @@ ...@@ -28,23 +28,23 @@
<q-btn color="accent" size="sm" icon="add" label="新增" @click="addObj(null)" /> <q-btn color="accent" size="sm" icon="add" label="新增" @click="addObj(null)" />
</div> </div>
</template> </template>
<template v-slot:body-cell-IsRequired="props"> <template v-slot:body-cell-IsRequired="props">
<q-td :props="props"> <q-td :props="props">
<span v-if="props.row.IsRequired==0"></span> <span v-if="props.row.IsRequired==0"></span>
<span v-if="props.row.IsRequired==1"></span> <span v-if="props.row.IsRequired==1"></span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-IsShow="props"> <template v-slot:body-cell-IsShow="props">
<q-td :props="props"> <q-td :props="props">
<span v-if="props.row.IsShow==0"></span> <span v-if="props.row.IsShow==0"></span>
<span v-if="props.row.IsShow==1"></span> <span v-if="props.row.IsShow==1"></span>
</q-td> </q-td>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount" <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" /> :input="true" @input="changePage" />
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<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="addObj(props.row)" /> @click="addObj(props.row)" />
...@@ -52,195 +52,184 @@ ...@@ -52,195 +52,184 @@
@click="delQuestion(props.row)" /> @click="delQuestion(props.row)" />
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
<wenjuan-form v-if="isShowWenjuan" :save-obj="objOption" :ID="msg.ActivitySurveyId" @close="closeSaveForm" @success="resetSearch"></wenjuan-form> <wenjuan-form v-if="isShowWenjuan" :save-obj="objOption" :ID="msg.ActivitySurveyId" @close="closeSaveForm" @success="resetSearch"></wenjuan-form>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import wenjuanForm from '../../components/activity/wenjuan-form' import wenjuanForm from '../../components/activity/wenjuan-form'
export default { export default {
meta: { meta: {
title: "问卷调查" title: "问卷调查"
}, },
components: { components: {
wenjuanForm wenjuanForm
}, },
data() { data() {
return { return {
columns: [ columns: [{
{ name: 'ID',
name: 'ID', label: 'ID',
label: 'ID', align: 'left',
align: 'left', field: 'ID'
field: 'ID' }, {
}, name: 'Title',
{ label: '问题名称',
name: 'Title', field: 'Title',
label: '问题名称', align: 'left'
field: 'Title', }, {
align: 'left' name: 'FormTypeStr',
}, label: '问卷类型',
{ field: 'FormTypeStr',
name: 'FormTypeStr', align: 'left'
label: '问卷类型', }, {
field: 'FormTypeStr', name: 'IsRequired',
align: 'left' label: '是否必填',
}, field: 'IsRequired',
{ align: 'left'
name: 'IsRequired', }, {
label: '是否必填', name: 'IsShow',
field: 'IsRequired', label: '是否显示',
align: 'left' field: 'IsShow',
}, align: 'left'
{ }, {
name: 'IsShow', name: 'Sort',
label: '是否显示', label: '排序',
field: 'IsShow', field: 'Sort',
align: 'left' align: 'left'
}, }, {
{ name: 'optioned',
name: 'Sort', label: '操作',
label: '排序', field: 'TId'
field: 'Sort', }],
align: 'left' dataList: [],
}, loading: true,
{ ShowOpts: [{
name: 'optioned', label: '不限',
label: '操作', value: '-1'
field: 'TId' }, {
} label: '是',
], value: '0'
dataList: [], }, {
loading: true, label: '否',
ShowOpts: [{ value: '1'
label: '不限', }],
value: '-1' msg: {
}, pageIndex: 1,
{ pageSize: 15,
label: '是', rowsPerPage: 15,
value: '0' PrizeType: 0,
}, Title: '',
{ IsShow: '-1',
label: '否', SurveyType: 0,
value: '1' ActivitySurveyId: 0, //活动id
} },
], platList: [],
msg:{ pageCount: 0,
pageIndex:1, isShowWenjuan: false,
pageSize:15, objOption: null,
rowsPerPage: 15, }
PrizeType:0, },
Title:'', created() {},
IsShow:'-1', mounted() {
SurveyType:0, if (this.$route.query && this.$route.query.ID) {
ActivitySurveyId:0,//活动id this.msg.ActivitySurveyId = this.$route.query.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/GetSurveyTypeEnumList", {}, res => {
if(res.data.resultCode==1){
this.platList = res.data.data;
let obj = {
Id:0,
Name:'不限'
} }
this.platList.unshift(obj); this.getPlat();
}else { this.getList();
this.Info(res.data.message); },
} methods: {
}) getPlat() {
}, this.apipostDS("/api/Survey/GetSurveyTypeEnumList", {}, res => {
resetSearch() { if (res.data.resultCode == 1) {
this.msg.pageIndex = 1; this.platList = res.data.data;
this.getList(); let obj = {
}, Id: 0,
getList(){ Name: '不限'
this.loading=true; }
this.apipostDS("/api/Survey/GetPageList", this.msg, res => { this.platList.unshift(obj);
this.loading=false; } else {
if(res.data.resultCode==1){ this.Info(res.data.message);
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 { resetSearch() {
that.$q.notify({ this.msg.pageIndex = 1;
type: 'negative', this.getList();
position: "top", },
message: res.data.message 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
closeSaveForm(){ } else {
this.isShowWenjuan=false; this.objOption = null
}, }
changePage(val) { this.isShowWenjuan = true;
this.msg.pageIndex = val; },
this.getList(); //删除问卷
}, 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> </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
<style scoped> <style scoped>
@import "../css/cssReset.css"; @import "../css/cssReset.css";
.singeRowTable tr:nth-child(2n+1) { .singeRowTable tr:nth-child(2n + 1) {
background: none; background: none;
} }
.dd{ .dd {
background-color: #E6E6E6; background-color: #e6e6e6;
} }
.baseSet_Title { .baseSet_Title {
width: 120px !important; width: 120px !important;
padding: 18px 0 0 16px; padding: 18px 0 0 16px;
text-align: right; text-align: right;
} }
.singeRowTable tr th { .singeRowTable tr th {
border: 1px solid #d2d2d2; border: 1px solid #d2d2d2;
} }
.studentTracking td:first-child { .studentTracking td:first-child {
background-color: #E6E6E6; background-color: #e6e6e6;
position: sticky; position: sticky;
left: 0px; left: 0px;
}
} .studentTracking td:nth-child(2) {
.studentTracking td:nth-child(2) { background-color: #e6e6e6;
background-color: #E6E6E6; position: sticky;
position: sticky; left: 109px;
left: 109px; border: 1px solid #d2d2d2;
border: 1px solid #d2d2d2; }
} .studentTracking td:nth-child(3) {
.studentTracking td:nth-child(3) { background-color: #e6e6e6;
background-color: #E6E6E6; position: sticky;
position: sticky; left: 218px;
left: 218px; border: 1px solid #d2d2d2;
border: 1px solid #d2d2d2; }
}
.studentTracking th:first-child { .studentTracking th:first-child {
position: sticky; position: sticky;
left: 0px; left: 0px;
} }
.studentTracking th:nth-child(2) { .studentTracking th:nth-child(2) {
position: sticky; position: sticky;
left: 109px; left: 109px;
border: 1px solid #d2d2d2; border: 1px solid #d2d2d2;
} }
.studentTracking th:nth-child(3) { .studentTracking th:nth-child(3) {
position: sticky; position: sticky;
left: 218px; left: 218px;
border: 1px solid #d2d2d2; border: 1px solid #d2d2d2;
} }
.bj {
background-color: #e6e6e6;
}
.stulistNumber { .stulistNumber {
display: inline-block; display: inline-block;
width: 25px; width: 25px;
height: 25px; height: 25px;
text-align: center; text-align: center;
line-height: 22px; line-height: 22px;
border: 1px solid #2961FE; border: 1px solid #2961fe;
border-radius: 50%; border-radius: 50%;
cursor: pointer; cursor: pointer;
color: #2961FE; color: #2961fe;
} }
.OCourseTable { .OCourseTable {
width: 400px; width: 400px;
text-align: center; text-align: center;
} }
.OCourseTable tr td { .OCourseTable tr td {
height: 40px; height: 40px;
} }
.OCourseTable tr th { .OCourseTable tr th {
height: 40px; height: 40px;
background-color: rgb(238, 238, 239); background-color: rgb(238, 238, 239);
} }
</style> </style>
<template> <template>
<div class="page-body studentTracking"> <div class="page-body studentTracking">
...@@ -83,29 +85,56 @@ ...@@ -83,29 +85,56 @@
<div class="col-3"> <div class="col-3">
<q-field filled dense> <q-field filled dense>
<template v-slot:control> <template v-slot:control>
<el-date-picker v-model="dateArray" size="mini" @change="resetSearch" value-format="yyyy-MM" <el-date-picker
type="daterange" style="border:none;" range-separator="至" start-placeholder="跟进开始时间" v-model="dateArray"
end-placeholder="跟进结束时间" /> size="mini"
@change="resetSearch"
value-format="yyyy-MM"
type="daterange"
style="border:none;"
range-separator="至"
start-placeholder="跟进开始时间"
end-placeholder="跟进结束时间"
/>
</template> </template>
</q-field> </q-field>
</div> </div>
</div> </div>
</div> </div>
<div style="width: 100%;margin-top: 20px"> <div style="width: 100%;margin-top: 20px">
<div style="width: 100%;overflow-x: auto;"> <div style="width: 100%;overflow-x: auto;">
<table class="po_content singeRowTable" ref="table" style="border:1px solid #E6E6E6;" cellspacing="0" <table
cellpadding="0" v-loading="loading"> class="po_content singeRowTable"
ref="table"
style="border:1px solid #E6E6E6;"
cellspacing="0"
cellpadding="0"
v-loading="loading"
>
<tr> <tr>
<th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">部门</th> <th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">
<th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">角色</th> 部门
<th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">人员</th> </th>
<th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">
角色
</th>
<th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">
人员
</th>
<th width="500" colspan="7" style="min-width: 500px;" v-for=" ( item , index ) in RListlength" <th
:key='index'> width="500"
<span v-if="item.Month.slice(5)<10">{{item.Month.slice(6)}}</span> colspan="7"
<span v-else>{{item.Month.slice(6)}}</span> style="min-width: 500px;"
v-for="(item, index) in RListlength"
:key="index"
>
<span v-if="item.Month.slice(5) < 10">{{
item.Month.slice(6)
}}</span>
<span v-else>{{ item.Month.slice(6) }}</span
>
</th> </th>
<th width="120" rowspan="2" style="min-width: 110px;">提成合计</th> <th width="120" rowspan="2" style="min-width: 110px;">提成合计</th>
<th width="120" rowspan="2" style="min-width: 110px;">返佣合计</th> <th width="120" rowspan="2" style="min-width: 110px;">返佣合计</th>
...@@ -113,42 +142,51 @@ ...@@ -113,42 +142,51 @@
<th width="120" rowspan="2" style="min-width: 110px;">合计</th> <th width="120" rowspan="2" style="min-width: 110px;">合计</th>
</tr> </tr>
<tr> <tr>
<th v-for=" ( item , index ) in titlelist " :key='index' :width="item.Id==1?120:200">{{item.Name}}</th> <th
v-for="(item, index) in titlelist"
:key="index"
:width="item.Id == 1 ? 120 : 200"
>
{{ item.Name }}
</th>
</tr> </tr>
<tr v-for=" ( item , index ) in dataList " :key="index" <tr
v-if='dataList && dataList.length>0'> v-for="(item, index) in dataList"
:key="index"
v-if="dataList && dataList.length > 0"
:class="item.DeptName ? '' : 'bj'"
>
<td style=" border: 1px solid #d2d2d2;"> <td style=" border: 1px solid #d2d2d2;">
{{ item.DeptName }} {{ item.DeptName }}
</td> </td>
<td> <td>
<span>{{ item.RoleName }}</span> <span>{{ item.RoleName }}</span>
</td> </td>
<td> <td>
{{item.EmpName}} {{ item.EmpName }}
</td> </td>
<td v-for=" ( x , y ) in titlelist " :key="y"> <td v-for="(x, y) in titlelist" :key="y">
<div v-if="item.MonthList[x.index]"> <div v-if="item.MonthList[x.index]">
<div v-if="x.Id == 1">
<div v-if="x.Id==1"> <span>{{ item.MonthList[x.index].Achievement }}</span>
<span>{{item.MonthList[x.index].Achievement}}</span>
</div> </div>
<div v-if="x.Id==2" style="padding: 7px;"> <div v-if="x.Id == 2" style="padding: 7px;">
<span>{{item.MonthList[x.index].Rate}}</span> <span>{{ item.MonthList[x.index].Rate }}</span>
</div> </div>
<div v-if="x.Id==3" style="padding: 3px;"> <div v-if="x.Id == 3" style="padding: 3px;">
<span>{{item.MonthList[x.index].Rebate}}</span> <span>{{ item.MonthList[x.index].Rebate }}</span>
</div> </div>
<div v-if="x.Id==4" style="padding: 3px;"> <div v-if="x.Id == 4" style="padding: 3px;">
<span>{{item.MonthList[x.index].Commission}}</span> <span>{{ item.MonthList[x.index].Commission }}</span>
</div> </div>
<div v-if="x.Id==5" style="padding: 3px;"> <div v-if="x.Id == 5" style="padding: 3px;">
<span>{{item.MonthList[x.index].Brokerage}}</span> <span>{{ item.MonthList[x.index].Brokerage }}</span>
</div> </div>
<div v-if="x.Id==6" style="padding: 3px;"> <div v-if="x.Id == 6" style="padding: 3px;">
<span>{{item.MonthList[x.index].Bonus}}</span> <span>{{ item.MonthList[x.index].Bonus }}</span>
</div> </div>
<div v-if="x.Id==7" style="padding: 3px;"> <div v-if="x.Id == 7" style="padding: 3px;">
<span>{{item.MonthList[x.index].Total}}</span> <span>{{ item.MonthList[x.index].Total }}</span>
</div> </div>
</div> </div>
</td> </td>
...@@ -164,550 +202,578 @@ ...@@ -164,550 +202,578 @@
<td> <td>
<span>{{ item.TotalAll }}</span> <span>{{ item.TotalAll }}</span>
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<div v-if='!dataList||(dataList && dataList.length==0)' <div
style="width: 100%;border:1px solid #E6E6E6;display: flex;align-items: center;justify-content: center;height: 60px;"> v-if="!dataList || (dataList && dataList.length == 0)"
style="width: 100%;border:1px solid #E6E6E6;display: flex;align-items: center;justify-content: center;height: 60px;"
>
暂无数据 暂无数据
</div> </div>
</div> </div>
<studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType" :save-obj="stuOption" <studentRight-form
@close="closeStuForm" @success="getList" @reload="getList"> v-if="isShowStuRight"
:isJudgeTrans="isJudgeTrans"
:BelongType="BelongType"
:save-obj="stuOption"
@close="closeStuForm"
@success="getList"
@reload="getList"
>
</studentRight-form> </studentRight-form>
<studentFUForm v-if="isShowStuFU" :save-obj="stuOption" @close="closeStuForm"> <studentFUForm
v-if="isShowStuFU"
:save-obj="stuOption"
@close="closeStuForm"
>
</studentFUForm> </studentFUForm>
</div> </div>
</template> </template>
<script> <script>
import { import { GetSellAchievementsRankStat_V2 } from "../../../api/finance/index";
GetSellAchievementsRankStat_V2, import { queryCourseDropdownList } from "../../../api/course/index";
} from '../../../api/finance/index' import { queryEmployee } from "../../../api/users/user";
import { import {
queryCourseDropdownList, queryGuestStateList,
} from '../../../api/course/index' CreateTypeList,
import { GetStuChannelList,
queryEmployee GetCustomerList,
} from "../../../api/users/user"; getGuestLearningGoalsEnumList
import { } from "../../../api/sale/sale.js";
queryGuestStateList, import {
CreateTypeList, queryStuStageList,
GetStuChannelList, GetStudentTypeList,
GetCustomerList, GetPersonalDimension,
getGuestLearningGoalsEnumList getSchoolDropdown,
} from "../../../api/sale/sale.js"; getStudentDorpDownList
import { } from "../../../api/school/index";
queryStuStageList, import { EduDownLoad } from "../../../api/common/common";
GetStudentTypeList, import studentRightForm from "../../../components/school/student/studentRight-form";
GetPersonalDimension, import studentFUForm from "../../../components/school/student/studentFu-form";
getSchoolDropdown, import { mapState } from "vuex";
getStudentDorpDownList
} from "../../../api/school/index";
import {
EduDownLoad
} from "../../../api/common/common";
import studentRightForm from "../../../components/school/student/studentRight-form";
import studentFUForm from "../../../components/school/student/studentFu-form";
import {
mapState
} from "vuex";
export default { export default {
meta: { meta: {
title: "教师学员跟踪" title: "教师学员跟踪"
}, },
props: {}, props: {},
components: { components: {
studentRightForm, studentRightForm,
studentFUForm studentFUForm
}, },
data() { data() {
return { return {
msg: { msg: {
StartMonth: '', StartMonth: "",
EndMonth: '', EndMonth: ""
},
//归属类型列表
BelongTypeList: [
{
Id: 1,
Name: "全部"
}, },
//归属类型列表 {
BelongTypeList: [{ Id: 2,
Id: 1, Name: "我负责的"
Name: "全部" },
}, {
{ Id: 3,
Id: 2, Name: "我协同的"
Name: "我负责的" },
}, {
{ Id: 4,
Id: 3, Name: "我下属的"
Name: "我协同的" }
}, ],
{
Id: 4,
Name: "我下属的"
}
],
loading: false, loading: false,
dataList: [], //列表数据 dataList: [], //列表数据
PageCount: 0, PageCount: 0,
customTypeList: [], //客户类型 customTypeList: [], //客户类型
customState: [], customState: [],
isMyStuList: [{ isMyStuList: [
Id: '-1', {
Name: '不限' Id: "-1",
}, { Name: "不限"
Id: '1', },
Name: '是' {
}, { Id: "1",
Id: '0', Name: "是"
Name: '否' },
}, ], {
hetongList: [{ Id: "0",
Id: '1', Name: "否"
Name: '正常' }
}, { ],
Id: '2', hetongList: [
Name: '退学' {
}, { Id: "1",
Id: '5', Name: "正常"
Name: '停课' },
}, { {
Id: '7', Id: "2",
Name: '毕业' Name: "退学"
}, ], },
dateArray: [], //日期数组 {
RListlength: 0, Id: "5",
titlelist: [], Name: "停课"
stuOption: null, },
BelongType: 1, {
isShowStuRight: false, Id: "7",
isJudgeTrans: 1, Name: "毕业"
SubordList: [], //我的下属数据 }
AllSubordList: [], ],
stuOption: null, dateArray: [], //日期数组
isShowStuFU: false, RListlength: 0,
morequery: true, titlelist: [],
CompanyList: [], stuOption: null,
allCourseList: [], //课程 BelongType: 1,
myCourseList: [], isShowStuRight: false,
RoleListData: [], //课程顾问下拉数据 isJudgeTrans: 1,
customFromList: [], //客户来源 SubordList: [], //我的下属数据
StuChannelList: [], //收客渠道 AllSubordList: [],
allStuChannelList: [], //所有收客渠道 stuOption: null,
customList: [], //同行列表 isShowStuFU: false,
allCustomList: [], //所有同行列表 morequery: true,
//员工列表 CompanyList: [],
employeeList: [], allCourseList: [], //课程
myEmployeeList: [], myCourseList: [],
TransListData: [], //转介人数据 RoleListData: [], //课程顾问下拉数据
MyTransListData: [], customFromList: [], //客户来源
goalsList: [], //学习目的列表 StuChannelList: [], //收客渠道
} allStuChannelList: [], //所有收客渠道
customList: [], //同行列表
allCustomList: [], //所有同行列表
//员工列表
employeeList: [],
myEmployeeList: [],
TransListData: [], //转介人数据
MyTransListData: [],
goalsList: [] //学习目的列表
};
},
created() {},
mounted() {
var d = new Date();
var currentY = d.getFullYear();
var currentM = d.getMonth();
var month = d.getMonth() + 1;
this.msg.StartMonth = currentY + "-" + currentM;
this.msg.EndMonth = currentY + "-" + month;
this.getList(); //获取规则
// this.getStuStageList();
// this.getCustomTypeList();
// this.GetSubordList();
// this.getBranchList();
// this.getCourseList(); //获取课程下拉
// this.getRole();
// this.getCustomFrom();
// this.GetStuChannelList();
// this.GetCustomerList();
// this.getEmployeeList();
// this.getStudentDorpDown();
// this.queryGoalsList();
// this.downloadStudentFollow();
},
methods: {
downloadStudentFollow() {
var msg = JSON.parse(JSON.stringify(this.msg));
this.loading = true;
EduDownLoad(
"/StudentStat/DownLoadStudentFollowUp",
msg,
"学员跟踪.xls",
res => {
this.loading = false;
}
);
}, },
created() { //获取学习目的列表
queryGoalsList() {
getGuestLearningGoalsEnumList({}).then(res => {
this.goalsList = res.Data;
});
}, },
mounted() { //获取收客渠道
var d = new Date() GetStuChannelList() {
var currentY = d.getFullYear(); GetStuChannelList({}).then(res => {
var currentM = d.getMonth(); if (res.Code == 1) {
var month = d.getMonth()+1; this.StuChannelList = res.Data;
this.msg.StartMonth = currentY + '-' + currentM this.allStuChannelList = res.Data;
this.msg.EndMonth = currentY + '-' + month }
this.getList(); //获取规则 });
// this.getStuStageList();
// this.getCustomTypeList();
// this.GetSubordList();
// this.getBranchList();
// this.getCourseList(); //获取课程下拉
// this.getRole();
// this.getCustomFrom();
// this.GetStuChannelList();
// this.GetCustomerList();
// this.getEmployeeList();
// this.getStudentDorpDown();
// this.queryGoalsList();
// this.downloadStudentFollow();
}, },
methods: { //筛选渠道
downloadStudentFollow() { filterStuChannel(val, update) {
var msg = JSON.parse(JSON.stringify(this.msg)); update(() => {
this.loading = true; if (val === "") {
EduDownLoad( this.StuChannelList = JSON.parse(
"/StudentStat/DownLoadStudentFollowUp", JSON.stringify(this.allStuChannelList)
msg,
"学员跟踪.xls", res => {
this.loading = false;
}
);
},
//获取学习目的列表
queryGoalsList() {
getGuestLearningGoalsEnumList({}).then(res => {
this.goalsList = res.Data;
});
},
//获取收客渠道
GetStuChannelList() {
GetStuChannelList({}).then(res => {
if (res.Code == 1) {
this.StuChannelList = res.Data;
this.allStuChannelList = res.Data;
}
});
},
//筛选渠道
filterStuChannel(val, update) {
update(() => {
if (val === "") {
this.StuChannelList = JSON.parse(
JSON.stringify(this.allStuChannelList)
);
} else {
const needle = val.toLowerCase();
this.StuChannelList = this.allStuChannelList.filter(
v => v.Name.toLowerCase().indexOf(needle) > -1
);
}
});
},
//获取客户来源
getCustomFrom() {
CreateTypeList({}).then(res => {
if (res.Code == 1) {
this.customFromList = res.Data;
}
});
},
//获取客户下拉数据
GetCustomerList() {
let msg = {
QCreateBy: 0
};
GetCustomerList(msg).then(res => {
if (res.Code == 1) {
this.customList = res.Data;
this.allCustomList = res.Data;
}
});
},
//筛选客户
filterFn(val, update) {
update(() => {
if (val === "") {
this.customList = JSON.parse(JSON.stringify(this.allCustomList));
} else {
const needle = val.toLowerCase();
this.customList = this.allCustomList.filter(
v => v.CustomerName.toLowerCase().indexOf(needle) > -1
);
}
});
},
//获取员工列表
getEmployeeList() {
queryEmployee({
IsLeave: 1
}).then(res => {
this.employeeList = res.Data;
this.myEmployeeList = res.Data;
});
},
//筛选员工
filterEmployee(val, update, abort) {
update(() => {
this.myEmployeeList = this.employeeList.filter(
v => v.EmployeeName.indexOf(val) > -1
); );
}); } else {
}, const needle = val.toLowerCase();
//获取转介人下拉 this.StuChannelList = this.allStuChannelList.filter(
getStudentDorpDown() { v => v.Name.toLowerCase().indexOf(needle) > -1
getStudentDorpDownList().then(res => {
if (res.Code == 1) {
this.TransListData = res.Data;
this.MyTransListData = res.Data;
}
});
},
//筛选转介人
filterStudent(val, update, abort) {
update(() => {
this.MyTransListData = this.TransListData.filter(
v => v.StuName.indexOf(val) > -1
); );
}); }
}, });
getRole() { },
queryEmployee({ //获取客户来源
IsLeave: 1, getCustomFrom() {
UserRole: 2 CreateTypeList({}).then(res => {
}).then(res => { if (res.Code == 1) {
this.RoleListData = res.Data; this.customFromList = res.Data;
}); }
}, });
getBranchList() { //获取校区 },
getSchoolDropdown({}).then(res => { //获取客户下拉数据
GetCustomerList() {
let msg = {
QCreateBy: 0
};
GetCustomerList(msg).then(res => {
if (res.Code == 1) {
this.customList = res.Data;
this.allCustomList = res.Data;
}
});
},
//筛选客户
filterFn(val, update) {
update(() => {
if (val === "") {
this.customList = JSON.parse(JSON.stringify(this.allCustomList));
} else {
const needle = val.toLowerCase();
this.customList = this.allCustomList.filter(
v => v.CustomerName.toLowerCase().indexOf(needle) > -1
);
}
});
},
//获取员工列表
getEmployeeList() {
queryEmployee({
IsLeave: 1
}).then(res => {
this.employeeList = res.Data;
this.myEmployeeList = res.Data;
});
},
//筛选员工
filterEmployee(val, update, abort) {
update(() => {
this.myEmployeeList = this.employeeList.filter(
v => v.EmployeeName.indexOf(val) > -1
);
});
},
//获取转介人下拉
getStudentDorpDown() {
getStudentDorpDownList().then(res => {
if (res.Code == 1) {
this.TransListData = res.Data;
this.MyTransListData = res.Data;
}
});
},
//筛选转介人
filterStudent(val, update, abort) {
update(() => {
this.MyTransListData = this.TransListData.filter(
v => v.StuName.indexOf(val) > -1
);
});
},
getRole() {
queryEmployee({
IsLeave: 1,
UserRole: 2
}).then(res => {
this.RoleListData = res.Data;
});
},
getBranchList() {
//获取校区
getSchoolDropdown({})
.then(res => {
var tempArray = res.Data; var tempArray = res.Data;
if (!tempArray) { if (!tempArray) {
tempArray = []; tempArray = [];
} }
tempArray.unshift({ tempArray.unshift({
SId: '-1', SId: "-1",
SName: "不限" SName: "不限"
}) });
this.CompanyList = tempArray; this.CompanyList = tempArray;
}).catch(() => {
})
},
//获取课程
getCourseList() {
queryCourseDropdownList({
IsQPrice: 1
}).then(res => {
if (res.Code == 1) {
let data = res.Data
this.allCourseList = JSON.parse(JSON.stringify(data));
this.myCourseList = JSON.parse(JSON.stringify(data));
}
}) })
}, .catch(() => {});
//获取我下属的下拉数据 },
GetSubordList() { //获取课程
GetPersonalDimension().then(res => { getCourseList() {
if (res.Code == 1) { queryCourseDropdownList({
this.SubordList = res.Data; IsQPrice: 1
this.AllSubordList = res.Data; }).then(res => {
} if (res.Code == 1) {
}); let data = res.Data;
}, this.allCourseList = JSON.parse(JSON.stringify(data));
//筛选转介人 this.myCourseList = JSON.parse(JSON.stringify(data));
filterSubord(val, update, abort) { }
update(() => { });
this.SubordList = this.AllSubordList.filter( },
v => v.EmployeeName.indexOf(val) > -1 //获取我下属的下拉数据
); GetSubordList() {
}); GetPersonalDimension().then(res => {
}, if (res.Code == 1) {
resetSearch() { this.SubordList = res.Data;
this.msg.pageIndex = 1; this.AllSubordList = res.Data;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
getList(type) {
this.loading = true;
let msg = JSON.parse(JSON.stringify(this.msg))
if (this.dateArray && this.dateArray.length > 0) {
msg.StartMonth = this.dateArray[0];
msg.EndMonth = this.dateArray[1];
} }
});
},
//筛选转介人
filterSubord(val, update, abort) {
update(() => {
this.SubordList = this.AllSubordList.filter(
v => v.EmployeeName.indexOf(val) > -1
);
});
},
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
getList(type) {
this.loading = true;
let msg = JSON.parse(JSON.stringify(this.msg));
if (this.dateArray && this.dateArray.length > 0) {
msg.StartMonth = this.dateArray[0];
msg.EndMonth = this.dateArray[1];
}
GetSellAchievementsRankStat_V2(msg).then(res => { GetSellAchievementsRankStat_V2(msg)
this.loading = false; .then(res => {
this.RListlength = res.Data && res.Data[0].MonthList this.loading = false;
this.titlelist = [{ this.RListlength = res.Data && res.Data[0].MonthList;
Name: '业绩', this.titlelist = [
{
Name: "业绩",
Id: 1, Id: 1,
index: 0 index: 0
}, { },
Name: '业绩比例', {
Name: "业绩比例",
Id: 2, Id: 2,
index: 0 index: 0
}, { },
Name: '订单返佣', {
Name: "订单返佣",
Id: 3, Id: 3,
index: 0 index: 0
},{ },
Name: '提成', {
Name: "提成",
Id: 4, Id: 4,
index: 0 index: 0
}, { },
Name: '返佣金额', {
Name: "返佣金额",
Id: 5, Id: 5,
index: 0 index: 0
}, { },
Name: '人头奖励', {
Name: "人头奖励",
Id: 6, Id: 6,
index: 0 index: 0
}, { },
Name: '合计', {
Name: "合计",
Id: 7, Id: 7,
index: 0 index: 0
},];
this.dataList = res.Data;
this.titlelist = [];
for (let i = 0; i < this.RListlength.length; i++) {
let obj = [{
Name: '业绩',
Id: 1,
index: i
}, {
Name: '业绩比例',
Id: 2,
index: i
}, {
Name: '订单返佣',
Id: 3,
index: i
},{
Name: '提成',
Id: 4,
index: i
}, {
Name: '返佣金额',
Id: 5,
index: i
}, {
Name: '人头奖励',
Id: 6,
index: i
}, {
Name: '合计',
Id: 7,
index: i
},]
this.titlelist = [...this.titlelist, ...obj]
} }
];
}) this.dataList = res.Data;
.catch(() => { this.titlelist = [];
this.loading = false; for (let i = 0; i < this.RListlength.length; i++) {
}); let obj = [
{
}, Name: "业绩",
//获取客户类型 Id: 1,
getCustomTypeList() { index: i
GetStudentTypeList().then(res => { },
if (res.Code == 1) { {
this.customTypeList = res.Data; Name: "业绩比例",
Id: 2,
index: i
},
{
Name: "订单返佣",
Id: 3,
index: i
},
{
Name: "提成",
Id: 4,
index: i
},
{
Name: "返佣金额",
Id: 5,
index: i
},
{
Name: "人头奖励",
Id: 6,
index: i
},
{
Name: "合计",
Id: 7,
index: i
}
];
this.titlelist = [...this.titlelist, ...obj];
} }
}) })
}, .catch(() => {
//获取客户阶段列表 this.loading = false;
getStuStageList() {
queryStuStageList().then(res => {
this.customState = res.Data;
}); });
}, },
getxuyue(index) { //获取客户类型
let obj = { getCustomTypeList() {
IntroductionNum: 0, GetStudentTypeList().then(res => {
RenewNum: 0 if (res.Code == 1) {
}; this.customTypeList = res.Data;
this.dataList.MonthList.forEach(x => {
if (x.MonthNum == index + 1) {
obj = x
}
})
return obj
},
//点击学生姓名弹出
getStuRight(obj) {
if (obj) {
this.stuOption = obj;
this.BelongType = 3;
} }
this.isShowStuRight = true; });
}, },
closeStuForm() { //获取客户阶段列表
this.isShowStuRight = false; getStuStageList() {
this.isShowStuFU = false queryStuStageList().then(res => {
}, this.customState = res.Data;
resetBelong() { });
if (this.msg.BelongType != 4) { },
this.msg.pageIndex = 1; getxuyue(index) {
this.getList(); let obj = {
IntroductionNum: 0,
RenewNum: 0
};
this.dataList.MonthList.forEach(x => {
if (x.MonthNum == index + 1) {
obj = x;
} }
}, });
lookgengduo(obj, time) { //跟进备注 return obj;
},
//点击学生姓名弹出
getStuRight(obj) {
if (obj) {
this.stuOption = obj;
this.BelongType = 3;
}
this.isShowStuRight = true;
},
closeStuForm() {
this.isShowStuRight = false;
this.isShowStuFU = false;
},
resetBelong() {
if (this.msg.BelongType != 4) {
this.msg.pageIndex = 1;
this.getList();
}
},
lookgengduo(obj, time) {
//跟进备注
//计算时间 月底日期 //计算时间 月底日期
let Month = time.split('-')[0] + '-' + time.split('-')[1] + '-01' let Month = time.split("-")[0] + "-" + time.split("-")[1] + "-01";
let date = new Date(Month); let date = new Date(Month);
let currentMonth = date.getMonth(); let currentMonth = date.getMonth();
let nextMonth = ++currentMonth; let nextMonth = ++currentMonth;
let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
let oneDay = 1000 * 60 * 60 * 24; let oneDay = 1000 * 60 * 60 * 24;
let endDate = new Date(nextMonthFirstDay - oneDay) let endDate = new Date(nextMonthFirstDay - oneDay);
let endMonth = time.split('-')[0] + '-' + time.split('-')[1] + '-' + endDate.getDate() let endMonth =
if (obj) { time.split("-")[0] + "-" + time.split("-")[1] + "-" + endDate.getDate();
this.stuOption = obj; if (obj) {
this.stuOption.STime = Month; this.stuOption = obj;
this.stuOption.ETime = endMonth; this.stuOption.STime = Month;
this.BelongType = obj.BelongType; this.stuOption.ETime = endMonth;
this.BelongType = obj.BelongType;
}
this.isShowStuFU = true;
},
filterFnkec(val, update) {
//课程的栓选
update(() => {
if (val === "") {
this.myCourseList = this.allCourseList;
} else {
const needle = val.toLowerCase();
this.myCourseList = this.allCourseList.filter(
v => v.CourseName.toLowerCase().indexOf(needle) > -1
);
} }
this.isShowStuFU = true; });
},
}, getCurseManager(row) {
filterFnkec(val, update) { //课程的栓选 let managerName = "<span class='text-grey-4'>暂未推送</span>";
update(() => { if (row.AssistList && row.AssistList.length > 0) {
if (val === '') { row.AssistList.forEach(y => {
this.myCourseList = this.allCourseList if (y.AssistType == 2) {
} else { managerName = `<span class='text-dark'>${y.AssistName}</span>`;
const needle = val.toLowerCase();
this.myCourseList = this.allCourseList.filter(v => v.CourseName.toLowerCase().indexOf(needle) > -1);
} }
}) });
}, }
getCurseManager(row) { return managerName;
let managerName = "<span class='text-grey-4'>暂未推送</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 2) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
}
});
}
return managerName;
},
getTeacherManager(row) {
let managerName = "<span class='text-grey-4'>暂无</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 4) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
}
});
}
return managerName;
},
}, },
getTeacherManager(row) {
let managerName = "<span class='text-grey-4'>暂无</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 4) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
}
});
}
return managerName;
}
} }
};
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style> </style>
<style scoped> <style scoped>
/deep/.el-input__inner, /deep/.el-input__inner,
/deep/.el-range-input { /deep/.el-range-input {
background-color: transparent; background-color: transparent;
border: none; border: none;
} }
.stics { .stics {
padding: 10px 20px; padding: 10px 20px;
background: #DDDEE0; background: #dddee0;
border-radius: 4px; border-radius: 4px;
font-size: 13px; font-size: 13px;
color: #000000; color: #000000;
font-weight: bold font-weight: bold;
} }
.stics .stics-name { .stics .stics-name {
color: #2D2D2D; color: #2d2d2d;
font-weight: 600; font-weight: 600;
margin-right: 10px margin-right: 10px;
} }
.roatImg { .roatImg {
transform: rotate(180deg); transform: rotate(180deg);
} }
</style> </style>
\ No newline at end of file
...@@ -65,7 +65,6 @@ ...@@ -65,7 +65,6 @@
<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 v-if="isReturnperiods" prop="TotalMoney" label="累计金额"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="TotalMoney" label="累计金额"> </el-table-column>
<el-table-column v-if="isReturnperiods" prop="TotalEmployee" label="个人直客累计金额"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="TotalEmployee" label="个人直客累计金额"> </el-table-column>
...@@ -76,8 +75,8 @@ ...@@ -76,8 +75,8 @@
<el-table-column v-if="isReturnperiods" prop="CreateDate" label="创建时间"> </el-table-column> <el-table-column v-if="isReturnperiods" prop="CreateDate" label="创建时间"> </el-table-column>
<el-table-column v-if="isReturnperiods" 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">
<a @click="goDetails(item)" <a v-for="(item,index) in scope.row.FinanceIdList" :key="index" @click="goDetails(item)"
style="cursor:pointer;color:blue;text-decoration:underline;display:inline-block;margin-right:10px;">{{item}}</a> style="cursor:pointer;color:blue;text-decoration:underline;display:inline-block;margin-right:10px;">{{item}}</a>
</template> </template>
</template> </template>
...@@ -88,13 +87,12 @@ ...@@ -88,13 +87,12 @@
<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>
<template v-if="isReturnperiods">
<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> </template>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
......
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