gemercheung 1 tahun lalu
induk
melakukan
17ddda4f21

+ 45 - 0
packages/admin/src/apis/tab6.js

@@ -0,0 +1,45 @@
+import axios from '../utils/request'
+// 获取列表
+export const getAskList = () => {
+  return axios({
+    method: 'get',
+    url: '/cms/ask/getList'
+  })
+}
+
+export const deleteAsk = (id) => {
+  return axios({
+    method: 'post',
+    url: `/cms/ask/removes/${id}`
+  })
+}
+export const addAsk = (params) => {
+  return axios({
+    method: 'post',
+    url: '/cms/ask/saveEntity',
+    data: params
+  })
+}
+
+export const getKeywordList = (type) => {
+  return axios({
+    method: 'get',
+    url: '/cms/dict/getList',
+    params: {
+      type
+    }
+  })
+}
+export const addKeyword = (params) => {
+  return axios({
+    method: 'post',
+    url: '/cms/dict/save',
+    data: params
+  })
+}
+export const deleteKeyword = (id) => {
+  return axios({
+    method: 'get',
+    url: `/cms/dict/removes/${id}`
+  })
+}

+ 6 - 5
packages/admin/src/views/tab5/index.vue

@@ -91,11 +91,12 @@
         </div>
         <el-form ref="level1Form" label-position="right" label-width="80px" :model="level1ModalForm"
                  :rules="level1ModalFormRules">
-          <el-form-item label="专题名称" prop="name" required>
+          <el-form-item label="专题名称" prop="name">
             <el-input v-model="level1ModalForm.name"></el-input>
           </el-form-item>
-          <el-form-item label="排序值" prop="sort" required>
-            <el-input v-model="level1ModalForm.sort"></el-input>
+          <el-form-item label="排序值" prop="sort">
+            <el-input-number controls-position="right" placeholder="请输入1~999的数字。数字越小,排序越靠前。"
+                             v-model="level1ModalForm.sort"></el-input-number>
           </el-form-item>
         </el-form>
         <span slot="footer" class="dialog-footer">
@@ -115,10 +116,10 @@
         </div>
         <el-form ref="level2Form" label-position="right" label-width="80px" :model="level2ModalForm"
                  :rules="level1ModalFormRules">
-          <el-form-item label="专题名称" prop="name" required>
+          <el-form-item label="专题名称" prop="name" >
             <el-input v-model="level2ModalForm.name" placeholder="请输入内容,最多20字" :max-length="20"></el-input>
           </el-form-item>
-          <el-form-item label="封面" prop="thumb" required>
+          <el-form-item label="封面" prop="thumb" >
             <el-upload
               action=""
               :limit="1"

+ 211 - 42
packages/admin/src/views/tab6/index.vue

@@ -1,20 +1,15 @@
 <template>
-  <div class="tab1">
-    <div class="insideTop">资料管理</div>
+  <div class="tab6">
+    <div class="insideTop">问答咨询</div>
     <div class="obstruct"></div>
-    <div class="conten">
-      <!-- <div class="search">
-        <span>村落名称:</span>
-        <el-input
-          type="text"
-          placeholder="请输入内容"
-          v-model="name"
-          maxlength="25"
-          show-word-limit
-        />
-        <el-button type="primary">查询</el-button>
-        <el-button>重置</el-button>
-      </div> -->
+    <div class="content">
+      <div class="search">
+        <div class="action-group">
+          <el-button @click="keywordModalVisible=true">关键词设置</el-button>
+          <el-button type="primary" @click="askModalVisible=true">新增</el-button>
+        </div>
+
+      </div>
       <div class="table">
         <el-table :data="tableData" style="width: 100%">
           <el-table-column label="编号" width="150">
@@ -22,37 +17,135 @@
               {{ scope.$index + 1 }}
             </template>
           </el-table-column>
