helpContent.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>帮助中心
  5. </h2>
  6. <div class="m-core">
  7. <div class="newBand" v-permission="'helpCenterContent/modify'" @click="openTypes('create')">添加</div>
  8. <!-- 搜索标题 -->
  9. <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
  10. <el-form-item prop="hasPracticeCourse">
  11. <el-cascader
  12. :show-all-levels="false"
  13. :options="treeList"
  14. v-model="searchForm.catalogId"
  15. :props="{ checkStrictly: true }"
  16. clearable></el-cascader>
  17. </el-form-item>
  18. <el-form-item>
  19. <el-button @click="getList" type="danger">搜索</el-button>
  20. </el-form-item>
  21. </el-form>
  22. <div class="tableWrap">
  23. <el-table :data="tableList"
  24. :header-cell-style="{background:'#EDEEF0',color:'#444'}">>
  25. <el-table-column width="120px" align="center" prop="id" label="编号"></el-table-column>
  26. <el-table-column align="center" prop="title" label="标题"></el-table-column>
  27. <el-table-column align="center" prop="content" label="内容"></el-table-column>
  28. <el-table-column align="center" prop="catalog.text" label="分类名"></el-table-column>
  29. <el-table-column align="center" label="操作">
  30. <template slot-scope="scope">
  31. <el-button v-permission="'helpCenterContent/modify'" @click="openTypes('update', scope.row)" type="text">修改</el-button>
  32. <el-button @click="onTypeDelOpeation(scope.row)"
  33. v-permission="'helpCenterContent/delete'" type="text">删除</el-button>
  34. </template>
  35. </el-table-column>
  36. </el-table>
  37. <pagination
  38. :total="pageInfo.total"
  39. :page.sync="pageInfo.page"
  40. :limit.sync="pageInfo.limit"
  41. :page-sizes="pageInfo.page_size"
  42. @pagination="getList"
  43. />
  44. </div>
  45. </div>
  46. <el-dialog
  47. :title="formTitle[formActionTitle]"
  48. :visible.sync="typeStatus"
  49. @close="onFormClose('ruleForm')"
  50. width="500px"
  51. >
  52. <el-form :model="form" :rules="rules" ref="ruleForm">
  53. <el-form-item label="标题" prop="title" :label-width="formLabelWidth">
  54. <el-input v-model.trim="form.title" autocomplete="off" placeholder="请输入标题"></el-input>
  55. </el-form-item>
  56. <el-form-item label="分类" prop="catalogId" :label-width="formLabelWidth">
  57. <el-cascader style="width: 100%;"
  58. :show-all-levels="false"
  59. :options="treeList"
  60. v-model="form.catalogId"
  61. :props="{ checkStrictly: true }"
  62. clearable></el-cascader>
  63. </el-form-item>
  64. <el-form-item label="内容" prop="content" :label-width="formLabelWidth">
  65. <el-input
  66. type="textarea"
  67. :rows="3"
  68. placeholder="请输入内容"
  69. v-model="form.content">
  70. </el-input>
  71. </el-form-item>
  72. </el-form>
  73. <span slot="footer" class="dialog-footer">
  74. <el-button @click="typeStatus = false">取 消</el-button>
  75. <el-button type="primary" @click="onTypeSubmit('ruleForm')">确 定</el-button>
  76. </span>
  77. </el-dialog>
  78. </div>
  79. </template>
  80. <script>
  81. import pagination from "@/components/Pagination/index";
  82. // import store from '@/store'
  83. import {
  84. helpCenterCatalogList,
  85. helpCenterContentList,
  86. helpCenterContentModify,
  87. helpCenterContentDelete
  88. } from "@/api/appTenant";
  89. export default {
  90. components: { pagination },
  91. name: "helpCategory",
  92. data() {
  93. return {
  94. searchForm: {
  95. catalogId: null
  96. },
  97. treeList: [],
  98. tableList: [],
  99. formActionTitle: "create",
  100. formTitle: {
  101. create: "添加帮助中心",
  102. update: "修改帮助中心"
  103. },
  104. typeStatus: false, // 添加教学点
  105. formLabelWidth: "100px",
  106. form: {
  107. title: null, // 标题
  108. content: null, // 内容
  109. catalogId: null, // 分类编号
  110. },
  111. rules: {
  112. title: [{ required: true, message: "请输入标题", trigger: "blur" }],
  113. content: [{ required: true, message: "请输入内容", trigger: "blur" }],
  114. catalogId: [{ required: true, message: "请输入选择分类", trigger: "blur" }]
  115. // subjectIds: [{ required: true, message: "请选择声部组合", trigger: "change" }]
  116. },
  117. pageInfo: {
  118. // 分页规则
  119. limit: 10, // 限制显示条数
  120. page: 1, // 当前页
  121. total: 0, // 总条数
  122. page_size: [10, 20, 40, 50] // 选择限制显示条数
  123. }
  124. };
  125. },
  126. activated() {
  127. this.getTreeList()
  128. },
  129. mounted() {
  130. this.getList();
  131. this.getTreeList()
  132. },
  133. methods: {
  134. onTypeDelOpeation(row) {
  135. this.$confirm('您是否删除该内容?', '提示', {
  136. confirmButtonText: '确定',
  137. cancelButtonText: '取消',
  138. type: 'warning'
  139. }).then(() => {
  140. helpCenterContentDelete({ id: row.id }).then(res => {
  141. this.messageTips('删除', res)
  142. })
  143. }).catch(() => {
  144. })
  145. },
  146. onTypeSubmit(formName) {
  147. // 添加数据
  148. this.$refs[formName].validate(valid => {
  149. if (valid) {
  150. if (this.formActionTitle == "create") {
  151. let params = {
  152. title: this.form.title, // 标题
  153. content: this.form.content, // 内容
  154. catalogId: this.form.catalogId[0], // 分类编号
  155. }
  156. helpCenterContentModify(params).then(res => {
  157. this.messageTips("添加", res);
  158. });
  159. } else if (this.formActionTitle == "update") {
  160. let params = {
  161. id: this.form.id,
  162. title: this.form.title, // 标题
  163. content: this.form.content, // 内容
  164. catalogId: this.form.catalogId[0], // 分类编号
  165. }
  166. helpCenterContentModify(params).then(res => {
  167. this.messageTips("修改", res);
  168. });
  169. }
  170. } else {
  171. return false;
  172. }
  173. });
  174. },
  175. messageTips(title, res) {
  176. if (res.code == 200) {
  177. this.$message.success(title + "成功");
  178. this.typeStatus = false;
  179. this.getList();
  180. } else {
  181. this.$message.error(res.msg);
  182. }
  183. },
  184. getList() {
  185. let params = {
  186. catalogIds: this.searchForm.catalogId ? this.searchForm.catalogId[0] : null
  187. }
  188. helpCenterContentList(params).then(res => {
  189. let result = res.data;
  190. if (res.code == 200) {
  191. this.tableList = result.rows;
  192. this.pageInfo.total = result.total
  193. }
  194. });
  195. },
  196. getTreeList() {
  197. helpCenterCatalogList({
  198. parentId: 0
  199. }).then(res => {
  200. let result = res.data;
  201. if (res.code == 200) {
  202. this.treeList = this.setTableData(result);
  203. }
  204. });
  205. },
  206. setTableData (result) {
  207. let list = []
  208. list = result.map(res => {
  209. let tempList = {}
  210. tempList = {
  211. value: res.id,
  212. label: res.text,
  213. }
  214. if (res.children && res.children.length > 0) {
  215. tempList.children = this.setTableData(res.children)
  216. }
  217. return tempList
  218. })
  219. return list
  220. },
  221. openTypes(type, row) {
  222. this.typeStatus = true;
  223. this.formActionTitle = type;
  224. if (type == "update") {
  225. // 修改的时候赋值
  226. console.log(row)
  227. this.form = {
  228. id: row.id,
  229. title: row.title, // 标题
  230. content: row.content, // 内容
  231. catalogId: [row.catalogId], // 分类编号
  232. };
  233. }
  234. },
  235. onFormClose(formName) {
  236. // 关闭弹窗重置验证
  237. this.form = {
  238. name: null, // 作业模块名称
  239. subjectIds: []
  240. };
  241. this.$refs[formName].resetFields();
  242. }
  243. }
  244. };
  245. </script>
  246. <style lang="scss" scoped>
  247. .el-button--primary {
  248. background: #14928a;
  249. border-color: #14928a;
  250. color: #fff;
  251. &:hover,
  252. &:active,
  253. &:focus {
  254. background: #14928a;
  255. border-color: #14928a;
  256. color: #fff;
  257. }
  258. }
  259. /deep/.el-date-editor.el-input {
  260. width: 100% !important;
  261. }
  262. /deep/.el-select {
  263. width: 100% !important;
  264. }
  265. /deep/.el-table .cell {
  266. display: -webkit-box;
  267. overflow: hidden;
  268. text-overflow: ellipsis;
  269. -webkit-line-clamp: 3;
  270. -webkit-box-orient: vertical;
  271. }
  272. /deep/.el-dialog__body {
  273. padding: 10px 20px;
  274. }
  275. </style>