Merge remote-tracking branch 'origin/dev' into build
# Conflicts: # packages/bigscreen/designer/components/Add.vue
This commit is contained in:
@@ -150,27 +150,28 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getInfo() {
|
getInfo() {
|
||||||
let {id} = this.$route.query
|
let {id} = this.$route.query
|
||||||
id && this.instance.post(`${this.urlPrefix}/appdiylargescreen/queryLargeScreenProjectDetailById?id=${id}`).then(res => {
|
if (!id) return
|
||||||
if (res?.data) {
|
this.instance.post(`${this.urlPrefix}/appdiylargescreen/queryLargeScreenProjectDetailById?id=${id}`).then(res => {
|
||||||
this.form = {
|
if (res?.data) {
|
||||||
...res.data
|
this.form = {
|
||||||
}
|
...res.data
|
||||||
if (res.data.relationLsIds) {
|
}
|
||||||
this.tableData = res.data.lsList.map(v => {
|
if (res.data.relationLsIds) {
|
||||||
let conf = JSON.parse(v.config || '') || {}
|
this.tableData = res.data.lsList.map(v => {
|
||||||
return {
|
let conf = JSON.parse(v.config || '') || {}
|
||||||
id: v.id,
|
return {
|
||||||
title: v.title,
|
id: v.id,
|
||||||
dv: conf.custom || '',
|
title: v.title,
|
||||||
meta: JSON.stringify(conf.meta),
|
dv: conf.custom || '',
|
||||||
isCustom: !!conf.custom,
|
meta: JSON.stringify(conf.meta),
|
||||||
status: v.status
|
isCustom: !!conf.custom,
|
||||||
}
|
status: v.status
|
||||||
})
|
}
|
||||||
this.total = res.data.lsList.length
|
})
|
||||||
|
this.total = res.data.lsList.length
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.rowDrop()
|
this.rowDrop()
|
||||||
@@ -180,14 +181,13 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
onStatusChange(id) {
|
onStatusChange (id) {
|
||||||
id && this.instance.post(`${this.urlPrefix}/appdiylargescreen/enableLargeScreen?id=${id}`).then(res => {
|
this.instance.post(`${this.urlPrefix}/appdiylargescreen/enableLargeScreen?id=${id}`).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.getInfo()
|
this.$message.success('操作成功')
|
||||||
this.$message.success('操作成功')
|
}
|
||||||
}
|
})
|
||||||
})
|
},
|
||||||
},
|
|
||||||
|
|
||||||
rowDrop() {
|
rowDrop() {
|
||||||
const tbody = document.querySelector('.el-table__body-wrapper tbody')
|
const tbody = document.querySelector('.el-table__body-wrapper tbody')
|
||||||
@@ -200,21 +200,37 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
toViewer(id) {
|
toViewer(id) {
|
||||||
this.$router.push({query: {id}, hash: "#preview"})
|
this.$router.push({query: {id}, hash: "#preview"})
|
||||||
},
|
},
|
||||||
onChange(e) {
|
onChange(e) {
|
||||||
const ids = this.tableData.map(v => v.id)
|
const ids = this.tableData.map(v => v.id)
|
||||||
if (ids.indexOf(e.id) < 0) {
|
if (ids.indexOf(e.id) < 0) {
|
||||||
this.tableData.push({
|
this.tableData.push({
|
||||||
title: e.title,
|
title: e.title,
|
||||||
id: e.id
|
id: e.id,
|
||||||
|
status: '1'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
const index = this.tableData.findIndex(v => v.id === e.id)
|
||||||
|
this.$set(this.tableData[index], 'title', e.title)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$route.query.id) {
|
||||||
|
const ids = this.tableData.map(v => v.id).join(',')
|
||||||
|
const names = this.tableData.map(v => v.name).join(',')
|
||||||
|
this.instance.post(`${this.urlPrefix}/appdiylargescreen/addOrUpdateLargeScreenProject`, {
|
||||||
|
...this.form,
|
||||||
|
relationLsIds: ids,
|
||||||
|
relationLsNames: names
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
} else {
|
},
|
||||||
const index = this.tableData.findIndex(v => v.id === e.id)
|
|
||||||
this.$set(this.tableData[index], 'title', e.title)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
add() {
|
add() {
|
||||||
this.query = {
|
this.query = {
|
||||||
|
|||||||
@@ -919,6 +919,7 @@ export default {
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
background: #0A0B0D;
|
background: #0A0B0D;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
.layout-left__right--item {
|
.layout-left__right--item {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
|||||||
@@ -91,6 +91,12 @@
|
|||||||
<div class="select-right">{{ form.examines.length ? '重新选择' : '选择' }}</div>
|
<div class="select-right">{{ form.examines.length ? '重新选择' : '选择' }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item v-if="form.sendScope !== '0'" label="性别" style="width: 100%;" prop="sendScope" :rules="[{ required: true, message: '请选择性别', trigger: 'change' }]">
|
||||||
|
<el-radio-group v-model="form.sendScope" @change="onScopeChange">
|
||||||
|
<el-radio label="0">男</el-radio>
|
||||||
|
<el-radio label="1">女</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="发送内容" prop="content" style="width: 100%;" :rules="[{ required: true, message: '请输入发送内容', trigger: 'blur' }]">
|
<el-form-item label="发送内容" prop="content" style="width: 100%;" :rules="[{ required: true, message: '请输入发送内容', trigger: 'blur' }]">
|
||||||
<el-input size="small" type="textarea" :rows="6" maxlength="1300" show-word-limit placeholder="请输入文本内容..." v-model="form.content"></el-input>
|
<el-input size="small" type="textarea" :rows="6" maxlength="1300" show-word-limit placeholder="请输入文本内容..." v-model="form.content"></el-input>
|
||||||
<div class="add">
|
<div class="add">
|
||||||
|
|||||||
@@ -67,15 +67,9 @@
|
|||||||
</ai-wrapper>
|
</ai-wrapper>
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<ai-card>
|
<ai-card title="成员统计">
|
||||||
<template #title>
|
|
||||||
<div class="AppAnnounceDetail-title">
|
|
||||||
<span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">成员统计</span>
|
|
||||||
<span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">居民群统计</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="content-item" v-if="currIndex === 0">
|
<div class="content-item">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="top-item">
|
<div class="top-item">
|
||||||
<div class="top-item__title">
|
<div class="top-item__title">
|
||||||
@@ -154,80 +148,6 @@
|
|||||||
</ai-table>
|
</ai-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-item" v-if="currIndex === 1">
|
|
||||||
<div class="top">
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>计划送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.planCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>未送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.unExecutedCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>已送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.executedCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>无法送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.cannotExecuteCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="bottom">
|
|
||||||
<div class="bottom-search">
|
|
||||||
<div class="left">
|
|
||||||
<el-radio-group v-model="search2.sendStatus" size="small" @change="search2.current = 1, getGroupInfo()">
|
|
||||||
<el-radio-button size="small" label="0">未送达</el-radio-button>
|
|
||||||
<el-radio-button size="small" label="1">已送达</el-radio-button>
|
|
||||||
<el-radio-button size="small" label="2">无法送达</el-radio-button>
|
|
||||||
</el-radio-group>
|
|
||||||
<ai-picker
|
|
||||||
dialogTitle="选择部门"
|
|
||||||
action="/app/wxcp/wxdepartment/departList"
|
|
||||||
:instance="instance"
|
|
||||||
@pick="e => onUserChange(e, 'search2')" :multiple="false" v-model="user2">
|
|
||||||
<div class="userSelcet">
|
|
||||||
<span style="color: #606266;" v-if="search2.deptartId"><ai-open-data type="departmentName" :openid="search2.deptartId"></ai-open-data></span>
|
|
||||||
<span v-else>部门</span>
|
|
||||||
<i class="el-icon-arrow-up" v-if="!search2.deptartId"></i>
|
|
||||||
<i class="el-icon-circle-close" v-if="search2.deptartId" @click.stop="user1 = [], search2.deptartId = '', search2.current = 1, getGroupInfo()"></i>
|
|
||||||
</div>
|
|
||||||
</ai-picker>
|
|
||||||
</div>
|
|
||||||
<el-button :type="isDisabled ? '' : 'primary'" :disabled="isDisabled" @click="sendMsg(1)" v-if="info.status === '4'">{{ isDisabled ? min + '分钟后可再次提醒' : '提醒成员发送' }}</el-button>
|
|
||||||
</div>
|
|
||||||
<ai-table
|
|
||||||
:tableData="tableData2"
|
|
||||||
:col-configs="colConfigs2"
|
|
||||||
:total="total2"
|
|
||||||
border
|
|
||||||
tableSize="small"
|
|
||||||
:current.sync="search2.current"
|
|
||||||
:size.sync="search2.size"
|
|
||||||
@getList="getGroupInfo">
|
|
||||||
<el-table-column slot="user" label="群主" align="center">
|
|
||||||
<template slot-scope="{ row }">
|
|
||||||
<div class="userinfo">
|
|
||||||
<span>
|
|
||||||
<ai-open-data type="userName" :openid="row.groupOwnerId"></ai-open-data>
|
|
||||||
</span>
|
|
||||||
<span style="color: #999">
|
|
||||||
<ai-open-data type="departmentName" :openid="row.mainDepartment"></ai-open-data>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</ai-table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<ai-dialog
|
<ai-dialog
|
||||||
|
|||||||
@@ -67,15 +67,9 @@
|
|||||||
</ai-wrapper>
|
</ai-wrapper>
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<ai-card>
|
<ai-card title="成员统计">
|
||||||
<template #title>
|
|
||||||
<div class="AppAnnounceDetail-title">
|
|
||||||
<span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">成员统计</span>
|
|
||||||
<span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">居民群统计</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="content-item" v-if="currIndex === 0">
|
<div class="content-item">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="top-item">
|
<div class="top-item">
|
||||||
<div class="top-item__title">
|
<div class="top-item__title">
|
||||||
@@ -154,80 +148,6 @@
|
|||||||
</ai-table>
|
</ai-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-item" v-if="currIndex === 1">
|
|
||||||
<div class="top">
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>计划送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.planCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>未送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.unExecutedCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>已送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.executedCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="top-item">
|
|
||||||
<div class="top-item__title">
|
|
||||||
<h3>无法送达居民群</h3>
|
|
||||||
</div>
|
|
||||||
<p>{{ groupInfo.cannotExecuteCount || 0 }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="bottom">
|
|
||||||
<div class="bottom-search">
|
|
||||||
<div class="left">
|
|
||||||
<el-radio-group v-model="search2.sendStatus" size="small" @change="search2.current = 1, getGroupInfo()">
|
|
||||||
<el-radio-button size="small" label="0">未送达</el-radio-button>
|
|
||||||
<el-radio-button size="small" label="1">已送达</el-radio-button>
|
|
||||||
<el-radio-button size="small" label="2">无法送达</el-radio-button>
|
|
||||||
</el-radio-group>
|
|
||||||
<ai-picker
|
|
||||||
dialogTitle="选择部门"
|
|
||||||
action="/app/wxcp/wxdepartment/departList"
|
|
||||||
:instance="instance"
|
|
||||||
@pick="e => onUserChange(e, 'search2')" :multiple="false" v-model="user2">
|
|
||||||
<div class="userSelcet">
|
|
||||||
<span style="color: #606266;" v-if="search2.deptartId"><ai-open-data type="departmentName" :openid="search2.deptartId"></ai-open-data></span>
|
|
||||||
<span v-else>部门</span>
|
|
||||||
<i class="el-icon-arrow-up" v-if="!search2.deptartId"></i>
|
|
||||||
<i class="el-icon-circle-close" v-if="search2.deptartId" @click.stop="user1 = [], search2.deptartId = '', search2.current = 1, getGroupInfo()"></i>
|
|
||||||
</div>
|
|
||||||
</ai-picker>
|
|
||||||
</div>
|
|
||||||
<el-button :type="isDisabled ? '' : 'primary'" :disabled="isDisabled" @click="sendMsg(1)" v-if="info.status === '4'">{{ isDisabled ? min + '分钟后可再次提醒' : '提醒成员发送' }}</el-button>
|
|
||||||
</div>
|
|
||||||
<ai-table
|
|
||||||
:tableData="tableData2"
|
|
||||||
:col-configs="colConfigs2"
|
|
||||||
:total="total2"
|
|
||||||
border
|
|
||||||
tableSize="small"
|
|
||||||
:current.sync="search2.current"
|
|
||||||
:size.sync="search2.size"
|
|
||||||
@getList="getGroupInfo">
|
|
||||||
<el-table-column slot="user" label="群主" align="center">
|
|
||||||
<template slot-scope="{ row }">
|
|
||||||
<div class="userinfo">
|
|
||||||
<span>
|
|
||||||
<ai-open-data type="userName" :openid="row.groupOwnerId"></ai-open-data>
|
|
||||||
</span>
|
|
||||||
<span style="color: #999">
|
|
||||||
<ai-open-data type="departmentName" :openid="row.mainDepartment"></ai-open-data>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</ai-table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<ai-dialog
|
<ai-dialog
|
||||||
|
|||||||
Reference in New Issue
Block a user