-          <!-- <el-table-column prop="id" label="编号" width="200"></el-table-column> -->
-          <el-table-column prop="name" label="村落名称"></el-table-column>
-          <el-table-column
-            prop="updateTime"
-            label="最近更新时间"
-          ></el-table-column>
+          <el-table-column prop="question" label="问题"></el-table-column>
+          <el-table-column prop="answer" label="问答"></el-table-column>
+          <el-table-column prop="dictName" label="关联关键词"></el-table-column>
+          <el-table-column prop="sort" label="排序值"></el-table-column>
+
           <el-table-column label="操作">
+
             <template #default="{ row }">
               <el-button
                 type="text"
-                @click="$router.push(`/layout/tab1Main/${row.id}/1001`)"
-                >编辑</el-button
+                @click="handleEdit(row)"
+              >编辑
+              </el-button>
+              <el-popconfirm
+                title="确定删除吗?"
+                @confirm="handleDelete(row.id)"
               >
+                <el-button slot="reference" type="text" style="padding: 0 5px">删除</el-button>
+              </el-popconfirm>
             </template>
           </el-table-column>
         </el-table>
       </div>
+      <el-dialog
+        :visible.sync="askModalVisible"
+        destroy-on-close
+        width="30%"
+        @close="modalForm = {}"
+        center>
+        <div slot="title" class="lv1-modal-header">
+          <span>新增</span>
+        </div>
+        <el-form ref="askForm" label-position="right" label-width="80px" :model="modalForm"
+                 :rules="rules">
+          <el-form-item label="问题" prop="question">
+            <el-input type="textarea" v-model="modalForm.question"></el-input>
+          </el-form-item>
+          <el-form-item label="回答" prop="answer">
+            <el-input type="textarea" v-model="modalForm.answer"></el-input>
+          </el-form-item>
+
+          <el-form-item label="关键词" prop="dictId" required>
+            <el-radio-group v-model="modalForm.dictId">
+              <el-radio v-bind:key="kw.id" :label="kw.id" v-for=" kw in keywordList">{{ kw.name }}</el-radio>
+            </el-radio-group>
+
+          </el-form-item>
+          <el-form-item label="排序值" prop="sort">
+            <el-input-number :min="0" controls-position="right" placeholder="请输入1~999的数字。数字越小,排序越靠前。"
+                             dea
+                             v-model="modalForm.sort"></el-input-number>
+          </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="askModalVisible = false">取 消</el-button>
+            <el-button type="primary" @click="handleSubmit">确 定</el-button>
+        </span>
+      </el-dialog>
+      <!--      -->
+      <el-dialog
+        :visible.sync="keywordModalVisible"
+        destroy-on-close
+        width="30%"
+        @close="keywordModal = {}"
+        center>
+
+        <div slot="title" class="lv1-modal-header">
+          <span>关键词</span>
+          <el-button type="primary">新增</el-button>
+        </div>
+        <div class="table">
+          <el-table :data="keywordList" style="width: 100%" min-height="450px">
+            <el-table-column prop="name" label="关键词名称"></el-table-column>
+            <el-table-column prop="sort" label="排序值"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="{ row }">
+                <el-button type="text" @click="handleKeywordEdit(row.id)">编辑</el-button>
+                <el-popconfirm
+                  title="确定删除吗?"
+                  @confirm="handleKeywordDelete(row.id)"
+                >
+                  <el-button slot="reference" type="text" style="padding: 0 5px">删除</el-button>
+                </el-popconfirm>
+
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+
+      </el-dialog>
+
     </div>
   </div>
 </template>
 
 <script>
