Commit c9846c22 authored by 张俊's avatar 张俊

Merge branch 'dev' of https://cloud.wodcloud.com/git/apaas/apaas-v3-ui into dev

parents 4849a0d7 6cb66255
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
></span> ></span>
<a <a
v-else v-else
class="btn" class="del_btn_a"
:class="v.class || ''" :class="v.class || ''"
:key="'btn_' + index + '_' + i" :key="'btn_' + index + '_' + i"
@click.stop="v.callback && v.callback(scope.row)" @click.stop="v.callback && v.callback(scope.row)"
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</div> </div>
<div v-else-if="item.type === 'button'" class="row_action"> <div v-else-if="item.type === 'button'" class="row_action">
<a <a
class="btn warn" class="btn"
v-text="scope.row[item.prop]" v-text="scope.row[item.prop]"
@click.stop="item.callback && item.callback(scope.row)" @click.stop="item.callback && item.callback(scope.row)"
></a> ></a>
...@@ -529,4 +529,9 @@ export default { ...@@ -529,4 +529,9 @@ export default {
border-radius: 10px; border-radius: 10px;
background-color: #fff; background-color: #fff;
} }
.del_btn_a {
font-weight: bold;
color: #830f53;
cursor: pointer;
}
</style> </style>
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:clearable="false"
></el-date-picker> ></el-date-picker>
<el-select <el-select
v-if="item.type == 'select'" v-if="item.type == 'select'"
...@@ -101,3 +103,24 @@ export default { ...@@ -101,3 +103,24 @@ export default {
width: calc(100% - 220px); width: calc(100% - 220px);
} }
</style> </style>
<style>
.from_content1 .el-input__inner {
background-color: #f7f8f9;
}
.el-date-editor.el-range-editor .el-range-input {
background-color: #f7f8f9;
width: 80px;
}
.el-date-editor.el-range-editor .el-range-separator {
width: 40px;
position: relative;
top: 2px;
}
.el-date-editor.el-range-editor {
width: 260px;
padding: 3px 10px 3px 15px;
}
.el-date-editor .el-range__icon {
margin-right: 8px;
}
</style>
\ No newline at end of file
...@@ -85,11 +85,3 @@ export default { ...@@ -85,11 +85,3 @@ export default {
bottom: -20px; bottom: -20px;
} }
</style> </style>
<style>
.from_content1 .el-input__inner {
background-color: #f7f8f9;
}
.el-date-editor.el-range-editor .el-range-input {
background-color: #f7f8f9;
}
</style>
\ No newline at end of file
<template> <template>
<div class="side_nav_bar"> <div class="side_nav_bar apaas_scroll">
<h3 class="side_nav_bar_title" @click="titleAction"> <h3 class="side_nav_bar_title" @click="titleAction">
<img :src="titleIcon" width="20" style="margin-right: 10px;" /> <img :src="titleIcon" width="20" style="margin-right: 10px;" />
<span v-text="title"></span> <span v-text="title"></span>
</h3> </h3>
<ul class="side_nav_bar_list"> <ul class="side_nav_bar_list">
<!-- active-class="current" --> <!-- active-class="current" -->
<router-link <template v-for="(nav, index) in navList">
tag="li" <li v-if="nav.children && nav.children.length" :key="'nav_' + index">
v-for="(nav, index) in navList" <a class="text_clip toggle_bar" @click.prevent="toggleNav(nav)">
:class="{ current: $route.path.indexOf(nav.path) > -1 }" {{ nav.name }}
:key="'nav' + index"
:to="nav.path" <i
> :class="nav.open ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"
<span v-text="nav.name"></span> ></i>
</router-link> </a>
<ul class="second_list" v-show="nav.open">
<li v-for="(v, i) in nav.children" :key="'nav_' + index + 'v_' + i">
<router-link
class="text_clip"
:class="{ current: $route.path.indexOf(v.path) > -1 }"
:to="v.path"
>
{{ v.name }}
</router-link>
</li>
</ul>
</li>
<li v-else-if="nav.disabled" :key="'nav_' + index">
<a class="disabled text_clip">
{{ nav.name }}
</a>
</li>
<li v-else :key="'nav_' + index">
<router-link
class="text_clip"
:class="{ current: $route.path.indexOf(nav.path) > -1 }"
:to="nav.path"
>
{{ nav.name }}
</router-link>
</li>
</template>
</ul> </ul>
</div> </div>
</template> </template>
...@@ -41,8 +68,8 @@ export default { ...@@ -41,8 +68,8 @@ export default {
}, },
imgSrc: { imgSrc: {
type: String, type: String,
default: "tool_fuwu" default: "tool_fuwu",
} },
}, },
methods: { methods: {
titleAction() { titleAction() {
...@@ -50,6 +77,9 @@ export default { ...@@ -50,6 +77,9 @@ export default {
this.$router.push(this.titlePath); this.$router.push(this.titlePath);
} }
}, },
toggleNav(nav) {
this.$set(nav, "open", !nav.open);
},
}, },
}; };
</script> </script>
...@@ -57,6 +87,8 @@ export default { ...@@ -57,6 +87,8 @@ export default {
<style scoped> <style scoped>
.side_nav_bar { .side_nav_bar {
background-color: #0d1847; background-color: #0d1847;
overflow-x: hidden;
overflow-y: auto;
} }
.side_nav_bar_title { .side_nav_bar_title {
height: 40px; height: 40px;
...@@ -73,16 +105,48 @@ export default { ...@@ -73,16 +105,48 @@ export default {
font-size: 16px; font-size: 16px;
color: #c3caf8; color: #c3caf8;
} }
.side_nav_bar_list > li { .side_nav_bar_list > li > a {
display: block;
padding: 12px 10px 12px 42px; padding: 12px 10px 12px 42px;
border-left: 5px solid #0d1847; border-left: 5px solid #0d1847;
font-size: 14px; font-size: 14px;
font-weight: bold;
line-height: 24px; line-height: 24px;
color: #6573ae; color: #e6ebfe;
text-decoration: none;
cursor: pointer; cursor: pointer;
user-select: none;
}
.side_nav_bar_list > li > a.disabled {
opacity: 0.5;
cursor: not-allowed;
}
.side_nav_bar_list > li > a:hover,
.side_nav_bar_list > li > a.current {
border-left: 5px solid #e56600;
background-color: #182665;
color: #e6ebfe;
}
.toggle_bar {
padding-right: 30px !important;
position: relative;
}
.toggle_bar > i {
position: absolute;
top: 16px;
right: 8px;
}
.second_list > li > a {
display: block;
padding: 12px 10px 12px 56px;
border-left: 5px solid #0d1847;
font-size: 14px;
line-height: 24px;
color: #6573ae;
text-decoration: none;
} }
.side_nav_bar_list > li:hover, .second_list > li > a:hover,
.side_nav_bar_list > li.current { .second_list > li > a.current {
border-left: 5px solid #e56600; border-left: 5px solid #e56600;
background-color: #182665; background-color: #182665;
color: #e6ebfe; color: #e6ebfe;
......
...@@ -9,43 +9,77 @@ ...@@ -9,43 +9,77 @@
开发文档 开发文档
</el-breadcrumb-item> </el-breadcrumb-item>
<el-breadcrumb-item> <el-breadcrumb-item>
文档编辑 文档编辑 - {{ title }}
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="editpage"> <div class="editpage">
<wang-e v-model="editstr"></wang-e> <wang-e v-model="content"></wang-e>
<div class="apaas_button" style="overflow:hidden;padding-top:30px;border-top:1px solid #e3e5ef;box-sizing:border-box;"> <div class="apaas_button">
<el-button style="float:right;margin:0 30px;" type="primary" >保存</el-button> <el-button type="defalut" size="mini" @click="cancelAction">
<el-button style="float:right" >取消</el-button> 取消
</el-button>
<el-button type="primary" size="mini" @click="submitAction">
保存
</el-button>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import wangE from '@/components/wangE' import wangE from "@/components/wangE";
export default { export default {
data() { data() {
return { return {
editstr:'', title: "",
content: "",
}; };
}, },
components:{ components: {
wangE wangE,
},
computed: {
}, },
created() { created() {
if (this.$route.params.id) { if (this.$route.params.id) {
// 请求详情 this.$http
} else { .get("/apaas/support/document/get", {
// error params: {
id: this.$route.params.id,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.title = data.data.title;
this.content = data.data.content;
}
});
} }
}, },
methods: {}, methods: {
cancelAction() {
this.$router.push("/technical_support/doc_manage");
},
submitAction() {
this.$http
.put("/apaas/support/document/put", {
id: parseFloat(this.$route.params.id),
content: this.content,
})
.then(({ data }) => {
if (data.success === 1) {
this.$message.success("保存成功");
this.$router.push("/technical_support/doc_manage")
} else {
this.$message.error(data.errMsg || "保存失败");
}
})
.catch((error) => {
console.log(error);
this.$message.error("保存失败");
});
},
},
}; };
</script> </script>
...@@ -60,17 +94,25 @@ export default { ...@@ -60,17 +94,25 @@ export default {
background-color: #fff; background-color: #fff;
border-radius: 10px; border-radius: 10px;
} }
.editpage{ .editpage {
background-color: #fff; background-color: #fff;
height: calc(100% - 45px); height: calc(100% - 45px);
margin-bottom: 20px; margin-bottom: 20px;
box-shadow: 0px 3px 6px 0px box-shadow: 0px 3px 6px 0px #f4f7fc;
#f4f7fc; border-radius: 12px;
border-radius: 12px;
} }
.editpage .wangeditor_class{ .editpage .wangeditor_class {
height: calc(100% - 100px); height: calc(100% - 100px);
padding: 0 20px; padding: 0 20px;
box-sizing: border-box; box-sizing: border-box;
} }
.apaas_button {
border-top: 1px solid #e3e5ef;
box-sizing: border-box;
text-align: right;
padding-top: 30px;
}
.apaas_button .el-button + .el-button {
margin-right: 30px;
}
</style> </style>
...@@ -83,9 +83,9 @@ ...@@ -83,9 +83,9 @@
<p>注:同一文档类型下可维护多个文档名称</p> <p>注:同一文档类型下可维护多个文档名称</p>
</div> </div>
<el-form ref="addForm" :model="addForm" :rules="addFormRules"> <el-form ref="addForm" :model="addForm" :rules="addFormRules">
<el-form-item label="活动区域" prop="region"> <el-form-item label="活动区域" prop="style">
<el-select <el-select
v-model="addForm.region" v-model="addForm.style"
placeholder="请选择文档类型" placeholder="请选择文档类型"
style="width: 100%;" style="width: 100%;"
> >
...@@ -98,9 +98,9 @@ ...@@ -98,9 +98,9 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="文档名称" prop="name"> <el-form-item label="文档名称" prop="title">
<el-input <el-input
v-model="addForm.name" v-model="addForm.title"
placeholder="请输入文档名称" placeholder="请输入文档名称"
></el-input> ></el-input>
</el-form-item> </el-form-item>
...@@ -119,14 +119,14 @@ ...@@ -119,14 +119,14 @@
<apass-dialog <apass-dialog
ref="detailDialog" ref="detailDialog"
title="预览" :title="detail.title"
class="doc_manage_detail_dialog" class="doc_manage_detail_dialog"
width="1340px" width="1340px"
> >
<div <div
class="detail_content apaas_scroll" class="detail_content apaas_scroll"
slot="content" slot="content"
v-html="detailContent" v-html="detail.content"
></div> ></div>
</apass-dialog> </apass-dialog>
...@@ -139,6 +139,7 @@ ...@@ -139,6 +139,7 @@
</template> </template>
<script> <script>
import helper from "@/services/helper.js";
import apassList from "@/components/apass-list"; import apassList from "@/components/apass-list";
import apassDialog from "@/components/apass-dialog"; import apassDialog from "@/components/apass-dialog";
import showMoreFilter from "@/components/show-more-filter"; import showMoreFilter from "@/components/show-more-filter";
...@@ -152,28 +153,34 @@ export default { ...@@ -152,28 +153,34 @@ export default {
data() { data() {
return { return {
paddingLeft: 25, paddingLeft: 25,
listTotal: 50, listTotal: 0,
listHeader: [ listHeader: [
{ {
label: "文档名称", label: "文档名称",
prop: "name", prop: "title",
type: "button", type: "button",
callback: this.viewItem, callback: this.viewItem,
width: 320, width: 320,
}, },
{ {
label: "文档类型", label: "文档类型",
prop: "type", prop: "style",
getText: (item) => {
let type = this.types[item.style] || null;
return (type && type.label) || "";
},
align: "center", align: "center",
}, },
{ {
label: "操作人", label: "操作人",
prop: "person", prop: "created_by",
align: "center", align: "center",
}, },
{ {
label: "最后更新时间", label: "最后更新时间",
prop: "update_time", prop: "updated",
getText: ({ updated }) => this.getTimeText(updated || ""),
align: "center", align: "center",
}, },
{ {
...@@ -194,73 +201,90 @@ export default { ...@@ -194,73 +201,90 @@ export default {
], ],
}, },
], ],
listData: [ listData: [],
{
id: "1000001",
type: "平台简介",
name: "BD-aPaaS平台(V3.0)平台简介",
person: "江阳",
update_time: "2016-09-21 08:50:08",
},
{
id: "1000002",
type: "使用须知",
name: "BD-aPaaS平台(V3.0)使用须知",
person: "江阳",
update_time: "2016-09-21 08:50:08",
},
{
id: "1000003",
type: "术语说明",
name: "BD-aPaaS平台(V3.0)相关术语说明",
person: "江阳",
update_time: "2016-09-21 08:50:08",
},
],
topFilter: { topFilter: {
name: "", name: "",
type: "", type: "",
time: "", time: "",
}, },
types: [ types: [
{ label: "平台简介", value: "introductory" }, {
{ label: "使用须知", value: "notice" }, label: "平台简介",
{ label: "术语说明", value: "trem" }, value: 0, // "introductory",
{ label: "标准规范", value: "standard" }, },
{ label: "操作指南", value: "guide" }, {
{ label: "接口文档", value: "api" }, label: "使用须知",
{ label: "常见问题", value: "questions" }, value: 1, // "notice",
},
{
label: "术语说明",
value: 2, // "trem",
},
{
label: "标准规范",
value: 3, // "standard",
},
{
label: "操作指南",
value: 4, // "guide",
},
{
label: "接口文档",
value: 5, // "api",
},
{
label: "常见问题",
value: 6, // "questions",
},
], ],
addForm: { addForm: {
region: "", style: "",
name: "", title: "",
}, },
addFormRules: { addFormRules: {
region: [ style: [
{ required: true, message: "请选择文档类型", trigger: "change" }, { required: true, message: "请选择文档类型", trigger: "change" },
], ],
name: [ title: [
{ required: true, message: "请输入文档名称", trigger: "blur" }, { required: true, message: "请输入文档名称", trigger: "blur" },
{ max: 20, message: "长度应小于20个字符", trigger: "change" }, { max: 20, message: "长度应小于20个字符", trigger: "change" },
], ],
}, },
detailContent: "", detail: "",
deleteDialogInfo: { deleteDialogInfo: {
msg: "", msg: "",
submit: null, submit: null,
}, },
tempFilter: {},
}; };
}, },
computed: {},
created() {},
methods: { methods: {
init(filter) { init(filter) {
let fullFilter = { let fullFilter = {
...filter, ...filter,
...this.topFilter, ...this.topFilter,
}; };
this.tempFilter = filter;
console.log(fullFilter); this.$http
.get("/apaas/support/document/list", {
params: {
style: fullFilter.type,
start: fullFilter.time && fullFilter.time[0],
end: fullFilter.time && fullFilter.time[1],
limit: fullFilter.size,
page: fullFilter.page,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.listTotal = data.total;
this.listData = data.data || [];
}
});
},
getTimeText(time) {
return helper.dateStringTransform(time);
}, },
topFilterAction() { topFilterAction() {
this.refreshPage(); this.refreshPage();
...@@ -277,25 +301,51 @@ export default { ...@@ -277,25 +301,51 @@ export default {
this.$refs.list.resetCurrentPage(); this.$refs.list.resetCurrentPage();
}, },
viewItem(item) { viewItem(item) {
this.detailContent = ` this.$http
<h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1><img src="http://pic1.win4000.com/tj/2020-10-19/5f8d3a49abc54.jpg" style="font-size: 14px; max-width: 100%;"></h1><h1><a href="https://www.baidu.com" target="_blank" style="font-size: 14px;">链接</a></h1><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能</p><h1></h1> .get("/apaas/support/document/get", {
`; params: {
id: item.id,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.detail = data.data;
}
});
this.$refs.detailDialog.show(); this.$refs.detailDialog.show();
}, },
editItem(item) { editItem(item) {
this.$router.push(`/technical_support/doc_manage/edit/${item.id}`); this.$router.push(`/technical_support/doc_manage/edit/${item.id}`);
}, },
deleteItem(item) { deleteItem(item) {
this.deleteDialogInfo.msg = "是否删除该条文档?"; this.deleteDialogInfo.msg = `是否删除《${item.title}》?`;
this.deleteDialogInfo.submit = () => { this.deleteDialogInfo.submit = () => {
console.log(`delete ${item.name}`); this.$http
.delete("/apaas/support/document/delete", {
params: {
id: item.id,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.$message.success("删除成功");
this.init(this.tempFilter);
} else {
this.$message.error("删除失败");
}
})
.catch((error) => {
console.log(error);
this.$message.error("删除失败");
});
}; };
this.$refs.deleteDialog.show(); this.$refs.deleteDialog.show();
}, },
addNew() { addNew() {
this.addForm = { this.addForm = {
region: "introductory", style: 0,
name: "", title: "",
}; };
this.$refs.addDialog.show(); this.$refs.addDialog.show();
}, },
...@@ -305,8 +355,37 @@ export default { ...@@ -305,8 +355,37 @@ export default {
AddSubmitAction() { AddSubmitAction() {
this.$refs.addForm.validate((valid) => { this.$refs.addForm.validate((valid) => {
if (valid) { if (valid) {
console.log("AddSubmitAction"); this.$http
this.$refs.addDialog.hide(); .get("/apaas/support/document/checkTitle", {
params: this.addForm,
})
.then(({ data }) => {
if (data.success === 1) {
this.$http
.post("/apaas/support/document/create", {
...this.addForm,
content: "",
})
.then(({ data }) => {
if (data.success === 1) {
this.$message.success("新增成功");
this.editItem(data.data);
} else {
this.$message.error(data.errMsg || "新增失败");
}
})
.catch((error) => {
console.log(error);
this.$message.error("新增失败");
});
} else {
this.$message.error("验证失败");
}
})
.catch((error) => {
console.log(error);
this.$message.error("验证失败");
});
} else { } else {
return false; return false;
} }
...@@ -337,8 +416,9 @@ export default { ...@@ -337,8 +416,9 @@ export default {
background-position: left center; background-position: left center;
} }
.detail_content { .detail_content {
max-height: 650px; height: 650px;
overflow: auto; overflow: auto;
text-align: left;
} }
</style> </style>
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
<div class="main_container"> <div class="main_container">
<div class="part doc_part"> <div class="part doc_part">
<h3 class="part_title"> <h3 class="part_title">
<span>平台简介</span> <span>{{ title || typeText }}</span>
<span>更新时间:2020-10-20 19:00:00</span> <span>更新时间:{{ update_time }}</span>
</h3> </h3>
<div <div
class="part_content doc_content apaas_scroll" class="part_content doc_content apaas_scroll"
...@@ -49,9 +49,13 @@ ...@@ -49,9 +49,13 @@
</template> </template>
<script> <script>
import helper from "@/services/helper.js";
export default { export default {
data() { data() {
return { return {
title: "",
update_time: "",
content: "", content: "",
navTree: [], navTree: [],
curNav: "", curNav: "",
...@@ -74,18 +78,8 @@ export default { ...@@ -74,18 +78,8 @@ export default {
return types[this.type]; return types[this.type];
}, },
typeUrl() { docId() {
let types = { return this.$route.params.id;
introductory: "xxx",
notice: "xxx",
trem: "xxx",
standard: "xxx",
guide: "xxx",
api: "xxx",
questions: "xxx",
};
return types[this.type];
}, },
}, },
created() { created() {
...@@ -94,9 +88,10 @@ export default { ...@@ -94,9 +88,10 @@ export default {
methods: { methods: {
getContent() { getContent() {
let successCallback = (content) => { let successCallback = (content) => {
let titles = content.match( let titles =
/<h1(([\s\S])*?)<\/h1>|<h2(([\s\S])*?)<\/h2>|<h3(([\s\S])*?)<\/h3>/g content.match(
); /<h1(([\s\S])*?)<\/h1>|<h2(([\s\S])*?)<\/h2>|<h3(([\s\S])*?)<\/h3>/g
) || [];
let time = new Date().getTime(); let time = new Date().getTime();
let pre_h1_index = 0; let pre_h1_index = 0;
let pre_h2_index = 0; let pre_h2_index = 0;
...@@ -145,10 +140,25 @@ export default { ...@@ -145,10 +140,25 @@ export default {
this.curNav = (newTitles[0] && newTitles[0].id) || ""; this.curNav = (newTitles[0] && newTitles[0].id) || "";
}; };
let richTextContent = ` this.$http
<h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1><img src="http://pic1.win4000.com/tj/2020-10-19/5f8d3a49abc54.jpg" style="font-size: 14px; max-width: 100%;"></h1><h1><a href="https://www.baidu.com" target="_blank" style="font-size: 14px;">链接</a></h1><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h1>产品简介</h1><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h2>产品简介</h2><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能力</p><p><br></p><h3>产品简介</h3><p>BD-aPaaS平台(V3.0)基于BD-aPaaS平台(V2.0)进行整体架构调整的升级研发。BD-aPaaS平台(V3.0)定位于PaaS层,偏重于支撑和管理SaaS层的应用和系统,是基于微服务架构、云网全面互联的大数据服务支撑平台,集城市信息资源规划、建设、治理、管理、融合、共享、分析、服务为一体,能够释放政府和行业沉淀在业务系统中的能</p><h1></h1> .get("/apaas/support/document/get", {
`; params: {
successCallback(richTextContent); id: this.docId,
},
})
.then(({ data }) => {
if (data.success === 1) {
this.title = data.data.title;
this.update_time = this.getTimeText(data.data.updated);
if (data.data.content) {
successCallback(data.data.content);
}
}
});
},
getTimeText(time) {
return helper.dateStringTransform(time);
}, },
clickNav(item) { clickNav(item) {
let target = document.querySelector(`#${item.id}`); let target = document.querySelector(`#${item.id}`);
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
imgSrc="tool_ic_kaifawendang" imgSrc="tool_ic_kaifawendang"
:nav-list="navList" :nav-list="navList"
:title-path="navList[0] && navList[0].path" :title-path="navList[0] && navList[0].path"
style="width: 200px;" style="width: 250px;"
></side-nav-bar> ></side-nav-bar>
<div class="main_container"> <div class="main_container">
<router-view /> <router-view :key="$route.params.type + $route.params.id" />
</div> </div>
</div> </div>
</template> </template>
...@@ -23,28 +23,41 @@ export default { ...@@ -23,28 +23,41 @@ export default {
data: () => ({ data: () => ({
navList: [], navList: [],
}), }),
watch: { /* watch: {
"$route.fullPath"(path) { "$route.fullPath"(path) {
this.initNavList(); this.initNavList();
}, },
}, }, */
methods: { methods: {
initNavList() { initNavList() {
this.$api.general.getNowMenu({ teamName: "APAAS3" }).then((response) => { this.$api.general.getNowMenu({ teamName: "APAAS3" }).then(({ data }) => {
if (response.data.success == 1) { if (data.success == 1) {
let arr = response.data.data[0].Child; let menu = data.data[0].Child;
let nav = [];
let activePath = "";
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < menu.length; i++) {
let first = arr[i]; let first = menu[i];
if (first.visit_url == "/technical_support") { if (first.visit_url == "/technical_support") {
for (let j = 0; j < first.Child.length; j++) { for (let j = 0; j < first.Child.length; j++) {
let second = first.Child[j]; let second = first.Child[j];
if (second.visit_url == "/technical_support/doc") { if (second.visit_url == "/technical_support/doc") {
this.navList = second.Child.map((item) => ({ let paths = [
"/technical_support/doc/introductory",
"/technical_support/doc/notice",
"/technical_support/doc/trem",
"/technical_support/doc/standard",
"/technical_support/doc/guide",
"/technical_support/doc/api",
"/technical_support/doc/questions",
];
nav = second.Child.map((item, index) => ({
name: item.menu_name, name: item.menu_name,
path: item.visit_url, path: item.visit_url,
style: paths.indexOf(item.visit_url),
})); }));
break; break;
} }
...@@ -52,6 +65,44 @@ export default { ...@@ -52,6 +65,44 @@ export default {
break; break;
} }
} }
Promise.all(
nav.map((item, index) => {
return this.$http.get("/apaas/support/document/menus", {
params: { style: item.style },
});
})
).then((responses) => {
responses.forEach(({ data }, index) => {
let list = data.data || [];
let children = list.map((v) => ({
name: v.title,
path: nav[index].path + "/" + v.id,
}));
if (children.length === 0) {
this.$set(nav[index], "disabled", true);
} else {
if (activePath === "") {
activePath = children[0].path;
}
this.$set(nav[index], "path", children[0].path);
if (children.length > 1) {
this.$set(nav[index], "children", children);
this.$set(nav[index], "open", true);
}
}
});
this.navList = nav;
if (activePath && this.$route.params.id === undefined) {
this.$router.push(activePath);
} else if (activePath === "") {
this.$message.error("您尚未创建任何文档");
}
});
} }
}); });
}, },
......
<template> <template>
<div class="community"> <div class="community">
<el-breadcrumb separator="/" class="bread_crumb1 bread_left"> <el-breadcrumb separator="/" class="bread_crumb1 bread_left">
<el-breadcrumb-item :to="{ path: '/user' }">{{ <el-breadcrumb-item :to="{ path: '/user' }">
$t("lang.personal_center") {{ $t("lang.personal_center") }}
}}</el-breadcrumb-item> </el-breadcrumb-item>
<el-breadcrumb-item>{{ <el-breadcrumb-item>
$t("lang.my_questions_and_answers") {{ $t("lang.my_questions_and_answers") }}
}}</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
<div class="from_content1 form_input_block"> <div class="from_content1 form_input_block">
<inline-form <inline-form
...@@ -42,6 +42,29 @@ ...@@ -42,6 +42,29 @@
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
></list-pagination> ></list-pagination>
</div> </div>
<el-dialog
title="提示"
:visible.sync="diaDel"
width="440px"
:modal-append-to-body="false"
>
<div class="dia_reason">
<el-form ref="form1" :model="reason_form" :rules="reason_rules">
<el-form-item class="dia_item">
<p>删除理由:</p>
<el-input
type="textarea"
v-model="reason_form.reason"
placeholder="请输入至少五个字符,至多20字符"
></el-input>
</el-form-item>
</el-form>
</div>
<div class="dia_btn_footer">
<el-button class="previous" @click="cancelDiaDel">取消</el-button>
<el-button class="registe" @click="submitDel">确定</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -51,6 +74,7 @@ import tableBtn from "@/components/new-com/tableBtn"; ...@@ -51,6 +74,7 @@ import tableBtn from "@/components/new-com/tableBtn";
import apassTable from "@/components/new-com/apassTable"; import apassTable from "@/components/new-com/apassTable";
import ListPagination from "@/components/comments-pagination"; import ListPagination from "@/components/comments-pagination";
import apassDialog from "@/components/apass-dialog"; import apassDialog from "@/components/apass-dialog";
import helper from "@/services/helper.js";
export default { export default {
components: { components: {
inlineForm, inlineForm,
...@@ -61,22 +85,10 @@ export default { ...@@ -61,22 +85,10 @@ export default {
}, },
data() { data() {
return { return {
search_text: "", search_ask: "",
tableData: [ search_user: "",
{ search_date: [],
user_id: "100021李想李想李想李想李想李想李想李想李想李想", tableData: [],
user_name: "李想李想李想李想李想李想李想李想李想李想",
user_type: 1,
oid: "f49afc8a-e4a5-4f70-8192-bbe2bb36945f",
org_name: "山西省应急管理厅-应急物资处",
gender: 2,
shared_state: 2,
state: 2,
operate_user_name: "",
operate_time: "2020-08-27 14:46:40",
sort: 1,
},
],
table_header: [], table_header: [],
total_list: 0, total_list: 0,
currentPage: 1, currentPage: 1,
...@@ -86,19 +98,19 @@ export default { ...@@ -86,19 +98,19 @@ export default {
label: "问题搜索", label: "问题搜索",
type: "input", type: "input",
placeholder: "请输入问题标题或内容关键词", placeholder: "请输入问题标题或内容关键词",
key: "name", key: "ask",
}, },
{ {
label: "发布人搜索", label: "发布人搜索",
type: "input", type: "input",
placeholder: "请输入发布人名称", placeholder: "请输入发布人名称",
key: "name", key: "user",
}, },
{ {
label: "发布时间", label: "发布时间",
type: "daterange", type: "daterange",
placeholder: "请选择", placeholder: "请选择",
key: "name", key: "date",
}, },
], ],
btn_data: [ btn_data: [
...@@ -112,25 +124,40 @@ export default { ...@@ -112,25 +124,40 @@ export default {
num: 0, num: 0,
selected_date: [], selected_date: [],
role_type: "", role_type: "",
now_state: "",
diaDel: false,
reason_form: {
reason: "",
},
reason_rules: {
reason: [
{
required: true,
max: 20,
min: 5,
message: "请填写活动形式",
trigger: "blur",
},
],
},
}; };
}, },
watch: { watch: {
$route(to, from) { $route(to, from) {
this.changeState(to.path); this.now_state = to.path;
this.changeState(this.now_state);
}, },
}, },
created() { created() {},
this.getlist();
},
methods: { methods: {
getRouter() { getRouter() {
let this_route = this.$route.path; let this_route = this.$route.path;
this.changeState(this_route); this.now_state = this_route;
this.changeState(this.now_state);
}, },
edit_data(val) {},
deleteData() { deleteData() {
if (this.selected_date.length) { if (this.selected_date.length) {
this.$refs.deletelog.show(); this.diaDel = true;
} else { } else {
this.$message.error("请先选择要删除的数据"); this.$message.error("请先选择要删除的数据");
} }
...@@ -139,25 +166,25 @@ export default { ...@@ -139,25 +166,25 @@ export default {
console.log(val); console.log(val);
this.currentlimit = val; this.currentlimit = val;
this.currentPage = 1; this.currentPage = 1;
this.getlist(); this.changeState(this.now_state);
}, },
handleCurrentChange(val) { handleCurrentChange(val) {
console.log(val); console.log(val);
this.currentPage = val; this.currentPage = val;
this.getlist(); this.changeState(this.now_state);
}, },
//获取列表数据
getlist() {},
get_search_list(val) { get_search_list(val) {
console.log(val);
if (val) { if (val) {
this.search_text = val.name; this.search_ask = val.ask;
this.role_type = val.type; this.search_user = val.user;
this.search_date = val.date;
} else { } else {
this.search_text = ""; this.search_ask = "";
this.search_user = "";
this.search_date = [];
} }
this.currentPage = 1; this.currentPage = 1;
this.getlist(); this.changeState(this.now_state);
}, },
clean() { clean() {
this.$refs.outtreetable.cleanSel(); this.$refs.outtreetable.cleanSel();
...@@ -166,47 +193,147 @@ export default { ...@@ -166,47 +193,147 @@ export default {
this.num = select.length; this.num = select.length;
this.selected_date = select; this.selected_date = select;
}, },
cancelDiaDel() {
this.diaDel = false;
},
submitDel() {
this.$refs.form1.validate((valid) => {
if (valid) {
this.diaDel = false;
if (this.now_state == "/qa/questions") {
this.delQ();
} else if (this.now_state == "/qa/answers") {
this.delA();
}
} else {
}
});
},
del_q(val) {
this.selected_date = [{ id: val.id }];
this.diaDel = true;
},
del_a(val) {
this.selected_date = [{ id: val.id }];
this.diaDel = true;
},
getQList() {
let query = {
search: this.search_ask,
style: 3,
create_user: this.search_user,
start: this.search_date.length != 0 ? this.search_date[0] : "",
end: this.search_date.length != 0 ? this.search_date[1] : "",
limit: this.currentlimit,
page: this.currentPage,
order: "created",
};
this.$api.user.getQuestionList(query).then((response) => {
if (response.data.success == 1) {
this.tableData = response.data.data;
this.total_list = response.data.total;
}
});
},
getAList() {
let query = {
search: this.search_ask,
style: 3,
create_user: this.search_user,
start: this.search_date.length != 0 ? this.search_date[0] : "",
end: this.search_date.length != 0 ? this.search_date[1] : "",
limit: this.currentlimit,
page: this.currentPage,
};
this.$api.user.getAnswerList(query).then((response) => {
if (response.data.success == 1) {
this.tableData = response.data.data;
this.total_list = response.data.total;
}
});
},
delQ() {
let query = {
items: [],
};
this.selected_date.forEach((item) => {
query.items.push({ id: item.id, reason: this.reason_form.reason });
});
this.$api.user.delQuestions(query).then((response) => {
if (response.data.success == 1) {
this.$message({
message: "删除成功",
type: "success",
});
}
});
},
delA() {
let query = {
items: [],
};
this.selected_date.forEach((item) => {
query.items.push({ id: item.id, reason: this.reason_form.reason });
});
this.$api.user.delAnswers(query).then((response) => {
if (response.data.success == 1) {
this.$message({
message: "删除成功",
type: "success",
});
}
});
},
changeState(val) { changeState(val) {
if (val == "/user/questions") { this.table_header = [];
if (val == "/qa/questions") {
this.form_data[1].label = "发布人搜索";
this.form_data[2].label = "发布时间";
this.table_header = [ this.table_header = [
{ {
prop: "user_id", prop: "title",
label: "问题标题", label: "问题标题",
align: "left", align: "left",
type: "html", type: "html",
getHtml: (str) => { getHtml: (str) => {
return `<span style="color:#0f2683;font-weight:bold;width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.user_id}">${str.user_id}</span>`; return `<span style="color:#0f2683;font-weight:bold;width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.title}">${str.title}</span>`;
}, },
}, },
{ {
prop: "user_id", prop: "content",
label: "问题内容", label: "问题内容",
align: "left", align: "left",
type: "html", type: "html",
getHtml: (str) => { getHtml: (str) => {
return `<span style="width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.user_id}">${str.user_id}</span>`; return `<span style="width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.content.replace(
/<[^<>]+>/g,
""
)}">${str.content.replace(/<[^<>]+>/g, "")}</span>`;
}, },
}, },
{ {
prop: "operate_time", prop: "answer_num",
label: "回复数", label: "回复数",
align: "center", align: "center",
}, },
{ {
prop: "operate_time", prop: "view",
label: "浏览数", label: "浏览数",
align: "center", align: "center",
}, },
{ {
prop: "operate_time", prop: "user_name",
label: "发布人", label: "发布人",
align: "center", align: "center",
}, },
{ {
prop: "operate_time", prop: "created",
label: "发布时间", label: "发布时间",
align: "center", align: "center",
width: 200, type: "html",
getHtml: (str) => {
return `<span>${helper.dateStringTransform(str.created)}</span>`;
},
}, },
{ {
label: "操作", label: "操作",
...@@ -215,61 +342,70 @@ export default { ...@@ -215,61 +342,70 @@ export default {
align: "center", align: "center",
actionList: [ actionList: [
{ {
label: "修改", label: "删除",
callback: this.edit_data, callback: this.del_q,
}, },
], ],
}, },
]; ];
} else { this.getQList();
} else if (val == "/qa/answers") {
this.form_data[1].label = "回复人搜索";
this.form_data[2].label = "回复时间";
this.table_header = [ this.table_header = [
{ {
prop: "user_id", prop: "content",
label: "回答内容", label: "回答内容",
align: "left", align: "left",
type: "html", type: "html",
getHtml: (str) => { getHtml: (str) => {
return `<span style="color:#0f2683;font-weight:bold;width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.user_id}">${str.user_id}</span>`; return `<span style="color:#0f2683;font-weight:bold;width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.content}">${str.content}</span>`;
}, },
}, },
{ {
prop: "user_id", prop: "title",
label: "问题标题", label: "问题标题",
align: "left", align: "left",
type: "html", type: "html",
getHtml: (str) => { getHtml: (str) => {
return `<span style="width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.user_id}">${str.user_id}</span>`; return `<span style="width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.title}">${str.title}</span>`;
}, },
}, },
{ {
prop: "user_id", prop: "content",
label: "问题内容", label: "问题内容",
align: "left", align: "left",
type: "html", type: "html",
getHtml: (str) => { getHtml: (str) => {
return `<span style="width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.user_id}">${str.user_id}</span>`; return `<span style="width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" title="${str.content.replace(
/<[^<>]+>/g,
""
)}">${str.content.replace(/<[^<>]+>/g, "")}</span>`;
}, },
}, },
{ {
prop: "operate_time", prop: "answer_num",
label: "回复数", label: "回复数",
align: "center", align: "center",
}, },
{ {
prop: "operate_time", prop: "view",
label: "浏览数", label: "浏览数",
align: "center", align: "center",
}, },
{ {
prop: "operate_time", prop: "user_name",
label: "回复人", label: "回复人",
align: "center", align: "center",
}, },
{ {
prop: "operate_time", prop: "created",
label: "回复时间", label: "回复时间",
align: "center", align: "center",
width: 200, type: "html",
getHtml: (str) => {
return `<span>${helper.dateStringTransform(str.created)}</span>`;
},
}, },
{ {
label: "操作", label: "操作",
...@@ -278,12 +414,13 @@ export default { ...@@ -278,12 +414,13 @@ export default {
align: "center", align: "center",
actionList: [ actionList: [
{ {
label: "修改", label: "删除",
callback: this.edit_data, callback: this.del_a,
}, },
], ],
}, },
]; ];
this.getAList();
} }
}, },
}, },
...@@ -301,4 +438,36 @@ export default { ...@@ -301,4 +438,36 @@ export default {
.form_list_block { .form_list_block {
height: calc(100% - 180px); height: calc(100% - 180px);
} }
.dia_item {
width: 100%;
margin-bottom: 12px;
}
.dia_item p {
padding-left: 15px;
color: #58617a;
}
.dia_btn_footer {
display: flex;
justify-content: flex-end;
margin: 30px 0 0;
}
.previous {
width: 100px;
background-color: #c3caf8;
color: #0f2683;
}
.registe {
width: 100px;
background-color: #0f2683;
color: #f8f9fd;
}
.dia_reason {
text-align: left;
}
</style>
<style>
.dia_reason .el-textarea__inner {
border-radius: 8px;
background-color: #f7f8f9;
}
</style> </style>
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<BlockRadius class="info_block user_qa"> <BlockRadius class="info_block user_qa">
<div class="left_user"> <div class="left_user">
<div class="img_head"> <div class="img_head">
<img src="@/assets/imgs/shop_img_banner_test.png" /> <img :src="user_info.picture_path" class="img_head_in" />
</div> </div>
<div class="left_word"> <div class="left_word">
<p class="left_name">设计师设计啥都往</p> <p class="left_name">{{ user_info.user_name }}</p>
<p class="left_role">普通用户开发者</p> <p class="left_role">{{ user_info.role }}</p>
</div> </div>
</div> </div>
<div class="right_list"> <div class="right_list">
...@@ -24,7 +24,10 @@ ...@@ -24,7 +24,10 @@
<div class="card_word"> <div class="card_word">
<p class="card_name">我的提问</p> <p class="card_name">我的提问</p>
<p> <p>
{{ helper.numberFormat(870000) }}<span class="card_wan"></span> {{ helper.numberFormat(user_info.question_num)
}}<span v-if="user_info.question_num > 10000" class="card_wan"
></span
>
</p> </p>
</div> </div>
</div> </div>
...@@ -33,7 +36,10 @@ ...@@ -33,7 +36,10 @@
<div class="card_word"> <div class="card_word">
<p class="card_name">我的提问</p> <p class="card_name">我的提问</p>
<p> <p>
{{ helper.numberFormat(870000) }}<span class="card_wan"></span> {{ helper.numberFormat(user_info.answer_num)
}}<span v-if="user_info.answer_num > 10000" class="card_wan"
></span
>
</p> </p>
</div> </div>
</div> </div>
...@@ -42,7 +48,10 @@ ...@@ -42,7 +48,10 @@
<div class="card_word"> <div class="card_word">
<p class="card_name">我的提问</p> <p class="card_name">我的提问</p>
<p> <p>
{{ helper.numberFormat(870000) }}<span class="card_wan"></span> {{ helper.numberFormat(user_info.view_num)
}}<span v-if="user_info.view_num > 10000" class="card_wan"
></span
>
</p> </p>
</div> </div>
</div> </div>
...@@ -58,27 +67,34 @@ ...@@ -58,27 +67,34 @@
<div v-for="(item, index) in data_list" :key="index" class="qa_cell"> <div v-for="(item, index) in data_list" :key="index" class="qa_cell">
<div class="qa_cell_in"> <div class="qa_cell_in">
<div :class="activeName == 2 ? 'qa_is_del' : 'qa_init'"> <div :class="activeName == 2 ? 'qa_is_del' : 'qa_init'">
<p v-if="activeName == 1" class="cell_answer">为什么感知服务提示我无法注册?</p> <p v-if="activeName == 1" class="cell_answer">
<p :class="activeName == 0 ? 'cell_title' : 'cell_ans_title'">为什么感知服务提示我无法注册?</p> {{ item.answer }}
</p>
<p :class="activeName == 0 ? 'cell_title' : 'cell_ans_title'">
{{ item.title }}
</p>
<p class="cell_cont"> <p class="cell_cont">
为什么感知服务提示我无法注册?为什么感知服务提示我无法注册?为什么感知服务提示我无法注册?为什么感知服务提示我无法注册?为什么感知服务提示我无法注册?为什么感知服务提示我无法注册?为什么感知服务提示我无法注册? {{ item.content.replace(/<[^<>]+>/g, "") }}
</p> </p>
<p v-if="activeName == 2" class="cell_other"> <p v-if="activeName == 2" class="cell_other">
<span>删除时间:2020-10-01 18:00:00</span> <span
<span>删除人:管理员</span> >删除时间:{{
<span>删除理由:帖子内容含违规广告信息</span> helper.dateStringTransform(item.deleted_time)
}}</span
>
<span>删除人:{{ item.delete_user }}</span>
<span>删除理由:{{ item.reason }}</span>
</p> </p>
<p v-else class="cell_other"> <p v-else class="cell_other">
<span>2020-10-01 18:00:00</span> <span>{{ helper.dateStringTransform(item.created) }}</span>
<span>评论 12</span> <span>评论 {{ item.answer_num }}</span>
<span>阅读 1,024</span> <span>阅读 {{ item.view }}</span>
</p> </p>
</div> </div>
<div class="qa_del"> <div v-if="activeName == 0 || activeName == 1" class="qa_del">
<img <img
src="@/assets/imgs/msg_icon_shanchu.png" src="@/assets/imgs/msg_icon_shanchu.png"
@click="delectItem(index)" @click="delectItem(item)"
/> />
</div> </div>
</div> </div>
...@@ -86,7 +102,7 @@ ...@@ -86,7 +102,7 @@
</div> </div>
<!-- 分页 --> <!-- 分页 -->
<section class="com-pagination"> <section class="com-pagination">
<div class="com_page_total">3个条目</div> <div class="com_page_total"> {{ total }} 个条目</div>
<div class="com_page_item"> <div class="com_page_item">
<div class="com_page_num"> <div class="com_page_num">
<div>每页条数:</div> <div>每页条数:</div>
...@@ -131,6 +147,18 @@ ...@@ -131,6 +147,18 @@
</div> </div>
</section> </section>
</BlockRadius> </BlockRadius>
<el-dialog
title="确认删除?"
:visible.sync="diaDelItem"
:modal-append-to-body="false"
width="440px"
>
<div class="change_psw">您确认删除?</div>
<div class="dia_btn_footer">
<el-button class="previous" @click="cancelDel">取消</el-button>
<el-button class="registe" @click="submitDel">确认</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -148,7 +176,7 @@ export default { ...@@ -148,7 +176,7 @@ export default {
rowsPerPage: 10, rowsPerPage: 10,
page: 1, page: 1,
}, },
total: 123, total: 0,
pageOptions: [ pageOptions: [
{ {
value: "10", value: "10",
...@@ -163,9 +191,45 @@ export default { ...@@ -163,9 +191,45 @@ export default {
label: "50", label: "50",
}, },
], ],
data_list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0], data_list: [
{
id: 1,
title: "平台的流程引擎怎么样", // 标题
content: "我们想用流程引擎,不会用,求大神指点", // 内容
created_by: "abc", // 发布人的userid
created: "2020-10-21T14:28:10+08:00", // 发布时间
updated: "2020-10-21T14:28:10+08:00", // 更新时间
view: 0, // 浏览量
answer_num: 2, // 回答数,
user_name: "普通neo", // 发布人
picture_path:
"/apaas/static/docs/image/image/blob_18f512d3-ee8f-4112-89a9-b2e7bfdfdec1.blob", // 头像
},
],
user_info: {
user_name: "",
role: "",
question_num: 0,
answer_num: 0,
view_num: 0,
picture_path: "",
},
diaDelItem: false,
delItem: {},
}), }),
watch: {}, watch: {
activeName: {
handler(val) {
if (val == "0") {
this.getQList();
} else if (val == "1") {
this.getAList();
} else if (val == "2") {
this.getDeleteList();
}
},
},
},
methods: { methods: {
clickTab() {}, clickTab() {},
handleSizeChange(val) { handleSizeChange(val) {
...@@ -183,17 +247,106 @@ export default { ...@@ -183,17 +247,106 @@ export default {
let listWidth = this.$refs.commodityCardIn.clientWidth; let listWidth = this.$refs.commodityCardIn.clientWidth;
let rowCardNum = Math.floor(listWidth / 310); let rowCardNum = Math.floor(listWidth / 310);
let cardArr = this.$refs.commodityCardIn.children; let cardArr = this.$refs.commodityCardIn.children;
// console.log(rowCardNum, listWidth / rowCardNum);
for (let i = 0; i < cardArr.length; i++) { for (let i = 0; i < cardArr.length; i++) {
cardArr[i].style.width = listWidth / rowCardNum - 1 + "px"; cardArr[i].style.width = listWidth / rowCardNum - 1 + "px";
} }
// console.log(this.$refs.commodityCardIn);
}, },
delectItem(index) { delectItem(item) {
console.log(index); this.delItem = item;
console.log(this.delItem);
this.diaDelItem = true;
},
getUserQA() {
this.$api.user.getUserQA().then((response) => {
if (response.data.success == 1) {
this.user_info = response.data.data;
}
});
},
getQList() {
let query = {
search: "",
style: 2,
create_user: "",
start: "",
end: "",
limit: this.pagination.rowsPerPage,
page: this.pagination.page,
order: "created",
};
this.$api.user.getQuestionList(query).then((response) => {
if (response.data.success == 1) {
this.data_list = response.data.data;
this.total = response.data.total;
}
});
},
getAList() {
let query = {
search: "",
style: 2,
create_user: "",
start: "",
end: "",
limit: this.pagination.rowsPerPage,
page: this.pagination.page,
};
this.$api.user.getAnswerList(query).then((response) => {
if (response.data.success == 1) {
this.data_list = response.data.data;
this.total = response.data.total;
}
});
},
getDeleteList() {
this.$api.user.getDeleteList().then((response) => {
if (response.data.success == 1) {
this.data_list = response.data.data;
this.total = response.data.total;
}
});
},
cancelDel() {
this.diaDelItem = false;
},
submitDel() {
if (this.activeName == 0) {
this.delQ();
} else if (this.activeName == 1) {
this.delA();
}
},
delQ() {
let query = {
items: [{ id: this.delItem.id }],
};
this.$api.user.delQuestions(query).then((response) => {
if (response.data.success == 1) {
this.$message({
message: "删除成功",
type: "success",
});
}
});
}, },
delA() {
let query = {
items: [{ id: this.delItem.id }],
};
this.$api.user.delAnswers(query).then((response) => {
if (response.data.success == 1) {
this.$message({
message: "删除成功",
type: "success",
});
}
});
},
},
mounted() {
this.getUserQA();
// this.getQList();
}, },
mounted() {},
}; };
</script> </script>
...@@ -228,6 +381,10 @@ export default { ...@@ -228,6 +381,10 @@ export default {
overflow: hidden; overflow: hidden;
border: solid 2px #e3e5ef; border: solid 2px #e3e5ef;
} }
.img_head_in {
width: 100%;
height: 100%;
}
.left_word { .left_word {
width: 200px; width: 200px;
padding-top: 5px; padding-top: 5px;
...@@ -461,6 +618,32 @@ export default { ...@@ -461,6 +618,32 @@ export default {
.commodity_card_item_in { .commodity_card_item_in {
margin: 0 auto; margin: 0 auto;
} }
.change_psw {
text-align: left;
}
.dia_item {
width: 100%;
margin-bottom: 12px;
}
.dia_item p {
padding-left: 15px;
color: #242c43;
}
.dia_btn_footer {
display: flex;
justify-content: flex-end;
margin: 20px 0 0;
}
.previous {
width: 100px;
background-color: #c3caf8;
color: #0f2683;
}
.registe {
width: 100px;
background-color: #0f2683;
color: #f8f9fd;
}
</style> </style>
<style> <style>
.com_page_control .el-button { .com_page_control .el-button {
......
<template>
<div class="fwgl_container">
<side-nav-bar
v-if="showNavbar"
title="问答中心管理"
:title-icon="require('@/assets/imgs/tool_ic_wenda.png')"
:nav-list="navList"
:title-path="navList[0] && navList[0].path"
></side-nav-bar>
<div class="main_container">
<router-view :key="'type_' + $route.params.type"></router-view>
</div>
</div>
</template>
<script>
import sideNavBar from "@/components/side-nav-bar";
export default {
components: {
sideNavBar,
},
data: () => ({
userNav: [
{
name: "提问列表",
path: `/qa/questions`,
},
{
name: "回答列表",
path: `/qa/answers`,
},
],
navList: [],
showNavbar: false,
}),
watch: {
"$route.fullPath"(path) {
this.initNavList();
},
},
methods: {
initNavList() {
this.navList = this.userNav;
},
},
mounted() {
this.$api.user.getNowUser().then(({ data }) => {
if (data.success == 1) {
this.$store.commit("userInfofun", data.data);
const userLevel = this.$store.getters.level;
if (userLevel == 0) {
this.$message({
message: `您没有问答中心管理模块的权限.`,
type: "warning",
});
this.$router.push(`/index`);
} else {
this.showNavbar = true;
this.initNavList();
}
}
});
},
};
</script>
<style scoped>
.fwgl_container {
height: calc(100vh - 58px);
display: flex;
justify-content: flex-start;
align-items: stretch;
}
.side_nav_bar {
width: 180px;
flex-shrink: 0;
}
.main_container {
width: calc(100% - 180px);
flex-grow: 1;
flex-shrink: 1;
background-color: #f6f7fb;
overflow: auto;
}
</style>
...@@ -48,6 +48,26 @@ const user = { ...@@ -48,6 +48,26 @@ const user = {
editUserPassword(params) { editUserPassword(params) {
return axios.post(`/apaas/backmgt/user/password/${params.id}`, qs.stringify(params.form)); return axios.post(`/apaas/backmgt/user/password/${params.id}`, qs.stringify(params.form));
}, },
// QA
getQuestionList(params) {
return axios.get(`/apaas/support/qa/question/list?search=${params.search}&style=${params.style}&create_user=${params.create_user}&start=${params.start}&end=${params.end}&limit=${params.limit}&page=${params.page}&order=${params.order}`);
},
getAnswerList(params) {
return axios.get(`/apaas/support/qa/answer/list?search=${params.search}&style=${params.style}&create_user=${params.create_user}&start=${params.start}&end=${params.end}&limit=${params.limit}&page=${params.page}`);
},
getDeleteList() {
return axios.get(`/apaas/support/qa/deleted`);
},
delQuestions(params) {
return axios.delete(`/apaas/support/qa/question/delete`, params);
},
delAnswers(params) {
return axios.delete(`/apaas/support/qa/answer/delete`, params);
},
getUserQA() {
return axios.get(`/apaas/support/qa/info`)
}
} }
export default user; export default user;
\ No newline at end of file
...@@ -147,17 +147,16 @@ export default new Router({ ...@@ -147,17 +147,16 @@ export default new Router({
{ {
path: "/technical_support", path: "/technical_support",
name: "technicalSupport", name: "technicalSupport",
redirect: "/technical_support/doc/", redirect: "/technical_support/doc",
component: () => import("@/pages/technical-support/index"), component: () => import("@/pages/technical-support/index"),
children: [ children: [
{ {
path: "/technical_support/doc/", path: "/technical_support/doc",
name: "technicalSupportDoc", name: "technicalSupportDoc",
redirect: "/technical_support/doc/introductory",
component: () => import("@/pages/technical-support/doc/index"), component: () => import("@/pages/technical-support/doc/index"),
children: [ children: [
{ {
path: "/technical_support/doc/:type", path: "/technical_support/doc/:type/:id",
name: "technicalSupportDocDetail", name: "technicalSupportDocDetail",
component: () => component: () =>
import("@/pages/technical-support/doc/detail"), import("@/pages/technical-support/doc/detail"),
...@@ -165,7 +164,7 @@ export default new Router({ ...@@ -165,7 +164,7 @@ export default new Router({
], ],
}, // 开发文档 }, // 开发文档
{ {
path: "/technical_support/doc_manage/", path: "/technical_support/doc_manage",
name: "technicalSupportDoc", name: "technicalSupportDoc",
redirect: "/technical_support/doc_manage/list", redirect: "/technical_support/doc_manage/list",
component: () => import("@/pages/technical-support/doc-manage/index"), component: () => import("@/pages/technical-support/doc-manage/index"),
...@@ -420,22 +419,30 @@ export default new Router({ ...@@ -420,22 +419,30 @@ export default new Router({
component: () => import("@/pages/user/order/order_detail"), component: () => import("@/pages/user/order/order_detail"),
}, },
{ {
path: "/user/my_qa", // 我的问答 path: "/qa/my_qa", // 我的问答
name: "myQA", name: "myQA",
component: () => import("@/pages/user/questions-answers/my-qa"), component: () => import("@/pages/user/questions-answers/my-qa"),
}, },
],
}, // 个人中心
{
path: "/qa_management", // 问答中心管理
name: "qaManagement",
redirect: "/qa/questions",
component: () => import("@/pages/user/questions-answers/qa"),
children: [
{ {
path: "/user/questions", // 提问列表 path: "/qa/questions", // 提问列表
name: "questions", name: "questions",
component: () => import("@/pages/user/questions-answers/community"), component: () => import("@/pages/user/questions-answers/community"),
}, },
{ {
path: "/user/answers", // 回答列表 path: "/qa/answers", // 回答列表
name: "answers", name: "answers",
component: () => import("@/pages/user/questions-answers/community"), component: () => import("@/pages/user/questions-answers/community"),
}, },
], ]
}, // 个人中心 },
{ {
path: "/authority", // 权限管理 path: "/authority", // 权限管理
name: "authority", name: "authority",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment