Commit a8f5ade5 authored by 罗超's avatar 罗超

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

parents 28a62dac fe664ebd
...@@ -330,6 +330,18 @@ export function SetSynvEduEmployee(data) { ...@@ -330,6 +330,18 @@ export function SetSynvEduEmployee(data) {
}) })
} }
/**
* 初始化同步企业微信标签
*
*/
export function getWeChatChannelCoustomerPageList(data) {
return request({
url: '/QYWeChat/GetWeChatChannelCoustomerPageList',
method: 'post',
data
})
}
......
...@@ -6,18 +6,18 @@ ...@@ -6,18 +6,18 @@
</div> </div>
</div> --> </div> -->
<div class="page-content"> <div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat :wrap-cells='true' <q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-column-table" separator="none" title="" :data="dataList" :columns="columns" class="sticky-column-table" separator="none" title="" :data="dataList" :columns="columns"
row-key="name"> row-key="name">
<template v-slot:body-cell-title="props"> <template v-slot:body-cell-title="props">
<q-td :props="props" style="max-width: 200px;"> <q-td :props="props" style="max-width: 200px;white-space: normal;word-break:break-all">
<span>{{getType(props.row,'title')}}</span> {{getType(props.row,'title')}}
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Content="props"> <template v-slot:body-cell-Content="props">
<q-td :props="props" style="max-width: 500px;"> <q-td :props="props" style="max-width: 500px;white-space: normal;word-break:break-all">
<div > <div >
<span v-if="props.row.Type==1">{{getType(props.row,'content')}}</span> <span v-if="props.row.Type==1">{{getType(props.row,'content')}}</span>
<q-img v-if="props.row.Type==2 || props.row.Type==3 || props.row.Type==6" <q-img v-if="props.row.Type==2 || props.row.Type==3 || props.row.Type==6"
......
...@@ -11,12 +11,12 @@ ...@@ -11,12 +11,12 @@
label="添加文本" @click="goadd()"></q-btn> label="添加文本" @click="goadd()"></q-btn>
</template> </template>
<template v-slot:body-cell-title="props"> <template v-slot:body-cell-title="props">
<q-td :props="props" style="max-width: 200px"> <q-td :props="props" style="max-width: 200px;white-space: normal;word-break:break-all">
<span>{{props.row.TextModel && props.row.TextModel.Title?props.row.TextModel.Title:''}}</span> <span>{{props.row.TextModel && props.row.TextModel.Title?props.row.TextModel.Title:''}}</span>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Content="props"> <template v-slot:body-cell-Content="props">
<q-td :props="props" style="max-width: 500px;"> <q-td :props="props" style="max-width: 500px;white-space: normal;word-break:break-all">
<span>{{props.row.TextModel && props.row.TextModel.Content?props.row.TextModel.Content:''}}</span> <span>{{props.row.TextModel && props.row.TextModel.Content?props.row.TextModel.Content:''}}</span>
</q-td> </q-td>
</template> </template>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<q-card-section class="q-pt-none scroll" style="max-height: 70vh"> <q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap"> <div class="row wrap">
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.PaperName" ref="PaperName" <q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.PaperName" ref="PaperName"
class="col-12 q-pr-lg q-pb-lg" label="文件夹名称" :rules="[val => !!val || '请填写文件夹名称']" /> class="col-12 q-pb-lg" label="文件夹名称" :rules="[val => !!val || '请填写文件夹名称']" />
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
saveObj: { saveObj: {
type: Object, type: Object,
default: null default: null
},
FaParentId: {
type: Number,
default: null
} }
}, },
data() { data() {
...@@ -41,12 +45,14 @@ ...@@ -41,12 +45,14 @@
PaperType: 1, //试卷类型(1-文件夹,2-试卷) PaperType: 1, //试卷类型(1-文件夹,2-试卷)
ParentId: 0, //上级文件夹编号 ParentId: 0, //上级文件夹编号
}, },
saveLoading: false
} }
}, },
created() { created() {
}, },
mounted() { mounted() {
this.initObj() this.initObj()
}, },
methods: { methods: {
...@@ -66,24 +72,31 @@ ...@@ -66,24 +72,31 @@
this.persistent = false this.persistent = false
}, },
setPaperFolderInfo() { setPaperFolderInfo() {
this.saveLoading = true this.$refs.PaperName.validate();
savePaperFolderInfo(this.objOption).then(res => { if (!this.$refs.PaperName.hasError) {
this.saveLoading = false this.saveLoading = true;
this.$q.notify({ if (this.FaParentId) {
icon: 'iconfont icon-chenggong', this.objOption.ParentId = this.FaParentId;
color: 'accent', }
timeout: 2000, savePaperFolderInfo(this.objOption).then(res => {
message: '数据保存成功!', this.saveLoading = false
position: 'top' this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit("success")
this.closeSaveForm()
}).catch(() => {
this.saveLoading = false
}) })
this.$emit("success") }
this.closeSaveForm()
}).catch(() => {
this.saveLoading = false
})
}, },
}, },
} }
</script> </script>
<style> <style>
</style> </style>
\ No newline at end of file
...@@ -178,14 +178,14 @@ ...@@ -178,14 +178,14 @@
</span> </span>
</div> </div>
<div class="Item_Main"> <div class="Item_Main">
<div class="role_ItemList" v-for="(subItem,subIndex) in SubMenuList"> <div class="role_ItemList" v-for="(subItem,subIndex) in SubMenuList" :key="subIndex">
<div class="role_SecondItem"> <div class="role_SecondItem">
<span>{{subItem.MenuName}}</span> <span>{{subItem.MenuName}}</span>
<q-checkbox v-model="subItem.IsChecked" @input="twocheck(subIndex)" /> <q-checkbox v-model="subItem.IsChecked" @input="twocheck(subIndex)" />
</div> </div>
<div class="role_TreeList"> <div class="role_TreeList">
<ul> <ul>
<li v-for="(x,j) in subItem.SubList"> <li v-for="(x,j) in subItem.SubList" :key="j">
<span style="width: 15px;display: inline-block" <span style="width: 15px;display: inline-block"
@click="x.showChildren=!x.showChildren,$forceUpdate()"> @click="x.showChildren=!x.showChildren,$forceUpdate()">
<i class="iconfont icon-sanjiaoxing-you" v-if="x.showChildren==false && x.SubList.length>0" <i class="iconfont icon-sanjiaoxing-you" v-if="x.showChildren==false && x.SubList.length>0"
...@@ -197,7 +197,7 @@ ...@@ -197,7 +197,7 @@
@input="threecheck(subIndex,j)"></q-checkbox> @input="threecheck(subIndex,j)"></q-checkbox>
<span>{{x.MenuName}}</span> <span>{{x.MenuName}}</span>
<ul v-if="x.SubList.length>0&& x.showChildren==true" style="margin-left: 35px"> <ul v-if="x.SubList.length>0&& x.showChildren==true" style="margin-left: 35px">
<li v-for="(a,b) in x.SubList"> <li v-for="(a,b) in x.SubList" :key="b">
<q-checkbox v-model="a.IsChecked" size="30px" style="margin-bottom: 2px" <q-checkbox v-model="a.IsChecked" size="30px" style="margin-bottom: 2px"
@input="fourcheck(subIndex,j,b)"></q-checkbox> @input="fourcheck(subIndex,j,b)"></q-checkbox>
<span>{{a.MenuName}}</span> <span>{{a.MenuName}}</span>
...@@ -415,9 +415,9 @@ ...@@ -415,9 +415,9 @@
type2 = true type2 = true
} }
}) })
if (type2 == false) { // if (type2 == false) {
AuthMenuList[checkedIndex].SubList[twoindex].IsChecked = false // AuthMenuList[checkedIndex].SubList[twoindex].IsChecked = false
} // }
let type = false //找第二级有选择的内容 let type = false //找第二级有选择的内容
AuthMenuList[checkedIndex].SubList.forEach(x => { AuthMenuList[checkedIndex].SubList.forEach(x => {
if (x.IsChecked == true) { if (x.IsChecked == true) {
......
...@@ -487,7 +487,7 @@ ...@@ -487,7 +487,7 @@
</div> </div>
<div class="page-body"> <div class="page-body">
<q-btn color="accent" class="q-mr-md" label="保存" @click="savemove()" style="width: 100px;" <q-btn color="accent" class="q-mr-md" label="保存" @click="savemove()" style="width: 100px;"
:loading="loading" /> :loading="loading2" />
<q-btn class="q-mr-md" label="返回" @click="goblck()" style="width: 60px;" /> <q-btn class="q-mr-md" label="返回" @click="goblck()" style="width: 60px;" />
</div> </div>
<chaneelcodeform v-if="ismember" @close="getclose()" :peopletype='addMsg.Type' :lsday="lsday" <chaneelcodeform v-if="ismember" @close="getclose()" :peopletype='addMsg.Type' :lsday="lsday"
...@@ -532,6 +532,7 @@ ...@@ -532,6 +532,7 @@
data() { data() {
return { return {
loading: false, loading: false,
loading2:false,
radiolist:[{Id:1,Name:"开启"},{Id:2,Name:'关闭'}], radiolist:[{Id:1,Name:"开启"},{Id:2,Name:'关闭'}],
radiolist2:[{Id:1,Name:"需验证"},{Id:2,Name:'自动添加'}], radiolist2:[{Id:1,Name:"需验证"},{Id:2,Name:'自动添加'}],
radiolist3:[{Id:1,Name:"单人"},{Id:2,Name:'多人'}], radiolist3:[{Id:1,Name:"单人"},{Id:2,Name:'多人'}],
...@@ -972,6 +973,7 @@ ...@@ -972,6 +973,7 @@
if(this.addMsg.WelcomeEnable==1 && this.isall == false){ if(this.addMsg.WelcomeEnable==1 && this.isall == false){
this.welcometverification() this.welcometverification()
} }
this.loading2 = true
if(this.isall == false){ if(this.isall == false){
console.log(this.addMsg,'最后打印') console.log(this.addMsg,'最后打印')
//调用接口 //调用接口
...@@ -984,9 +986,11 @@ ...@@ -984,9 +986,11 @@
message: res.Message, message: res.Message,
position: 'top' position: 'top'
}) })
this.loading2 = false
this.goblck() this.goblck()
} }
}).catch(() => { }).catch(() => {
this.loading2 = false
}) })
} }
......
<template>
<div class="channelcodeList page-body">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<!-- <div class="col-3">
<q-input @keyup.enter.native="changePage(1)" clearable standout="bg-primary text-white" v-model="msg.Name"
label="渠道码名称" @clear="changePage(1)" maxlength="20" />
</div> -->
</div>
</div>
<div class="page-content">
</div>
</div>
</template>
<script>
import {
} from '../../api/system/wechat';
export default {
meta: {
title: "渠道码统计"
},
name: "channelCodeStatistics",
data() {
return {
loading: false,
}
},
created() {
console.log(this.$route.query)
},
methods: {
}
}
</script>
<style>
</style>
\ No newline at end of file
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
</template> </template>
<template v-slot:body-cell-LabelList="props"> <template v-slot:body-cell-LabelList="props">
<q-td :props="props"> <q-td :props="props">
<div style="max-width: 300px;" v-if="props.row.LabelList.length>0"> <div style="max-width: 300px;white-space: normal;word-break:break-all" v-if="props.row.LabelList.length>0">
<span v-for="(x,y) in props.row.LabelList" :key='y'> <span v-for="(x,y) in props.row.LabelList" :key='y'>
{{x}}{{props.row.LabelList.length!=y+1?'、':''}} {{x}}{{props.row.LabelList.length!=y+1?'、':''}}
</span> </span>
...@@ -65,8 +65,25 @@ ...@@ -65,8 +65,25 @@
<q-td :props="props"> <q-td :props="props">
<q-btn flat size="xs" icon="edit" style="font-weight:400;color: #3FC4FF" class="q-mr-xs" label="编辑" <q-btn flat size="xs" icon="edit" style="font-weight:400;color: #3FC4FF" class="q-mr-xs" label="编辑"
@click="goedit(props.row)" /> @click="goedit(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" class="q-mr-xs" label="删除" <q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left: 10px">
@click="goDetailed(props.row)" /> <q-list>
<q-item clickable v-close-popup @click="showcustomer(props.row)">
<q-item-section>
<q-item-label>客户</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="downs(props.row)">
<q-item-section>
<q-item-label>下载</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="statistics(props.row)">
<q-item-section>
<q-item-label>统计</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-td> </q-td>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
...@@ -76,18 +93,43 @@ ...@@ -76,18 +93,43 @@
</q-table> </q-table>
</div> </div>
<q-dialog v-model="isDetails"> <q-dialog v-model="isDetails">
<q-card style="width: 450px;"> <q-card style="width: 450px;" v-if="Detailsobj && Detailsobj.WXQRCode">
<q-card-section class="row items-center q-pb-none"> <q-card-section class="row items-center q-pb-none">
<div class="text-h6">图片详情</div> <div class="text-h6">{{Detailsobj.Name}}</div>
<q-space /> <q-space />
<q-btn icon="close" flat round dense v-close-popup /> <q-btn icon="close" flat round dense v-close-popup />
</q-card-section> </q-card-section>
<q-card-section v-if="Detailsobj && Detailsobj.WXQRCode"> <q-card-section >
<q-img :src="Detailsobj.WXQRCode" style="width:400px;height: 400px;margin-left: 9px;"></q-img> <q-img :src="Detailsobj.WXQRCode" style="width:400px;height: 400px;margin-left: 9px;"></q-img>
</q-card-section> </q-card-section>
</q-card> </q-card>
</q-dialog> </q-dialog>
<q-dialog v-model="isCustom">
<q-card style="width: 850px;max-width: 80vw;">
<q-card-section class="row items-center q-pb-none">
<div class="text-h6">扫码客户</div>
<q-space />
<q-btn icon="close" flat round dense v-close-popup />
</q-card-section>
<q-card-section >
<q-table
title=""
:data="customdata"
:columns="columns2"
row-key="name"
:loading="loading" no-data-label="暂无相关数据"
>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="customMsg.pageIndex" color="primary" :max="custompageCount"
:input="true" @input="changePage2" />
</template>
</q-table>
</q-card-section>
</q-card>
</q-dialog>
</div> </div>
...@@ -98,7 +140,8 @@ ...@@ -98,7 +140,8 @@
getWeChatChannelPageList, getWeChatChannelPageList,
getWeChatChannelGroupList getWeChatChannelGroupList,
getWeChatChannelCoustomerPageList
} from '../../api/system/wechat'; } from '../../api/system/wechat';
import { import {
queryEmployee queryEmployee
...@@ -113,8 +156,11 @@ ...@@ -113,8 +156,11 @@
return { return {
loading: false, loading: false,
ISsystem: false, ISsystem: false,
isCustom:false,
data: [], data: [],
pageCount: 0, pageCount: 0,
customdata:[],
custompageCount:0,
msg: { msg: {
pageIndex: 1, pageIndex: 1,
pageSize: 15, pageSize: 15,
...@@ -123,6 +169,11 @@ ...@@ -123,6 +169,11 @@
Name:'', Name:'',
Type: 0, Type: 0,
}, },
customMsg:{
pageIndex: 1,
pageSize: 10,
ChannelId:0
},
typeList: [ typeList: [
{ Id: 0, Name: '不限' }, { Id: 0, Name: '不限' },
{ Id: 1, Name: '单人' }, { Id: 1, Name: '单人' },
...@@ -151,7 +202,7 @@ ...@@ -151,7 +202,7 @@
{ {
name: 'Type', name: 'Type',
field: 'Type', field: 'Type',
label: '分组', label: '类型',
align: 'left' align: 'left'
}, },
{ {
...@@ -184,6 +235,32 @@ ...@@ -184,6 +235,32 @@
field: 'DeptId' field: 'DeptId'
} }
], ],
columns2:[
{
name: 'DeptName',
label: '部门',
field: 'DeptName',
align: 'left'
},
{
name: 'EmpName',
label: '归属成员',
field: 'EmpName',
align: 'left'
},
{
name: 'CustomerName',
label: '客户名称',
field: 'CustomerName',
align: 'left'
},
{
name: 'CreateTime',
label: '添加时间',
field: 'CreateTime',
align: 'left'
},
],
GroupList: [], GroupList: [],
isDetails: false, isDetails: false,
Detailsobj: null Detailsobj: null
...@@ -208,9 +285,13 @@ ...@@ -208,9 +285,13 @@
}, },
changePage(e) { changePage(e) {
this.msg.pageIndex = 1 this.msg.pageIndex = e
this.getList() this.getList()
}, },
changePage2(e){
this.msg.pageIndex = e
this.getcustomerList()
},
getList() { getList() {
this.loading = true this.loading = true
getWeChatChannelPageList(this.msg).then(res => { getWeChatChannelPageList(this.msg).then(res => {
...@@ -256,9 +337,52 @@ ...@@ -256,9 +337,52 @@
}); });
}, },
showcustomer(row){//客户
this.customMsg.ChannelId = row.Id
this.getcustomerList()
},
getcustomerList(){
getWeChatChannelCoustomerPageList(this.customMsg).then(res => {
this.loading = false
this.customdata = res.Data.PageData;
this.custompageCount = res.Data.PageCount
this.isCustom = true
})
},
viewDetails(row) { viewDetails(row) {
this.Detailsobj = row this.Detailsobj = row
this.isDetails = true this.isDetails = true
},
downs(row){//二维码下载
this.downloadIamge(row.WXQRCode, row.Name)
},
downloadIamge(imgsrc, name) {//下载图片地址和图片名
var image = new Image();
// 解决跨域 Canvas 污染问题
image.setAttribute("crossOrigin", "anonymous");
image.onload = function() {
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
var context = canvas.getContext("2d");
context.drawImage(image, 0, 0, image.width, image.height);
var url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
var a = document.createElement("a"); // 生成一个a元素
var event = new MouseEvent("click"); // 创建一个单击事件
a.download = name || "photo"; // 设置图片名称
a.href = url; // 将生成的URL设置为a.href属性
a.dispatchEvent(event); // 触发a的单击事件
};
image.src = imgsrc;
},
statistics(row){//统计
this.$router.push({
path: '/enterprise/channelCodeStatistics',
query: {
Id: row.Id
}
});
} }
} }
......
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
</div> </div>
</div> </div>
<div class="page-option"> <div class="page-option">
<q-btn color="accent" size="sm" class="q-mr-md" label="新增文件夹" @click="showExamFolder(null)" /> <q-btn color="accent" size="sm" v-if="IsCreateFolder" class="q-mr-md" label="新增文件夹" @click="showExamFolder(null)" />
<q-btn-dropdown flat size="xs" color="dark" label="新增试卷" style="margin-left:10px;"> <q-btn-dropdown flat size="xs" color="dark" label="新增试卷" v-if="IsCreatePaper" style="margin-left:10px;">
<q-list> <q-list>
<q-item clickable v-close-popup @click="CreatePaper()"> <q-item clickable v-close-popup @click="CreatePaper()">
<q-item-section> <q-item-section>
...@@ -215,7 +215,7 @@ ...@@ -215,7 +215,7 @@
<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" />
</div> </div>
<paperfolderForm v-if="isShowExamFolder" :saveObj="examObj"  @close="closeExamForm"  @success="refreshPage"> <paperfolderForm v-if="isShowExamFolder" :saveObj="examObj" :FaParentId="msg.ParentId"  @close="closeExamForm"  @success="refreshPage">
</paperfolderForm> </paperfolderForm>
<movefolderForm v-if="isShowMoveFolder" :saveObj="examObj"  @close="closeExamForm"  @success="refreshPage"> <movefolderForm v-if="isShowMoveFolder" :saveObj="examObj"  @close="closeExamForm"  @success="refreshPage">
</movefolderForm> </movefolderForm>
...@@ -255,9 +255,20 @@ ...@@ -255,9 +255,20 @@
isShowMoveFolder: false, //是否显示 isShowMoveFolder: false, //是否显示
examObj: {}, //弹窗对象 examObj: {}, //弹窗对象
navList: [], //导航列表 navList: [], //导航列表
IsCreateFolder:false, //是否试卷创建文件夹权限
IsCreatePaper:false //是否创建试卷权限
} }
}, },
created() { created() {
let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限
if(x.FunctionCode == "Paper_CreateManager"){//判断是否试卷创建文件夹权限
this.IsCreateFolder = true;
}
if(x.FunctionCode == "Paper_CreatePaper"){//判断是否创建
this.IsCreatePaper = true;
}
})
}, },
mounted() { mounted() {
...@@ -269,7 +280,9 @@ ...@@ -269,7 +280,9 @@
}, },
//创建试卷 //创建试卷
CreatePaper() { CreatePaper() {
this.OpenNewUrl('/exam/paperCreate', {}) this.OpenNewUrl('/exam/paperCreate', {
ToParentId:this.msg.ParentId
})
}, },
//翻页 //翻页
changePage(val) { changePage(val) {
...@@ -307,7 +320,8 @@ ...@@ -307,7 +320,8 @@
PaperId = item.PaperId PaperId = item.PaperId
} }
this.OpenNewUrl('/exam/paperEdit', { this.OpenNewUrl('/exam/paperEdit', {
Id: PaperId Id: PaperId,
ToParentId: this.msg.ParentId
}) })
}, },
//新增修改文件夹 //新增修改文件夹
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<template v-if="templateMsg&&templateMsg.TemplateData&&templateMsg.TemplateData.length>0"> <template v-if="templateMsg&&templateMsg.TemplateData&&templateMsg.TemplateData.length>0">
<div v-for="(item,index) in templateMsg.TemplateData" :key="index" class="examTi_List"> <div v-for="(item,index) in templateMsg.TemplateData" :key="index" class="examTi_List">
<div class="examCreat_Top"> <div class="examCreat_Top">
<span>{{item.QuestionTypeName}}</span> &nbsp;&nbsp;<i class="iconfont icon-img_delete_small"></i> <span>{{item.QuestionTypeName}}</span> &nbsp;&nbsp;<i @click="delQuestion(templateMsg.TemplateData,index)" class="iconfont icon-img_delete_small"></i>
</div> </div>
<div style="padding:0 20px 10px 20px;"> <div style="padding:0 20px 10px 20px;">
<div class="row"> <div class="row">
...@@ -102,9 +102,16 @@ ...@@ -102,9 +102,16 @@
<div class="row"> <div class="row">
<q-select filled option-value="QId" option-label="Name" :options="questionTypeList" emit-value map-options <q-select filled option-value="QId" option-label="Name" :options="questionTypeList" emit-value map-options
label="更多题型" class="col-6 q-pr-lg" use-input clearable v-model="MoreQuestionTypeId" @input="changeQuestion" /> label="更多题型" class="col-6 q-pr-lg" use-input clearable v-model="MoreQuestionTypeId" @input="changeQuestion" />
<q-checkbox v-model="templateMsg.IsSaveTemplate" label="同时保存为组卷模板" /> <div class="row col-6" style="align-items:center;">
<div class="col-6">
<q-radio v-model="templateMsg.IsOpen" :val="1" label="私有" />
<q-radio v-model="templateMsg.IsOpen" :val="2" label="公开" />
</div>
<div class="col-6">
<q-checkbox v-model="templateMsg.IsSaveTemplate" label="同时保存为组卷模板" />
</div>
</div>
</div> </div>
<br /> <br />
<div class="row"> <div class="row">
<q-btn color="accent" size="sm" @click="setPaperTemplate" class="q-mr-md" label="保存" :loading="saveLoading" /> <q-btn color="accent" size="sm" @click="setPaperTemplate" class="q-mr-md" label="保存" :loading="saveLoading" />
...@@ -150,6 +157,8 @@ ...@@ -150,6 +157,8 @@
TemplateData: [], TemplateData: [],
TemplateBankIds: "", TemplateBankIds: "",
IsSaveTemplate: false, IsSaveTemplate: false,
ParentId:0,
IsOpen:1 //(1-私有,2-开放)
}, },
ShowBankName: "", //显示题库名称 ShowBankName: "", //显示题库名称
BankList: [], BankList: [],
...@@ -160,6 +169,9 @@ ...@@ -160,6 +169,9 @@
} }
}, },
created() { created() {
if(this.$route.query.ToParentId){
this.templateMsg.ParentId = parseInt(this.$route.query.ToParentId);
}
this.getQuestionType(); this.getQuestionType();
this.getDifficultyType(); this.getDifficultyType();
}, },
...@@ -424,6 +436,10 @@ ...@@ -424,6 +436,10 @@
} }
}); });
} }
},
//删除
delQuestion(item,index){
item.splice(index,1);
} }
} }
} }
......
...@@ -10,13 +10,14 @@ ...@@ -10,13 +10,14 @@
.Exam-main { .Exam-main {
width: 100%; width: 100%;
min-width: 1000px;
height: auto !important; height: auto !important;
overflow: hidden; overflow: hidden;
margin-top: 20px; margin-top: 20px;
} }
.Exam-left { .Exam-left {
width: 29%; width: 33%;
border-right: 1px solid #d9d9d9; border-right: 1px solid #d9d9d9;
border-bottom: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9;
border-radius: 3px; border-radius: 3px;
...@@ -232,6 +233,10 @@ ...@@ -232,6 +233,10 @@
<q-select filled option-value="Id" option-label="Name" :options="questionDifficultyTypeList" emit-value <q-select filled option-value="Id" option-label="Name" :options="questionDifficultyTypeList" emit-value
map-options label="难度" use-input clearable v-model="DataObj.DifficultyType" /> map-options label="难度" use-input clearable v-model="DataObj.DifficultyType" />
</div> </div>
<div style="margin:8px 0 0 20px">
<q-radio v-model="DataObj.IsOpen" :val="1" label="私有" />
<q-radio v-model="DataObj.IsOpen" :val="2" label="公开" />
</div>
</div> </div>
<div style="width:20%;text-align:right;"> <div style="width:20%;text-align:right;">
<q-btn color="accent" size="sm" class="q-mr-md" label="预览" /> <q-btn color="accent" size="sm" class="q-mr-md" label="预览" />
...@@ -243,9 +248,9 @@ ...@@ -243,9 +248,9 @@
<div class="Exam-left f1"> <div class="Exam-left f1">
<p class="Left-ptitel"> <p class="Left-ptitel">
<span>题量:<i>{{examNum}}</i></span> <span>题量:<i>{{examNum}}</i></span>
<span>  总分:<i>{{examScore}}</i></span> <span>  总分:<i>{{examScore.toFixed(2)}}</i></span>
</p> </p>
<div class="Left-list" style="height:740px;overflow:auto;"> <div class="Left-list" style="min-height:740px;overflow:auto;">
<template v-if="DataObj&&DataObj.GroupList&&DataObj.GroupList.length>0"> <template v-if="DataObj&&DataObj.GroupList&&DataObj.GroupList.length>0">
<div class="List-con1" v-for="(gItem,gIndex) in DataObj.GroupList" :key="gIndex"> <div class="List-con1" v-for="(gItem,gIndex) in DataObj.GroupList" :key="gIndex">
<div class="List-bt"> <div class="List-bt">
...@@ -254,7 +259,7 @@ ...@@ -254,7 +259,7 @@
(共{{ gItem.DetailsList?gItem.DetailsList.length:0 }}题,{{gItem.GScore}}分)</template> (共{{ gItem.DetailsList?gItem.DetailsList.length:0 }}题,{{gItem.GScore}}分)</template>
<template v-else> <template v-else>
<input style="width:160px;margin-right:10px;" v-model="gItem.GroupName" /> <input style="width:160px;margin-right:10px;" v-model="gItem.GroupName" />
<input style="width:40px;" filled v-model="gItem.GScore" @input="changeGroupScore(gItem)" /> <input style="width:40px;" filled v-model="gItem.GScore" @change="changeGroupScore(gItem)" />
</template> </template>
</strong> </strong>
<i class="iconfont icon-edit" title="编辑" style="font-size:18px;margin-right:5px;" <i class="iconfont icon-edit" title="编辑" style="font-size:18px;margin-right:5px;"
...@@ -502,6 +507,7 @@ ...@@ -502,6 +507,7 @@
PaperType: 2, //试卷类型(1-文件夹,2-试卷) PaperType: 2, //试卷类型(1-文件夹,2-试卷)
ParentId: 0, //父节点编号, ParentId: 0, //父节点编号,
GroupList: [], //试卷答题分类 GroupList: [], //试卷答题分类
IsOpen:1 //(1-私有,2-开放)
}, },
//点击问题对象 //点击问题对象
ChooseItem: null, ChooseItem: null,
...@@ -524,7 +530,10 @@ ...@@ -524,7 +530,10 @@
}, },
created() { created() {
if (this.$route.query && this.$route.query.Id) { if (this.$route.query && this.$route.query.Id) {
this.msg.PaperId = decodeURI(this.$route.query.Id) this.msg.PaperId = decodeURI(this.$route.query.Id);
}
if (this.$route.query && this.$route.query.ToParentId){
this.DataObj.ParentId = parseInt(this.$route.query.ToParentId);
} }
this.getQuestionType(); this.getQuestionType();
this.getDifficultyType(); this.getDifficultyType();
...@@ -572,7 +581,7 @@ ...@@ -572,7 +581,7 @@
sItem.Score = avgScore; sItem.Score = avgScore;
}) })
} }
this.calcPaper(); // this.calcPaper();
}, },
//上移下移(IsUp:0上移,1下移) //上移下移(IsUp:0上移,1下移)
MoveFatherItem(subIndex, IsUp) { MoveFatherItem(subIndex, IsUp) {
...@@ -846,12 +855,12 @@ ...@@ -846,12 +855,12 @@
this.examNum += x.DetailsList.length; this.examNum += x.DetailsList.length;
x.DetailsList.forEach(y => { x.DetailsList.forEach(y => {
if (y.Score) { if (y.Score) {
tempGScore += Number(y.Score) tempGScore += Number(y.Score);
this.examScore += Number(y.Score); this.examScore += Number(y.Score);
} }
}) })
} }
x.GScore = tempGScore; x.GScore = tempGScore.toFixed(2);
}) })
} }
}, },
......
...@@ -77,6 +77,8 @@ ...@@ -77,6 +77,8 @@
<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" label="同步到微信" @click="synchronization()" /> -->
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增员工" @click="EditManager(null,0)" /> <q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增员工" @click="EditManager(null,0)" />
<q-btn-dropdown outline size="sm" color="dark" label="更多"> <q-btn-dropdown outline size="sm" color="dark" label="更多">
<q-list> <q-list>
...@@ -204,6 +206,9 @@ ...@@ -204,6 +206,9 @@
GetLeaveStatus, GetLeaveStatus,
getEduEmployeeNumList getEduEmployeeNumList
} from '../../api/school/index' } from '../../api/school/index'
import {
SetSynvEduEmployee,
} from '../../api/system/wechat';
import { import {
BatchResetUserPassword BatchResetUserPassword
} from '../../api/users/user.js' } from '../../api/users/user.js'
...@@ -218,6 +223,10 @@ ...@@ -218,6 +223,10 @@
import employeeSet from '../../components/school/manager/employee-set' import employeeSet from '../../components/school/manager/employee-set'
import employeeInfo from '../../components/school/manager/employee-info' import employeeInfo from '../../components/school/manager/employee-info'
import selectTree from '../../components/common/select-tree' import selectTree from '../../components/common/select-tree'
import {
Loading,
QSpinnerPie
} from 'quasar'
export default { export default {
meta: { meta: {
title: "员工管理" title: "员工管理"
...@@ -681,7 +690,30 @@ ...@@ -681,7 +690,30 @@
this.$router.push({ this.$router.push({
path: tempStr path: tempStr
}); });
} },
synchronization(){
Loading.show({
message: '数据正在同步中,请稍后进入企业微信查看',
spinner:QSpinnerPie
})
SetSynvEduEmployee({}).then(res => {
if (res.Code == 1) {
that.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
Loading.hide()
}
})
.catch(err=>{
Loading.hide()
})
},
}, },
} }
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
<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" label="同步到微信" @click="synchronization()" /> -->
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增部门" @click="EditDept(null)" /> <q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增部门" @click="EditDept(null)" />
<q-btn color="secondary" flat size="sm" icon="iconfont icon-zuzhijiagou" label="组织机构图" <q-btn color="secondary" flat size="sm" icon="iconfont icon-zuzhijiagou" label="组织机构图"
@click="gotoRelation()" /> @click="gotoRelation()" />
...@@ -80,6 +81,9 @@ ...@@ -80,6 +81,9 @@
setDeptStatusInfo, setDeptStatusInfo,
getDeptTree getDeptTree
} from '../../api/system/dept' } from '../../api/system/dept'
import {
setSyncEduDepartment,
} from '../../api/system/wechat';
import { import {
getSchoolDropdown, getSchoolDropdown,
} from '../../api/school/index' } from '../../api/school/index'
...@@ -89,6 +93,10 @@ ...@@ -89,6 +93,10 @@
import deptForm from '../../components/system/dept-form' import deptForm from '../../components/system/dept-form'
import selectTree from '../../components/common/select-tree' import selectTree from '../../components/common/select-tree'
import selectSearch from '../../components/common/select-search' import selectSearch from '../../components/common/select-search'
import {
Loading,
QSpinnerPie
} from 'quasar'
export default { export default {
meta: { meta: {
title: "部门管理" title: "部门管理"
...@@ -295,6 +303,29 @@ ...@@ -295,6 +303,29 @@
} }
this.isShowDeptForm = true; this.isShowDeptForm = true;
}, },
synchronization(){
Loading.show({
message: '数据正在同步中,请稍后进入企业微信查看',
spinner:QSpinnerPie
})
setSyncEduDepartment({}).then(res => {
if (res.Code == 1) {
that.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
Loading.hide()
}
})
.catch(err=>{
Loading.hide()
})
},
//关闭弹窗 //关闭弹窗
closeDeptSaveForm() { closeDeptSaveForm() {
this.isShowDeptForm = false; this.isShowDeptForm = false;
......
...@@ -1219,7 +1219,12 @@ const routes = [{ ...@@ -1219,7 +1219,12 @@ const routes = [{
component: () => component: () =>
import("pages/enterprise/addchannelcode") import("pages/enterprise/addchannelcode")
}, },
{
path: "/enterprise/channelCodeStatistics", //企微 渠道码的统计页面
component: () =>
import("pages/enterprise/channelCodeStatistics")
},
], ],
......
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