lex 2 年之前
父节点
当前提交
73bbea4562
共有 2 个文件被更改,包括 42 次插入283 次删除
  1. 11 63
      src/views/massMessage/operation.vue
  2. 31 220
      src/views/visitManager/addVisit.vue

+ 11 - 63
src/views/massMessage/operation.vue

@@ -7,16 +7,7 @@
     </Header>
 
     <van-cell-group class="cellGroup">
-      <van-field
-        label="发送群组"
-        required
-        input-align="right"
-        label-class="labelClass"
-        readonly
-        placeholder="请选择发送群组"
-        is-link
-        @click="groupStatus = true"
-      >
+      <van-field label="发送群组" required input-align="right" label-class="labelClass" readonly placeholder="请选择发送群组" is-link @click="groupStatus = true">
         <template #input>
           <div class="class" v-if="selectIds.length > 0">
             {{ selectIds.length }}个群组
@@ -32,47 +23,17 @@
           </van-radio-group>
         </template>
       </van-field>
-      <van-field
-        v-if="form.sendType == 'TIMING'"
-        label="发送时间"
-        required
-        input-align="right"
-        readonly
-        is-link
-        v-model="form.sendTime"
-        placeholder="请选择发送时间"
-        @click="timerStatus = true"
-      ></van-field>
+      <van-field v-if="form.sendType == 'TIMING'" label="发送时间" required input-align="right" readonly is-link v-model="form.sendTime" placeholder="请选择发送时间" @click="timerStatus = true"></van-field>
     </van-cell-group>
 
     <van-cell-group class="cellGroup">
-      <div
-        class="van-cell--required"
-        style="padding: 10px 16px 0; color: #646566; font-size: 14px"
-      >
-        发送内容
-      </div>
-      <van-field
-        type="textarea"
-        row="2"
-        placeholder="请输入发送内容"
-        :border="false"
-        maxlength="200"
-        show-word-limit
-        v-model="form.messageContent"
-      ></van-field>
+      <div class="van-cell--required" style="padding: 10px 16px 0; color: #646566; font-size: 14px">发送内容</div>
+      <van-field type="textarea" row="2" placeholder="请输入发送内容" :border="false" maxlength="200" show-word-limit v-model="form.messageContent"></van-field>
       <div class="access">
         <p class="title">附件</p>
         <van-field style="padding: 0" :border="false">
           <template #input>
-            <van-uploader
-              v-model="uploader"
-              :before-read="beforeRead"
-              :before-delete="beforDelete"
-              :after-read="afterRead"
-              :max-count="1"
-              accept="*.*"
-            >
+            <van-uploader v-model="uploader" :before-read="beforeRead" :before-delete="beforDelete" :after-read="afterRead" :max-count="1" accept="*.*">
               <!-- accept="image/*, .pdf" -->
               <!-- <div class="file">
                 <img src="./images/icon_url.png" class="icon_url" />
@@ -104,13 +65,7 @@
     </div>
 
     <van-popup v-model="timerStatus" position="bottom">
-      <van-datetime-picker
-        v-model="date"
-        :formatter="formatter"
-        :min-date="minDate"
-        @cancel="timerStatus = false"
-        @confirm="onConfirm"
-      ></van-datetime-picker>
+      <van-datetime-picker v-model="date" :formatter="formatter" :min-date="minDate" @cancel="timerStatus = false" @confirm="onConfirm"></van-datetime-picker>
     </van-popup>
 
     <van-popup position="bottom" round v-model="groupStatus">
@@ -125,12 +80,7 @@ import Header from "@/components/header";
 import SelectGroup from "./selectGroup";
 import qs from "qs";
 import { uploadFile } from "@/api/app";
