瀏覽代碼

提交开发

1
mo 4 年之前
父節點
當前提交
d48d86ef01
共有 57 個文件被更改,包括 590 次插入37 次删除
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/app.939af1dd.css
  3. 0 0
      dist/static/css/chunk-3f7c6ea7.25e73b8c.css
  4. 0 1
      dist/static/css/chunk-41d432d7.2298913d.css
  5. 0 1
      dist/static/css/chunk-4da6af64.de1d1379.css
  6. 1 0
      dist/static/css/chunk-68c14758.85a0f69b.css
  7. 1 0
      dist/static/css/chunk-73def078.4d7f0e7d.css
  8. 0 1
      dist/static/css/chunk-7ea442be.a88e0f60.css
  9. 1 0
      dist/static/css/chunk-92f8ad10.0fcbe2d0.css
  10. 0 0
      dist/static/css/chunk-c7aca304.de61cbb2.css
  11. 1 0
      dist/static/css/chunk-de072096.dc332bfd.css
  12. 0 0
      dist/static/css/chunk-fb1fc898.afbf40ba.css
  13. 0 0
      dist/static/js/app.230f0475.js
  14. 0 0
      dist/static/js/chunk-0e668819.3933ad21.js
  15. 0 0
      dist/static/js/chunk-0e668819.fd9d678f.js
  16. 0 0
      dist/static/js/chunk-259e1df6.f2711b13.js
  17. 0 0
      dist/static/js/chunk-2ef3559a.243dbaa8.js
  18. 0 0
      dist/static/js/chunk-2ef3559a.a8b6d6d9.js
  19. 0 0
      dist/static/js/chunk-375143f9.b844de4e.js
  20. 0 0
      dist/static/js/chunk-3bc574e4.3ea41801.js
  21. 0 0
      dist/static/js/chunk-3ca72746.c7dc35f0.js
  22. 0 0
      dist/static/js/chunk-3f7c6ea7.e641de75.js
  23. 0 0
      dist/static/js/chunk-41d432d7.90c37122.js
  24. 0 0
      dist/static/js/chunk-4b815175.48587cb1.js
  25. 0 0
      dist/static/js/chunk-4d82affc.4551dc70.js
  26. 0 0
      dist/static/js/chunk-4da6af64.d12356cc.js
  27. 0 0
      dist/static/js/chunk-53afcbb2.6c4ad1c5.js
  28. 0 0
      dist/static/js/chunk-68c14758.4fd4f98a.js
  29. 0 0
      dist/static/js/chunk-6fa86530.2d79f2e9.js
  30. 0 0
      dist/static/js/chunk-73def078.a8ad1087.js
  31. 0 0
      dist/static/js/chunk-7ea442be.897655c2.js
  32. 0 0
      dist/static/js/chunk-7f91ee0d.b9032063.js
  33. 0 0
      dist/static/js/chunk-7f91ee0d.c1280531.js
  34. 0 0
      dist/static/js/chunk-92f8ad10.36da2fa5.js
  35. 0 0
      dist/static/js/chunk-c23ebfc6.85462f39.js
  36. 0 0
      dist/static/js/chunk-c7aca304.7b8cface.js
  37. 0 0
      dist/static/js/chunk-de072096.3451b669.js
  38. 0 0
      dist/static/js/chunk-ebf07848.06cfc72b.js
  39. 0 0
      dist/static/js/chunk-fb41c584.8c0e3edf.js
  40. 2 0
      src/App.vue
  41. 9 0
      src/api/teacherManager.js
  42. 二進制
      src/assets/images/pay_success.png
  43. 1 0
      src/router/index.js
  44. 1 1
      src/views/main/abnormal/title.vue
  45. 176 0
      src/views/reaplceMusicPlayer/answerList.vue
  46. 14 1
      src/views/reaplceMusicPlayer/api.js
  47. 34 12
      src/views/reaplceMusicPlayer/index.vue
  48. 1 2
      src/views/reaplceMusicPlayer/modals/addUrl.vue
  49. 11 4
      src/views/reaplceMusicPlayer/modals/detail.vue
  50. 88 1
      src/views/serverDetail/index.vue
  51. 209 0
      src/views/setQuestions/components/answerList.vue
  52. 1 1
      src/views/setQuestions/components/questionList.vue
  53. 3 2
      src/views/setQuestions/index.vue
  54. 32 6
      src/views/setQuestions/operation.vue
  55. 2 2
      src/views/teacherManager/teacherOperation/components/salarySet.vue
  56. 1 1
      src/views/teamBuild/components/forecast-list.vue
  57. 1 1
      vue.config.js

文件差異過大導致無法顯示
+ 0 - 0
dist/index.html


文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.939af1dd.css


文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/chunk-3f7c6ea7.25e73b8c.css


+ 0 - 1
dist/static/css/chunk-41d432d7.2298913d.css

@@ -1 +0,0 @@
-[data-v-5e912813] .el-button--primary,[data-v-5e912813] .el-button--primary:active,[data-v-5e912813] .el-button--primary:focus,[data-v-5e912813] .el-button--primary:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-5e912813] .el-date-editor.el-input{width:100%!important}[data-v-5e912813] .el-select{width:98%!important}

