mo 3 rokov pred
rodič
commit
d57b18f85a

+ 1 - 0
src/constant/index.js

@@ -256,6 +256,7 @@ export const ProbationPeriodStatus = {
 export const clientType = {
   STUDENT:'学生端',
   TEACHER:'老师端',
+  EDUCATION:'教务端'
 
 }
 // export const musicScoreCategoriesId = [

+ 1 - 1
src/router/index.js

@@ -297,7 +297,7 @@ export const asyncRoutes = {
   // 添加或修改
   entryOperation: () => import('@/views/app/entryOperation'),
   // 意见反馈
-  suggestion: () => import('@/views/app/suggestion'),
+  suggestion: () => import('@/views/app/suggestionIndex'),
   // 帮助分类
   helpCategory: () => import('@/views/helpCenter/helpCategory'),
   // 帮助内容

+ 2 - 1
src/utils/searchArray.js

@@ -1,5 +1,5 @@
 // 搜索用的下拉数据列表
-import { payOrderType, auditType, auditPaymentType, orderServerType, orderAuditType, rewardModeType,classTime,musicClassType,ProbationPeriodStatus,downListType,musicGroupType,conclusion,vipResetType,courseViewType } from '../constant'
+import { payOrderType, auditType, auditPaymentType, orderServerType, orderAuditType, rewardModeType,classTime,musicClassType,ProbationPeriodStatus,downListType,musicGroupType,conclusion,vipResetType,courseViewType,clientType } from '../constant'
 // 课程类型
 export const courseType = [
   { label: "声部课", value: "SINGLE" },
@@ -230,6 +230,7 @@ export const musicClassTypeList =  getValueForKey(musicClassType)
 export const ProbationPeriodList = getValueForKey(ProbationPeriodStatus)
 export const downTypeList = getValueForKey(downListType)
 export const conclusionList = getValueForKey(conclusion)
+export const clientList = getValueForKey(clientType)
 //downListType
 function getValueForKey (obj) {
   let arr = []

+ 201 - 0
src/views/app/clouldSuggestion.vue

@@ -0,0 +1,201 @@
+<template>
+  <!-- <div class='m-container'> -->
+  <!-- <h2>
+      <div class="squrt"></div>意见反馈
+    </h2> -->
+  <div class="m-core">
+    <save-form
+      :inline="true"
+      class="searchForm"
+      save-key="clouldSuggestion"
+      @submit="search"
+      @reset="onReSet"
+      :model.sync="searchForm"
+      ref="searchForm"
+    >
+      <!-- 状态 指导老师 活动方案-->
+      <el-form-item prop="search">
+        <el-input
+          v-model.trim="searchForm.search"
+          clearable
+          placeholder="姓名、编号、手机号"
+        ></el-input>
+      </el-form-item>
+
+      <el-form-item  prop="clientType">
+        <el-select clearable v-model="searchForm.clientType">
+          <el-option
+            v-for="(item, index) in clientList"
+            :key="index"
+            :value="item.value"
+            :label="item.label"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <!-- statusList -->
+      <el-form-item prop="timer">
+        <el-date-picker
+          v-model.trim="searchForm.timer"
+          style="width: 400px"
+          type="daterange"
+          :picker-options="{
+            firstDayOfWeek: 1,
+          }"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button native-type="submit" type="danger">搜索</el-button>
+        <el-button native-type="reset" type="primary">重置</el-button>
+      </el-form-item>
+    </save-form>
+    <div class="tableWrap">
+      <el-table
+        :data="dataList"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      >
+        <el-table-column align="center" label="反馈时间" prop="createTime">
+          <template slot-scope="scope">
+            {{ scope.row.createTime | dateForMinFormat }}
+          </template>
+        </el-table-column>
+        <!-- <el-table-column align="center" prop="name" label="标题"> -->
+        <!-- </el-table-column> -->
+        <el-table-column align="center" label="内容" prop="content">
+          <template slot-scope="scope">
+            <tooltip :content="scope.row.content" />
+            <!-- <el-popover placement="top-start"
+                          width="300"
+                          trigger="hover"
+                          :content="scope.row.content">
+                <span slot="reference">{{ scope.row.content }}</span>
+              </el-popover> -->
+            <!-- <div :title="scope.row.content">{{ scope.row.content }}</div> -->
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="用户"
+          prop="username"
+        ></el-table-column>
+        <el-table-column align="center" prop="mobileNo" label="邮箱或手机号">
+        </el-table-column>
+        <el-table-column align="center" label="客户端" prop="clientType">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.clientType | clientTypeFilter }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="createTime" label="反馈时间">
+        </el-table-column>
+      </el-table>
+      <pagination
+        sync
+        :total.sync="pageInfo.total"
+        save-key="clouldSuggestion"
+        :page.sync="pageInfo.page"
+        :limit.sync="pageInfo.limit"
+        :page-sizes="pageInfo.page_size"
+        @pagination="getList"
+      />
+    </div>
+  </div>
+  <!-- </div> -->
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { sysSuggestionList } from "@/api/appTenant";
+import Tooltip from "@/components/Tooltip/index";
+import { clientList } from "@/utils/searchArray";
+import { getTimes } from "@/utils";
+export default {
+  components: { pagination, Tooltip },
+  name: "chargesList",
+  data() {
+    return {
+      id: null,
+      dataList: [],
+      clientList,
+      searchForm: {
+        search: "",
+        timer: [],
+        clientType: "",
+      },
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+    };
+  },
+  activated() {
+    this.getList();
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    getList() {
+      let { timer, ...rest } = this.searchForm;
+      let params = {
+        rows: this.pageInfo.limit,
+        page: this.pageInfo.page,
+        type: "SMART_PRACTICE",
+        ...getTimes(timer, ["startTime", "endTime"]),
+        ...rest,
+      };
+      sysSuggestionList(params).then((res) => {
+        if (res.code == 200) {
+          this.dataList = res.data.rows;
+          this.pageInfo.total = res.data.total;
+        }
+      });
+    },
+    onReSet() {
+      this.$refs["searchForm"].resetFields();
+      this.search();
+    },
+    search() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+/deep/.el-button--primary {
+  background: #14928a;
+  border-color: #14928a;
+  color: #fff;
+  &:hover,
+  &:active,
+  &:focus {
+    background: #14928a;
+    border-color: #14928a;
+    color: #fff;
+  }
+}
+/deep/.el-table .cell {
+  display: -webkit-box;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -webkit-line-clamp: 3;
+  -webkit-box-orient: vertical;
+}
+/deep/.el-date-editor.el-input {
+  width: 100% !important;
+}
+/deep/.el-select {
+  width: 98% !important;
+}
+
+/deep/.el-table {
+  display: inline-block;
+}
+</style>

+ 114 - 74
src/views/app/suggestion.vue

@@ -1,80 +1,106 @@
 <template>
-  <div class='m-container'>
-    <h2>
+  <!-- <div class='m-container'> -->
+  <!-- <h2>
       <div class="squrt"></div>意见反馈
-    </h2>
-    <div class="m-core">
-      <div class="tableWrap">
-        <el-table :data="dataList"
-                  :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-
-          <el-table-column align="center"
-                           label="反馈时间"
-                           prop="createTime">
-            <template slot-scope="scope">
-              {{scope.row.createTime | dateForMinFormat}}
-            </template>
-          </el-table-column>
-          <!-- <el-table-column align="center" prop="name" label="标题"> -->
-          <!-- </el-table-column> -->
-          <el-table-column align="center"
-                           label="内容"
-                           prop="content">
-            <template slot-scope="scope">
-              <tooltip :content="scope.row.content" />
-              <!-- <el-popover placement="top-start"
+    </h2> -->
+  <div class="m-core">
+    <save-form
+      :inline="true"
+      class="searchForm"
+      save-key="Suggestion"
+      @submit="search"
+      @reset="onReSet"
+      :model.sync="searchForm"
+      ref="searchForm"
+    >
+      <el-form-item prop="timer">
+        <el-date-picker
+          v-model.trim="searchForm.timer"
+          style="width: 400px"
+          type="daterange"
+          :picker-options="{
+            firstDayOfWeek: 1,
+          }"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button native-type="submit" type="danger">搜索</el-button>
+        <el-button native-type="reset" type="primary">重置</el-button>
+      </el-form-item>
+    </save-form>
+    <div class="tableWrap">
+      <el-table
+        :data="dataList"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      >
+        <el-table-column align="center" label="反馈时间" prop="createTime">
+          <template slot-scope="scope">
+            {{ scope.row.createTime | dateForMinFormat }}
+          </template>
+        </el-table-column>
+        <!-- <el-table-column align="center" prop="name" label="标题"> -->
+        <!-- </el-table-column> -->
+        <el-table-column align="center" label="内容" prop="content">
+          <template slot-scope="scope">
+            <tooltip :content="scope.row.content" />
+            <!-- <el-popover placement="top-start"
                           width="300"
                           trigger="hover"
                           :content="scope.row.content">
                 <span slot="reference">{{ scope.row.content }}</span>
               </el-popover> -->
-              <!-- <div :title="scope.row.content">{{ scope.row.content }}</div> -->
-            </template>
-          </el-table-column>
-          <el-table-column align="center"
-                           label="用户"
-                           prop="username"></el-table-column>
-          <el-table-column align="center"
-                           prop="mobileNo"
-                           label="邮箱或手机号">
-          </el-table-column>
-          <el-table-column align="center"
-                           label="客户端"
-                           prop="clientType">
-                           <template slot-scope="scope">
-                             <div>
-                               {{scope.row.clientType|clientTypeFilter}}
-                             </div>
-                           </template>
-
-                           </el-table-column>
-          <!-- <el-table-column align="center"
+            <!-- <div :title="scope.row.content">{{ scope.row.content }}</div> -->
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="用户"
+          prop="username"
+        ></el-table-column>
+        <el-table-column align="center" prop="mobileNo" label="邮箱或手机号">
+        </el-table-column>
+        <el-table-column align="center" label="客户端" prop="clientType">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.clientType | clientTypeFilter }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="createTime" label="反馈时间">
+        </el-table-column>
+        <!-- <el-table-column align="center"
                            label="操作">
             <template slot-scope="scope">
               <el-button type="text" v-permission="'/entryOperationLook'" @click="onChargeOperation('look', scope.row)">查看</el-button>
             </template>
           </el-table-column> -->
-        </el-table>
-        <pagination
+      </el-table>
+      <pagination
         sync
         :total.sync="pageInfo.total"
-                    :page.sync="pageInfo.page"
-                    :limit.sync="pageInfo.limit"
-                    :page-sizes="pageInfo.page_size"
-                    @pagination="getList" />
-      </div>
-
+        :page.sync="pageInfo.page"
+        :limit.sync="pageInfo.limit"
+        :page-sizes="pageInfo.page_size"
+        @pagination="getList"
+        save-key="Suggestion"
+      />
     </div>
   </div>
+  <!-- </div> -->
 </template>
 <script>
-import pagination from '@/components/Pagination/index'
-import { sysSuggestionList } from '@/api/appTenant'
-import Tooltip from '@/components/Tooltip/index'
+import pagination from "@/components/Pagination/index";
+import { sysSuggestionList } from "@/api/appTenant";
+import { getTimes } from "@/utils";
+import Tooltip from "@/components/Tooltip/index";
 export default {
   components: { pagination, Tooltip },
-  name: 'chargesList',
-  data () {
+  name: "chargesList",
+  data() {
     return {
       id: null,
       dataList: [],
@@ -83,31 +109,45 @@ export default {
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [10, 20, 40, 50] // 选择限制显示条数
-      }
-    }
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      searchForm: {
+        timer: [],
+      },
+    };
   },
-  activated () {
-    this.getList()
+  activated() {
+    this.getList();
   },
-  mounted () {
-    this.getList()
+  mounted() {
+    this.getList();
   },
   methods: {
-    getList () {
+    getList() {
+      let { timer, ...rest } = this.searchForm;
       let params = {
         rows: this.pageInfo.limit,
-        page: this.pageInfo.page
-      }
-      sysSuggestionList(params).then(res => {
+        page: this.pageInfo.page,
+        type: "APP",
+        ...getTimes(timer, ["startTime", "endTime"]),
+      };
+      sysSuggestionList(params).then((res) => {
         if (res.code == 200) {
-          this.dataList = res.data.rows
-          this.pageInfo.total = res.data.total
+          this.dataList = res.data.rows;
+          this.pageInfo.total = res.data.total;
         }
-      })
-    }
-  }
-}
+      });
+    },
+    onReSet() {
+      this.$refs["searchForm"].resetFields();
+      this.search();
+    },
+    search() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 /deep/.el-button--primary {

+ 51 - 0
src/views/app/suggestionIndex.vue

@@ -0,0 +1,51 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>
+      意见反馈
+    </h2>
+    <div class="m-core">
+      <tab-router
+        v-model.trim="activeIndex"
+        type="card"
+        @tab-click="handleClick"
+      >
+        <el-tab-pane label="APP反馈" lazy name="1" v-if="permissionList.suggestion">
+          <suggestion v-if="activeIndex === '1'" />
+        </el-tab-pane>
+        <el-tab-pane label="云教练反馈" lazy name="2" v-if="permissionList.clouldSuggestion">
+          <clouldSuggestion v-if="activeIndex === '2'"  />
+        </el-tab-pane>
+      </tab-router>
+    </div>
+  </div>
+</template>
+<script>
+import suggestion from "./suggestion";
+import clouldSuggestion from "./clouldSuggestion";
+import { permission } from "@/utils/directivePage";
+// /suggestion /clouldSuggestion
+export default {
+  components: { suggestion, clouldSuggestion },
+  data() {
+    return {
+      activeIndex: "1",
+      permissionList: {
+        suggestion: permission("/suggestion"),
+        clouldSuggestion: permission("/clouldSuggestion"),
+      },
+    };
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {},
+  methods: {
+    handleClick(evt) {
+      // this.changeHash(evt.name);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 2 - 2
vue.config.js

@@ -20,8 +20,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.148:8000' //邹璇
 // let target = 'http://192.168.3.112:8000' //勇哥
 // let target = 'http://dev.dayaedu.com' // 开发环境
-let target = 'https://test.dayaedu.com' //测试环境
-// let target = 'http://192.168.3.134' // 乔
+// let target = 'https://test.dayaedu.com' //测试环境
+let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
   /**