Commit e6f555f0 authored by Mac's avatar Mac

1

parent 38f3c45f
...@@ -272,4 +272,29 @@ export function SetSynvEduEmployee(data) { ...@@ -272,4 +272,29 @@ export function SetSynvEduEmployee(data) {
method: 'post', method: 'post',
data data
}) })
} }
\ No newline at end of file /**
* 删除分组/标签
*
*/
export function getWeChatChannelGroupList(data) {
return request({
url: '/QYWeChat/GetWeChatChannelGroupList',
method: 'post',
data
})
}
/**
* 删除分组/标签
*
*/
export function getWeChatChannelPageList(data) {
return request({
url: '/QYWeChat/GetWeChatChannelPageList',
method: 'post',
data
})
}
This diff is collapsed.
<style>
.choiceappoval .ApprovalProcessBg {
background: #f8f8f8;
max-height: 400px;
overflow-y: auto;
}
.choiceappoval .Approval_yxList {
width: 300px;
background: #f8f8f8;
min-height: 400px;
max-height: 400px;
overflow-y: auto;
}
.choiceappoval .Approval_yxList li {
display: inline-block;
width: 100%;
line-height: 40px;
text-indent: 15px;
border-bottom: 1px dotted #eee;
}
</style>
<template>
<div>
<q-dialog v-model="IsShow" persistent>
<q-card style="width: 700px; max-width: 80vw;" class="choiceappoval">
<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-separator />
<q-card-section class="q-pt-none" style="padding: 20px 0;">
<div style="display: flex;align-items: flex-start;justify-content: space-between;">
<div style="width: 300px; margin: 0 20px;">
<p style="margin: 0 0 10px 0;display: flex;align-items: center;">选择:<el-input
style="width: 200px;" placeholder="输入关键字进行过滤" v-model="filterText">
</el-input>
</p>
<el-tree class='ApprovalProcessBg' :filter-node-method="filterNode" :data="memberList"
show-checkbox ref="treeUser" :props="defaultProps" :render-after-expand="false"
node-key="DeptId" @check-change="handleNodeChange">
</el-tree>
</div>
<div style="width: 300px; margin: 0 20px;">
<p style="margin: 0 0 20px 0;">已选:</p>
<div class="Approval_yxList">
<li v-for="item in showMember">{{item.DeptName}}
<i @click="mySetCheckedKeys(item.DeptId)"
class="el-icon-circle-close showMemberIcon"></i>
</li>
</div>
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn class="q-mr-md" label="取消" @click="closeEditOrder" />
<q-btn color="accent" class="q-mr-md" label="确定" @click="saveOrderInfo()" />
</q-card-actions>
</q-card>
</q-dialog>
</div>
</template>
<script>
import {
getEmployeeAddrBook
} from '../../api/users/user'
import selectMaterial from "./selectMaterial"
export default {
props: {
outerindex: {
type: String,
default: '',
},
byval:{
type: Array,
default: [],
},
cptype:{//1是列表上使用2 新增使用
type:String,
default: '1',
}
},
data() {
return {
IsShow: true,
memberList: [],
filterText: "",
defaultProps: {
children: 'ChildList',
label: 'DeptName',
},
userList: [],
showMember: [],
memberSetCheckedKeys: [],
sysUserKeys: [],
}
},
created() {
if(this.byval.length>0){
this.memberSetCheckedKeys = [];
this.showMember = JSON.parse(JSON.stringify(this.byval))
this.byval.forEach(x=>{
this.memberSetCheckedKeys.push(x.DeptId)
})
}
this.getMember()//部门下面选择员工
},
mounted() {
},
watch: {
filterText(val) {
this.$refs.treeUser.filter(val);
},
},
methods: {
getMember() {
let _arr = this.sysUserKeys.concat(this.memberSetCheckedKeys)
getEmployeeAddrBook({}).then(res => {
if (res.Code == 1) {
this.memberList = res.Data
let _this = this;
console.log(_arr)
_this.$refs.treeUser.setCheckedKeys(_arr);
}
}).catch(() => {
})
},
filterNode(value, data) {
if (!value) return true;
return data.DeptName.indexOf(value) !== -1;
},
handleNodeChange(data, checked) {
data.IsCheck = checked;
if (data.DataType == 2 && data.IsCheck) { //是员工且选中
let isExsit = false
this.showMember.forEach(x => {
if (x.DeptId == data.DeptId) {
isExsit = true
return false
}
})
if (!isExsit) {
this.showMember.push({
DeptName: data.DeptName,
DeptId: data.DeptId
})
this.memberSetCheckedKeys.push(data.DeptId)
}
} else if (data.DataType == 2 && !data.IsCheck) {
if (this.showMember.findIndex(item => item.DeptId === data.DeptId) != -1) {
this.showMember.splice(this.showMember.findIndex(item => item.DeptId === data.DeptId), 1)
this.memberSetCheckedKeys.splice(this.memberSetCheckedKeys.findIndex(item => item === data.DeptId), 1)
if (this.showMember.findIndex(item => item.DeptId === data.ParentId) != -1) {
this.memberSetCheckedKeys.splice(this.memberSetCheckedKeys.findIndex(item => item === data.ParentId), 1)
}
}
}
if (data.DataType != 2 && data.IsCheck) {
if (this.memberSetCheckedKeys.findIndex(item => item === data.DeptId) == -1) {
this.memberSetCheckedKeys.push(data.DeptId)
}
} else if (data.DataType == 2 && !data.IsCheck) {
if (this.memberSetCheckedKeys.findIndex(item => item === data.DeptId) != -1) {
this.memberSetCheckedKeys.splice(this.memberSetCheckedKeys.findIndex(item => item === data.DeptId), 1)
if (this.showMember.findIndex(item => item.DeptId === data.ParentId) != -1) {
this.memberSetCheckedKeys.splice(this.memberSetCheckedKeys.findIndex(item => item === data.ParentId), 1)
}
}
}
},
mySetCheckedKeys(id) {
if (this.memberSetCheckedKeys.length == 0)
return
if (id == -1) {
this.$refs.treeUser.setCheckedKeys(this.memberSetCheckedKeys)
return
}
this.showMember.splice(this.showMember.findIndex(item => item.DeptId === id), 1)
this.memberSetCheckedKeys.splice(this.memberSetCheckedKeys.findIndex(item => item === id), 1)
this.$refs.treeUser.setCheckedKeys(this.memberSetCheckedKeys);
},
//关闭弹窗
closeEditOrder() {
this.$emit('close')
},
saveOrderInfo() {
this.$emit('success',this.showMember,this.cptype)
}
}
}
</script>
\ No newline at end of file
This diff is collapsed.
<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 @input="changePage(1)" clearable standout="bg-primary text-white" v-model="msg.Name"
label="渠道码名称" @clear="changePage(1)" maxlength="20" />
</div>
<div class="col-3">
<q-select filled stack-label @input="changePage(1)" option-value="Id" option-label="Name" v-model="msg.Type"
ref="Id" :options="typeList" label="类型" :dense="false" emit-value map-options />
</div>
<div class="col-3">
<q-select filled stack-label @input="changePage(1)" option-value="Id" option-label="Name" v-model="msg.Type"
ref="Id" :options="GroupList" label="分组" :dense="false" emit-value map-options />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" title="" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title" >渠道码</div>
<q-space />
<q-btn color="accent" style="float:right;margin-right:0;" size="sm" class="q-mr-md" icon="add" label="新建"
@click="goadd()"></q-btn>
</template>
<template v-slot:body-cell-WXQRCode="props">
<q-td :props="props">
<q-img v-if="props.row.WXQRCode && props.row.WXQRCode!=''" :src="props.row.WXQRCode"
style="width: 90px;height: 90px;display: flex;">
</q-img>
<div>{{props.row.Type==1?'单人':'多人'}}</div>
</q-td>
</template>
<template v-slot:body-cell-LabelList="props">
<q-td :props="props">
<div style="max-width: 300px;" v-if="props.row.LabelList.length>0">
<span v-for="(x,y) in props.row.LabelList" :key='y'>
{{x}}{{props.row.LabelList.length!=y+1?'、':''}}
</span>
</div>
</q-td>
</template>
<template v-slot:body-cell-SkipVerify="props">
<q-td :props="props">
<div>{{props.row.SkipVerify==1?'需要验证':'自动通过'}}</div>
</q-td>
</template>
<template v-slot:body-cell-UpdateByName="props">
<q-td :props="props">
<div>{{props.row.UpdateByName}}</div>
<div>{{props.row.UpdateTime}}</div>
</q-td>
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" style="font-weight:400;color: #3FC4FF" class="q-mr-xs" label="编辑"
@click="goedit(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" class="q-mr-xs" label="删除"
@click="goDetailed(props.row)" />
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
</template>
</q-table>
</div>
<q-dialog v-model="isDetails">
<q-card style="width: 560px;">
<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 v-if='Detailsobj' class="channelcodeList">
</q-card-section>
</q-card>
</q-dialog>
</div>
</template>
<script>
import {
getWeChatChannelPageList,
getWeChatChannelGroupList
} from '../../api/system/wechat';
import {
queryEmployee
} from '../../api/users/user'
export default {
meta: {
title: "渠道码"
},
name: "channelcodeList",
data() {
return {
loading: false,
ISsystem: false,
data: [],
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 15,
rowsPerPage: 15,
ChannelGroupId:0,
Name:'',
Type: 0,
},
typeList: [
{ Id: 0, Name: '不限' },
{ Id: 1, Name: '单人' },
{ Id: 2, Name: '多人' },
],
//公告column
columns: [{
name: '二维码',
label: '二维码',
field: '二维码',
align: 'left'
},
{
name: 'Name',
field: 'Name',
label: '名称',
align: 'left',
},
{
name: 'ChannelGroupName',
field: 'ChannelGroupName',
label: '分组',
align: 'left'
},
{
name: 'CustomerNum',
field: 'CustomerNum',
label: '客户数',
align: 'left'
},
{
name: 'LabelList',
field: 'LabelList',
label: '标签',
align: 'left'
},
{
name: 'SkipVerify',
field: 'SkipVerify',
label: '自动添加好友',
align: 'left'
},
{
name: 'UpdateByName',
field: 'UpdateByName',
label: '操作人',
align: 'left'
},
{
name: 'optioned',
label: '操作',
field: 'DeptId'
}
],
GroupList: [],
isDetails: false,
Detailsobj: null
}
},
created() {
this.getChannelGroupList()//分租列表
this.getList()
},
methods: {
getChannelGroupList() {
getWeChatChannelGroupList({}).then(res => {
if (res.Code == 1) {
this.GroupList = res.Data;
let obj={Id:0,Name:'不限'}
this.GroupList.unshift(obj)
}
}).catch(() => {
})
},
changePage(e) {
this.msg.pageIndex = 1
this.getList()
},
getList() {
this.loading = true
getWeChatChannelPageList(this.msg).then(res => {
this.loading = false
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount
})
},
goadd() {
this.$router.push({
path: '/enterprise/addchannelcode',
});
},
goedit(row) {//编辑
this.$router.push({
path: '/enterprise/addWelcome',
query: {
Id: row.Id
}
});
},
goDetailed(row) {//删除
this.$q.dialog({
title: '提示信息',
message: '是否确定删除所此欢迎语?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
delWechatWelcomesInfo({ WelcomesId: row.Id }).then(res => {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
this.getList()
})
}).onCancel(() => {
});
},
viewDetails(row) {
this.Detailsobj = row
this.isDetails = true
}
}
}
</script>
<style>
.channelcodeList .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.channelcodeList .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.channelcodeList .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.channelcodeList .el-date-editor.el-input {
width: 100%;
}
.channelcodeList .el-date-editor.el-input input {
background-color: transparent !important;
}
.channelcodeList .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.channelcodeList .el-drawer.rtl {
overflow: inherit;
}
.channelcodeList .box_l {
width: 400px;
border-radius: 6px;
margin-right: 15px;
background: #fff;
margin-top:20px;margin-left: 10px;
box-shadow: 0px 0px 10px rgba(191, 191, 191, 0.7);
}
.channelcodeList .boxl_title {
width: 100%;
height: 56px;
display: flex;
align-items: center;
border-bottom: 1px solid #e8e8e8;
}
</style>
\ No newline at end of file
...@@ -1190,7 +1190,16 @@ const routes = [{ ...@@ -1190,7 +1190,16 @@ const routes = [{
component: () => component: () =>
import("pages/enterprise/customerLabel") import("pages/enterprise/customerLabel")
}, },
{
path: "/enterprise/channelcodeList", //企微 渠道活码
component: () =>
import("pages/enterprise/channelcodeList")
},
{
path: "/enterprise/addchannelcode", //企微 新增修改渠道活码
component: () =>
import("pages/enterprise/addchannelcode")
},
......
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