+ 0 - 1
dist/static/css/chunk-4da6af64.de1d1379.css

@@ -1 +0,0 @@
-.question .el-select[data-v-ae6bb5fc]{width:100%!important}[data-v-5405890e] .el-button--primary,[data-v-5405890e] .el-button--primary:active,[data-v-5405890e] .el-button--primary:focus,[data-v-5405890e] .el-button--primary:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-5405890e] .el-date-editor.el-input{width:100%!important}[data-v-5405890e] .el-select{width:98%!important}[data-v-5405890e] .el-collapse{border:0}[data-v-5405890e] .el-collapse-item__header,[data-v-5405890e] .el-collapse-item__wrap{background-color:#eef4f9}

+ 1 - 0
dist/static/css/chunk-68c14758.85a0f69b.css

@@ -0,0 +1 @@
+.box-card[data-v-5481e2b6]{margin-bottom:10px}[data-v-5481e2b6] .el-collapse-item__header{background:#edeef0;color:#444;padding:0 10px}[data-v-5481e2b6] .el-collapse-item__wrap{border:0}[data-v-5481e2b6] .el-collapse-item__content{padding-bottom:0}.demo-table-expand[data-v-5481e2b6]{font-size:0}.demo-table-expand label[data-v-5481e2b6]{width:90px;color:#99a9bf}.demo-table-expand .el-form-item[data-v-5481e2b6]{margin-right:0;margin-bottom:0;width:100%}

+ 1 - 0
dist/static/css/chunk-73def078.4d7f0e7d.css

@@ -0,0 +1 @@
+.question .el-select[data-v-4f1623fc]{width:100%!important}.top-tips[data-v-1b023cce]{color:grey;font-size:14px;padding:0 0 10px}.btn-submit[data-v-1b023cce]{width:90%;margin:20px 5%}.form-info[data-v-1b023cce]{margin:10px;width:auto;border-radius:5px}.questionName[data-v-1b023cce]{padding-top:5px;font-size:16px;color:#444;font-weight:500;line-height:1.5}[data-v-1b023cce] .el-checkbox-group,[data-v-1b023cce] .el-radio-group{width:100%}[data-v-1b023cce] .el-radio__input.is-checked+.el-radio__label{color:#606266}[data-v-1b023cce] .el-checkbox,[data-v-1b023cce] .el-radio{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding:10px 0}[data-v-1b023cce] .el-checkbox .el-checkbox__label,[data-v-1b023cce] .el-checkbox .el-radio__label,[data-v-1b023cce] .el-radio .el-checkbox__label,[data-v-1b023cce] .el-radio .el-radio__label{padding-left:0}[data-v-1b023cce] .el-button--primary{background:#01c1b5!important;border-color:#01c1b5!important}.resultModel .img[data-v-1b023cce]{width:145px;margin:0 auto;display:block}.resultModel .content[data-v-1b023cce]{font-size:20px;color:#1a1a1a;text-align:center;font-weight:500;padding-bottom:30px}[data-v-5c78edcf] .el-button--primary,[data-v-5c78edcf] .el-button--primary:active,[data-v-5c78edcf] .el-button--primary:focus,[data-v-5c78edcf] .el-button--primary:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-5c78edcf] .el-date-editor.el-input{width:100%!important}[data-v-5c78edcf] .el-select{width:98%!important}[data-v-5c78edcf] .el-collapse{border:0}[data-v-5c78edcf] .el-collapse-item__header,[data-v-5c78edcf] .el-collapse-item__wrap{background-color:#eef4f9}

+ 0 - 1
dist/static/css/chunk-7ea442be.a88e0f60.css

@@ -1 +0,0 @@
-[data-v-087b4f72] .el-select{width:100%!important}.btnList[data-v-6b5abd78]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.code-url[data-v-6b5abd78]{margin-top:10px}

+ 1 - 0
dist/static/css/chunk-92f8ad10.0fcbe2d0.css

@@ -0,0 +1 @@
+[data-v-61639206] .el-button--primary,[data-v-61639206] .el-button--primary:active,[data-v-61639206] .el-button--primary:focus,[data-v-61639206] .el-button--primary:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-61639206] .el-date-editor.el-input{width:100%!important}[data-v-61639206] .el-select{width:98%!important}

文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/chunk-c7aca304.de61cbb2.css


+ 1 - 0
dist/static/css/chunk-de072096.dc332bfd.css

@@ -0,0 +1 @@
+[data-v-53a06626] .el-select{width:100%!important}[data-v-1fd47426] .el-table th{background:#edeef0}.btnList[data-v-cedc1522]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.code-url[data-v-cedc1522]{margin-top:10px}

文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/chunk-fb1fc898.afbf40ba.css


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.230f0475.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-0e668819.3933ad21.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-0e668819.fd9d678f.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-259e1df6.f2711b13.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-2ef3559a.243dbaa8.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-2ef3559a.a8b6d6d9.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-375143f9.b844de4e.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-3bc574e4.3ea41801.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-3ca72746.c7dc35f0.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-3f7c6ea7.e641de75.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-41d432d7.90c37122.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-4b815175.48587cb1.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-4d82affc.4551dc70.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-4da6af64.d12356cc.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-53afcbb2.6c4ad1c5.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-68c14758.4fd4f98a.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-6fa86530.2d79f2e9.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-73def078.a8ad1087.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-7ea442be.897655c2.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-7f91ee0d.b9032063.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-7f91ee0d.c1280531.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-92f8ad10.36da2fa5.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-c23ebfc6.85462f39.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-c7aca304.7b8cface.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-de072096.3451b669.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-ebf07848.06cfc72b.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/chunk-fb41c584.8c0e3edf.js


+ 2 - 0
src/App.vue

@@ -355,6 +355,8 @@ input[type="number"] {
 .horizontal-scrollbar {
   .el-scrollbar__wrap {
     overflow-x: hidden;
+    margin-bottom: -8px !important;
+    margin-right: -8px !important;
     .el-scrollbar__view {
       white-space: nowrap;
     }

+ 9 - 0
src/api/teacherManager.js

@@ -154,6 +154,15 @@ export function teacherUpdate (data) {
     data: qs.stringify(data)
   })
 }
+
+//修改教师信息
+export function teacherUpdate1 (data) {
+  return request({
+    url: api + '/teacher/update1',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
 // 根据科目id获取相应的老师
 export function getTeacherBySubject (data) {
   return request({

二進制
src/assets/images/pay_success.png


+ 1 - 0
src/router/index.js

@@ -439,6 +439,7 @@ export const asyncRoutes = {
   downList:()=>import('@/views/reportForm/downList'),
   // 乐器置换
   reaplceMusicPlayer:()=>import('@/views/reaplceMusicPlayer'),
+  answerList:()=>import('@/views/reaplceMusicPlayer/answerList'),
   // 问卷管理
   setQuestions: () => import('@/views/setQuestions'),
   questionOperation: () => import('@/views/setQuestions/operation'),

+ 1 - 1
src/views/main/abnormal/title.vue

@@ -63,7 +63,7 @@ export default {
   overflow: hidden;
   display: flex;
   justify-content: space-between;
-  padding-right: 10px;
+  // padding-right: 10px;
   font-weight: bold;
   transition: all 0.3s;
   width: 100%;

+ 176 - 0
src/views/reaplceMusicPlayer/answerList.vue

@@ -0,0 +1,176 @@
+<template>
+<div class='m-container'>
+    <h2>
+      <el-page-header @back="onCancel" :content="titleName"></el-page-header>
+    </h2>
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        ref="searchForm"
+        :model="searchForm"
+        @submit="search"
+        @reset="onReSet"
+      >
+        <el-form-item prop="search">
+          <el-input
+            v-model.trim="searchForm.search"
+            clearable
+            @keyup.enter.native="search"
+            placeholder="编号/姓名/手机号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="primary">搜索</el-button>
+          <el-button native-type="reset" type="danger">重置</el-button>
+          <el-button type="primary" @click="onExport" v-if="$helpers.permission('questionnaireUserResult/export')">导出</el-button>
+        </el-form-item>
+      </save-form>
+      <el-card class="box-card" v-for="item in tableList" :key="item.id">
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="6" :lg="5" :xl="5">
+              <el-form label-position="left" inline label-width="90px" class="demo-table-expand">
+                <el-form-item label="学生编号">
+                  <span><copy-text>{{ item.userId}}</copy-text></span>
+                </el-form-item>
+                <el-form-item label="学生姓名">
+                  <span><copy-text>{{ item.username}}</copy-text></span>
+                </el-form-item>
+                <el-form-item label="学生手机号">
+                  <span><copy-text>{{ item.phone}}</copy-text></span>
+                </el-form-item>
+              </el-form>
+              <!-- <el-row :gutter="10" style="font-size: 14px">
+                <el-col :span="24" style="padding-bottom: 8px"><>学生编号:<copy-text>{{ item.userId}}</copy-text></el-col>
+                <el-col :span="24" style="padding-bottom: 8px">学生姓名:<copy-text>{{ item.username}}</copy-text></el-col>
+                <el-col :span="24" style="padding-bottom: 8px">学生手机号:<copy-text>{{ item.phone}}</copy-text></el-col>
+              </el-row> -->
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="18" :lg="19" :xl="19">
+              <el-collapse>
+                <el-collapse-item title="查看答案" name="1">
+                  <div v-for="(o, index) in item.questionnaireResultDtoList" :key="index" class="text item">
+                    <el-alert :title="o.content" type="info" :closable="false"></el-alert>
+                    <div style="padding: 8px 20px; font-size: 14px;" v-if="o.answerValue || o.additionalValue">{{ o.answerValue ? o.answerValue : o.additionalValue }}</div>
+                    <!-- <div style="padding: 8px 20px; font-size: 14px;" v-else>未答题</div> -->
+                    <el-tag style="margin: 8px 20px; font-size: 14px;" type="danger" v-else>未答题</el-tag>
+                  </div>
+                </el-collapse-item>
+              </el-collapse>
+              <!-- <div v-for="(o, index) in item.questionnaireResultDtoList" :key="index" class="text item">
+                <el-alert :title="o.content" type="info" :closable="false"></el-alert>
+                <div style="padding: 8px 20px; font-size: 14px;">{{ o.answerValue }}</div>
+              </div> -->
+            </el-col>
+          </el-row>
+      </el-card>
+      <empty v-if="tableList.length <= 0" />
+      <pagination
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
+    </div>
+</div>
+</template>
+<script>
+import { questionnaireUserResultQueryPage } from './api'
+import { Export } from '@/utils/downLoadFile'
+import pagination from "@/components/Pagination/index";
+export default {
+    name: 'operationQuestion',
+    components: { pagination },
+    data () {
+        let query = this.$route.query
+        let titleName = '问答详情'
+        return {
+            titleName: titleName,
+            id: query.id,
+            topicId: query.topicId,
+            searchForm: {
+              search: null,
+            },
+            tableList: [],
+            pageInfo: {
+              // 分页规则
+              limit: 10, // 限制显示条数
+              page: 1, // 当前页
+              total: 0, // 总条数
+              page_size: [10, 20, 40, 50], // 选择限制显示条数
+            },
+        }
+    },
+    async mounted () {
+      this.getList()
+    },
+    methods: {
+      search() {
+        this.pageInfo.page = 1;
+        this.getList();
+      },
+      onReSet() {
+        this.$refs.searchForm.resetFields();
+        this.search();
+      },
+      async getList() {
+        try {
+          let params = {
+            activeId: this.id,
+            activeType: 'REPLACEMENT',
+            page: this.pageInfo.page,
+            rows: this.pageInfo.limit,
+            ...this.searchForm
+          }
+          let result = await questionnaireUserResultQueryPage(params)
+          this.tableList = result.data.rows
+          this.pageInfo.total = result.data.total
+        } catch {
+
+        }
+      },
+      onCancel() {
+        this.$store.dispatch('delVisitedViews', this.$route)
+        this.$router.push({ path: '/otherManager/reaplceMusicPlayer' })
+      },
+      onExport() {
+        Export(this, {
+          url: '/api-web/questionnaireUserResult/export',
+          fileName: '问答详情.xls',
+          method: 'get',
+          params: { cooperationId: this.id }
+        }, '您确定导出问答详情?')
+      }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.box-card {
+  margin-bottom: 10px;
+}
+/deep/.el-collapse-item__header {
+  background: #EDEEF0;
+  color: #444;
+  padding: 0 10px;
+}
+/deep/.el-collapse-item__wrap {
+  border: 0;
+}
+/deep/.el-collapse-item__content {
+  padding-bottom: 0;
+}
+
+.demo-table-expand {
+    font-size: 0;
+}
+.demo-table-expand label {
+  width: 90px;
+  color: #99a9bf;
+}
+.demo-table-expand .el-form-item {
+  margin-right: 0;
+  margin-bottom: 0;
+  width: 100%;
+}
+</style>

+ 14 - 1
src/views/reaplceMusicPlayer/api.js

@@ -67,6 +67,19 @@ export function updateInstrumentActivity (data) {
   })
 }
 
-// 导出
+export function questionnaireUserResultQueryPage (data) {
+  return request2({
+    url: api + `/questionnaireUserResult/queryPage`,
+    method: 'get',
+    params: data,
+  })
+}
 
+export function questionnaireQuestionQueryPage (data) {
+  return request2({
+    url: api + `/questionnaireQuestion/queryPage`,
+    method: 'get',
+    params: data,
+  })
+}
 

+ 34 - 12
src/views/reaplceMusicPlayer/index.vue

@@ -75,6 +75,11 @@
         >
           <el-table-column
             align="center"
+            prop="id"
+            label="编号"
+          ></el-table-column>
+          <el-table-column
+            align="center"
             prop="organName"
             label="分部"
           ></el-table-column>
@@ -90,7 +95,12 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="问卷名称" prop="topicTitle"></el-table-column>
+          <el-table-column align="center" label="问卷名称">
+            <template slot-scope="scope">
+              <span v-if="scope.row.topicTitle">{{ scope.row.topicTitle }}</span>
+              <el-tag style="margin: 8px 20px; font-size: 14px;" type="danger" v-else>无问卷</el-tag>
+            </template>
+          </el-table-column>
           <!-- <el-table-column
             align="center"
             prop="showQuestion"
@@ -125,12 +135,11 @@
               <div>{{ scope.row.openPay ? "是" : "否" }}</div>
             </template>
           </el-table-column>
-          <el-table-column align="center" width="180px" label="操作">
+          <el-table-column align="center" width="250px" label="操作">
             <template slot-scope="scope">
               <div>
-                <el-button type="text" @click="lookDetail(scope.row)" v-if="permission('replacementInstrumentActivity/queryPage')"
-                  >详情</el-button
-                >
+                <el-button type="text" @click="lookDetail(scope.row)" v-if="permission('replacementInstrumentActivity/queryPage')">问卷详情</el-button>
+                <el-button type="text" @click="lookDetail(scope.row, 'answer')" v-if="permission('/reaplceMusicPlayer/answer')">问答详情</el-button>
                 <el-button
                   type="text"
                   @click="onCreateQRCode(scope.row, '调查链接')"
@@ -185,11 +194,12 @@
       title="详情"
       :visible.sync="detailVisible"
       width="1200px"
+      @close="getClose"
       v-if="detailVisible"
     >
       <detail ref="detail" @close="close" :detail="activeRow" />
       <div slot="footer">
-        <el-button type="primary" @click="detailVisible = false"
+        <el-button type="primary" @click="getClose"
           >确定</el-button
         >
       </div>
@@ -211,14 +221,11 @@
 </template>
 
 <script>
-import axios from "axios";
-import { getToken } from "@/utils/auth";
 import { permission } from "@/utils/directivePage";
 import { vaildStudentUrl, vaildTeachingUrl } from "@/utils/validate";
 import pagination from "@/components/Pagination/index";
 import addUrl from "./modals/addUrl";
 import detail from "./modals/detail";
-import load from "@/utils/loading";
 import { getReplacementList, openPayReplacement } from "./api";
 import { Export } from '@/utils/downLoadFile'
 import cleanDeep from 'clean-deep'
@@ -299,10 +306,15 @@ export default {
       this.makeUrlVisible = false;
       this.detailVisible = false;
     },
+    getClose() {
+      this.detailVisible = false
+      this.getList()
+    },
     async onExport() {
       const { search, ...rest } = this.searchForm;
       let obj = {
         ...rest,
+        // activeType: 'REPLACEMENT',
         page: this.rules.page,
         rows: this.rules.limit,
         cooperationOrganIdOrName:search
@@ -318,9 +330,19 @@ export default {
         "您确定导出乐器置换列表"
       );
     },
-    lookDetail(row) {
-      this.activeRow = row;
-      this.detailVisible = true;
+    lookDetail(row, type) {
+      if(type == 'answer') {
+        this.$router.push({
+          path: '/reaplceMusicPlayer/answer',
+          query: {
+            id: row.id,
+            topicId: row.topicId
+          }
+        })
+      } else {
+        this.activeRow = row;
+        this.detailVisible = true;
+      }
     },
     onCreateQRCode(row, name) {
       // 生成链接

+ 1 - 2
src/views/reaplceMusicPlayer/modals/addUrl.vue

@@ -92,8 +92,7 @@ export default {
   },
   async mounted() {
     try {
-      let res = await questionnaireTopicQueryPage({ page: 1, rows: 999 })
-      console.log(res)
+      let res = await questionnaireTopicQueryPage({ page: 1, rows: 999, status: 1 })
       this.topicList = res.data.rows
     } catch {
       //

+ 11 - 4
src/views/reaplceMusicPlayer/modals/detail.vue

@@ -76,9 +76,10 @@
     </el-form>
     <div class="tableWrap">
       <el-table
-        style="width: 100%"
+        style="width: 100% !important"
         :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         :data="tableList"
+        max-height="500"
       >
         <el-table-column
           align="center"
@@ -204,7 +205,7 @@ export default {
   data() {
     return {
       searchForm: {
-        cooperationOrganId: "",
+        cooperationId: "",
         specification: "",
         search: "",
         subjectId: "",
@@ -230,7 +231,7 @@ export default {
   },
   methods: {
     async init() {
-      this.searchForm.cooperationOrganId = this.detail.cooperationOrganId;
+      this.searchForm.cooperationId = this.detail.id;
       await this.$store.dispatch("setSubjects");
       this.getList();
     },
@@ -256,7 +257,7 @@ export default {
     },
     onReSet() {
       this.$refs.searchForm.resetFields();
-      this.searchForm.cooperationOrganId = this.detail.cooperationOrganId;
+      this.searchForm.cooperationId = this.detail.id;
       this.search();
     },
     resetMusic(row) {
@@ -296,3 +297,9 @@ export default {
   },
 };
 </script>
+
+<style lang="less" scoped>
+/deep/.el-table th {
+  background: #edeef0;
+}
+</style>

+ 88 - 1
src/views/serverDetail/index.vue

@@ -84,6 +84,46 @@
             ></el-option>
           </el-select>
         </el-form-item>
+         <el-form-item >
+          <el-select
+            placeholder="实际安排"
+            v-model="searchForm.actualExercisesNumIsAchieve"
+            clearable
+          >
+            <el-option label="符合预期" value="1"></el-option>
+            <el-option label="不符合预期" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            placeholder="提交次数"
+            v-model="searchForm.exercisesReplyNumIsAchieve"
+            clearable
+          >
+            <el-option label="符合预期" value="1"></el-option>
+            <el-option label="不符合预期" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item >
+          <el-select
+            placeholder="评价次数"
+            v-model="searchForm.exercisesMessageNumIsAchieve"
+            clearable
+          >
+            <el-option label="符合预期" value="1"></el-option>
+            <el-option label="不符合预期" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item >
+          <el-select
+            placeholder="及时评价"
+            v-model="searchForm.exercisesMessageTimelyNumIsAchieve"
+            clearable
+          >
+            <el-option label="符合预期" value="1"></el-option>
+            <el-option label="不符合预期" value="0"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item>
           <el-date-picker
             style="width: 410px"
@@ -153,6 +193,49 @@
             </div>
           </template>
           </el-table-column>
+           <el-table-column align="center" label="预期安排">
+            <template slot-scope="scope">
+              <div>{{ scope.row.expectExercisesNum + "次" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" width="120" prop>
+            <template slot="header" slot-scope="scope">
+              <p style="position: relative">
+                实际安排
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">
+                    以周为单位,每周服务指标指定的课程布置作业记一次实际安排
+                  </div>
+                  <!-- <img :src="imageIcon"
+                       class="micon el-tooltip"
+                       style="width:8px height:8px"
+                       alt /> -->
+                  <i
+                    class="el-icon-question"
+                    style="font-size: 18px; color: #f56c6c"
+                  ></i>
+                </el-tooltip>
+              </p>
+            </template>
+            <template slot-scope="scope">
+              <div>{{ scope.row.actualExercisesNum + "次" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop label="提交次数">
+            <template slot-scope="scope">
+              <div>{{ scope.row.exercisesReplyNum + "次" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop label="评价次数">
+            <template slot-scope="scope">
+              <div>{{ scope.row.exercisesMessageNum + "次" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop label="及时评价次数">
+            <template slot-scope="scope">
+              <div>{{ scope.row.exercisesMessageTimelyNum + "次" }}</div>
+            </template>
+          </el-table-column>
           <el-table-column
             align="center"
             prop="homeworkNum"
@@ -255,7 +338,11 @@ export default {
         reminded: "",
         unDone: "",
         operatorId: "",
-        jobNature:""
+        jobNature:"",
+         actualExercisesNumIsAchieve: null, // 训练次数
+        exercisesMessageNumIsAchieve: null, //评价
+        exercisesMessageTimelyNumIsAchieve: null, //及时评价
+        exercisesReplyNumIsAchieve: null, // 提交次数
       },
       orderDate: [],
       tableList: [],

+ 209 - 0
src/views/setQuestions/components/answerList.vue

@@ -0,0 +1,209 @@
+<template>
+	<div>
+        <div class="questions" v-if="questionList.length > 0"  v-show="!resultStatus">
+            <div class="top-tips">{{ form.title }}</div>
+            <el-card class="box-card">
+                <div slot="header" class="clearfix">
+                    <span class="questionName">{{ questionList[currentIndex - 1]['content'] }}</span>
+                </div>
+                <el-radio-group v-model="check" v-if="questionList[currentIndex - 1]['type'] == 'radio'">
+                    <div class="" v-for="(item) in questionList[currentIndex - 1]['questionnaireQuestionItemList']" :key="item.id">
+                        <el-radio :label="item.id">{{item.answerValue}}</el-radio>
+                    </div>
+                </el-radio-group>
+                <el-checkbox-group v-model="checkBox" v-if="questionList[currentIndex - 1]['type'] == 'checkbox'">
+                    <el-checkbox  v-for="(item) in questionList[currentIndex - 1]['questionnaireQuestionItemList']" :key="item.id" :label="item.id">{{ item.answerValue }}</el-checkbox>
+                </el-checkbox-group>
+                <el-input
+                    v-if="questionList[currentIndex - 1]['type'] == 'textarea'"
+                    type="textarea"
+                    style="border: 0;"
+                    :autosize="{ minRows: 3, maxRows: 6}"
+                    placeholder="请输入其它意见"
+                    v-model="textarea">
+                </el-input>
+            </el-card>
+            <el-button size="large" type="primary" v-if="questionList[currentIndex - 1]['type'] == 'radio'" block round class="btn-submit" color="#01C1B5" :disabled="!check && !!isRequire" @click="onSubmit">提交</el-button>
+            <el-button size="large" type="primary" v-if="questionList[currentIndex - 1]['type'] == 'checkbox'" block round class="btn-submit" color="#01C1B5" :disabled="checkBox.length <= 0 && !!isRequire" @click="onSubmit">提交</el-button>
+            <el-button size="large" type="primary" v-if="questionList[currentIndex - 1]['type'] == 'textarea'" block round class="btn-submit" color="#01C1B5" :disabled="!textarea && !!isRequire" @click="onSubmit">提交</el-button>
+        </div>
+
+        <div class="resultModel" v-show="resultStatus">
+            <img src="@/assets/images/pay_success.png" class="img" alt="">
+            <p class="content">感谢您的参与!</p>
+            <el-button size="large" type="primary" round class="btn-submit" @click="onSubmitClose">确认</el-button>
+        </div>
+
+	</div>
+</template>
+
+<script>
+	export default {
+		name: 'question',
+        props: ['form', 'close'],
+		data() {
+			return {
+                currentIndex: 1,
+                questionList: [],
+                check: null,
+                isRequire: 1,
+                checkBox: [],
+                textarea: null,
+                checkList: [],
+                resultStatus: false
+			}
+		},
+		async mounted() {
+            try {
+                this.questionList = this.form.questionnaireQuestionList || []
+                console.log(this.questionList)
+                this.isRequire = this.questionList[this.currentIndex - 1].isRequire
+            } catch {
+                //
+            }
+		},
+		methods: {
+            toggle(index) {
+                let selectList = this.questionList[this.currentIndex - 1]
+                if(selectList.type == 'radio') {
+                    this.check = index
+                } else if(selectList.type == 'checkbox') {
+                    this.$refs.checkboxes[index].toggle()
+                }
+            },
+            onSubmit() {
+                let selectList = this.questionList[this.currentIndex - 1]
+                if(selectList.type == 'radio' && selectList.isRequire && !this.check) {
+                    this.$message.error('请回答当前问题')
+                    return
+                } else if(selectList.type == 'checkbox' && selectList.isRequire && this.checkBox.length <= 0) {
+                    this.$message.error('请回答当前问题')
+                    return
+                } else if(selectList.type == 'textarea' && selectList.isRequire && !this.textarea) {
+                    this.$message.error('请回答当前问题')
+                    return
+                }
+
+                let answerList = selectList.questionnaireQuestionItemList || [] //当前题的选项
+                let currentIsOver = 0 // 是否终止答题
+                answerList.forEach(item => {
+                    if(selectList.type == 'radio' && this.check == item.id) {
+                        currentIsOver = item.isOver
+                    } else if(selectList.type == 'checkbox' && this.checkBox.includes(item.id) && !currentIsOver) {
+                        currentIsOver = item.isOver
+                    }
+                })
+
+                // 判断是否在题目列表里面
+                if(this.currentIndex <= this.questionList.length) {
+                    if(selectList.type == 'radio') {
+                        this.checkList[this.currentIndex - 1] = {
+                            questionnaireQuestionId: selectList.id,
+                            questionnaireQuestionItemIdList: this.check
+                        }
+                        this.check = null
+                    } else if(selectList.type == 'checkbox') {
+                        this.checkList[this.currentIndex - 1] = {
+                            questionnaireQuestionId: selectList.id,
+                            questionnaireQuestionItemIdList: this.checkBox.join(',')
+                        }
+                        this.checkBox = []
+                    } else if(selectList.type == 'textarea') {
+                        this.checkList[this.currentIndex - 1] = {
+                            questionnaireQuestionId: selectList.id,
+                            additionalValue: this.textarea
+                        }
+                        this.textarea = null
+                    }
+
+                    // 1 为终止答题
+                    if(currentIsOver) {
+                        this.onConfirm()
+                        return
+                    }
+
+                    this.check = null
+                    if(this.currentIndex == this.questionList.length) {
+                        this.saveKey()
+                        return
+                    }
+
+                    this.currentIndex++
+                }
+            },
+            saveKey() {
+                // this.$message.info('谢谢参与')
+                this.resultStatus = true
+            },
+            async onConfirm() {
+                // this.$message.info('谢谢参与')
+                this.resultStatus = true
+            },
+            onSubmitClose() {
+                this.close()
+            }
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+.top-tips {
+    color: #808080;
+    font-size: 14px;
+    padding: 0 0 10px;
+}
+
+.btn-submit {
+    width: 90%;
+    margin: 20px 5%;
+}
+
+.form-info {
+    margin: 10px;
+    width: auto;
+    border-radius: 5px;
+}
+.questionName {
+    padding-top: 5px;
+    font-size: 16px;
+    color: #444;
+    font-weight: 500;
+    line-height: 1.5;
+}
+/deep/.el-radio-group, /deep/.el-checkbox-group {
+    width: 100%;
+}
+/deep/.el-radio__input.is-checked+.el-radio__label {
+    color: #606266;
+}
+/deep/.el-radio, /deep/.el-checkbox {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    flex-direction: row-reverse;
+    padding: 10px 0;
+    .el-radio__label, .el-checkbox__label {
+        padding-left: 0;
+    }
+}
+/deep/.el-button--primary {
+    background: #01c1b5 !important;
+    border-color: #01c1b5 !important;
+}
+
+.resultModel {
+    .img {
+        width: 145px;
+        margin: 0 auto;
+        display: block;
+        // padding-top: 50px;
+    }
+    .content {
+        font-size: 20px;
+        color: #1A1A1A;
+        text-align: center;
+        font-weight: 500;
+        padding-bottom: 30px;
+    }
+}
+</style>

+ 1 - 1
src/views/setQuestions/components/questionList.vue

@@ -29,7 +29,7 @@
                 style="display: inline-block;"
                 :prop="'questionnaireQuestionItemList.' + index + '.answerValue'"
                 :rules="[{ required: true, message: '请输入选项内容', trigger: 'change' }]">
-                <el-input type="text" placeholder="请输入选项内容" :disabled="disabled" v-model="questionnaireQuestionItemList.answerValue"></el-input>
+                <el-input type="text" placeholder="请输入选项内容" :disabled="disabled" maxlength="100" v-model="questionnaireQuestionItemList.answerValue"></el-input>
             </el-form-item>
             <el-form-item label="是否终止答题"
                 style="display: inline-block;"

+ 3 - 2
src/views/setQuestions/index.vue

@@ -17,7 +17,7 @@
                 type="text"
                 clearable
                 v-model="searchForm.search"
-                placeholder="问卷编号或编号"
+                placeholder="问卷编号或名称"
             ></el-input>
         </el-form-item>
         <el-form-item prop="status">
@@ -70,8 +70,9 @@
               <el-button @click="onOperation(scope.row)"
                          v-if="$helpers.permission(scope.row.status ? 'questionnaireTopic/updateStatus/stop' : 'questionnaireTopic/updateStatus/start')"
                          type="text">{{ scope.row.status ? '停用' : '启用' }}</el-button>
+              <!-- 启用的问卷不能修改 -->
               <el-button @click="onQuestionOperation('update', scope.row)"
-                         v-if="$helpers.permission('/operateManager/questionOperation/update')"
+                         v-if="$helpers.permission('/operateManager/questionOperation/update') && !scope.row.status"
                          type="text">修改</el-button>
             </template>
           </el-table-column>

+ 32 - 6
src/views/setQuestions/operation.vue

@@ -64,17 +64,27 @@
                 <el-button style="width: 100%" type="default" :disabled="disabled" @click="addQuestionItem(form.questionnaireQuestionList)" icon="el-icon-plus">新增问题</el-button>
             </el-col>
         </el-row>
-        <el-button type="primary" :disabled="disabled" @click="onSubmit">{{ type == 'create' ? '提交问卷' : '修改问卷' }}</el-button>
+        <el-button type="primary" :disabled="disabled" @click="onSubmit">{{ type == 'create' ? '生成问卷' : '修改问卷' }}</el-button>
         <el-button @click="onReset" :disabled="disabled">重置</el-button>
+        <el-button @click="onPreview">预览</el-button>
+
+        <el-dialog title="问卷题目"
+               :close-on-click-modal="false"
+               :visible.sync="questionStatus"
+               v-if="questionStatus"
+               width="375px">
+            <answer-list :form="form" :close="() => {questionStatus = false}" />
+        </el-dialog>
     </div>
 </div>
 </template>
 <script>
 import questionList from './components/questionList'
 import { questionnaireTopicAdd, questionnaireTopicGetDetail, questionnaireTopicUpdate } from './api'
+import AnswerList from './components/answerList'
 export default {
     name: 'operationQuestion',
-    components: { questionList },
+    components: { questionList, AnswerList },
     data () {
         let query = this.$route.query
         let titleName = '问卷'
@@ -95,7 +105,8 @@ export default {
                 title: null,
                 questionnaireQuestionList: [{questionnaireQuestionItemList: [{ }]}],
             },
-            disabled: query.type == 'look' ? true : false
+            disabled: query.type == 'look' ? true : false,
+            questionStatus: false
         }
     },
     async mounted () {
@@ -173,11 +184,26 @@ export default {
                 })
             })
         },
-        onReset() {
+        onPreview() {
             const forms = this.getForms();
-            for(let form of forms) {
-                form.resetFields()
+            Promise.all(forms.map(this.getFormPromise)).then(async (res) => {
+                const validateResult = res.every(item => !!item)
+                if(validateResult) {
+                    this.questionStatus = true
+                }
+            })
+        },
+        onReset() {
+            this.form = {
+                title: null,
+                questionnaireQuestionList: [{questionnaireQuestionItemList: [{ }]}],
             }
+            setTimeout(() => {
+                const forms = this.getForms();
+                for(let form of forms) {
+                    form.clearValidate()
+                }
+            }, 30)
         },
         // 添加题目选项
         addQuestionItem(questionnaireQuestionList) {

+ 2 - 2
src/views/teacherManager/teacherOperation/components/salarySet.vue

@@ -216,7 +216,7 @@ import {
   teacherDefaultPracticeGroupSalary,
   PracticeGroupSalaryUpdate,
   teacherGet,
-  teacherUpdate
+  teacherUpdate1
 } from "@/api/teacherManager";
 import { sysConfigList } from "@/api/generalSettings";
 import { findTeacherDefaultSalary } from "@/api/vipSeting";
@@ -590,7 +590,7 @@ export default {
             .then(async () => {
               let params = teamTable.concat(temps)
               let updateForm = this.updateForm
-              let res = await teacherUpdate({ id: this.teacherId, isSettlementSalary: updateForm.isSettlementSalary })
+              let res = await teacherUpdate1({ id: this.teacherId, isSettlementSalary: updateForm.isSettlementSalary })
               if(res.code != 200) {
                 this.$message.error(res.msg)
                 return

+ 1 - 1
src/views/teamBuild/components/forecast-list.vue

@@ -111,7 +111,7 @@
                         label="乐器准备方式"
                     >
                         <template slot-scope="scope">
-                            {{ scope.row.kitPurchaseMethod == 1 ? '参与团购' : '自行准备' }}
+                            {{ scope.row.kitPurchaseMethod | instrumentType }}
                         </template>
                     </el-table-column>
                     <el-table-column

+ 1 - 1
vue.config.js

@@ -55,7 +55,7 @@ module.exports = {
     //   warnings: false,
     //   errors: true
     // },
-    https: false,
+    https: true,
     proxy: {
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy

部分文件因文件數量過多而無法顯示