-import {
-  imSendGroupMessageSend,
-  imSendGroupMessageDelete,
-  imSendGroupMessageUpdate,
-  policy,
-} from "./api";
+import { imSendGroupMessageSend, imSendGroupMessageDelete, imSendGroupMessageUpdate, policy } from "./api";
 import axios from "axios";
 export default {
   name: "operation",
@@ -144,9 +94,7 @@ export default {
       groupStatus: false,
       timerStatus: false,
       selectIds: targetIds ? targetIds.split(",") : [],
-      uploader: query.fileUrl
-        ? [{ url: query.fileUrl, file: { name: query.fileName } }]
-        : [],
+      uploader: query.fileUrl ? [{ url: query.fileUrl, file: { name: query.fileName } }] : [],
       date: null,
       minDate: new Date(),
       id: query.id,
@@ -159,8 +107,8 @@ export default {
         sendTime: query.sendTime || "",
         targetIds: targetIds || "",
       },
-      ossUploadUrl: "https://ks3-cn-beijing.ksyuncs.com/daya",
-      preUploadUrl: "https://daya.ks3-cn-beijing.ksyuncs.com",
+      // ossUploadUrl: "https://ks3-cn-beijing.ksyuncs.com/daya",
+      ossUploadUrl: "https://daya.ks3-cn-beijing.ksyuncs.com",
       dataObj: {
         policy: "",
         signature: "",
@@ -236,7 +184,7 @@ export default {
           url: this.ossUploadUrl,
           data: formData,
         });
-        const uploadUrl = this.preUploadUrl + "/" + key;
+        const uploadUrl = this.ossUploadUrl + "/" + key;
         file.status = "done";
         form.fileName = file.file.name;
         form.fileUrl = uploadUrl;

+ 31 - 220
src/views/visitManager/addVisit.vue

@@ -2,228 +2,68 @@
   <div class="addVisit">
     <m-header v-if="statusList.headerStatus" :name="name" />
     <van-cell-group>
-      <van-field
-        label="回访老师"
-        v-model="teacherName"
-        readonly
-        input-align="right"
-        placeholder="请选择"
-      />
+      <van-field label="回访老师" v-model="teacherName" readonly input-align="right" placeholder="请选择" />
     </van-cell-group>
     <van-cell-group>
-      <van-field
-        label="学员姓名"
-        @click="onCheckStudent"
-        v-model="studentName"
-        readonly
-        input-align="right"
-        :is-link="id || userId || studentId ? false : true"
-        placeholder="请选择"
-      >
+      <van-field label="学员姓名" @click="onCheckStudent" v-model="studentName" readonly input-align="right" :is-link="id || userId || studentId ? false : true" placeholder="请选择">
         <template #right-icon>
-          <a
-            v-if="studentPhone"
-            @click.stop="() => {}"
-            class="phone_section"
-            :href="'tel:' + studentPhone"
-            ><img
-              src="../../assets/images/icon_phone.png"
-              class="iconPhone"
-              alt=""
-          /></a>
+          <a v-if="studentPhone" @click.stop="() => {}" class="phone_section" :href="'tel:' + studentPhone"><img src="../../assets/images/icon_phone.png" class="iconPhone" alt="" /></a>
         </template>
       </van-field>
-      <van-field
-        label="回访类型"
-        @click="onChange('type')"
-        v-model="form.type"
-        readonly
-        input-align="right"
-        :is-link="id || userId ? false : true"
-        placeholder="请选择"
-      />
-      <van-field
-        label="回访目的"
-        @click="onChange('purpose')"
-        v-model="form.purpose"
-        readonly
-        input-align="right"
-        :is-link="id || userId ? false : true"
-        placeholder="请选择"
-      />
-      <van-field
-        v-if="form.type == '小课回访'"
-        label="家长反馈"
-        @click="onChange('feedbackType')"
-        v-model="form.feedbackTypeName"
-        readonly
-        input-align="right"
-        :is-link="id ? false : true"
-        placeholder="请选择"
-      />
-      <van-field
-        v-if="
-          form.type == '小课回访' &&
-          (form.feedbackType == 'THINKING' || form.feedbackType == 'LOST')
-        "
-        label="反馈详情"
-        @click="onChange('feedbackTypeDesc')"
-        v-model="form.feedbackTypeDescName"
-        readonly
-        input-align="right"
-        :is-link="id ? false : true"
-        placeholder="请选择"
-      />
-      <van-field
-        label="问题状态"
-        @click="onChange('probStatus')"
-        v-model="form.probStatusName"
-        readonly
-        input-align="right"
-        :is-link="id ? false : true"
-        placeholder="请选择"
-      />
+      <van-field label="回访类型" @click="onChange('type')" v-model="form.type" readonly input-align="right" :is-link="id || userId ? false : true" placeholder="请选择" />
+      <van-field label="回访目的" @click="onChange('purpose')" v-model="form.purpose" readonly input-align="right" :is-link="id || userId ? false : true" placeholder="请选择" />
+      <van-field v-if="form.type == '小课回访'" label="家长反馈" @click="onChange('feedbackType')" v-model="form.feedbackTypeName" readonly input-align="right" :is-link="id ? false : true" placeholder="请选择" />
+      <van-field v-if="form.type == '小课回访' && (form.feedbackType == 'THINKING' || form.feedbackType == 'LOST')" label="反馈详情" @click="onChange('feedbackTypeDesc')" v-model="form.feedbackTypeDescName" readonly input-align="right" :is-link="id ? false : true" placeholder="请选择" />
+      <van-field label="问题状态" @click="onChange('probStatus')" v-model="form.probStatusName" readonly input-align="right" :is-link="id ? false : true" placeholder="请选择" />
     </van-cell-group>
 
     <van-cell-group>
       <div class="dot"></div>
-      <van-field
-        label="当前学生情况"
-        class="textarea"
-        :readonly="id ? true : false"
-        v-model="form.overview"
-        rows="2"
-        autosize
-        type="textarea"
-        maxlength="50"
-        placeholder="请输入留言"
-        :show-word-limit="id ? false : true"
-      />
+      <van-field label="当前学生情况" class="textarea" :readonly="id ? true : false" v-model="form.overview" rows="2" autosize type="textarea" maxlength="50" placeholder="请输入留言" :show-word-limit="id ? false : true" />
     </van-cell-group>
     <van-cell-group>
       <div class="dot"></div>
-      <van-field
-        label="沟通后家长反馈"
-        class="textarea"
-        :readonly="id ? true : false"
-        v-model="form.feedback"
-        rows="2"
-        autosize
-        type="textarea"
-        maxlength="50"
-        placeholder="请输入留言"
-        :show-word-limit="id ? false : true"
-      />
+      <van-field label="沟通后家长反馈" class="textarea" :readonly="id ? true : false" v-model="form.feedback" rows="2" autosize type="textarea" maxlength="50" placeholder="请输入留言" :show-word-limit="id ? false : true" />
     </van-cell-group>
     <van-cell-group>
-      <van-field
-        label="回访时间"
-        class="visiTimer"
-        v-model="form.visitTime"
-        readonly
-        @click="onEnListShow"
-        input-align="right"
-        :is-link="id ? false : true"
-        placeholder="请选择"
-      />
+      <van-field label="回访时间" class="visiTimer" v-model="form.visitTime" readonly @click="onEnListShow" input-align="right" :is-link="id ? false : true" placeholder="请选择" />
     </van-cell-group>
     <van-cell-group v-if="(id && uploader[0] && uploader[0].url) || !id">
       <div class="visiWrap">
         <p>回访图片</p>
         <!--    :before-delete="beforDelete" -->
-        <van-uploader
-          v-model="uploader"
-          :before-read="beforeRead"
-          :after-read="afterRead"
-          :disabled="id ? true : false"
-          :deletable="!id ? true : false"
-          accept="image/*"
-          multiple
-          :max-count="5"
-        />
+        <van-uploader v-model="uploader" :before-read="beforeRead" :after-read="afterRead" :disabled="id ? true : false" :deletable="!id ? true : false" accept="image/*" multiple :max-count="5" />
         <p class="submit" v-if="!id">上传文件大小不能超过5MB且最多上传五张</p>
       </div>
     </van-cell-group>
 
     <div class="button-group" v-if="!id">
-      <van-button type="primary" @click="onSubmit" round size="large"
-        >确认</van-button
-      >
+      <van-button type="primary" @click="onSubmit" round size="large">确认</van-button>
     </div>
 
-    <van-action-sheet
-      v-model="visit.status"
-      :actions="visit.data"
-      cancel-text="取消"
-      @cancel="visit.status = false"
-      @select="onModeSelect"
-    />
+    <van-action-sheet v-model="visit.status" :actions="visit.data" cancel-text="取消" @cancel="visit.status = false" @select="onModeSelect" />
 
     <van-popup v-model="dataForm.status" position="bottom">
-      <van-datetime-picker
-        v-model="dataForm.currentDate"
-        type="date"
-        :min-date="dataForm.minDate"
-        :max-date="dataForm.maxDate"
-        :formatter="formatter"
-        @cancel="dataForm.status = false"
-        @confirm="onCurrentConfirm"
-      />
+      <van-datetime-picker v-model="dataForm.currentDate" type="date" :min-date="dataForm.minDate" :max-date="dataForm.maxDate" :formatter="formatter" @cancel="dataForm.status = false" @confirm="onCurrentConfirm" />
     </van-popup>
 
     <!-- 选择上课学生 -->
-    <van-popup
-      v-model="statusList.studentStatus"
-      :lock-scroll="true"
-      position="bottom"
-      :style="{ height: '180%' }"
-    >
+    <van-popup v-model="statusList.studentStatus" :lock-scroll="true" position="bottom" :style="{ height: '180%' }">
       <van-sticky>
-        <van-search
-          show-action
-          shape="round"
-          :left-icon="searchIcon"
-          @search="onSearch"
-          v-model="params.search"
-          placeholder="请输入学生名或手机号"
-        >
+        <van-search show-action shape="round" :left-icon="searchIcon" @search="onSearch" v-model="params.search" placeholder="请输入学生名或手机号">
           <template #action>
             <div @click="onSearch">搜索</div>
           </template>
         </van-search>
       </van-sticky>
       <div class="paddingB80">
-        <van-list
-          v-model="loading"
-          class="studentContainer"
-          v-if="dataShow"
-          key="data"
-          :finished="finished"
-          finished-text=""
-          @load="getStudent"
-        >
+        <van-list v-model="loading" class="studentContainer" v-if="dataShow" key="data" :finished="finished" finished-text="" @load="getStudent">
           <van-radio-group v-model="radioSelect">
             <van-cell-group>
-              <van-cell
-                v-for="(item, index) in dataList"
-                :key="index"
-                @click="onCheckboxSelect(item)"
-                class="input-cell"
-                :center="true"
-              >
+              <van-cell v-for="(item, index) in dataList" :key="index" @click="onCheckboxSelect(item)" class="input-cell" :center="true">
                 <template slot="icon">
-                  <img
-                    class="logo"
-                    v-if="item.avatar"
-                    :src="item.avatar"
-                    alt=""
-                  />
-                  <img
-                    class="logo"
-                    v-else
-                    src="@/assets/images/icon_student.png"
-                    alt=""
-                  />
+                  <img class="logo" v-if="item.avatar" :src="item.avatar" alt="" />
+                  <img class="logo" v-else src="@/assets/images/icon_student.png" alt="" />
                 </template>
                 <template slot="title">
                   <div class="studentName">
@@ -254,12 +94,7 @@ import MHeader from "@/components/MHeader";
 import { browser } from "@/common/common";
 import MEmpty from "@/components/MEmpty";
 import dayjs from "dayjs";
-import {
-  queryStudentsWithTeacher,
-  visitAdd,
-  visitGetInfo,
-  queryUserById,
-} from "@/api/teacher";
+import { queryStudentsWithTeacher, visitAdd, visitGetInfo, queryUserById } from "@/api/teacher";
 import { queryUserInfo } from "@/api/app";
 import { policy } from "@/views/massMessage/api";
 import setLoading from "@/utils/loading";
@@ -293,13 +128,7 @@ export default {
         headerStatus: true, // 头部是否展示
         studentStatus: false, // 上课学生状态
       },
-      typeList: [
-        { name: "课程推荐" },
-        { name: "常规回访" },
-        { name: "小课回访" },
-        { name: "云教练" },
-        { name: "其它" },
-      ],
+      typeList: [{ name: "课程推荐" }, { name: "常规回访" }, { name: "小课回访" }, { name: "云教练" }, { name: "其它" }],
       visit: {
         status: false,
         type: null,
@@ -312,17 +141,10 @@ export default {
         teacherId: null,
         studentId: query.userId || query.studentId || query.beforeId || null,
         type: query.userId ? "云教练" : query.beforeId ? "常规回访" : null,
-        purpose: query.userId
-          ? "体验回访"
-          : query.beforeId
-          ? "教学内容未达标"
-          : null,
+        purpose: query.userId ? "体验回访" : query.beforeId ? "教学内容未达标" : null,
         overview: "",
         feedback: "",
-        visitTime:
-          query.userId || query.id || query.beforeId
-            ? dayjs().format("YYYY年MM月DD日")
-            : null,
+        visitTime: query.userId || query.id || query.beforeId ? dayjs().format("YYYY年MM月DD日") : null,
         visiterType: "TEACHER",
         feedbackTypeDesc: "",
         feedbackType: "",
@@ -342,8 +164,8 @@ export default {
       clickStatus: false,
       dataList: [],
       searchIcon: require("@/assets/images/search.png"),
-      ossUploadUrl: "https://ks3-cn-beijing.ksyuncs.com/daya",
-      preUploadUrl: "https://daya.ks3-cn-beijing.ksyuncs.com",
+      // ossUploadUrl: "https://ks3-cn-beijing.ksyuncs.com/daya",
+      ossUploadUrl: "https://daya.ks3-cn-beijing.ksyuncs.com",
       dataObj: {
         policy: "",
         signature: "",
@@ -553,9 +375,7 @@ export default {
       if (browser().android) {
         DAYA.postMessage(JSON.stringify({ api: "back" }));
       } else if (browser().iPhone) {
-        window.webkit.messageHandlers.DAYA.postMessage(
-          JSON.stringify({ api: "back" })
-        );
+        window.webkit.messageHandlers.DAYA.postMessage(JSON.stringify({ api: "back" }));
       }
     },
     onCheckStudent() {
@@ -581,18 +401,9 @@ export default {
         } else if (form.type == "课程推荐") {
           visit.data = [{ name: "新课推荐" }, { name: "续费提醒" }];
         } else if (form.type == "常规回访") {
-          visit.data = [
-            { name: "课后及作业回访" },
-            { name: "练习及乐团表现" },
-            { name: "考勤申诉" },
-            { name: "异常请假回访" },
-          ];
+          visit.data = [{ name: "课后及作业回访" }, { name: "练习及乐团表现" }, { name: "考勤申诉" }, { name: "异常请假回访" }];
         } else if (form.type == "小课回访") {
-          visit.data = [
-            { name: "VIP课回访" },
-            { name: "乐理课回访" },
-            { name: "网管课回访" },
-          ];
+          visit.data = [{ name: "VIP课回访" }, { name: "乐理课回访" }, { name: "网管课回访" }];
         } else if (form.type == "云教练") {
           visit.data = [{ name: "体验回访" }];
         } else {
@@ -766,7 +577,7 @@ export default {
           url: this.ossUploadUrl,
           data: formData,
         });
-        const uploadUrl = this.preUploadUrl + "/" + key;
+        const uploadUrl = this.ossUploadUrl + "/" + key;
         file.url = uploadUrl;
         file.status = "done";
       } catch (e) {