-import { villageList } from '@/apis/tab1'
+import { getAskList, deleteAsk, getKeywordList, addAsk } from '@/apis/tab6'
+
 export default {
-  name: 'tab1',
+  name: 'tab6',
   components: {},
   data () {
     // 这里存放数据
     return {
       name: '',
-      tableData: []
+      tableData: [],
+      askModalVisible: false,
+      rules: {
+        question: [
+          { required: true, message: '请输入问题', trigger: 'blur' }
+        ],
+        answer: [
+          { required: true, message: '请输入回答', trigger: 'blur' }
+        ],
+        sort: [
+          { required: true, message: '请输入排序值', trigger: 'blur' }
+        ],
+        dictId: [
+          { required: true, message: '请输入关键词', trigger: 'blur' }
+        ]
+      },
+      modalForm: {
+        answer: '',
+        sort: 1
+      },
+      keywordList: [],
+      keywordModalVisible: false,
+      keywordModal: {}
+
     }
   },
   // 监听属性 类似于data概念
@@ -60,47 +153,123 @@ export default {
   // 监控data中的数据变化
   watch: {},
   // 方法集合
-  methods: {},
+  methods: {
+    handleSubmit () {
+      this.$refs.askForm.validate(async (valid) => {
+        if (valid) {
+          const params = {
+            answer: this.modalForm.answer,
+            dictId: this.modalForm.dictId,
+            question: this.modalForm.question,
+            sort: this.modalForm.sort
+          }
+          if (this.modalForm.id) {
+            params.id = this.modalForm.id
+          }
+          const res = await addAsk(params)
+          this.askModalVisible = false
+          if (res.code === 0) {
+            this.$message({
+              message: res.msg,
+              type: 'success'
+            })
+          } else {
+            this.$message({
+              message: res.msg,
+              type: 'error'
+            })
+          }
+          await this.handleRefreshList()
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    },
+    async handleRefreshList () {
+      const res = await getAskList()
+      this.tableData = res.data
+      await this.getKeyList()
+    },
+    async handleDelete (id) {
+      await deleteAsk(id)
+      await this.handleRefreshList()
+    },
+
+    async getKeyList () {
+      const list = await getKeywordList('ask')
+      this.keywordList = list.data
+    },
+    async handleEdit (row) {
+      this.modalForm = {
+        ...this.modalForm,
+        ...row
+      }
+      this.askModalVisible = true
+    },
+    handleKeywordEdit () {
+
+    },
+    handleKeywordDelete () {
+
+    }
+  },
   // 生命周期 - 创建完成(可以访问当前this实例)
   async created () {
-    const res = await villageList()
-    this.tableData = res.data
+    await this.handleRefreshList()
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
-  mounted () {},
-  beforeCreate () {}, // 生命周期 - 创建之前
-  beforeMount () {}, // 生命周期 - 挂载之前
-  beforeUpdate () {}, // 生命周期 - 更新之前
-  updated () {}, // 生命周期 - 更新之后
-  beforeDestroy () {}, // 生命周期 - 销毁之前
-  destroyed () {}, // 生命周期 - 销毁完成
-  activated () {} // 如果页面有keep-alive缓存功能,这个函数会触发
+  mounted () {
+  }
+
 }
 </script>
 <style lang='less' scoped>
-.tab1 {
+.tab6 {
   width: 100%;
   height: 100%;
-  .conten {
+
+  /deep/ .el-input-number {
+    width: 400px;
+    text-align: left;
+  }
+
+  .content {
     padding: 0 20px;
+
     .search {
       height: 70px;
+      width: 100%;
       display: flex;
+      justify-content: flex-end;
       align-items: center;
       border-bottom: 1px solid black;
-      /deep/.el-input {
+
+      /deep/ .el-input {
         width: 300px;
         margin-right: 12px;
       }
-      /deep/.el-input__inner {
+
+      /deep/ .el-input__inner {
         padding-right: 45px;
       }
     }
+
     .table {
-      /deep/.el-table__row .el-table__cell {
+      /deep/ .el-table__row .el-table__cell {
         padding: 3px 0;
       }
     }
   }
+
+  .lv1-modal-header {
+    display: flex;
+    align-items: center;
+    gap: 0 30px;
+
+    span {
+      font-size: 24px;
+    }
+  }
 }
 </style>