提交 56fd7ab5 编写于 作者: guangjun.yang's avatar guangjun.yang

Merge branch 'dev-phase1-0111' of...

Merge branch 'dev-phase1-0111' of 192.168.110.53:com.pica.cloud.education.frontend/pica-admin-IM into dev-phase1-0111

* 'dev-phase1-0111' of 192.168.110.53:com.pica.cloud.education.frontend/pica-admin-IM:
  添加我要群发页面
  删除多余的文件
因为 它太大了无法显示 源差异 。您可以改为 查看blob
import App from '../App' import App from '../App'
const home = r => require.ensure([], () => r(require('../views/home')), 'home') // 等待会话
const blank = r => require.ensure([], () => r(require('../views/blank')), 'blank')
const discuss = r => require.ensure([], () => r(require('../views/discuss/index.vue')), 'index')
const creatDiscuss = r => require.ensure([], () => r(require('../views/discuss/add-edit.vue')), 'creatDiscuss')
const questionNaire = r => require.ensure([], () => r(require('../views/question-naire/question-list.vue')), 'questionNaire')
const topicList = r => require.ensure([], () => r(require('../views/topicManage/index.vue')), 'topicList')
const reportSet = r => require.ensure([], () => r(require('../views/report/reportSet.vue')), 'reportSet')
const waitingSessionList = r => require.ensure([], () => r(require('../views/IM/waiting-session/list.vue')), 'waitingSessionList') const waitingSessionList = r => require.ensure([], () => r(require('../views/IM/waiting-session/list.vue')), 'waitingSessionList')
const waitingSessionEdit = r => require.ensure([], () => r(require('../views/IM/waiting-session/edit.vue')), 'waitingSessionEdit')
const searchMessageList = r => require.ensure([], () => r(require('../views/IM/search-message/list.vue')), 'waitingSessionList') // 消息查询
const searchMessageDetail = r => require.ensure([], () => r(require('../views/IM/search-message/detail.vue')), 'waitingSessionEdit') const searchMessageList = r => require.ensure([], () => r(require('../views/IM/search-message/list.vue')), 'searchMessageList')
const searchMessageDetail = r => require.ensure([], () => r(require('../views/IM/search-message/detail.vue')), 'searchMessageDetail')
const currentSessionIndex = r => require.ensure([], () => r(require('../views/IM/current-session/index.vue')), 'currentMessageIndex') // 当前会话
const currentSessionList = r => require.ensure([], () => r(require('../views/IM/current-session/index.vue')), 'currentMessageIndex')
const currentSessionDetail = r => require.ensure([], () => r(require('../views/IM/current-session/detail.vue')), 'currentMessageDetail') const currentSessionDetail = r => require.ensure([], () => r(require('../views/IM/current-session/detail.vue')), 'currentMessageDetail')
// 我要群发
const chainMessage = r => require.ensure([], () => r(require('../views/IM/chain-message/index.vue')), 'chainMessage')
export default [{ export default [{
path: '/', path: '/',
component: App, component: App,
children: [ children: [
{ {
path: '', path: '',
redirect: '/home' redirect: '/waiting-session-list'
}, { }, {
path: '/waiting-session-list', path: '/home',
component: waitingSessionList component: waitingSessionList
}, { }, {
path: '/waiting-session-edit', path: '/waiting-session-list',
component: waitingSessionEdit component: waitingSessionList
}, { }, {
path: '/search-message-list', path: '/search-message-list',
component: searchMessageList component: searchMessageList
...@@ -39,38 +34,15 @@ export default [{ ...@@ -39,38 +34,15 @@ export default [{
path: '/search-message-detail', path: '/search-message-detail',
component: searchMessageDetail component: searchMessageDetail
}, { }, {
path: '/current-session-index', path: '/current-session-list',
component: currentSessionIndex component: currentSessionList
}, { }, {
path: '/current-session-detail', path: '/current-session-detail',
component: currentSessionDetail component: currentSessionDetail
}, { }, {
path: '/questionNaire', path: '/chain-message',
component: questionNaire component: chainMessage
}, { }
path: '/home',
component: home
},
{
path: '/discuss-list',
component: discuss
},
{
path: '/creat-discuss',
component: creatDiscuss
},
{
path: '/question-naire',
component: questionNaire
},
{
path: '/topic-list',
component: topicList
},
{
path: '/report-set',
component: reportSet
},
] ]
}] }]
\ No newline at end of file
<template>
<div class="chain-message-wrap">
<div class="component-content" id="screenSet">
<div class="search-title">
<p>群发消息</p>
</div>
<el-form>
</el-form>
</div>
</div>
</template>
<script>
import BreadCrumb from "@/components/breadcrumb.vue";
import { doUpload, getFilePath } from "@/utils/qiniu-util";
import { validateWord } from "@/utils/validate.js";
import { openLoading, closeLoading } from "@/utils/utils";
import * as commonUtil from "@/utils/utils";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
category: [],
categoryStatus: "",
tableData: [],
loading: false,
nextSessionId: '',
};
},
computed: {
},
filters: {
filteFun(index) {
let str = "";
if (index == 1) {
str = "未发布";
} else if (index == 2) {
str = "已发布";
} else if (index == 3) {
str = "已下线";
}
return str;
}
},
created() {
this.search();
setTimeout(() => {
this.search();
}, 10000);
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight();
},
methods: {
// 列表查询
search() {
//this.getData();
},
// 获取数据
getData() {
this.loading = true;
let url = `/interaction/discuss/`;
this.GET(url).then(res => {
this.loading = false;
if (res.code == "000000") {
console.log(res.data);
this.tableData = res.data.resp.discuss || [];
this.nextSessionId = this.tableData[0] && this.tableData[0].id;
console.log('this.nextSessionId', this.nextSessionId);
if (res.data.typeList && res.data.typeList.length) {
let arr = [];
for (let i = 0; i < res.data.typeList.length; i++) {
let obj = {};
obj.label = res.data.typeList[i];
obj.value = res.data.typeList[i];
arr.push(obj);
}
this.category = arr;
}
}
});
},
// 给我一个任务吧,如果当前没有任务,则
getNextSession() {
this.$router.push({ path: `/current-session-list?nextSessionId=${this.nextSessionId}` });
},
}
};
</script>
<style lang="scss" scoped>
.chain-message-wrap {
.component-content {
margin: 20px 20px 0;
padding: 10px;
background: #fff;
// margin: 84px 20px 20px;
.search-title {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 10px 12px;
font-size: 12px;
margin-bottom: 20px;
border-bottom: 1px solid #efefef;
p {
font-size: 16px;
color: #000;
}
.num {
color: #449284;
}
}
.create-button {
padding: 0 0 15px;
margin-top: 0 !important;
text-align: right;
}
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
}
}
</style>
\ No newline at end of file
...@@ -3,137 +3,135 @@ ...@@ -3,137 +3,135 @@
<div class="add-manager-wrap"> <div class="add-manager-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb> <bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="add-content screenSet" id="screenSet"> <div class="add-content screenSet" id="screenSet">
<div class="discuss-opt">
<div class="discuss-opt"> <el-form ref="form" :model="form" label-width="100px">
<el-form ref="form" :model="form" label-width="100px"> <el-form-item label="讨论主题" required>
<el-form-item label="讨论主题" required> <el-col :span="8">
<el-col :span="8"> <el-input v-model="form.subject" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
<el-input v-model="form.subject" size="mini" type="textarea" :maxLength="maxTopic"></el-input> </el-col>
</el-form-item>
<el-form-item label="分类" required>
<el-col :span="8">
<el-select size="mini" v-model="form.deriverName" placeholder="请选择">
<el-option
v-for="item in derivers"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-col>
</el-form-item>
<el-form-item label="内容发布控制">
<div>
<span class="label-name">话题</span>
<el-radio v-model="form.ht" label="1" >允许</el-radio>
<el-radio v-model="form.ht" label="0" >不允许</el-radio>
</div>
<!-- <div>
<span class="label-name">评论</span>
<el-radio v-model="form.pl" label="1" >允许</el-radio>
<el-radio v-model="form.pl" label="0" >不允许</el-radio>
</div> -->
<div>
<span class="label-name">回复</span>
<el-radio v-model="form.displayReplyBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayReplyBtn" :label="2" >不允许</el-radio>
<span class="label-name">前端展示数量:</span>
<el-input-number v-model="form.replyShowNum" controls-position="right" :min="0"></el-input-number>
<el-checkbox v-model="form.replyOfficial" style="margin-left: 20px">置顶官方回复</el-checkbox>
</div>
<div>
<span class="label-name">点赞</span>
<el-radio v-model="form.displayLikeBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayLikeBtn" :label="2" >不允许</el-radio>
</div>
</el-form-item>
<el-form-item label="审核规则" required>
<div>
<span class="label-name">文字</span>
<el-radio v-model="form.wz" label="2" disabled>先审后显示</el-radio>
<el-radio v-model="form.wz" label="4" disabled>后审先显示</el-radio>
</div>
<div>
<span class="label-name">图片</span>
<el-radio v-model="form.tp" label="8" disabled>先审后显示</el-radio>
<el-radio v-model="form.tp" label="16" disabled>后审先显示</el-radio>
</div>
</el-form-item>
<el-form-item label="开放客群" required>
<el-checkbox label="注册用户" v-model="form.isZC"></el-checkbox>
<el-checkbox label="认证用户" v-model="form.isRZ"></el-checkbox>
</el-form-item>
<el-form-item label="发布按钮文案" required>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">话题发布</span>
<el-input v-model="form.topicBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col> </el-col>
<el-col :span="10">
</el-form-item> <div>
<el-form-item label="分类" required> <span class="label-name label-w">输入界面title文案</span>
<el-col :span="8"> <el-input v-model="form.inputTitle" size="mini" style="width: 100px;" :maxLength="5"></el-input>
<el-select size="mini" v-model="form.deriverName" placeholder="请选择"> </div>
<el-option
v-for="item in derivers"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-col> </el-col>
</el-row>
</el-form-item> <el-row>
<el-col :span="6">
<el-form-item label="内容发布控制"> <div>
<div> <span class="label-name label-f">评论发布</span>
<span class="label-name">话题</span> <el-input v-model="form.commentBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
<el-radio v-model="form.ht" label="1" >允许</el-radio> </div>
<el-radio v-model="form.ht" label="0" >不允许</el-radio> </el-col>
</div> <el-col :span="12">
<!-- <div> <div>
<span class="label-name">评论</span> <span class="label-name label-w">输入界面提示文案</span>
<el-radio v-model="form.pl" label="1" >允许</el-radio> <el-input v-model="form.inputReminder" size="mini" style="width: 260px;" :maxLength="15"></el-input>
<el-radio v-model="form.pl" label="0" >不允许</el-radio> </div>
</div> -->
<div>
<span class="label-name">回复</span>
<el-radio v-model="form.displayReplyBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayReplyBtn" :label="2" >不允许</el-radio>
<span class="label-name">前端展示数量:</span>
<el-input-number v-model="form.replyShowNum" controls-position="right" :min="0"></el-input-number>
<el-checkbox v-model="form.replyOfficial" style="margin-left: 20px">置顶官方回复</el-checkbox>
</div>
<div>
<span class="label-name">点赞</span>
<el-radio v-model="form.displayLikeBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayLikeBtn" :label="2" >不允许</el-radio>
</div>
</el-form-item>
<el-form-item label="审核规则" required>
<div>
<span class="label-name">文字</span>
<el-radio v-model="form.wz" label="2" disabled>先审后显示</el-radio>
<el-radio v-model="form.wz" label="4" disabled>后审先显示</el-radio>
</div>
<div>
<span class="label-name">图片</span>
<el-radio v-model="form.tp" label="8" disabled>先审后显示</el-radio>
<el-radio v-model="form.tp" label="16" disabled>后审先显示</el-radio>
</div>
</el-form-item>
<el-form-item label="开放客群" required>
<el-checkbox label="注册用户" v-model="form.isZC"></el-checkbox>
<el-checkbox label="认证用户" v-model="form.isRZ"></el-checkbox>
</el-form-item>
<el-form-item label="发布按钮文案" required>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">话题发布</span>
<el-input v-model="form.topicBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col>
<el-col :span="10">
<div>
<span class="label-name label-w">输入界面title文案</span>
<el-input v-model="form.inputTitle" size="mini" style="width: 100px;" :maxLength="5"></el-input>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">评论发布</span>
<el-input v-model="form.commentBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col>
<el-col :span="12">
<div>
<span class="label-name label-w">输入界面提示文案</span>
<el-input v-model="form.inputReminder" size="mini" style="width: 260px;" :maxLength="15"></el-input>
</div>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="底Bar显示控制">
<el-radio v-model="form.displayBar" :label="1">评论+点赞</el-radio>
<el-radio v-model="form.displayBar" :label="2">仅评论</el-radio>
<el-radio v-model="form.displayBar" :label="3"></el-radio>
</el-form-item>
<el-form-item label="列表排序控制">
<el-radio v-model="form.displayListSort" :label="1">综合排序</el-radio>
<el-radio v-model="form.displayListSort" :label="2">按最新发布时间</el-radio>
<el-radio v-model="form.displayListSort" :label="3">按最高点赞数</el-radio>
</el-form-item>
<el-form-item label="话题列表页标题文案" label-width="140px">
<div>
<el-input v-model="form.commentListDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="话题详情页话题文案" label-width="140px">
<div>
<el-input v-model="form.commentDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="是否仅显示评论区" label-width="110px">
<el-radio v-model="form.displayOnlyComment" :label="1"></el-radio>
<el-radio v-model="form.displayOnlyComment" :label="2"></el-radio>
</el-form-item>
<el-form-item label="备注">
<el-col :span="8">
<el-input v-model="form.remark" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
</el-col> </el-col>
</el-form-item> </el-row>
</el-form> </el-form-item>
<div class="btn-box pdrt20"> <el-form-item label="底Bar显示控制">
<el-button type="primary" size="small" class="button-green" @click="save">保存</el-button> <el-radio v-model="form.displayBar" :label="1">评论+点赞</el-radio>
<el-button size="small" class="button-white" @click="goBack">返回</el-button> <el-radio v-model="form.displayBar" :label="2">仅评论</el-radio>
</div> <el-radio v-model="form.displayBar" :label="3"></el-radio>
</el-form-item>
<el-form-item label="列表排序控制">
<el-radio v-model="form.displayListSort" :label="1">综合排序</el-radio>
<el-radio v-model="form.displayListSort" :label="2">按最新发布时间</el-radio>
<el-radio v-model="form.displayListSort" :label="3">按最高点赞数</el-radio>
</el-form-item>
<el-form-item label="话题列表页标题文案" label-width="140px">
<div>
<el-input v-model="form.commentListDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="话题详情页话题文案" label-width="140px">
<div>
<el-input v-model="form.commentDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="是否仅显示评论区" label-width="110px">
<el-radio v-model="form.displayOnlyComment" :label="1"></el-radio>
<el-radio v-model="form.displayOnlyComment" :label="2"></el-radio>
</el-form-item>
<el-form-item label="备注">
<el-col :span="8">
<el-input v-model="form.remark" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
</el-col>
</el-form-item>
</el-form>
<div class="btn-box pdrt20">
<el-button type="primary" size="small" class="button-green" @click="save">保存</el-button>
<el-button size="small" class="button-white" @click="goBack">返回</el-button>
</div> </div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -152,26 +150,8 @@ export default { ...@@ -152,26 +150,8 @@ export default {
data() { data() {
return { return {
curmbFirst:'讨论组件', curmbFirst:'消息查询',
curmbSecond:'新建', curmbSecond:'消息详情',
derivers:[
{
value:'直播',
label:'直播'
},
{
value:'发现',
label:'发现'
},
{
value:'课程',
label:'课程'
},
{
value:'积木',
label:'积木'
},
],
maxBtn:4, maxBtn:4,
form:{ form:{
subject:'', subject:'',
......
...@@ -2,17 +2,16 @@ ...@@ -2,17 +2,16 @@
<div class="message-list-wrap"> <div class="message-list-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb> <bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="component-content screenSet" id="screenSet"> <div class="component-content screenSet" id="screenSet">
<!-- <div class="search-title">查询条件</div> -->
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;margin-right:0px;"> <el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;margin-right:0px;">
<el-form ref="serchForm" inline :model="searchParam" label-width="15px" style="width:100%;text-align:right;"> <el-form ref="serchForm" inline :model="searchParam" label-width="15px" style="width:100%;text-align:right;">
<el-form-item label=""> <el-form-item label="">
<el-input clearable v-model="searchParam.theme" size="mini" placeholder="请输入用户电话" ><el-button slot="append" icon="el-icon-search"></el-button></el-input> <el-input clearable v-model="searchParam.theme" size="mini" placeholder="请输入用户电话" ><el-button slot="append" icon="el-icon-search" @click="search()"></el-button></el-input>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入用户名称" ><el-button slot="append" icon="el-icon-search"></el-button></el-input> <el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入用户名称" ><el-button slot="append" icon="el-icon-search" @click="search()"></el-button></el-input>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入客服名" ><el-button slot="append" icon="el-icon-search"></el-button></el-input> <el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入客服名" ><el-button slot="append" icon="el-icon-search" @click="search()"></el-button></el-input>
</el-form-item> </el-form-item>
<el-form-item label="" style="position:relative;top:-8px;left:0;margin-bottom: 0px;"> <el-form-item label="" style="position:relative;top:-8px;left:0;margin-bottom: 0px;">
<el-date-picker v-model="searchParam.name" size="mini" type="date" placeholder="请选择日期"></el-date-picker> <el-date-picker v-model="searchParam.name" size="mini" type="date" placeholder="请选择日期"></el-date-picker>
...@@ -25,7 +24,6 @@ ...@@ -25,7 +24,6 @@
<el-table-column prop="category" label="用户类型" min-width="50" align="center"></el-table-column> <el-table-column prop="category" label="用户类型" min-width="50" align="center"></el-table-column>
<el-table-column prop="remark" label="认证状况" min-width="100" align="center"></el-table-column> <el-table-column prop="remark" label="认证状况" min-width="100" align="center"></el-table-column>
<el-table-column prop="createdusername" label="所属机构" min-width="50" align="center"></el-table-column> <el-table-column prop="createdusername" label="所属机构" min-width="50" align="center"></el-table-column>
<el-table-column prop="modifiedUsername" label="备注信息" min-width="100" align="center"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100"> <el-table-column label="操作" fixed="right" align="center" min-width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="edit(scope.row)">查看详细</el-button> <el-button type="text" size="small" @click="edit(scope.row)">查看详细</el-button>
...@@ -33,24 +31,11 @@ ...@@ -33,24 +31,11 @@
</el-table-column> </el-table-column>
<div slot="empty"> <div slot="empty">
<div class="table-empty"> <div class="table-empty">
<img src="@/assets/image/no-content1.png" /> <img src="../../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p> <p>没有查询到相关结果</p>
</div> </div>
</div> </div>
</el-table> </el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -79,22 +64,7 @@ export default { ...@@ -79,22 +64,7 @@ export default {
}, },
category: [], category: [],
categoryStatus: "", categoryStatus: "",
statuSelect: [
{
label: "未发布",
value: "1"
},
{
label: "已发布",
value: "2"
},
{
label: "已下架",
value: "3"
}
],
tableData: [], tableData: [],
totalRows: 0,
loading: false, loading: false,
nextSessionId: "" nextSessionId: ""
}; };
...@@ -114,9 +84,9 @@ export default { ...@@ -114,9 +84,9 @@ export default {
} }
}, },
created() { created() {
this.getData(); this.search();
setTimeout(() => { setTimeout(() => {
this.getData(); this.search();
}, 10000); }, 10000);
}, },
// 挂载到Dom完成时 // 挂载到Dom完成时
...@@ -126,7 +96,7 @@ export default { ...@@ -126,7 +96,7 @@ export default {
methods: { methods: {
// 列表查询 // 列表查询
search() { search() {
this.getData(); //this.getData();
}, },
// 获取数据 // 获取数据
...@@ -158,7 +128,6 @@ export default { ...@@ -158,7 +128,6 @@ export default {
this.tableData = res.data.resp.discuss || []; this.tableData = res.data.resp.discuss || [];
this.nextSessionId = this.tableData[0] && this.tableData[0].id; this.nextSessionId = this.tableData[0] && this.tableData[0].id;
console.log("this.nextSessionId", this.nextSessionId); console.log("this.nextSessionId", this.nextSessionId);
this.totalRows = res.data.resp.count;
if (res.data.typeList && res.data.typeList.length) { if (res.data.typeList && res.data.typeList.length) {
let arr = []; let arr = [];
for (let i = 0; i < res.data.typeList.length; i++) { for (let i = 0; i < res.data.typeList.length; i++) {
...@@ -179,14 +148,6 @@ export default { ...@@ -179,14 +148,6 @@ export default {
path: `/current-session-list?nextSessionId=${this.nextSessionId}` path: `/current-session-list?nextSessionId=${this.nextSessionId}`
}); });
}, },
handleSizeChange(value) {
this.searchParam.pageSize = value;
this.getData();
},
handleCurrentChange(value) {
this.searchParam.pageNo = value;
this.getData();
}
} }
}; };
</script> </script>
......
<template>
<div class="add-manager-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="add-content screenSet" id="screenSet">
<div class="discuss-opt">
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="讨论主题" required>
<el-col :span="8">
<el-input v-model="form.subject" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
</el-col>
</el-form-item>
<el-form-item label="分类" required>
<el-col :span="8">
<el-select size="mini" v-model="form.deriverName" placeholder="请选择">
<el-option
v-for="item in derivers"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-col>
</el-form-item>
<el-form-item label="内容发布控制">
<div>
<span class="label-name">话题</span>
<el-radio v-model="form.ht" label="1" >允许</el-radio>
<el-radio v-model="form.ht" label="0" >不允许</el-radio>
</div>
<!-- <div>
<span class="label-name">评论</span>
<el-radio v-model="form.pl" label="1" >允许</el-radio>
<el-radio v-model="form.pl" label="0" >不允许</el-radio>
</div> -->
<div>
<span class="label-name">回复</span>
<el-radio v-model="form.displayReplyBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayReplyBtn" :label="2" >不允许</el-radio>
<span class="label-name">前端展示数量:</span>
<el-input-number v-model="form.replyShowNum" controls-position="right" :min="0"></el-input-number>
<el-checkbox v-model="form.replyOfficial" style="margin-left: 20px">置顶官方回复</el-checkbox>
</div>
<div>
<span class="label-name">点赞</span>
<el-radio v-model="form.displayLikeBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayLikeBtn" :label="2" >不允许</el-radio>
</div>
</el-form-item>
<el-form-item label="审核规则" required>
<div>
<span class="label-name">文字</span>
<el-radio v-model="form.wz" label="2" disabled>先审后显示</el-radio>
<el-radio v-model="form.wz" label="4" disabled>后审先显示</el-radio>
</div>
<div>
<span class="label-name">图片</span>
<el-radio v-model="form.tp" label="8" disabled>先审后显示</el-radio>
<el-radio v-model="form.tp" label="16" disabled>后审先显示</el-radio>
</div>
</el-form-item>
<el-form-item label="开放客群" required>
<el-checkbox label="注册用户" v-model="form.isZC"></el-checkbox>
<el-checkbox label="认证用户" v-model="form.isRZ"></el-checkbox>
</el-form-item>
<el-form-item label="发布按钮文案" required>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">话题发布</span>
<el-input v-model="form.topicBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col>
<el-col :span="10">
<div>
<span class="label-name label-w">输入界面title文案</span>
<el-input v-model="form.inputTitle" size="mini" style="width: 100px;" :maxLength="5"></el-input>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">评论发布</span>
<el-input v-model="form.commentBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col>
<el-col :span="12">
<div>
<span class="label-name label-w">输入界面提示文案</span>
<el-input v-model="form.inputReminder" size="mini" style="width: 260px;" :maxLength="15"></el-input>
</div>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="底Bar显示控制">
<el-radio v-model="form.displayBar" :label="1">评论+点赞</el-radio>
<el-radio v-model="form.displayBar" :label="2">仅评论</el-radio>
<el-radio v-model="form.displayBar" :label="3"></el-radio>
</el-form-item>
<el-form-item label="列表排序控制">
<el-radio v-model="form.displayListSort" :label="1">综合排序</el-radio>
<el-radio v-model="form.displayListSort" :label="2">按最新发布时间</el-radio>
<el-radio v-model="form.displayListSort" :label="3">按最高点赞数</el-radio>
</el-form-item>
<el-form-item label="话题列表页标题文案" label-width="140px">
<div>
<el-input v-model="form.commentListDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="话题详情页话题文案" label-width="140px">
<div>
<el-input v-model="form.commentDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="是否仅显示评论区" label-width="110px">
<el-radio v-model="form.displayOnlyComment" :label="1"></el-radio>
<el-radio v-model="form.displayOnlyComment" :label="2"></el-radio>
</el-form-item>
<el-form-item label="备注">
<el-col :span="8">
<el-input v-model="form.remark" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
</el-col>
</el-form-item>
</el-form>
<div class="btn-box pdrt20">
<el-button type="primary" size="small" class="button-green" @click="save">保存</el-button>
<el-button size="small" class="button-white" @click="goBack">返回</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from "@/components/breadcrumb.vue";
import { doUpload, getFilePath } from "@/utils/qiniu-util";
import { returnData } from "../../mock";
import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "@/utils/utils";
import * as commonUtil from "@/utils/utils";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst:'讨论组件',
curmbSecond:'新建',
derivers:[
{
value:'直播',
label:'直播'
},
{
value:'发现',
label:'发现'
},
{
value:'课程',
label:'课程'
},
{
value:'积木',
label:'积木'
},
],
maxBtn:4,
form:{
subject:'',
ht:'1',
wz:'4',
tp:'16',
user:'1',
isZC:false,
isRZ:false,
zc:4,
rz:8,
topicBtnText:'发布话题',
commentBtnText:'发布评论',
commentDetails:'全部评论',
commentListDetails: '热门话题',
displayTopicBtn:true,//是否显示发布话题按钮
// displayCommentBtn:true,//是否显示评论按钮
displayReplyBtn: 1,//是否显示回复按钮
displayLikeBtn: 1,//是否显示点赞按钮
remark:'',
deriverName:'积木',
replyShowNum: 5,
replyOfficial: false,
inputTitle: '话题发布',
inputReminder: '',
displayBar: 1,
displayListSort: 1,
displayOnlyComment: 2
},
maxTopic:60,
id:0,
};
},
computed: {
...mapGetters(["_token", "idType"])
},
created() {
this.id = this.$route.query.id
if(this.id){
this.curmbSecond = '编辑'
this.getDissById(this.id)
}
},
// 挂载到Dom完成时
mounted: function() {
},
methods: {
//返回
goBack(){
this.$router.back(-1)
},
showError(str){
this.$message({
message: str,
type: 'warning'
});
},
//保存讨论
save(){
let visibility = 0,
auditRules = 0,_this = this;
if(this.form.isRZ){
visibility = 8
}
if(this.form.isZC){
visibility = 4
}
if(this.form.isRZ && this.form.isZC){
visibility = 12
}
if(this.form.subject == ''){
console.log(this.form.subject)
this.showError('请输入讨论主题')
return;
}
if(visibility == 0){
this.showError('请选择开发客群');
return;
}
if(this.form.topicBtnText == ''){
this.showError('请输入话题发布按钮文字');
return;
}
if(this.form.commentBtnText == ''){
this.showError('请输入评论发布按钮文字');
return;
}
if(this.form.inputTitle == ''){
this.showError('请输入输入界面title文案');
return;
}
auditRules = Number(this.form.wz) + Number(this.form.tp)
let parm = {
"auditrules": auditRules,
"commentbtntext": this.form.commentBtnText,
"commentDetails": this.form.commentDetails,
'commentListDetails': this.form.commentListDetails,
//"deleteflag": 0,
//"derivedid": 0,
"category": this.form.deriverName,
// "displaycommentbtn": this.form.pl == 1 ? true : false,
"displaytopicbtn": this.form.ht == 1 ? true : false,
"displayReplyBtn": this.form.displayReplyBtn,
"displayLikeBtn": this.form.displayLikeBtn,
"replyShowNum": this.form.replyShowNum,
"replyOfficial": this.form.replyOfficial ? 1 : 2,
"inputTitle": this.form.inputTitle,
"inputReminder": this.form.inputReminder,
"displayBar": this.form.displayBar,
"displayListSort": this.form.displayListSort,
"displayOnlyComment": this.form.displayOnlyComment,
//"id": 0,
"subject":this.form.subject,
"topicbtntext": _this.form.topicBtnText,
"visibility": visibility,
"remark":this.form.remark
}
if(this.id){
parm.id = Number(this.id)
this.PUT('/interaction/discuss/',parm).then((res) => {
// closeLoading(vm)
if( res.code == '000000' ) {
this.$message({
message: '保存成功!',
type: 'success'
});
setTimeout(()=>{
this.goBack()
},1500)
}
})
}else{
this.POST('/interaction/discuss/',parm).then((res) => {
// closeLoading(vm)
if( res.code == '000000' ) {
this.$message({
message: '保存成功!',
type: 'success'
});
setTimeout(()=>{
this.goBack()
},1500)
}
})
}
},
//获取讨论组件详细
getDissById(id){
this.GET('/interaction/discuss/'+id).then((res) => {
// closeLoading(vm)
if( res.code == '000000' ) {
this.id = res.data.id
this.form.subject = res.data.subject
this.form.deriverName = res.data.category
// 发布按钮文案
this.form.topicBtnText = res.data.topicbtntext == null ? '' : res.data.topicbtntext
this.form.commentBtnText = res.data.commentbtntext
this.form.inputTitle = res.data.inputTitle || '话题发布'
this.form.inputReminder = res.data.inputReminder
// title文案
this.form.commentDetails = res.data.commentDetails
this.form.commentListDetails = res.data.commentListDetails
// 备注
this.form.remark = res.data.remark
//开放客群
if(res.data.visibility == 14 || res.data.visibility == 12){
this.form.isRZ = true
this.form.isZC = true
}else if(res.data.visibility == 6){
this.form.isRZ = false
this.form.isZC = true
}else if(res.data.visibility == 10){
this.form.isRZ = true
this.form.isZC = false
}
//审核规则
if(res.data.auditrules == 18){
this.form.wz = "2"
this.form.tp = "16"
}else if(res.data.auditrules == 10){
this.form.wz = "2"
this.form.tp = "8"
}else if(res.data.auditrules == 12){
this.form.wz = "4"
this.form.tp = "8"
}else if(res.data.auditrules == 20){
this.form.wz = "4"
this.form.tp = "16"
}
//内容发布控制
this.form.ht = res.data.displaytopicbtn ? "1" : "0"
// this.form.pl = res.data.displaycommentbtn ? "1" : "0"
this.form.displayReplyBtn = res.data.displayReplyBtn
this.form.displayLikeBtn = res.data.displayLikeBtn
this.form.replyShowNum = res.data.replyShowNum
this.form.replyOfficial = res.data.replyOfficial == 1 ? true : false
// 底部bar 列表排序 显示评论区
this.form.displayBar = res.data.displayBar
this.form.displayListSort = res.data.displayListSort
this.form.displayOnlyComment = res.data.displayOnlyComment
}
})
}
}
};
</script>
<style lang="scss" scoped>
.discuss-opt{
padding:20px;
.btn-box{
text-align: center
}
.label-name{
font-size: 12px;
color:#606266;
padding-right:10px;
display: inline-block;
}
.label-f{
width: 80px;
}
.label-w {
width: 110px
}
.pdrt20{
padding:20px 0;
}
.el-radio__label,.el-checkbox__label{
font-size: 12px;
}
}
.add-manager-wrap {
.add-content {
background: #fff;
}
.rim {
border: 1px solid #dddddd;
}
.step-content {
overflow: hidden;
height: 60px;
margin-top: 66px;
padding-top: 15px;
border-bottom: 1px solid #fff;
.is-text {
display: none;
}
.el-steps--simple {
background: #fff;
}
.button-green {
color: #ffffff;
background: #449284;
border-color: #bfdad5;
border-radius: 2px;
}
.button-white {
color: #606266;
background: #ffffff;
border-color: #ecedf1;
border-radius: 2px;
}
.step-num {
display: block;
font-size: 12px;
border: 2px solid #b8babe;
border-radius: 50%;
width: 25px;
height: 20px;
line-height: 15px;
text-align: center;
color: #b8babe;
}
.is-finish {
color: #c0c4cc;
}
.on-step {
color: #747476;
border-color: #747476;
}
}
.first-step {
margin-top: 20px;
.bg-uploader {
img {
float: left;
}
.bg-img {
width: 84px;
height: 100px;
}
.bg-video {
float: left;
width: 100px;
height: 100px;
}
.limit-text {
float: left;
margin-left: 10px;
margin-top: -10px;
p {
font-size: 12px;
color: #999;
}
}
}
.el-upload__tip {
position: absolute;
top: -6px;
left: 130px;
}
.choose-button {
background: #fff;
color: #409eff;
border: 1px solid #409eff;
}
}
.second-step {
margin: 10px 0 0 20px;
//隐藏树展开
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
.el-tree-node__expand-icon {
display: none;
}
.el-table__header-wrapper {
.el-checkbox__inner {
//display: none;
//visibility: hidden;
}
}
.department {
margin-top: 20px;
border: 1px solid #dddddd;
}
.el-tabs__nav-wrap::after {
display: none;
}
.el-tabs__active-bar {
display: none;
}
#tab-first,
#tab-second,
#tab-third {
padding-right: 0px;
}
#tab-first::after,
#tab-second::after,
#tab-third::after {
color: #c7cbd2;
margin-left: 20px;
content: "•";
}
.el-tag {
margin: 0 10px 10px 0;
border: 1.3px solid #48a8fe;
color: #1e92fe;
background-color: #e7f6fe;
.el-icon-close {
width: 13px;
height: 13px;
line-height: 13px;
font-size: 12px;
background-color: #0486fe;
border-radius: 50%;
color: #d4edfe;
}
}
}
.third-step {
margin: 30px 0 0px 30px;
padding-bottom: 30px;
}
}
</style>
\ No newline at end of file
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<el-table-column prop="modifiedUsername" label="备注信息" min-width="100" align="center"></el-table-column> <el-table-column prop="modifiedUsername" label="备注信息" min-width="100" align="center"></el-table-column>
<div slot="empty"> <div slot="empty">
<div class="table-empty"> <div class="table-empty">
<img src="@/assets/image/no-content1.png" /> <img src="../../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p> <p>没有查询到相关结果</p>
</div> </div>
</div> </div>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- <el-table-column prop="modifiedUsername" label="备注信息" min-width="100" align="center"></el-table-column> --> <!-- <el-table-column prop="modifiedUsername" label="备注信息" min-width="100" align="center"></el-table-column> -->
<div slot="empty"> <div slot="empty">
<div class="table-empty"> <div class="table-empty">
<img src="@/assets/image/no-content1.png" /> <img src="../../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p> <p>没有查询到相关结果</p>
</div> </div>
</div> </div>
...@@ -38,32 +38,9 @@ export default { ...@@ -38,32 +38,9 @@ export default {
return { return {
curmbFirst: "云鹊客服", curmbFirst: "云鹊客服",
curmbSecond: "等待会话", curmbSecond: "等待会话",
searchParam: {
theme: "",
type: "",
name: "",
status: "",
pageNo: 1,
pageSize: 15
},
category: [], category: [],
categoryStatus: "", categoryStatus: "",
statuSelect: [
{
label: "未发布",
value: "1"
},
{
label: "已发布",
value: "2"
},
{
label: "已下架",
value: "3"
}
],
tableData: [], tableData: [],
totalRows: 0,
loading: false, loading: false,
nextSessionId: '', nextSessionId: '',
}; };
...@@ -84,9 +61,9 @@ export default { ...@@ -84,9 +61,9 @@ export default {
} }
}, },
created() { created() {
this.getData(); this.search();
setTimeout(() => { setTimeout(() => {
this.getData(); this.search();
}, 10000); }, 10000);
}, },
// 挂载到Dom完成时 // 挂载到Dom完成时
...@@ -96,32 +73,12 @@ export default { ...@@ -96,32 +73,12 @@ export default {
methods: { methods: {
// 列表查询 // 列表查询
search() { search() {
this.getData(); //this.getData();
}, },
// 获取数据 // 获取数据
getData() { getData() {
let subject = 0,
status = 0,
name = 0;
this.loading = true; this.loading = true;
let cStatus = this.categoryStatus ? this.categoryStatus : "0"; //'0'表示默认查所有的 let url = `/interaction/discuss/`;
let url =
"/interaction/discuss/"
+
cStatus +
"/" +
subject +
"/" +
name +
"/" +
status +
"/" +
this.searchParam.pageNo +
"/" +
this.searchParam.pageSize;
this.GET(url).then(res => { this.GET(url).then(res => {
this.loading = false; this.loading = false;
if (res.code == "000000") { if (res.code == "000000") {
...@@ -129,7 +86,6 @@ export default { ...@@ -129,7 +86,6 @@ export default {
this.tableData = res.data.resp.discuss || []; this.tableData = res.data.resp.discuss || [];
this.nextSessionId = this.tableData[0] && this.tableData[0].id; this.nextSessionId = this.tableData[0] && this.tableData[0].id;
console.log('this.nextSessionId', this.nextSessionId); console.log('this.nextSessionId', this.nextSessionId);
this.totalRows = res.data.resp.count;
if (res.data.typeList && res.data.typeList.length) { if (res.data.typeList && res.data.typeList.length) {
let arr = []; let arr = [];
for (let i = 0; i < res.data.typeList.length; i++) { for (let i = 0; i < res.data.typeList.length; i++) {
...@@ -166,6 +122,10 @@ export default { ...@@ -166,6 +122,10 @@ export default {
font-size: 12px; font-size: 12px;
margin-bottom: 20px; margin-bottom: 20px;
border-bottom: 1px solid #efefef; border-bottom: 1px solid #efefef;
p {
font-size: 16px;
color: #000;
}
.num { .num {
color: #449284; color: #449284;
} }
......
<template>
<div class="add-manager-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="add-content screenSet" id="screenSet">
<div class="discuss-opt">
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="讨论主题" required>
<el-col :span="8">
<el-input v-model="form.subject" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
</el-col>
</el-form-item>
<el-form-item label="分类" required>
<el-col :span="8">
<el-select size="mini" v-model="form.deriverName" placeholder="请选择">
<el-option
v-for="item in derivers"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-col>
</el-form-item>
<el-form-item label="内容发布控制">
<div>
<span class="label-name">话题</span>
<el-radio v-model="form.ht" label="1" >允许</el-radio>
<el-radio v-model="form.ht" label="0" >不允许</el-radio>
</div>
<!-- <div>
<span class="label-name">评论</span>
<el-radio v-model="form.pl" label="1" >允许</el-radio>
<el-radio v-model="form.pl" label="0" >不允许</el-radio>
</div> -->
<div>
<span class="label-name">回复</span>
<el-radio v-model="form.displayReplyBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayReplyBtn" :label="2" >不允许</el-radio>
<span class="label-name">前端展示数量:</span>
<el-input-number v-model="form.replyShowNum" controls-position="right" :min="0"></el-input-number>
<el-checkbox v-model="form.replyOfficial" style="margin-left: 20px">置顶官方回复</el-checkbox>
</div>
<div>
<span class="label-name">点赞</span>
<el-radio v-model="form.displayLikeBtn" :label="1" >允许</el-radio>
<el-radio v-model="form.displayLikeBtn" :label="2" >不允许</el-radio>
</div>
</el-form-item>
<el-form-item label="审核规则" required>
<div>
<span class="label-name">文字</span>
<el-radio v-model="form.wz" label="2" disabled>先审后显示</el-radio>
<el-radio v-model="form.wz" label="4" disabled>后审先显示</el-radio>
</div>
<div>
<span class="label-name">图片</span>
<el-radio v-model="form.tp" label="8" disabled>先审后显示</el-radio>
<el-radio v-model="form.tp" label="16" disabled>后审先显示</el-radio>
</div>
</el-form-item>
<el-form-item label="开放客群" required>
<el-checkbox label="注册用户" v-model="form.isZC"></el-checkbox>
<el-checkbox label="认证用户" v-model="form.isRZ"></el-checkbox>
</el-form-item>
<el-form-item label="发布按钮文案" required>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">话题发布</span>
<el-input v-model="form.topicBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col>
<el-col :span="10">
<div>
<span class="label-name label-w">输入界面title文案</span>
<el-input v-model="form.inputTitle" size="mini" style="width: 100px;" :maxLength="5"></el-input>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div>
<span class="label-name label-f">评论发布</span>
<el-input v-model="form.commentBtnText" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-col>
<el-col :span="12">
<div>
<span class="label-name label-w">输入界面提示文案</span>
<el-input v-model="form.inputReminder" size="mini" style="width: 260px;" :maxLength="15"></el-input>
</div>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="底Bar显示控制">
<el-radio v-model="form.displayBar" :label="1">评论+点赞</el-radio>
<el-radio v-model="form.displayBar" :label="2">仅评论</el-radio>
<el-radio v-model="form.displayBar" :label="3"></el-radio>
</el-form-item>
<el-form-item label="列表排序控制">
<el-radio v-model="form.displayListSort" :label="1">综合排序</el-radio>
<el-radio v-model="form.displayListSort" :label="2">按最新发布时间</el-radio>
<el-radio v-model="form.displayListSort" :label="3">按最高点赞数</el-radio>
</el-form-item>
<el-form-item label="话题列表页标题文案" label-width="140px">
<div>
<el-input v-model="form.commentListDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="话题详情页话题文案" label-width="140px">
<div>
<el-input v-model="form.commentDetails" size="mini" style="width: 100px;" :maxLength="maxBtn"></el-input>
</div>
</el-form-item>
<el-form-item label="是否仅显示评论区" label-width="110px">
<el-radio v-model="form.displayOnlyComment" :label="1"></el-radio>
<el-radio v-model="form.displayOnlyComment" :label="2"></el-radio>
</el-form-item>
<el-form-item label="备注">
<el-col :span="8">
<el-input v-model="form.remark" size="mini" type="textarea" :maxLength="maxTopic"></el-input>
</el-col>
</el-form-item>
</el-form>
<div class="btn-box pdrt20">
<el-button type="primary" size="small" class="button-green" @click="save">保存</el-button>
<el-button size="small" class="button-white" @click="goBack">返回</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from "../../components/breadcrumb.vue";
import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { returnData } from "../mock";
import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from "../../utils/utils";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst:'讨论组件',
curmbSecond:'新建',
derivers:[
{
value:'直播',
label:'直播'
},
{
value:'发现',
label:'发现'
},
{
value:'课程',
label:'课程'
},
{
value:'积木',
label:'积木'
},
],
maxBtn:4,
form:{
subject:'',
ht:'1',
wz:'4',
tp:'16',
user:'1',
isZC:false,
isRZ:false,
zc:4,
rz:8,
topicBtnText:'发布话题',
commentBtnText:'发布评论',
commentDetails:'全部评论',
commentListDetails: '热门话题',
displayTopicBtn:true,//是否显示发布话题按钮
// displayCommentBtn:true,//是否显示评论按钮
displayReplyBtn: 1,//是否显示回复按钮
displayLikeBtn: 1,//是否显示点赞按钮
remark:'',
deriverName:'积木',
replyShowNum: 5,
replyOfficial: false,
inputTitle: '话题发布',
inputReminder: '',
displayBar: 1,
displayListSort: 1,
displayOnlyComment: 2
},
maxTopic:60,
id:0,
};
},
computed: {
...mapGetters(["_token", "idType"])
},
created() {
this.id = this.$route.query.id
if(this.id){
this.curmbSecond = '编辑'
this.getDissById(this.id)
}
},
// 挂载到Dom完成时
mounted: function() {
},
methods: {
//返回
goBack(){
this.$router.back(-1)
},
showError(str){
this.$message({
message: str,
type: 'warning'
});
},
//保存讨论
save(){
let visibility = 0,
auditRules = 0,_this = this;
if(this.form.isRZ){
visibility = 8
}
if(this.form.isZC){
visibility = 4
}
if(this.form.isRZ && this.form.isZC){
visibility = 12
}
if(this.form.subject == ''){
console.log(this.form.subject)
this.showError('请输入讨论主题')
return;
}
if(visibility == 0){
this.showError('请选择开发客群');
return;
}
if(this.form.topicBtnText == ''){
this.showError('请输入话题发布按钮文字');
return;
}
if(this.form.commentBtnText == ''){
this.showError('请输入评论发布按钮文字');
return;
}
if(this.form.inputTitle == ''){
this.showError('请输入输入界面title文案');
return;
}
auditRules = Number(this.form.wz) + Number(this.form.tp)
let parm = {
"auditrules": auditRules,
"commentbtntext": this.form.commentBtnText,
"commentDetails": this.form.commentDetails,
'commentListDetails': this.form.commentListDetails,
//"deleteflag": 0,
//"derivedid": 0,
"category": this.form.deriverName,
// "displaycommentbtn": this.form.pl == 1 ? true : false,
"displaytopicbtn": this.form.ht == 1 ? true : false,
"displayReplyBtn": this.form.displayReplyBtn,
"displayLikeBtn": this.form.displayLikeBtn,
"replyShowNum": this.form.replyShowNum,
"replyOfficial": this.form.replyOfficial ? 1 : 2,
"inputTitle": this.form.inputTitle,
"inputReminder": this.form.inputReminder,
"displayBar": this.form.displayBar,
"displayListSort": this.form.displayListSort,
"displayOnlyComment": this.form.displayOnlyComment,
//"id": 0,
"subject":this.form.subject,
"topicbtntext": _this.form.topicBtnText,
"visibility": visibility,
"remark":this.form.remark
}
if(this.id){
parm.id = Number(this.id)
this.PUT('/interaction/discuss/',parm).then((res) => {
// closeLoading(vm)
if( res.code == '000000' ) {
this.$message({
message: '保存成功!',
type: 'success'
});
setTimeout(()=>{
this.goBack()
},1500)
}
})
}else{
this.POST('/interaction/discuss/',parm).then((res) => {
// closeLoading(vm)
if( res.code == '000000' ) {
this.$message({
message: '保存成功!',
type: 'success'
});
setTimeout(()=>{
this.goBack()
},1500)
}
})
}
},
//获取讨论组件详细
getDissById(id){
this.GET('/interaction/discuss/'+id).then((res) => {
// closeLoading(vm)
if( res.code == '000000' ) {
this.id = res.data.id
this.form.subject = res.data.subject
this.form.deriverName = res.data.category
// 发布按钮文案
this.form.topicBtnText = res.data.topicbtntext == null ? '' : res.data.topicbtntext
this.form.commentBtnText = res.data.commentbtntext
this.form.inputTitle = res.data.inputTitle || '话题发布'
this.form.inputReminder = res.data.inputReminder
// title文案
this.form.commentDetails = res.data.commentDetails
this.form.commentListDetails = res.data.commentListDetails
// 备注
this.form.remark = res.data.remark
//开放客群
if(res.data.visibility == 14 || res.data.visibility == 12){
this.form.isRZ = true
this.form.isZC = true
}else if(res.data.visibility == 6){
this.form.isRZ = false
this.form.isZC = true
}else if(res.data.visibility == 10){
this.form.isRZ = true
this.form.isZC = false
}
//审核规则
if(res.data.auditrules == 18){
this.form.wz = "2"
this.form.tp = "16"
}else if(res.data.auditrules == 10){
this.form.wz = "2"
this.form.tp = "8"
}else if(res.data.auditrules == 12){
this.form.wz = "4"
this.form.tp = "8"
}else if(res.data.auditrules == 20){
this.form.wz = "4"
this.form.tp = "16"
}
//内容发布控制
this.form.ht = res.data.displaytopicbtn ? "1" : "0"
// this.form.pl = res.data.displaycommentbtn ? "1" : "0"
this.form.displayReplyBtn = res.data.displayReplyBtn
this.form.displayLikeBtn = res.data.displayLikeBtn
this.form.replyShowNum = res.data.replyShowNum
this.form.replyOfficial = res.data.replyOfficial == 1 ? true : false
// 底部bar 列表排序 显示评论区
this.form.displayBar = res.data.displayBar
this.form.displayListSort = res.data.displayListSort
this.form.displayOnlyComment = res.data.displayOnlyComment
}
})
}
}
};
</script>
<style lang="scss" scoped>
.discuss-opt{
padding:20px;
.btn-box{
text-align: center
}
.label-name{
font-size: 12px;
color:#606266;
padding-right:10px;
display: inline-block;
}
.label-f{
width: 80px;
}
.label-w {
width: 110px
}
.pdrt20{
padding:20px 0;
}
.el-radio__label,.el-checkbox__label{
font-size: 12px;
}
}
.add-manager-wrap {
.add-content {
background: #fff;
}
.rim {
border: 1px solid #dddddd;
}
.step-content {
overflow: hidden;
height: 60px;
margin-top: 66px;
padding-top: 15px;
border-bottom: 1px solid #fff;
.is-text {
display: none;
}
.el-steps--simple {
background: #fff;
}
.button-green {
color: #ffffff;
background: #449284;
border-color: #bfdad5;
border-radius: 2px;
}
.button-white {
color: #606266;
background: #ffffff;
border-color: #ecedf1;
border-radius: 2px;
}
.step-num {
display: block;
font-size: 12px;
border: 2px solid #b8babe;
border-radius: 50%;
width: 25px;
height: 20px;
line-height: 15px;
text-align: center;
color: #b8babe;
}
.is-finish {
color: #c0c4cc;
}
.on-step {
color: #747476;
border-color: #747476;
}
}
.first-step {
margin-top: 20px;
.bg-uploader {
img {
float: left;
}
.bg-img {
width: 84px;
height: 100px;
}
.bg-video {
float: left;
width: 100px;
height: 100px;
}
.limit-text {
float: left;
margin-left: 10px;
margin-top: -10px;
p {
font-size: 12px;
color: #999;
}
}
}
.el-upload__tip {
position: absolute;
top: -6px;
left: 130px;
}
.choose-button {
background: #fff;
color: #409eff;
border: 1px solid #409eff;
}
}
.second-step {
margin: 10px 0 0 20px;
//隐藏树展开
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
.el-tree-node__expand-icon {
display: none;
}
.el-table__header-wrapper {
.el-checkbox__inner {
//display: none;
//visibility: hidden;
}
}
.department {
margin-top: 20px;
border: 1px solid #dddddd;
}
.el-tabs__nav-wrap::after {
display: none;
}
.el-tabs__active-bar {
display: none;
}
#tab-first,
#tab-second,
#tab-third {
padding-right: 0px;
}
#tab-first::after,
#tab-second::after,
#tab-third::after {
color: #c7cbd2;
margin-left: 20px;
content: "•";
}
.el-tag {
margin: 0 10px 10px 0;
border: 1.3px solid #48a8fe;
color: #1e92fe;
background-color: #e7f6fe;
.el-icon-close {
width: 13px;
height: 13px;
line-height: 13px;
font-size: 12px;
background-color: #0486fe;
border-radius: 50%;
color: #d4edfe;
}
}
}
.third-step {
margin: 30px 0 0px 30px;
padding-bottom: 30px;
}
}
</style>
\ No newline at end of file
<template>
<div class="item-component-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="component-content screenSet" id="screenSet">
<div class="search-title">查询条件</div>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form ref="serchForm" :model="searchParam" label-width="75px" style="width:100%;">
<el-col :span="6">
<el-form-item label="讨论主题:">
<el-input clearable v-model="searchParam.theme" size="mini" placeholder="请输入主题"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建人:">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入创建人名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="分类:">
<el-select v-model="categoryStatus" size="mini" placeholder="请选择分类">
<el-option
v-for="(item,index) in category"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="状态:">
<el-select clearable v-model="searchParam.status" size="mini" placeholder="请选择发布状态">
<el-option
v-for="(item,index) in statuSelect"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col style="text-align:right;padding:0 30px 15px 0;">
<el-button type="primary" size="small" @click="search">查询</el-button>
<el-button type="default" size="small" @click="reseat">重置</el-button>
<el-button type="primary" size="small" @click="creatFun('1')">举报设置</el-button>
<el-button type="primary" size="small" @click="creatFun('2')">新建讨论组件</el-button>
</el-col>
</el-form>
</el-row>
<el-table :data="tableData" style="width: 100%" v-loading="loading">
<el-table-column prop="id" label="ID编号" min-width="50" align="center"></el-table-column>
<el-table-column prop="subject" label="讨论主题" min-width="100" align="center"></el-table-column>
<el-table-column prop="category" label="分类" min-width="50" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" min-width="100" align="center"></el-table-column>
<el-table-column prop="createdusername" label="创建人" min-width="50" align="center"></el-table-column>
<el-table-column prop="modifiedUsername" label="最后修改人" min-width="100" align="center"></el-table-column>
<el-table-column prop="status" label="状态" min-width="80" align="center">
<template slot-scope="scope">
<span>{{ scope.row.status | filteFun}}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="200">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="edit(scope.row)">编辑</el-button>
<el-button
type="primary"
v-if="scope.row.status == 3 || scope.row.status == 1"
size="small"
@click="optFun(scope.row,'发布')"
>发布</el-button>
<el-button
type="primary"
v-if="scope.row.status == 2"
size="small"
@click="optFun(scope.row,'下线')"
>下线</el-button>
<el-button type="primary" size="small" @click="topicManage(scope.row)">话题管理</el-button>
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from "../../components/breadcrumb.vue";
import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { validateWord } from "../../utils/validate.js";
import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from "../../utils/utils";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst: "组件",
curmbSecond: "讨论组件",
searchParam: {
theme: "",
type: "",
name: "",
status: "",
pageNo: 1,
pageSize: 15
},
category: [],
categoryStatus: "",
statuSelect: [
{
label: "未发布",
value: "1"
},
{
label: "已发布",
value: "2"
},
{
label: "已下架",
value: "3"
}
],
tableData: [],
totalRows: 0,
loading: false
};
},
computed: {
...mapGetters(["_token", "idType"])
},
filters: {
filteFun(index) {
let str = "";
if (index == 1) {
str = "未发布";
} else if (index == 2) {
str = "已发布";
} else if (index == 3) {
str = "已下线";
}
return str;
}
},
created() {
this.getData();
//this.sun()
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight();
},
methods: {
// 列表查询
search() {
this.getData();
},
//获取数据
getData() {
let subject = 0,
status = 0,
name = 0;
if (this.searchParam.theme != "") {
subject = this.searchParam.theme;
}
if (this.searchParam.status != "") {
status = this.searchParam.status;
}
if (this.searchParam.name != "") {
name = this.searchParam.name;
}
console.log(this.categoryStatus);
this.loading = true;
let cStatus = this.categoryStatus ? this.categoryStatus : "0"; //'0'表示默认查所有的
let url =
"/interaction/discuss/" +
cStatus +
"/" +
subject +
"/" +
name +
"/" +
status +
"/" +
this.searchParam.pageNo +
"/" +
this.searchParam.pageSize;
this.GET(url).then(res => {
this.loading = false;
if (res.code == "000000") {
console.log(res.data);
this.tableData = res.data.resp.discuss || [];
this.totalRows = res.data.resp.count;
if (res.data.typeList && res.data.typeList.length) {
let arr = [];
for (let i = 0; i < res.data.typeList.length; i++) {
let obj = {};
obj.label = res.data.typeList[i];
obj.value = res.data.typeList[i];
arr.push(obj);
}
this.category = arr;
}
}
});
},
// 重置
reseat() {
this.searchParam = Object.assign(
{},
{
theme: "",
type: "",
name: "",
category: "",
status: "",
pageNo: 1,
pageSize: 15
}
);
(this.category = []), (this.categoryStatus = ""), this.getData();
},
creatFun(index) {
if (index == 1) {
this.$router.push({ path: "/report-set" });
} else if (index == 2) {
this.$router.push({ path: "/creat-discuss" });
}
},
edit(item) {
this.$router.push({ path: "/creat-discuss", query: { id: item.id } });
},
topicManage(item) {
this.$router.push({ path: "/topic-list", query: { id: item.id } });
},
// 发布、下线
optFun(row, str) {
let status = 0;
if (str == "发布") {
status = 2;
} else if (str == "下线") {
status = 3;
}
this.$confirm("确定要" + str + "该讨论吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.PUT("/interaction/discuss/release", {
id: row.id,
status: status
})
.then(res => {
if (res.code == "000000") {
this.$message({
type: "success",
message: "操作成功!"
});
this.getData();
}
})
.catch(function(error) {
this.$message.error(error);
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消"
});
});
},
handleSizeChange(value) {
this.searchParam.pageSize = value;
this.getData();
},
handleCurrentChange(value) {
this.searchParam.pageNo = value;
this.getData();
}
}
};
</script>
<style lang="scss" scoped>
.item-component-wrap {
.component-content {
padding: 10px;
background: #fff;
// margin: 84px 20px 20px;
.search-title {
padding: 10px 12px;
font-size: 12px;
color: #449284;
border-bottom: 1px solid #efefef;
}
.create-button {
padding: 0 0 15px;
margin-top: 0 !important;
text-align: right;
}
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
}
}
</style>
\ No newline at end of file
<template>
<div class="question-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond">
</bread-crumb>
<div class="question-content screenSet" id="screenSet">
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form
ref="serchForm"
:model="searchParam"
label-width="75px"
label-suffix=":"
style="width:100%;"
>
<el-col :span="6">
<el-form-item label="问卷名称">
<el-input
v-model="searchParam.name"
size="mini"
placeholder="请输入问卷名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="状态">
<el-select
clearable
v-model="searchParam.status"
size="mini"
placeholder="请选择问卷状态"
>
<el-option
v-for="(item, index) in statuSelect"
:key="index"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" style="text-align:right;padding:0 30px 15px 0;">
<el-button type="primary" size="small" @click="search(1)"
>查询</el-button
>
<el-button type="default" size="small" @click="reset"
>重置</el-button
>
</el-col>
</el-form>
</el-row>
<el-button
class="add-question"
type="primary"
size="small"
@click="addQuestion"
>新增问卷</el-button
>
<el-table :data="tableData" style="width: 100%" v-loading="loading">
<el-table-column
prop="id"
label="问卷编号"
min-width="50"
align="center"
></el-table-column>
<el-table-column
prop="name"
label="问卷名称"
min-width="100"
align="center"
></el-table-column>
<el-table-column label="最后修改人" min-width="50" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modifiedId | modifyType(modifyArray) }}</span>
</template>
</el-table-column>
<el-table-column label="最后修改时间" min-width="100" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modifiedTime | liveDateFilter }}</span>
</template>
</el-table-column>
<el-table-column label="问卷状态" min-width="80" align="center">
<template slot-scope="scope">
<span>{{ scope.row.status | questionStatus }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
min-width="200"
>
<template slot-scope="scope">
<el-button
type="primary"
size="small"
@click="editQuestion(scope.row)"
>编辑</el-button
>
<el-button
type="primary"
v-show="scope.row.status == 1"
size="small"
@click="onAndDownLine(scope.row)"
>上线
</el-button>
<el-button
type="primary"
v-show="scope.row.status == 2"
size="small"
@click="onAndDownLine(scope.row)"
>下线
</el-button>
<!-- <el-button type="primary" size="small" @click="reviewQuestion(scope.row)">查看题库</el-button> -->
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
>
</el-pagination>
</div>
</div>
<!-- 问卷新增(编辑) -->
<el-dialog
class="img-edit"
:title="questionTitle"
:visible.sync="discussEditVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form
ref="questionForm"
:rules="rules"
:model="questionEditList"
label-width="220px"
label-suffix=":"
size="mini"
>
<el-form-item>
<el-radio-group
v-model="questionEditList.showType"
style="margin-left: -65px;"
:disabled="formStatus != 'create'"
>
<el-radio :label="1">单题显示</el-radio>
<el-radio :label="2">平铺显示</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="问卷标题" prop="name">
<el-input
v-model="questionEditList.name"
maxlength="30"
placeholder="标题最多30字符"
style="width: 300px;"
>
</el-input>
</el-form-item>
<el-form-item label="题库导入" prop="fileName">
<el-col :span="12">
<el-input
class="form-input"
:placeholder="excelFileName"
v-model="fileName"
disabled
style="width: 99%;"
/>
</el-col>
<el-col :span="10">
<el-upload
class="upload-demo"
style="display: inline-block;width: 80px;"
action="#"
accept=".xlsx"
:before-upload="beforeImport"
:limit="1"
>
<el-button type="primary" size="mini">导入题库</el-button>
</el-upload>
<el-button type="default" size="mini" @click="uploadTemplate"
>模板下载</el-button
>
</el-col>
</el-form-item>
<el-form-item
label="下一题按钮"
v-show="questionEditList.showType == 1"
>
<div class="submit-btn" style="margin-right:20px;">
<p>置灰不可点</p>
<el-upload
v-model="questionEditList.nextDisableClickUrl"
class="avatar-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeAvatarUpload_1"
>
<el-button size="mini" type="primary">上传</el-button>
</el-upload>
<div class="uploat-content">
<img
v-show="questionEditList.nextDisableClickUrl"
:src="questionEditList.nextDisableClickUrl"
class="bg-img"
/>
<img
v-show="!questionEditList.nextDisableClickUrl"
class="bg-img"
src="https://files.yunqueyi.com/image/png/common/20190408164003674.png"
/>
</div>
</div>
<div class="submit-btn">
<p>点亮可点</p>
<el-upload
v-model="questionEditList.nextClickUrl"
class="avatar-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeAvatarUpload_2"
>
<el-button size="mini" type="primary">上传</el-button>
</el-upload>
<div class="uploat-content">
<img
v-show="questionEditList.nextClickUrl"
:src="questionEditList.nextClickUrl"
class="bg-img"
/>
<img
v-show="!questionEditList.nextClickUrl"
class="bg-img"
src="https://files.yunqueyi.com/image/png/common/20190408164015812.png"
/>
</div>
</div>
</el-form-item>
<el-form-item label="问卷导言" v-show="questionEditList.showType == 2">
<el-input
type="textarea"
:autosize="{ minRows: 3 }"
v-model="questionEditList.questionIntro"
maxlength="210"
placeholder="最多210字符"
></el-input>
</el-form-item>
<el-form-item
label="业务类型"
v-show="questionEditList.showType == 2"
prop="bizType"
>
<el-radio-group
v-model="questionEditList.bizType"
:disabled="formStatus != 'create'"
>
<el-radio :label="0">普通问卷</el-radio>
<el-radio :label="1">招募问卷</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label="是否需要审核"
v-show="questionEditList.showType == 2"
prop="bizType"
>
<el-radio-group
v-model="questionEditList.auditFlag"
:disabled="formStatus != 'create'"
@change="addAuditFlag"
>
<el-radio :label="2"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label="填写完是否需要提示用户分享"
v-show="questionEditList.showType == 2"
>
<el-radio-group
v-model="questionEditList.shareFlag"
:disabled="formStatus != 'create'"
>
<el-radio :label="2"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="分享地址" class="spe-label-require" v-show="questionEditList.showType == 2 && questionEditList.shareFlag == 1">
<el-input
v-model="questionEditList.shareUrl"
style="width: 300px;">
</el-input>
</el-form-item>
<el-form-item label="分享的标题" class="spe-label-require" v-show="questionEditList.showType == 2 && questionEditList.shareFlag == 1">
<el-input
v-model="questionEditList.shareTitle"
style="width: 300px;">
</el-input>
</el-form-item>
<el-form-item label="分享的描述" class="spe-label-require" v-show="questionEditList.showType == 2 && questionEditList.shareFlag == 1">
<el-input
v-model="questionEditList.shareIntro"
style="width: 300px;">
</el-input>
</el-form-item>
<el-form-item label="基本信息" v-show="questionEditList.showType == 2">
<el-checkbox v-model="userBase.name" label="true">姓名</el-checkbox>
<el-checkbox v-model="userBase.mobile" label="true"
>手机号</el-checkbox
>
<el-checkbox v-model="userBase.address" label="true"
>地址</el-checkbox
>
</el-form-item>
<div v-show="questionEditList.showType == 2">
<el-form-item class="submit-btn" label="头图">
<el-upload
v-model="questionEditList.headDiagramUrl"
class="avatar-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeAvatarUpload_4"
>
<el-button class="head-btn" size="mini" type="primary"
>上传</el-button
>
</el-upload>
<div class="uploat-content">
<img
v-show="questionEditList.headDiagramUrl"
:src="questionEditList.headDiagramUrl"
class="head-bg-img"
/>
<img
v-show="!questionEditList.headDiagramUrl"
class="head-bg-img"
src="../../assets/image/default.png"
/>
</div>
</el-form-item>
</div>
<el-form-item class="submit-btn" label="提交按钮">
<el-upload
v-model="questionEditList.submitButtomUrl"
class="avatar-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeAvatarUpload_3"
>
<el-button size="mini" type="primary">上传</el-button>
</el-upload>
<div class="uploat-content">
<img
v-show="questionEditList.submitButtomUrl"
:src="questionEditList.submitButtomUrl"
class="bg-img"
/>
<img
v-show="!questionEditList.submitButtomUrl"
class="bg-img"
src="https://files.yunqueyi.com/image/png/common/20190408164026451.png"
/>
</div>
</el-form-item>
<el-form-item label="问卷填写完毕提示文案" prop="promptCopy">
<el-input
v-model="questionEditList.promptCopy"
maxlength="40"
style="width: 300px;"
></el-input>
<span style="font-size:12px;">限40字符</span>
</el-form-item>
<el-form-item
label="登录权限控制"
v-show="questionEditList.showType == 2"
>
<el-checkbox-group v-model="loginAuthList" class="login-auth" >
<el-checkbox label="1" :disabled="questionEditList.auditFlag==1">云鹊医APP</el-checkbox>
<el-checkbox label="2" :disabled="questionEditList.auditFlag==1">云鹊医H5</el-checkbox>
</el-checkbox-group>
<p style="color:red;">注意:如不勾选登录权限则用户信息记录为游客</p>
</el-form-item>
<el-form-item
label="问卷填写次数"
v-show="questionEditList.showType == 2"
prop="limitNum"
>
<el-radio v-model="questionEditList.limitNumFlag" label="0" :disabled="questionEditList.auditFlag==1">
<el-input
v-model="questionEditList.limitNum"
controls-position="right"
:min="1"
style="width: 100px;"
@blur="checkLimitNum"
@focus="beforeInputLimitNum"
:disabled="questionEditList.auditFlag==1"
></el-input>
</el-radio>
<el-radio v-model="questionEditList.limitNumFlag" label="1" :disabled="questionEditList.auditFlag==1"
>不限制填写次数</el-radio
>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer" style="text-align:center;">
<el-button
type="primary"
size="small"
@click="submitQuestion"
style="width:120px;"
>提交</el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import BreadCrumb from "../../components/breadcrumb.vue";
import * as commonUtil from "../../utils/utils";
import { getFilePath, doUpload } from "../../utils/qiniu-util";
import { QUESTION_UPLOAD_TEMPLATE } from "../../utils/constants";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst: "组件",
curmbSecond: "问卷管理",
questionTitle: "问卷新增/编辑",
discussEditVisible: false,
excelFileName: "",
fileName: "",
fileArray: [],
tableData: [],
totalRows: 0,
loading: false,
searchParam: {
name: "",
status: "",
pageSize: 15,
pageNo: 1
},
modifyArray: [],
questionEditList: {
id: "",
showType: 1,
name: "",
nextDisableClickUrl: "",
nextClickUrl: "",
submitButtomUrl: "",
promptCopy: "",
headDiagramUrl: "",
questionIntro: "",
bizType: 0, //业务类型 0普通 ,1 招募
limitNumFlag: "0", //填写次数flag
limitNum: 1, //填写次数
auditFlag: 2,
shareFlag: 2,
shareUrl: '',
shareTitle: '',
shareIntro: '',
},
formStatus: "create",
loginAuthList: [], //登录权限控制
userBase: {}, //基本信息
rules: {
name: [
{
required: true,
message: "请输入问卷标题",
trigger: "blur"
}
],
promptCopy: [
{
required: true,
message: "请输入问卷填写完毕提示文案",
trigger: "blur"
}
],
bizType: [
{
required: true,
message: "请选择业务类型",
trigger: "blur"
}
],
limitNum: [
{
required: true
}
]
},
statuSelect: [
{
label: "下线",
value: 1
},
{
label: "上线",
value: 2
}
]
};
},
created() {
vm = this;
vm.search();
vm.getAllModify();
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight();
},
methods: {
addAuditFlag() {
if(this.questionEditList.auditFlag == 1) {
vm.loginAuthList = ["1","2"];
vm.questionEditList.limitNumFla = '1';
vm.questionEditList.limitNum = 1;
} else {
}
},
// 查询
search(flag) {
if (flag) vm.searchParam.pageNo = 1;
vm.GET("/campaign/adminQuestionnaire/queryList", vm.searchParam).then(
res => {
if (res.code == "000000") {
vm.tableData = res.data.questionnaireList;
vm.totalRows = res.data.total;
}
}
);
},
handleSizeChange(value) {
vm.searchParam.pageSize = value;
vm.search();
},
handleCurrentChange(value) {
vm.searchParam.pageNo = value;
vm.search();
},
reset() {
vm.searchParam.name = "";
vm.searchParam.status = "";
vm.search();
},
// 获取所有修改人
getAllModify() {
vm.GET("/campaign/adminQuestionnaire/getAllUser").then(res => {
if (res.code == "000000") {
vm.modifyArray = res.data;
}
});
},
// 新增问卷
addQuestion() {
vm.discussEditVisible = true;
vm.formStatus = "create";
if (vm.$refs.questionForm !== undefined) {
vm.$refs.questionForm.resetFields();
}
vm.questionEditList = Object.assign(
{},
{
id: "",
showType: 1,
name: "",
nextDisableClickUrl: "",
nextClickUrl: "",
submitButtomUrl: "",
promptCopy: "您已成功提交问卷,感谢您的参与!",
headDiagramUrl: "",
questionIntro: "",
bizType: 0,
limitNumFlag: "0",
limitNum: 1,
auditFlag: 2,
shareFlag: 2,
shareUrl: '',
shareTitle: '',
shareIntro: '',
}
);
vm.loginAuthList = ["1"];
vm.userBase = Object.assign(
{},
{
address: false,
mobile: false,
name: false
}
);
vm.fileName = "";
vm.fileArray = [];
vm.excelFileName = "";
},
// 编辑
editQuestion(row) {
if (vm.$refs.questionForm !== undefined) {
vm.$refs.questionForm.resetFields();
}
vm.discussEditVisible = true;
vm.formStatus = "edit";
vm.excelFileName = "";
vm.fileName = "";
vm.fileArray = [];
vm.GET("/campaign/adminQuestionnaire/getQuestionnaireById", {
id: row.id
}).then(res => {
if (res.code == "000000") {
// console.log(res.data);
let { questionnaireInfo, loginAuthInfo } = res.data.data;
vm.questionEditList = Object.assign({}, questionnaireInfo);
vm.questionEditList = Object.assign({}, vm.questionEditList, {
questionIntro: questionnaireInfo.questionIntro.replace(
/<br>/g,
"\n"
),
limitNumFlag: questionnaireInfo.limitNum < 1 ? "1" : "0",
limitNum:
questionnaireInfo.limitNum < 1 ? 1 : questionnaireInfo.limitNum
});
const userBaseData = JSON.parse(questionnaireInfo.userBase);
vm.userBase = Object.assign({}, vm.userBase, {
address: Boolean(userBaseData.address),
mobile: Boolean(userBaseData.mobile),
name: Boolean(userBaseData.name)
});
vm.loginAuthList = loginAuthInfo;
}
});
},
// 上线/下线
onAndDownLine(row) {
let req = null;
if (row.status == 1) {
req = {
id: row.id,
status: 2
};
} else {
req = {
id: row.id,
status: 1
};
}
vm.GET("/campaign/adminQuestionnaire/upperOrLowerShip", req).then(res => {
if (res.code == "000000") {
vm.search();
}
});
},
// 导入题库
beforeImport(file) {
if (commonUtil.isEmptyUtils(file)) return;
let arr = file.type.split("/");
let ext = "." + arr[1];
let reader = new FileReader();
reader.onload = function(e) {
let fileJson = {
fileName: file.name,
file: e.target.result.substr(e.target.result.indexOf("base64,") + 7),
ext: ext
};
vm.fileArray = [
{
base64: fileJson
}
];
vm.fileName = file.name;
vm.excelFileName = file.name;
vm.$message.info("读取完毕");
};
reader.readAsDataURL(file);
return false;
},
// 模板下载
uploadTemplate() {
window.location.href = QUESTION_UPLOAD_TEMPLATE;
},
// 置灰不可点图片上传
beforeAvatarUpload_1(file) {
if (commonUtil.isEmptyUtils(file)) return;
vm.imgDoUpload(file, 1, 50, 750, 100);
return false;
},
// 点亮图片上传
beforeAvatarUpload_2(file) {
if (commonUtil.isEmptyUtils(file)) return;
vm.imgDoUpload(file, 2, 50, 750, 100);
return false;
},
// 提交图片上传
beforeAvatarUpload_3(file) {
if (commonUtil.isEmptyUtils(file)) return;
vm.imgDoUpload(file, 3, 50, 690, 88);
return false;
},
// 头图图片上传
beforeAvatarUpload_4(file) {
if (commonUtil.isEmptyUtils(file)) return;
vm.imgDoUpload(file, 4, 100, 750, -1);
return false;
},
imgDoUpload(file, urlType, size, w, h) {
const isSize = file.size / 1024 < size;
if (!isSize) {
vm.$message.info("上传图片要小于" + size + "k");
return;
}
var _img = new FileReader();
_img.readAsDataURL(file);
_img.onload = function(theFile) {
let image = new Image();
image.src = theFile.target.result;
image.onload = function() {
let _this = this;
let uploadFlag = false;
if (h == -1) {
if (_this.width != w) {
vm.$message.info("上传图片宽度应为" + w + ",请重新上传");
} else {
uploadFlag = true;
}
} else {
if (_this.width != w || _this.height != h) {
vm.$message.info(
"上传图片尺寸应为" + w + "*" + h + ",请重新上传"
);
} else {
uploadFlag = true;
}
}
if (uploadFlag) {
vm.$message.info("开始上传");
doUpload(
vm,
file,
getFilePath(file, null),
"preview4",
"progress1",
1
).then(function(path) {
if (urlType == 1) {
vm.questionEditList.nextDisableClickUrl = path.fullPath;
} else if (urlType == 2) {
vm.questionEditList.nextClickUrl = path.fullPath;
} else if (urlType == 3) {
vm.questionEditList.submitButtomUrl = path.fullPath;
} else {
vm.questionEditList.headDiagramUrl = path.fullPath;
}
vm.$message.success("上传成功");
});
}
};
};
},
// 提交
submitQuestion() {
if (vm.questionEditList.showType == 1) {
// 单题显示
vm.questionEditList.questionIntro = "";
vm.questionEditList.headDiagramUrl = "";
} else {
vm.questionEditList.nextDisableClickUrl = "";
vm.questionEditList.nextClickUrl = "";
}
if (!vm.questionEditList.id) {
if (commonUtil.isEmptyList(vm.fileArray)) {
vm.$message.info("请导入题库");
return;
}
}
if (vm.questionEditList.showType == 2) {
if (vm.questionEditList.shareFlag == 1) {
if (vm.questionEditList.shareUrl == '') {
vm.$message.info("请填写分享地址");
return;
}
if (vm.questionEditList.shareTitle == '') {
vm.$message.info("请填写分享标题");
return;
}
if (vm.questionEditList.shareIntro == '') {
vm.$message.info("请填写分享描述");
return;
}
}else {
vm.questionEditList.shareUrl = '';
vm.questionEditList.shareTitle = '';
vm.questionEditList.shareIntro = '';
}
}
let req = {
model: JSON.parse(JSON.stringify(vm.questionEditList)),
fileArray: vm.fileArray,
loginAuth: []
};
if (vm.questionEditList.limitNumFlag == 1) {
req.model.limitNum = -1;
}
let reqUserBase = Object.assign({}, vm.userBase, {
address: Number(vm.userBase.address),
mobile: Number(vm.userBase.mobile),
name: Number(vm.userBase.name)
});
req.model.userBase = JSON.stringify(reqUserBase);
vm.loginAuthList.map(u => {
req.loginAuth.push({
value: u
});
});
req.model.questionIntro = vm.questionEditList.questionIntro.replace(
/\n/g,
"<br>"
);
// console.log(req);
vm.$refs.questionForm.validate(valid => {
//console.log(this.discussEditVisible)
if (valid) {
if (vm.formStatus === 'create' && vm.questionEditList.showType == 2) {
vm.$confirm('业务类型提交后无法再次修改, 请确认是否提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
commonUtil.openLoading(vm)
vm.POST(
'/campaign/adminQuestionnaire/insertOrUpdateQuestionnaire',
req
).then(res => {
commonUtil.closeLoading(vm)
if (res.code == '000000') {
vm.discussEditVisible = false
vm.$message({
type: 'success',
message: '操作成功'
})
vm.search()
} else {
vm.$message.info(res.message)
}
})
})
.catch(() => {
vm.$message({
type: 'info',
message: '已取消提交'
})
})
} else {
commonUtil.openLoading(vm)
vm.POST(
'/campaign/adminQuestionnaire/insertOrUpdateQuestionnaire',
req
).then(res => {
commonUtil.closeLoading(vm)
if (res.code == '000000') {
vm.discussEditVisible = false
vm.$message({
type: 'success',
message: '操作成功'
})
vm.search()
} else {
vm.$message.info(res.message)
}
})
}
}
})
},
// 校验输入数字为正整数
checkLimitNum() {
const regexp = /^[1-9]\d*$/;
if (!regexp.test(vm.questionEditList.limitNum)) {
vm.questionEditList = Object.assign({}, vm.questionEditList, {
limitNum: 1
});
}
},
// foucs选中则改变radio
beforeInputLimitNum() {
vm.questionEditList = Object.assign({}, vm.questionEditList, {
limitNumFlag: "0"
});
}
}
};
</script>
<style lang="scss" scoped>
.question-wrap {
.question-content {
background: #fff;
.add-question {
float: right;
margin: 10px;
}
.table-empty {
img {
width: 100px;
}
p {
margin-top: -50px;
}
}
}
.submit-btn {
display: inline-block;
overflow: hidden;
p {
font-size: 12px;
}
.avatar-uploader {
float: right;
.el-button {
margin-left: 10px;
}
.head-btn {
margin-top: 48px !important;
}
}
.uploat-content {
float: left;
.bg-img {
width: 150px;
height: 30px;
}
.head-bg-img {
width: 80px;
height: 80px;
}
}
}
.login-auth {
width: 400px;
.el-checkbox {
display: inline-block;
width: 150px;
text-align: left;
}
}
}
</style>
<style>
.spe-label-require .el-form-item__label:before{
content: '*';
color: #F56C6C;
margin-right: 4px;
}
</style>
<template>
<div class="item-component-wrap">
<bread-crumb
:curmbFirst="curmbFirst"
:curmbSecond="curmbSecond">
</bread-crumb>
<div class="component-content screenSet" id="screenSet">
<div class="search-title">查询条件</div>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form ref="serchForm" :model="searchParam" label-width="75px" style="width:100%;">
<el-col :span="6">
<el-form-item label="话题名称:">
<el-input clearable v-model="searchParam.theme" size="mini" placeholder="请输入话题名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建日期:">
<el-date-picker v-model="searchParam.time" size="mini" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建人:">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入组件名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="最后修改人:">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入组件名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="状态:">
<el-select clearable v-model="searchParam.status" size="mini" placeholder="请选择发布状态">
<el-option
v-for="(item,index) in statuSelect"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col style="text-align:right;padding:0 30px 15px 0;">
<el-button type="primary" size="small" @click="search">查询</el-button>
<el-button type="default" size="small" @click="reseat">重置</el-button>
<el-button type="primary" size="small" @click="createTopic">新建话题</el-button>
</el-col>
</el-form>
</el-row>
<el-table
:data="tableData"
style="width: 100%" v-loading="loading">
<el-table-column prop="id" label="排序" min-width="50" align="center"></el-table-column>
<el-table-column prop="subject" label="话题名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="createdusername" label="创建人" min-width="50" align="center"></el-table-column>
<el-table-column prop="remark" label="创建日期" min-width="100" align="center"></el-table-column>
<el-table-column prop="createdName" label="最后修改人" min-width="100" align="center"></el-table-column>
<el-table-column prop="createdName" label="修改日期" min-width="100" align="center"></el-table-column>
<el-table-column prop="status" label="状态" min-width="80" align="center">
<template slot-scope="scope">
<span>{{ scope.row.status | filteFun}}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="200">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="edit(scope.row)">编辑</el-button> <el-button type="primary" v-if="scope.row.status == 3 || scope.row.status == 1" size="small" @click="optFun(scope.row,'发布')">发布</el-button>
<el-button type="primary" v-if="scope.row.status == 2" size="small" @click="optFun(scope.row,'下线')">下线</el-button>
<el-button type="primary" size="small" @click="topicManage(scope.row)">置顶</el-button>
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from '../../components/breadcrumb.vue'
import { doUpload, getFilePath } from "../../utils/qiniu-util"
import { validateWord } from "../../utils/validate.js"
import { mapGetters } from 'vuex'
import { openLoading, closeLoading } from '../../utils/utils'
import * as commonUtil from '../../utils/utils'
let vm = null
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst: '组件',
curmbSecond: '举报设置',
searchParam: {
theme:'',
type:'',
name:'',
status: '',
pageNo: 1,
pageSize: 15
},
category:[
{
value:'积木',
label:'积木'
}
],
statuSelect: [
{
label: '未发布',
value: '1'
},{
label: '已发布',
value: '2'
},{
label: '已下架',
value: '3'
}
],
tableData: [],
totalRows: 0,
loading:false,
isShow:true,
}
},
computed: {
...mapGetters([
'_token',
'idType'
])
},
filters:{
filteFun(index){
let str = '';
if(index == 1){
str = '未发布'
}else if(index == 2){
str = '已发布'
}else if(index == 3){
str = '已下线'
}
return str
}
},
created() {
this.getData()
//this.sun()
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight()
},
methods: {
// 列表查询
search() {
this.getData()
},
getFun(obj){
console.log(obj)
this.isShow = false;
},
//获取数据
getData(){
let subject = 0,status = 0,name = 0;
if(this.searchParam.theme != ''){
subject = this.searchParam.theme
}
if(this.searchParam.status != ''){
status = this.searchParam.status
}
if(this.searchParam.name != ''){
name = this.searchParam.name
}
this.loading = true;
let url = '/interaction/discuss/'+subject+'/'+name+'/'+status+'/'+this.searchParam.pageNo+'/'+this.searchParam.pageSize
this.GET(url).then((res) => {
this.loading = false
if( res.code == '000000' ) {
this.tableData = res.data.discuss || []
this.totalRows = res.data.count
}
})
},
// 重置
reseat() {
this.searchParam = Object.assign({},{
theme:'',
type:'',
name:'',
category:'',
status: '',
pageNo: 1,
pageSize: 15
})
this.getData()
},
// 新建组件
createTopic() {
this.isShow = true;
},
edit(item){
this.$router.push({path: 'creat-discuss',query:{id:item.id}})
},
topicManage(item){
},
// 发布、下线
optFun(row,str) {
let status = 0;
if(str == '发布'){
status = 2
}else if(str == '下线'){
status = 3
}
this.$confirm('确定要'+str+'该讨论吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.PUT('/interaction/discuss/',{id: row.id,status:status}).then((res) => {
if(res.code == "000000") {
this.$message({
type: 'success',
message: '操作成功!'
});
this.getData()
}
}).catch(function (error) {
this.$message.error(error);
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
})
},
handleSizeChange(value) {
this.searchParam.pageSize = value
this.getData()
},
handleCurrentChange(value) {
this.searchParam.pageNo = value
this.getData()
}
}
}
</script>
<style lang="scss" scoped>
.item-component-wrap {
.component-content {
padding: 10px;
background: #fff;
// margin: 84px 20px 20px;
.search-title {
padding: 10px 12px;
font-size: 12px;
color: #449284;
border-bottom: 1px solid #efefef;
}
.create-button {
padding: 0 0 15px;
margin-top: 0 !important;
text-align: right;
}
.table-empty {
img{
width: 100px;
}
p {
margin-top: -50px;
}
}
}
}
</style>
<template>
<div class="item-component-wrap">
<bread-crumb
:curmbFirst="curmbFirst"
:curmbSecond="curmbSecond">
</bread-crumb>
<div class="component-content screenSet" id="screenSet">
<div class="search-title">预警邮箱</div>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;" v-for="(item,index) in reportData" :key="index">
<el-form label-width="75px" style="width:100%;">
<el-col :span="5">
<el-form-item label="姓名:">
<el-input clearable v-model="item.userName" size="mini" placeholder="请输入接收人姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="Dr.id:">
<el-input clearable v-model="item.doctorId" size="mini" placeholder="请输入doctorId"></el-input>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="邮箱地址:">
<el-col :span="12" style="padding-right: 5px;">
<el-input clearable v-model="item.email" size="mini" placeholder="请输入邮箱前缀"></el-input>
</el-col>
<div class='email-h'>@picahealth.com</div>
</el-form-item>
</el-col>
<el-col :span="2">
<div class="opt-icon">
<i class="el-icon-circle-plus-outline" @click="add"></i>
<i class="el-icon-remove-outline" @click="remove(index)" v-if="index > 0"></i>
</div>
</el-col>
</el-form>
</el-row>
<div class="opt-btn">
<el-button type="primary" size="small" @click="save" :disabled="isSaveBack">保存</el-button>
<el-button size="small" class="button-white" @click="goBack">返回</el-button>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from '../../components/breadcrumb.vue'
import { doUpload, getFilePath } from "../../utils/qiniu-util"
import { validateWord } from "../../utils/validate.js"
import { mapGetters } from 'vuex'
import { openLoading, closeLoading } from '../../utils/utils'
import * as commonUtil from '../../utils/utils'
let vm = null
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst: '组件',
curmbSecond: '举报设置',
reportData:[],
isSaveBack:false,
}
},
computed: {
...mapGetters([
'_token',
'idType'
])
},
created() {
this.getData()
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight()
},
methods: {
//返回
goBack(){
this.$router.back(-1)
},
//保存
save(){
let index = this.handelData(this.reportData)
console.log(index)
if(index == 1){
this.$message({
message: '姓名、邮箱或doctorId不能为空!',
type: 'warning'
});
return;
}
if(index == 2){
this.$message({
message: 'doctorId已存在',
type: 'warning'
});
return;
}
if(index == 3){
this.$message({
message: 'doctorId只能是大于0的纯数字!',
type: 'warning',
});
return;
}
let d = this.handelEmail(this.reportData ,2)
let parm = {
informConfigs:d
}
//JSON.stringify(this.reportData)
this.loading = true;
this.isSaveBack = true;
this.POST('/interaction/informConfig/insertAdmin',parm).then((res) => {
this.loading = false
if( res.code == '000000' ) {
this.$message({
message: '保存成功!',
type: 'success'
});
}else{
this.$message({
message: res.message,
type: 'warning'
});
}
setTimeout(()=>{
this.isSaveBack = false;
},2000)
})
},
add(){
this.reportData.push(
{
"doctorId": '',
"email": "",
"userName": ""
},
)
},
remove(index){
this.reportData.splice(index, 1);
},
//保存
saveFun(){
},
handelData(d){
console.log(d)
let index = null,hash = [],r = /^[1-9]+\d*$/;
for(let i=0;i<d.length;i++){
let parm = String(d[i].doctorId)
if(d[i].doctorId == '' || d[i].userName == '' || d[i].email == ''){
index = 1
break;
}
if(!r.test(d[i].doctorId)){
console.log(d[i].doctorId)
index = 3
break;
}
if(hash.indexOf(parm) == -1){
hash.push(parm)
}else{
index = 2;
break;
}
}
return index;
},
//处理邮箱展示
handelEmail(d,str){
let A = [],parm = {};
for(let i=0;i<d.length;i++){
parm = {...d[i]}
if(str == 1){
parm['email'] = d[i].email.split("@")[0]
}else if(str == 2){
parm['email'] = d[i].email + '@picahealth.com'
}
A.push(parm)
}
console.log(A)
return A;
},
//获取数据
getData(){
let parm = {
pageNo:1,
pageSize:20
}
this.GET('/interaction/informConfig/getInformList',parm).then((res) => {
if( res.code == '000000' ) {
if(res.data.length == 0){
this.reportData = [{
"doctorId": '',
"email": "",
"userName": ""
},]
}else{
this.reportData = this.handelEmail(res.data,1) || []
}
}else{
this.$message({
message: res.message,
type: 'warning'
});
}
})
},
}
}
</script>
<style lang="scss" scoped>
.item-component-wrap {
.component-content {
padding: 10px;
background: #fff;
// margin: 84px 20px 20px;
.search-title {
padding: 10px 12px;
font-size: 12px;
color: #449284;
border-bottom: 1px solid #efefef;
}
.create-button {
padding: 0 0 15px;
margin-top: 0 !important;
text-align: right;
}
.table-empty {
img{
width: 100px;
}
p {
margin-top: -50px;
}
}
.opt-icon{
line-height: 40px;
i{
margin-right: 10px;
}
}
.opt-btn{
text-align: center
}
.email-h{
float: left;
}
}
}
</style>
<template>
<el-dialog :title="title" :visible.sync="dialogFormVisible" @close="optFun('1')">
<el-form :model="form" class="topicOpt">
<el-form-item label="主题" :label-width="formLabelWidth" required>
<el-input v-model="objInfo.topic.subject" auto-complete="off" clearable size="mini" :maxLength="max" placeholder="请输入主题(最长60个字符)"></el-input>
</el-form-item>
<el-form-item label="内容" :label-width="formLabelWidth" >
<el-input type="textarea" v-model="objInfo.topic.content" auto-complete="off" clearable size="mini" :maxLength="maxL" placeholder="请输入主题(最长1000个字符)" rows="5"></el-input>
</el-form-item>
<el-form-item label="话题配图" :label-width="formLabelWidth" class="teste1">
<!-- <el-upload
action="#"
list-type="picture-card"
:file-list="fileList"
:on-change="selectImg"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove">
<i class="el-icon-plus"></i> -->
<el-upload
action="#"
list-type="picture-card"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:before-upload="beforeAvatarUpload"
>
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible" size="tiny" :modal="false" :close-on-click-modal="false">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="optFun('1')" size="mini">取 消</el-button>
<el-button type="primary" @click="optFun('2')" size="mini" :disabled="isRequestBack">确 定</el-button>
</div>
</el-dialog>
</template>
<script>
import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from "../../utils/utils";
let vm = null;
export default {
data() {
return {
formLabelWidth:"80px",
form:{},
id:null,
dialogImageUrl:'',
max:60,
maxL:1000,
dialogVisible:false,
dialogFormVisible:false,
fileList:[],
title:'编辑话题',
reType: ['PUT','POST'],
isEdit:false,
objInfo:{
topic:{
subject:'',
content:''
},
images:[]
},
isRequestBack:false,
};
},
props:{
isShow:{
default:false,
type:Boolean
},
editInfo:{
default:()=>{},
type:Object
},
discussId:{
default:0,
type:Number
}
},
computed: {
...mapGetters(["_token", "idType"]),
},
created() {
this.dialogFormVisible = this.isShow
if(this.editInfo.topic){
this.isEdit = true;
this.objInfo = this.editInfo;
this.objInfo.topic.content = this.objInfo.topic.content.replace(/&nbsp;/g, " ");
}else{
this.title = '新增话题'
this.isEdit = false
}
console.log(this.editInfo);
if(this.objInfo.images.length > 0){
for(let i=0;i<this.objInfo.images.length;i++){
this.fileList.push({
url:this.objInfo.images[i].imageurl,
imageurl:this.objInfo.images[i].imageurl,
id:this.objInfo.images[i].id
})
}
}
},
// 挂载到Dom完成时
mounted: function() {
},
methods: {
handlePictureCardPreview(file){
//console.log(file)
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
selectImg(file){
//console.log(file)
this.fileList.push({
url:file.url,
imageurl:file.url,
})
},
beforeAvatarUpload(file){
//console.log(file)
let imgTypes = ['jpg','png','gif','jpeg']
if(file.type){
let fileType = file.type.split('/')[1];
if(imgTypes.indexOf(fileType) == -1){
this.showError('上传图片格式仅支持png、jpg、jpeg、gif ');
return false;
}
}else{
this.showError('上传图片格式仅支持png,jpg,jpeg,gif!');
return false;
}
// console.log(this.fileList)
if(this.fileList.length > 5 ){
// /、this.$message.info('图片个数不能超过6个')
this.showError('上传图片个数不能超过6个');
return false;
}
this.imgDoUpload(file, 4, 2048, 400, 400)
},
imgDoUpload(file, urlType, size, w, h) {
let vm = this;
const isSize = file.size / 1024 < size;
if (!isSize) {
//vm.$message.info('上传图片要小于' + size + 'k')
//vm.$message.info('上传图片要小于2M')
vm.showError('上传图片要小于2M');
return;
}
var _img = new FileReader()
_img.readAsDataURL(file)
_img.onload = function(theFile) {
let image = new Image()
image.src = theFile.target.result
image.onload = function() {
let _this = this
vm.$message.info('开始上传');
doUpload(vm, file, getFilePath(file, null), 'preview4', 'progress1', 1).then(function(path) {
//console.log(path)
vm.fileList.push({
url:path.fullPath,
imageurl:path.fullPath
})
vm.$message.success('上传成功')
}).catch((res)=>{
console.log(res)
});
}
}
},
handleRemove(file, fileList){
let index = null;
if(this.fileList.length>0){
for(let i=0;i<this.fileList.length;i++){
if(file.url == this.fileList[i].url){
index = i;
break;
}
}
if(index != null){
this.fileList.splice(index,1)
}
//console.log(file)
//console.log(this.fileList)
}
},
optFun(index){
if(index == 1){
this.dialogFormVisible = false;
this.$emit('setFun',false)
}else if(index == 2){
this.subFun()
}
},
//返回
goBack(){
this.$router.back(-1)
},
showError(str){
//console.log(str)
this.$message({
message: str,
type: 'warning'
});
},
//保存修改讨论组件详细
subFun(){
let A = this.isEdit ? this.reType[0] : this.reType[1];
let _this = this;
if(this.objInfo.topic.subject.length == 0){
this.showError('请输入主题!');
return;
}
// 加入话题内容识别宫格
let placeContent = this.objInfo.topic.content.replace(/ /gi,'&nbsp;');
let parm = {
topic:{
subject:this.objInfo.topic.subject,
// content:this.objInfo.topic.content,
content:placeContent,
discussid:this.objInfo.topic.discussid || this.discussId,
id:this.objInfo.topic.id || null,
official:true
},
images:this.fileList
}
this.isRequestBack = true;
this[A]('/interaction/topic/',parm).then((res) => {
if( res.code == '000000' ) {
this.$message({
message: '操作成功!',
type: 'success'
});
setTimeout(()=>{
this.isRequestBack = false;
this.$emit('setFun',true)
},2000)
}else{
this.isRequestBack = false;
this.$message({
message: res.message,
type: 'error'
});
}
}).catch(function (error) {
///console.log()
//_this.$message.error('接口异常请联系管理员');
});
}
}
};
</script>
<style lang="scss" scoped>
.topicOpt{
.el-form-item__content{
width:80%;
}
.el-upload--picture-card{
height: 80px;
width: 80px;
line-height: 80px;
}
.el-upload-list--picture-card .el-upload-list__item{
width: 80px;
height: 80px;
}
.el-form-item__label{
// line-height: 26px;
}
}
</style>
\ No newline at end of file
<template>
<div class="item-component-wrap">
<bread-crumb
:curmbFirst="curmbFirst"
:curmbSecond="curmbSecond">
</bread-crumb>
<div class="component-content screenSet" id="screenSet">
<div class="search-title">查询条件</div>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form ref="serchForm" :model="searchParam" label-width="75px" style="width:100%;">
<!-- <el-col :span="6">
<el-form-item label="话题名称:">
<el-input clearable v-model="searchParam.theme" size="mini" placeholder="请输入话题名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建日期:">
<el-date-picker v-model="searchParam.time" size="mini" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建人:">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入组件名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="最后修改人:">
<el-input clearable v-model="searchParam.name" size="mini" placeholder="请输入组件名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="状态:">
<el-select clearable v-model="searchParam.status" size="mini" placeholder="请选择发布状态">
<el-option
v-for="(item,index) in statuSelect"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col style="text-align:right;padding:0 30px 15px 0;">
<!-- <el-button type="primary" size="small" @click="search">查询</el-button>
<el-button type="default" size="small" @click="reseat">重置</el-button> -->
<el-button type="primary" size="small" @click="createTopic">新建话题</el-button>
</el-col>
</el-form>
</el-row>
<el-table
:data="tableData"
style="width: 100%" v-loading="loading">
<el-table-column type="index" prop="topOrder" label="排序" min-width="50" align="center"></el-table-column>
<el-table-column prop="id" label="Id" min-width="50" align="center"></el-table-column>
<el-table-column prop="subject" label="话题名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="createdName" label="创建人" min-width="50" align="center"></el-table-column>
<el-table-column prop="createdtime" label="创建日期" min-width="100" align="center"></el-table-column>
<el-table-column prop="modifiedName" label="最后修改人" min-width="100" align="center"></el-table-column>
<el-table-column prop="modifiedName" label="话题来源" min-width="100" align="center">
<template slot-scope="scope">
<span>{{ scope.row.official ? '官方' : '用户'}}</span>
</template>
</el-table-column>
<el-table-column prop="modifiedtime" label="修改日期" min-width="100" align="center"></el-table-column>
<el-table-column prop="status" label="状态" min-width="80" align="center">
<template slot-scope="scope">
<span v-if="!scope.row.official">已发布</span>
<span v-else>{{ scope.row.releaseStatus == 1 ? '已发布' : '未发布'}}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="200">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="edit(scope.row)">编辑</el-button>
<el-button type="primary" v-if="!scope.row.official" size="small" @click="optFun(scope.row)" disabled>下线</el-button>
<el-button type="primary" v-if="scope.row.releaseStatus == 1 && scope.row.official" size="small" @click="optFun(scope.row)" >下线</el-button>
<el-button type="primary" v-if="scope.row.releaseStatus != 1 && scope.row.official" size="small" @click="optFun(scope.row)" >发布</el-button>
<el-button v-if="scope.row.toporder == 0" type="primary" size="small" @click="topicManage(scope.row,'置顶')">置顶</el-button>
<el-button v-else type="primary" size="small" @click="topicManage(scope.row,'取消置顶')">取消置顶</el-button>
</template>
</el-table-column>
<div slot="empty">
<div class="table-empty">
<img src="../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p>
</div>
</div>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
</div>
<AddEdit :isShow="isShow" v-on:setFun="getFun" v-if="isShow" :editInfo="editInfo" :discussId="discussId"></AddEdit>
</div>
</template>
<script>
import BreadCrumb from '../../components/breadcrumb.vue'
import { doUpload, getFilePath } from "../../utils/qiniu-util"
import { validateWord } from "../../utils/validate.js"
import { mapGetters } from 'vuex'
import { openLoading, closeLoading } from '../../utils/utils'
import * as commonUtil from '../../utils/utils'
import AddEdit from './add-edit.vue'
let vm = null
export default {
components: {
BreadCrumb,AddEdit
},
data() {
return {
curmbFirst: '组件',
curmbSecond: '讨论组件',
searchParam: {
theme:'',
type:'',
name:'',
status: '',
pageNo: 1,
pageSize: 15
},
category:[
{
value:'积木',
label:'积木'
}
],
statuSelect: [
{
label: '未发布',
value: '1'
},{
label: '已发布',
value: '2'
},{
label: '已下架',
value: '3'
}
],
tableData: [],
totalRows: 0,
loading:false,
isShow:false,
discussId:null,
pageNo:1,
pageSize:15,
editInfo:{},
}
},
computed: {
...mapGetters([
'_token',
'idType'
])
},
created() {
this.discussId = Number(this.$route.query.id)
this.getData()
//this.sun()
},
// 挂载到Dom完成时
mounted: function() {
commonUtil.resizeHeight()
},
methods: {
// 列表查询
search() {
this.getData()
},
getFun(obj){
console.log(obj)
this.isShow = false
if(obj){
this.getData()
}
},
//获取数据
getData(){
let _this = this;
this.loading = true;
let parm = {
discussId:this.discussId,
pageNo:this.pageNo,
pageSize:this.pageSize
}
this.GET('/interaction/topic/getTopicList',parm).then((res) => {
this.loading = false
if( res.code == '000000' ) {
this.tableData = res.data.topics || []
this.totalRows = res.data.count
}else{
this.$message({
message: res.message,
type: 'warning'
});
}
}).catch(function (error) {
console.log(error.message)
_this.$message.error(error.message);
_this.loading = false
});
},
// 重置
reseat() {
this.searchParam = Object.assign({},{
theme:'',
type:'',
name:'',
category:'',
status: '',
pageNo: 1,
pageSize: 15
})
this.getData()
},
// 新建组件
createTopic() {
this.editInfo = {}
this.isShow = true;
},
edit(item){
///topic/getTopicDetailsById
this.GET('/interaction/topic/getTopicDetailsById',{topicId: item.id}).then((res) => {
if(res.code == "000000") {
this.editInfo = res.data;
this.isShow = true;
}else{
this.$message({
message: res.message,
type: 'warning'
});
}
}).catch(function (error) {
// this.$message.error(error);
});
},
// 置顶
topicManage(item,str){
///topic/topicTop
let _this = this;
let status = 0;
if(str == '置顶'){
status = 1
}else if(str == '取消置顶'){
status = 2
}
this.$confirm('确定要'+str+'该讨论吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
_this.GET('/interaction/topic/topicTop',{topicId: item.id, topNum: status}).then((res) => {
if(res.code == "000000") {
_this.$message({
type: 'success',
message: '操作成功!'
});
_this.setTimeFun()
}
}).catch(function (error) {
// this.$message.error(error);
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
})
},
setTimeFun(){
setTimeout(()=>{
this.getData()
},2000)
},
// 发布、下线
optFun(row) {
let status = 0,str = '',_this = this,index = 0;
str = row.releaseStatus == 1 ? '下架' : '发布'
if(row.releaseStatus == 1){
index = 2
}else if(row.releaseStatus == 2){
index = 1
}
let parm = {
topic:{
id: row.id,
releaseStatus:index
}
}
this.$confirm('确定要'+str+'该话题吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
_this.PUT('/interaction/topic/updateRelease',parm).then((res) => {
if(res.code == "000000") {
_this.$message({
type: 'success',
message: '操作成功!'
});
_this.setTimeFun()
}
}).catch(function (error) {
// this.$message.error(error);
});
}).catch(() => {
_this.$message({
type: 'info',
message: '已取消'
})
})
},
handleSizeChange(value) {
this.pageSize = value
this.getData()
},
handleCurrentChange(value) {
this.pageNo = value
this.getData()
}
}
}
</script>
<style lang="scss" scoped>
.item-component-wrap {
.component-content {
padding: 10px;
background: #fff;
// margin: 84px 20px 20px;
.search-title {
padding: 10px 12px;
font-size: 12px;
color: #449284;
border-bottom: 1px solid #efefef;
}
.create-button {
padding: 0 0 15px;
margin-top: 0 !important;
text-align: right;
}
.table-empty {
img{
width: 100px;
}
p {
margin-top: -50px;
}
}
}
}
</style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册