Просмотр исходного кода

Merge branch '03/03GRADE' into 11/24SAAS

lex-xin 3 лет назад
Родитель
Сommit
2b83f99075
33 измененных файлов с 2666 добавлено и 1134 удалено
  1. 8 7
      src/api/buildTeam.js
  2. 10 0
      src/components/Export-chiose/api.js
  3. 161 0
      src/components/Export-chiose/index.vue
  4. 6 0
      src/constant/guide.js
  5. 2 2
      src/layout/components/AppMain.vue
  6. 2 1
      src/router/notKeepAliveList.js
  7. 70 62
      src/utils/downLoadFile.js
  8. 1 0
      src/views/auditList/index.vue
  9. 60 39
      src/views/buildVip/index.vue
  10. 228 157
      src/views/businessManager/orderManager/financeManager-taoqi.vue
  11. 228 157
      src/views/businessManager/orderManager/financeManager.vue
  12. 116 76
      src/views/businessManager/orderManager/income.vue
  13. 97 59
      src/views/categroyManager/insideSetting/adminManager.vue
  14. 22 12
      src/views/operationManual/index.vue
  15. 99 67
      src/views/organManager/components/organInfo.vue
  16. 13 2
      src/views/organManager/organOperation.vue
  17. 23 1
      src/views/platformManager/tenantApply/api.js
  18. 228 0
      src/views/platformManager/tenantApply/component/tenandInFor.vue
  19. 204 0
      src/views/platformManager/tenantApply/component/tenantApplyFor.vue
  20. 43 108
      src/views/platformManager/tenantApply/index.vue
  21. 211 0
      src/views/platformManager/tenantApply/modals/infodetail.vue
  22. 177 0
      src/views/platformManager/tenantApply/modals/recordDetail.vue
  23. 14 0
      src/views/reaplceMusicPlayer/index.vue
  24. 470 311
      src/views/reportForm/index.vue
  25. 15 3
      src/views/resetTeaming/components/payInfoDetail.vue
  26. 41 22
      src/views/sporadicManager/sporadicList.vue
  27. 3 0
      src/views/studentManager/modals/createMember.vue
  28. 11 1
      src/views/studentManager/studentList.vue
  29. 59 34
      src/views/teamBuild/signupList.vue
  30. 14 0
      src/views/teamDetail/components/studentList.vue
  31. 25 8
      src/views/teamDetail/teamClassList.vue
  32. 3 3
      src/views/vipClass/vipReset.vue
  33. 2 2
      vue.config.js

+ 8 - 7
src/api/buildTeam.js

@@ -1647,11 +1647,12 @@ export function getOrganRole(data) {
     params:data
   })
 }
-// export function getOrganRole(data) {
-//   return request2({
-//     url: api + `/organization/getOrganRole`,
-//     method: 'get',
-//     params:data
-//   })
-// }
+// 获取正在启用得协议
+export function getAgreement(data) {
+  return request2({
+    url: api + `/tenantContractTemplate/queryLatestContractTemplate`,
+    method: 'get',
+    params:data
+  })
+}
 

+ 10 - 0
src/components/Export-chiose/api.js

@@ -0,0 +1,10 @@
+import request2 from '@/utils/request2'
+import qs from 'qs'
+let api = '/api-web'
+
+export const getFields = data => request2({
+  url: '/api-web/export/getFields',
+  data,
+  params: data,
+  method: 'post',
+})

+ 161 - 0
src/components/Export-chiose/index.vue

@@ -0,0 +1,161 @@
+<template>
+  <div>
+    <el-button @click="startExport" type="primary">{{ name }}</el-button>
+    <el-dialog
+      title="请选择导出字段"
+      :visible.sync="chioseVisiable"
+      width="850px"
+    >
+      <div class="chioseWrap">
+        <el-checkbox
+          :indeterminate="isIndeterminate"
+          v-model="checkAll"
+          @change="handleCheckAllChange"
+          >全选</el-checkbox
+        >
+        <div style="margin: 15px 0"></div>
+        <el-checkbox-group v-model="checked" @change="handleCheckedChange">
+          <el-checkbox
+            v-for="city in chioseList"
+            :label="city"
+            :key="city"
+            style="min-width: 125px; margin-bottom: 10px"
+            >{{ city }}</el-checkbox
+          >
+        </el-checkbox-group>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="chioseVisiable = false">取 消</el-button>
+        <el-button type="primary" @click="exportDataStart">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import cleanDeep from "clean-deep";
+import qs from "qs";
+import { getFields } from "./api";
+import { Export } from "@/utils/downLoadFile";
+export default {
+  props: {
+    name: {
+      type: String,
+      default: "导出",
+    },
+    fileName: {
+      type: String,
+      default: "导出文件.xls",
+    },
+    message: {
+      type: String,
+      default: "您确定导出",
+    },
+    errorMsg: {
+      type: String,
+      default: "参数错误",
+    },
+    flag: {
+      type: Boolean,
+      default: false,
+    },
+    isDownList: {
+      type: Boolean,
+      default: false,
+    },
+    ExportEnum: {
+      type: String,
+    },
+    exportData: {
+      type: Object,
+    },
+  },
+  data() {
+    return {
+      chioseVisiable: false,
+      isIndeterminate: true,
+      checkAll: false,
+      checked: [],
+      chioseList: [],
+    };
+  },
+  mounted() {},
+  methods: {
+    async startExport() {
+      if (this.flag) {
+        this.$message.error(this.errorMsg);
+        return;
+      }
+      if (!this.ExportEnum) {
+        this.$message.error("导出参数异常");
+        return;
+      }
+      try {
+        const res = await getFields({
+          exportEnum: this.ExportEnum,
+        });
+        this.chioseList = res.data;
+        this.checked = res.data;
+        this.checkAll = true;
+        this.isIndeterminate = false;
+        this.chioseVisiable = true;
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    handleCheckedChange(value) {
+      let checkedCount = value.length;
+      this.checkAll = checkedCount === this.chioseList.length;
+      this.isIndeterminate =
+        checkedCount > 0 && checkedCount < this.chioseList.length;
+    },
+    handleCheckAllChange(val) {
+      this.checked = val ? this.chioseList : [];
+      this.isIndeterminate = false;
+    },
+    exportDataStart() {
+      console.log(this.exportData);
+      if (this.isDownList) {
+        Export(
+          this,
+          {
+            url: "/api-web/export/managerDownload",
+            fileName: this.fileName,
+            method: "post",
+            params: {
+              queryInfo: this.exportData,
+              exportEnum: this.ExportEnum,
+              headColumns: this.checked,
+            },
+          },
+          this.message,
+          () => {
+            this.chioseVisiable = false;
+          }
+        );
+      } else {
+        Export(
+          this,
+          {
+            url: "/api-web/export/now",
+            fileName: this.fileName,
+            method: "post",
+            params: {
+              queryInfo: this.exportData,
+              exportEnum: this.ExportEnum,
+              headColumns: this.checked,
+            },
+          },
+          this.message,
+          () => {
+            this.chioseVisiable = false;
+          }
+        );
+      }
+
+      // 导出
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 6 - 0
src/constant/guide.js

@@ -82,5 +82,11 @@ export const guideList = {
     desc: '系统默认为您创建了考勤及课酬扣减规则,请根据本机构实际规则进行修改。',
     path: '/courseRulersManager?tabrouter=2',
     permission: '/institutionOfflineTeamRules'
+  },
+  agreement:{
+    name: '服务协议',
+    desc: '服务协议是学员购买服务或商品时签署的交易协议,交易成功后会生成电子合同,具有法律效益,请及时添加本机构的服务协议内容,为本机构及学员提供保障。若无协议学员也可正常购买,但不会生成电子合同。',
+    path: '/tenantInfoProtocol',
+    permission: 'tenantContractTemplate/list'
   }
 }

+ 2 - 2
src/layout/components/AppMain.vue

@@ -47,12 +47,12 @@
             </p>
             <p class="guideDesc">{{ guide.desc }}</p>
           </div>
-          <el-button
+          <!-- <el-button
             type="primary"
             style="width: 100%"
             @click="guideVisible = false"
             >暂不设置</el-button
-          >
+          > -->
         </div>
       </el-dialog>
     </div>

+ 2 - 1
src/router/notKeepAliveList.js

@@ -113,5 +113,6 @@ export default [
   '/holidaySetting',
   '/business/studentPaySet',
   '/staffPlatManager',
-  '/infoOAMananger'
+  '/infoOAMananger',
+  '/tenantApply'
 ]

+ 70 - 62
src/utils/downLoadFile.js

@@ -16,69 +16,77 @@ import cleanDeep from 'clean-deep'
  *      fileName: xxx.xls
  * }
  */
-export const Export = (that, params, message) => {
-    // 报表导出
-    let url = params.url
-    const options = {
-        method: params.method ? params.method : 'get',
-        headers: {
-            Authorization: getToken(),
-            tenantId: getTenantId()
-        },
-        // params: params.params,
-        url,
-        responseType: "blob"
-    };
-    if(options.method == 'post') {
-        options.data =params.params
-    } else {
-        options.params = params.params
-    }
-    that.$confirm((message || "您确定下载模板"), "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-        })
-        .then(() => {
-            load.startLoading()
-            axios(cleanDeep(options)).then(res => {
-                let blob = new Blob([res.data], {
-                // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-                type: "application/vnd.ms-excel;charset=utf-8"
-                //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-                });
-                let text = (new Response(blob)).text()
-                text.then(res => {
-                // 判断是否报错
-                if (res.indexOf('code') != -1) {
-                    let json = JSON.parse(res)
-                    if(json.code == 403) {
-                        that.$message.error(`登录过期,请重新登录!`)
-                        setTimeout(() => {
-                            that.$store.dispatch('user/resetToken').then(() => {
-                                location.reload()
-                              })
-                        }, 1000);
-                        return
-                    }
-                    that.$message.error(json.msg)
-                } else {
-                    let objectUrl = URL.createObjectURL(blob);
-                    let link = document.createElement("a");
-                    let fname = params.fileName || "导出文件.xls"; //下载文件的名字
-                    link.href = objectUrl;
-                    link.setAttribute("download", fname);
-                    document.body.appendChild(link);
-                    link.click();
-                }
+export const Export = (that, params, message, func) => {
+  // 报表导出
+  let url = params.url
+  const options = {
+    method: params.method ? params.method : 'get',
+    headers: {
+      Authorization: getToken(),
+      tenantId: getTenantId()
+    },
+    // params: params.params,
+    url,
+    responseType: "blob"
+  };
+  if (options.method == 'post') {
+    options.data = params.params
+  } else {
+    options.params = params.params
+  }
+  that.$confirm((message || "您确定下载模板"), "提示", {
+      confirmButtonText: "确定",
+      cancelButtonText: "取消",
+      type: "warning"
+    })
+    .then(() => {
+      load.startLoading()
+      axios(cleanDeep(options)).then(res => {
+        let blob = new Blob([res.data], {
+          // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+          type: "application/vnd.ms-excel;charset=utf-8"
+          //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+        });
+        let text = (new Response(blob)).text()
+        text.then(res => {
+          // 判断是否报错
+          if (res.indexOf('code') != -1) {
+            let json = JSON.parse(res)
+            if (json.code == 403) {
+              that.$message.error(`登录过期,请重新登录!`)
+              setTimeout(() => {
+                that.$store.dispatch('user/resetToken').then(() => {
+                  location.reload()
                 })
+              }, 1000);
+              return
+            }
+            if (func) {
+              func()
+            }
+            that.$message.error(json.msg)
+          } else {
+            let objectUrl = URL.createObjectURL(blob);
+            let link = document.createElement("a");
+            let fname = params.fileName || "导出文件.xls"; //下载文件的名字
+            link.href = objectUrl;
+            link.setAttribute("download", fname);
+            document.body.appendChild(link);
+            link.click();
+
+            if (func) {
+              func()
+            }
 
-                load.endLoading();
-            }).catch(error => {
-                console.log(error)
-                that.$message.error('下载失败,请联系管理员');
-                load.endLoading();
-            });
+          }
         })
-        .catch(() => {});
+
+        load.endLoading();
+      }).catch(error => {
+        console.log(error)
+        that.$message.error('下载失败,请联系管理员');
+        load.endLoading();
+      });
+    })
+    .catch(() => {});
 }

+ 1 - 0
src/views/auditList/index.vue

@@ -388,5 +388,6 @@ export default {
 }
 .newBand {
   display: inline-block;
+
 }
 </style>

+ 60 - 39
src/views/buildVip/index.vue

@@ -301,7 +301,7 @@
           </el-form-item>
           <el-form-item v-if="hasOnline" label="线上课数">
             <el-input
-            :disabled='studentLimit>studentRuleNum'
+              :disabled="studentLimit > studentRuleNum"
               v-model.trim="centerForm.onlineCourseNum"
               @mousewheel.native.prevent
               @input="onCourseNumChange('online')"
@@ -546,7 +546,11 @@
       <div class="btnWrap">
         <div class="okBtn" @click="submitInfo">{{ id ? "修改" : "确定" }}</div>
 
-        <div class="okBtn" style="background-color: var(--color-primary)" @click="resetFrom">
+        <div
+          class="okBtn"
+          style="background-color: var(--color-primary)"
+          @click="resetFrom"
+        >
           重置
         </div>
       </div>
@@ -672,6 +676,7 @@ import {
   getSubject,
   getPracticeApplySubjects,
   getOrganRole,
+  getAgreement,
 } from "@/api/buildTeam";
 import {
   vipGroupCategory,
@@ -682,7 +687,7 @@ import {
   getPracticeGroupCostCount,
   createPractice,
   getPracticeGroupSellPrice,
-  getOnlineMun
+  getOnlineMun,
 } from "@/api/vipSeting";
 import { getTeachSchool, getTeacherBySubject } from "@/api/teacherManager";
 import axios from "axios";
@@ -876,8 +881,9 @@ export default {
       isMusicTheory: false,
       chioseStudent: [],
       classTimeDis: false,
-      studentRuleNum:0,
-        isFirst:false
+      studentRuleNum: 0,
+      isFirst: false,
+      submitList:[]
     };
   },
   computed: {
@@ -927,8 +933,8 @@ export default {
       this.title = "网管课申请";
       this.$route.meta.title = "网管课申请";
       this.hasOffline = false;
-    }else{
-        this.title = "VIP申请";
+    } else {
+      this.title = "VIP申请";
       this.$route.meta.title = "VIP申请";
     }
 
@@ -1026,14 +1032,22 @@ export default {
       localStorage.removeItem("newVip");
       localStorage.removeItem(`newPractice`);
     },
+    async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+           this.submitList.push("agreement");
+          // this.$bus.$emit("showguide", ["agreement"]);
+        }
+      } catch (e) {}
+    },
     async init() {
-      try{
-        const res = await getOnlineMun()
-        let tempObj = JSON.parse(res.data.config)
-        this.studentRuleNum = tempObj.cloud_room_rule.cloud_room_up_limit -1
-
-      }catch(e){
-        console.log(e)
+      try {
+        const res = await getOnlineMun();
+        let tempObj = JSON.parse(res.data.config);
+        this.studentRuleNum = tempObj.cloud_room_rule.cloud_room_up_limit - 1;
+      } catch (e) {
+        console.log(e);
       }
       if (this.$route.query.rules) {
         this.rules = this.$route.query.rules;
@@ -1042,11 +1056,16 @@ export default {
         this.searchForm = this.$route.query.searchForm;
       }
       // 获取所有科目的接口
+     this.submitList =[]
       await this.$store.dispatch("setBranchs");
+      await this.getAgreement();
       if (this.selects.branchs.length <= 0) {
-        this.$bus.$emit("showguide", ["organ"]);
+        submitList.push("organ")
+        // this.$bus.$emit("showguide", ["organ"]);
+      }
+       if (this.submitList.length > 0) {
+        this.$bus.$emit("showguide", this.submitList);
       }
-
       if (this.courseType == "PRACTICE") {
         getPracticeApplySubjects().then((res) => {
           if (res.code == 200) {
@@ -1068,14 +1087,14 @@ export default {
       this.pickerOptions = this.beginDate();
       this.pickerOptions1 = this.processDate();
       this.courseOption = this.coursesDate();
-     this.getInstitutionRules()
+      this.getInstitutionRules();
     },
-        async getInstitutionRules() {
+    async getInstitutionRules() {
       try {
         const res = await getSysTenantConfig({ group: "OFFLINE" });
-        this.isFirst = Boolean(res.data[0].createOn)
-        if(!this.isFirst){
-           this.$bus.$emit("showguide", ['offline']);
+        this.isFirst = Boolean(res.data[0].createOn);
+        if (!this.isFirst) {
+          this.$bus.$emit("showguide", ["offline"]);
         }
       } catch (e) {
         console.log(e);
@@ -1156,10 +1175,10 @@ export default {
       }).then((res) => {
         if (res.code == 200) {
           this.teacherList = res.data;
-           if( this.teacherList.length <=0){
-          this.$bus.$emit("showguide", ['teacher']);
-          return
-        }
+          if (this.teacherList.length <= 0) {
+            this.$bus.$emit("showguide", ["teacher"]);
+            return;
+          }
         }
       });
       // getTeacherBySubject({ subjecId: val }).then(res => {
@@ -1176,13 +1195,12 @@ export default {
       this.leftForm.activeType = "";
       this.computationalBtn = false;
       this.leftForm.students = []; // 重置所选学生
-        this.centerForm.onlineCourseNum = 0 // 重置线上课数
+      this.centerForm.onlineCourseNum = 0; // 重置线上课数
       this.changePrice(val);
     },
     changePrice(val) {
       for (let i in this.courseTypeList) {
         if (this.courseTypeList[i].id == val) {
-
           // 学生人数
           this.leftForm.classNum = this.courseTypeList[i].studentNum;
           this.studentLimit = this.courseTypeList[i].studentNum;
@@ -1198,10 +1216,13 @@ export default {
           this.rightForm.offlinePrice =
             this.courseTypeList[i].offlineClassesUnitPrice;
 
-            if(this.rightForm.onlinePrice<=0 || this.rightForm.offlinePrice<=0){
-               this.$bus.$emit("showguide", ['vipPrice']);
-              return
-            }
+          if (
+            this.rightForm.onlinePrice <= 0 ||
+            this.rightForm.offlinePrice <= 0
+          ) {
+            this.$bus.$emit("showguide", ["vipPrice"]);
+            return;
+          }
           this.isMusicTheory = this.courseTypeList[i].musicTheory;
         }
       }
@@ -1991,10 +2012,10 @@ export default {
         }).then((res) => {
           if (res.code == 200) {
             this.scetionList = res.data;
-        //         if(this.scetionList.length <=0){
-        //   this.$bus.$emit("showguide", ['teamPayType']);
-        //   return
-        // }
+            //         if(this.scetionList.length <=0){
+            //   this.$bus.$emit("showguide", ['teamPayType']);
+            //   return
+            // }
           }
         });
       }
@@ -2078,7 +2099,7 @@ export default {
           this.educationList = ruselt?.data?.EDUCATION;
           if (!this.educationList || this.educationList.length <= 0) {
             this.$bus.$emit("showguide", ["teamManager"]);
-            return
+            return;
           }
         } catch (e) {
           console.log(e);
@@ -2199,7 +2220,7 @@ export default {
           method: "get",
           headers: {
             Authorization: getToken(),
-            tenantId: getTenantId()
+            tenantId: getTenantId(),
           },
           params: {
             rows: 9999,
@@ -2263,7 +2284,7 @@ export default {
           categoryId: this.leftForm.courseType,
           teacherId: this.leftForm.teacher,
           studentIds,
-          activityChannel:2
+          activityChannel: 2,
         }).then((res) => {
           if (res.code == 200) {
             this.activeList = res.data;
@@ -2296,7 +2317,7 @@ export default {
           teacherId: this.leftForm.teacher,
           studentIds,
           courseType: this.courseType,
-          activityChannel:2
+          activityChannel: 2,
         }).then((res) => {
           if (res.code == 200) {
             this.activeList = res.data;

+ 228 - 157
src/views/businessManager/orderManager/financeManager-taoqi.vue

@@ -14,37 +14,65 @@
           }
         "
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         添加订单
       </el-button>
-      <el-button
+      <!-- <el-button
         @click="onOrderExport"
-        v-permission="'export/routeOrderList/taoqi'"
+        v-permission="{
+          child: 'export/routeOrderList',
+          parent: '/financeManager',
+        }"
         type="primary"
         style="margin-bottom:20px"
       >
         报表导出
-      </el-button>
-      <el-button
-        v-permission="'adapay/exportBill/taoqi'"
+      </el-button> -->
+      <ExportChiose
+        v-permission="{
+          child: 'export/routeOrderList',
+          parent: '/financeManager',
+        }"
+        style="margin-bottom: 20px; display: inline-block"
+        name="报表导出"
+        ExportEnum="ROUTE_ORDER_LIST1"
+        :exportData="onOrderExport"
+        fileName="财务列表"
+        errorMsg="请选择开始日期和结束日期"
+        :isDownList="true"
+      />
+      <!-- <el-button
+        v-permission="{ child: 'adapay/exportBill', parent: '/financeManager' }"
         @click="onAdaPayExport"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         汇付订单导出
-      </el-button>
+      </el-button> -->
+      <ExportChiose
+        v-permission="{ child: 'adapay/exportBill', parent: '/financeManager' }"
+        style="margin-bottom: 20px; display: inline-block"
+        name="汇付订单导出"
+        ExportEnum="EXPORT_BILL"
+        :exportData="onAdaPayExport"
+        fileName="汇付订单"
+        errorMsg="请选择开始日期和结束日期"
+        :flag="
+          !(this.searchForm.orderDate && this.searchForm.orderDate.length > 0)
+        "
+      />
       <el-button
         @click="onDownload"
         v-permission="'import/downloadTemplate?financeManager/taoqi'"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         下载模板
       </el-button>
       <el-upload
         v-permission="'import/routeOrder/taoqi'"
-        style="display: inline-block;margin-left:10px;"
+        style="display: inline-block; margin-left: 10px"
         action="/api-web/import/routeOrder"
         :show-file-list="false"
         :before-upload="beforeUpload"
@@ -53,12 +81,7 @@
         :on-error="handleError"
         :on-success="handleSuccess"
       >
-        <el-button
-          type="primary"
-          style="margin-bottom:20px"
-        >
-          导入
-        </el-button>
+        <el-button type="primary" style="margin-bottom: 20px"> 导入 </el-button>
       </el-upload>
       <!-- 搜索类型 -->
       <save-form
@@ -407,6 +430,7 @@
               v-model.trim="form.routeOrganId"
               :disabled="!isAdd"
               @change="changeOrgin"
+              filterable
               style="width: 100% !important"
             >
               <el-option
@@ -703,11 +727,12 @@ import { orderStatus, dealStatus } from "@/utils/searchArray";
 import cleanDeep from "clean-deep";
 import axios from "axios";
 import qs from "qs";
-import { getToken, getTenantId} from "@/utils/auth";
+import { getToken, getTenantId } from "@/utils/auth";
 import load from "@/utils/loading";
 import { orderServerList } from "@/utils/searchArray";
 import { Export } from "@/utils/downLoadFile";
 import Tooltip from "@/components/Tooltip/index";
+import ExportChiose from "@/components/Export-chiose";
 let validAmount = (rule, value, callback) => {
   if (!value) {
     callback(new Error("请输入商品数量"));
@@ -721,7 +746,7 @@ let validAmount = (rule, value, callback) => {
 };
 let that;
 export default {
-  components: { pagination, Tooltip },
+  components: { pagination, Tooltip, ExportChiose },
   name: "incomeTwo",
   computed: {
     extraQuery() {
@@ -821,7 +846,7 @@ export default {
       },
       headers: {
         Authorization: getToken(),
-        tenantId: getTenantId()
+        tenantId: getTenantId(),
       },
       getCalenderList: [],
     };
@@ -885,10 +910,10 @@ export default {
           }
           form.goodsJson =
             form.applyType == "SERVICE" ? null : JSON.stringify(goodsJson);
-          if(this.insertOrderType == 1) {
-            form.calenderId = null
-          } else if(this.insertOrderType == 2) {
-            form.userId = null
+          if (this.insertOrderType == 1) {
+            form.calenderId = null;
+          } else if (this.insertOrderType == 2) {
+            form.userId = null;
           }
           routeOrderAdd(form).then((res) => {
             if (res.code == 200) {
@@ -920,136 +945,136 @@ export default {
       // }
       // 关闭弹窗重置验证
       this.$refs[formName].resetFields();
-      this.insertOrderType = 1
+      this.insertOrderType = 1;
     },
-    onOrderExport() {
-      // 报表导出
-      let url = "/api-web/export/routeOrderList";
-      let searchForm = this.searchForm;
-      let data = {
-        orderType: 3,
-        search: searchForm.search,
-        orderNo: searchForm.orderNo,
-        transNo: searchForm.transNo,
-        merNos: searchForm.merNos,
-        actualAmount: searchForm.actualAmount,
-        balancePaymentAmount: searchForm.balancePaymentAmount,
-        paymentStatus: searchForm.paymentStatus,
-        paymentType: searchForm.paymentType,
-        routingOrganId: this.searchForm.routingOrganId.join(','),
-        lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
-        lessActualAmount: searchForm.lessActualAmount,
-        ...this.extraQuery,
-      };
+    // onOrderExport() {
+    //   // 报表导出
+    //   let url = "/api-web/export/routeOrderList";
+    //   let searchForm = this.searchForm;
+    //   let data = {
+    //     orderType: 3,
+    //     search: searchForm.search,
+    //     orderNo: searchForm.orderNo,
+    //     transNo: searchForm.transNo,
+    //     merNos: searchForm.merNos,
+    //     actualAmount: searchForm.actualAmount,
+    //     balancePaymentAmount: searchForm.balancePaymentAmount,
+    //     paymentStatus: searchForm.paymentStatus,
+    //     paymentType: searchForm.paymentType,
+    //     routingOrganId: this.searchForm.routingOrganId.join(","),
+    //     lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
+    //     lessActualAmount: searchForm.lessActualAmount,
+    //     ...this.extraQuery,
+    //   };
 
-      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
-        data.orderStartDate = this.searchForm.orderDate[0];
-        data.orderEndDate = this.searchForm.orderDate[1];
-      } else {
-        data.orderStartDate = null;
-        data.orderEndDate = null;
-      }
-      const options = {
-        method: "POST",
-        headers: {
-          Authorization: getToken(),
-          tenantId: getTenantId()
-        },
-        data: qs.stringify(cleanDeep(data)),
-        url,
-        responseType: "json",
-      };
-      this.$confirm("您确定导出报表", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          load.startLoading();
-          axios(options).then((res) => {
-            load.endLoading();
-            if (res.data.code == 200) {
-              this.$message.info(res.data.msg);
-            } else {
-              this.$message.error(res.data.msg);
-            }
-            // let blob = new Blob([res.data], {
-            //   // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            //   type: "application/vnd.ms-excel;charset=utf-8",
-            //   //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-            // });
-            // let objectUrl = URL.createObjectURL(blob);
-            // let link = document.createElement("a");
-            // let nowTime = new Date();
-            // let ymd =
-            //   nowTime.getFullYear() +
-            //   "" +
-            //   (nowTime.getMonth() + 1) +
-            //   "" +
-            //   nowTime.getDate() +
-            //   "" +
-            //   nowTime.getHours() +
-            //   "" +
-            //   nowTime.getMinutes();
-            // let fname = "报表导出" + new Date().getTime() + ".xls"; //下载文件的名字
-            // link.href = objectUrl;
-            // link.setAttribute("download", fname);
-            // document.body.appendChild(link);
-            // link.click();
-            // load.endLoading();
-          });
-        })
-        .catch(() => {});
-    },
-    onAdaPayExport() {
-      // 报表导出
-      let url = "/api-web/adapay/exportBill";
-      let data = {
-        ...this.extraQuery,
-      };
-       data.routingOrganId= this.searchForm.routingOrganId.join(',')
-      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
-        data.startTime = this.searchForm.orderDate[0];
-        data.endTime = this.searchForm.orderDate[1];
-      } else {
-        this.$message.error("请选择开始日期和结束日期");
-        return;
-      }
-      const options = {
-        method: "get",
-        headers: {
-          Authorization: getToken(),
-          tenantId: getTenantId()
-        },
-        params: data,
-        url,
-        responseType: "blob",
-      };
-      this.$confirm("您确定导出汇付订单", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          load.startLoading();
-          axios(options).then((res) => {
-            let blob = new Blob([res.data], {
-              // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-              type: "application/vnd.ms-excel;charset=utf-8",
-              //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-            });
-            let objectUrl = URL.createObjectURL(blob);
-            let link = document.createElement("a");
-            let fname = "汇付订单" + new Date().getTime() + ".xls"; //下载文件的名字
-            link.href = objectUrl;
-            link.setAttribute("download", fname);
-            document.body.appendChild(link);
-            link.click();
-            load.endLoading();
-          });
-        })
-        .catch(() => {});
-    },
+    //   if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+    //     data.orderStartDate = this.searchForm.orderDate[0];
+    //     data.orderEndDate = this.searchForm.orderDate[1];
+    //   } else {
+    //     data.orderStartDate = null;
+    //     data.orderEndDate = null;
+    //   }
+    //   const options = {
+    //     method: "POST",
+    //     headers: {
+    //       Authorization: getToken(),
+    //       tenantId: getTenantId(),
+    //     },
+    //     data: qs.stringify(cleanDeep(data)),
+    //     url,
+    //     responseType: "json",
+    //   };
+    //   this.$confirm("您确定导出报表", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(() => {
+    //       load.startLoading();
+    //       axios(options).then((res) => {
+    //         load.endLoading();
+    //         if (res.data.code == 200) {
+    //           this.$message.info(res.data.msg);
+    //         } else {
+    //           this.$message.error(res.data.msg);
+    //         }
+    //         // let blob = new Blob([res.data], {
+    //         //   // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+    //         //   type: "application/vnd.ms-excel;charset=utf-8",
+    //         //   //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+    //         // });
+    //         // let objectUrl = URL.createObjectURL(blob);
+    //         // let link = document.createElement("a");
+    //         // let nowTime = new Date();
+    //         // let ymd =
+    //         //   nowTime.getFullYear() +
+    //         //   "" +
+    //         //   (nowTime.getMonth() + 1) +
+    //         //   "" +
+    //         //   nowTime.getDate() +
+    //         //   "" +
+    //         //   nowTime.getHours() +
+    //         //   "" +
+    //         //   nowTime.getMinutes();
+    //         // let fname = "报表导出" + new Date().getTime() + ".xls"; //下载文件的名字
+    //         // link.href = objectUrl;
+    //         // link.setAttribute("download", fname);
+    //         // document.body.appendChild(link);
+    //         // link.click();
+    //         // load.endLoading();
+    //       });
+    //     })
+    //     .catch(() => {});
+    // },
+    // onAdaPayExport() {
+    //   // 报表导出
+    //   let url = "/api-web/adapay/exportBill";
+    //   let data = {
+    //     ...this.extraQuery,
+    //   };
+    //    data.routingOrganId= this.searchForm.routingOrganId.join(',')
+    //   if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+    //     data.startTime = this.searchForm.orderDate[0];
+    //     data.endTime = this.searchForm.orderDate[1];
+    //   } else {
+    //     this.$message.error("请选择开始日期和结束日期");
+    //     return;
+    //   }
+    //   const options = {
+    //     method: "get",
+    //     headers: {
+    //       Authorization: getToken(),
+    //       tenantId: getTenantId()
+    //     },
+    //     params: data,
+    //     url,
+    //     responseType: "blob",
+    //   };
+    //   this.$confirm("您确定导出汇付订单", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(() => {
+    //       load.startLoading();
+    //       axios(options).then((res) => {
+    //         let blob = new Blob([res.data], {
+    //           // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+    //           type: "application/vnd.ms-excel;charset=utf-8",
+    //           //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+    //         });
+    //         let objectUrl = URL.createObjectURL(blob);
+    //         let link = document.createElement("a");
+    //         let fname = "汇付订单" + new Date().getTime() + ".xls"; //下载文件的名字
+    //         link.href = objectUrl;
+    //         link.setAttribute("download", fname);
+    //         document.body.appendChild(link);
+    //         link.click();
+    //         load.endLoading();
+    //       });
+    //     })
+    //     .catch(() => {});
+    // },
     search() {
       this.pageInfo.page = 1;
       this.$refs.searchForm.save(this.searchForm);
@@ -1074,7 +1099,7 @@ export default {
       params.balancePaymentAmount = params.balancePaymentAmount
         ? params.balancePaymentAmount
         : null;
-        params.routingOrganId= this.searchForm.routingOrganId.join(',')
+      params.routingOrganId = this.searchForm.routingOrganId.join(",");
       if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
         params.orderStartDate = this.searchForm.orderDate[0];
         params.orderEndDate = this.searchForm.orderDate[1];
@@ -1217,12 +1242,12 @@ export default {
                   return { id: item.goodsId, number: item.num };
                 })
               );
-            if(orderInfo.userId && !res.data.calenderId) {
-              this.insertOrderType = 1
-            } else if(res.data.calenderId && !orderInfo.userId) {
-              this.insertOrderType = 2
+            if (orderInfo.userId && !res.data.calenderId) {
+              this.insertOrderType = 1;
+            } else if (res.data.calenderId && !orderInfo.userId) {
+              this.insertOrderType = 2;
             } else {
-              this.insertOrderType = 3
+              this.insertOrderType = 3;
             }
             this.routeOrderStatus = true;
           });
@@ -1351,6 +1376,52 @@ export default {
       return str;
     },
   },
+  computed: {
+    onOrderExport() {
+      // 报表导出
+      let url = "/api-web/export/routeOrderList";
+      let searchForm = this.searchForm;
+
+      let data = {
+        orderType: 3,
+        search: searchForm.search,
+        orderNo: searchForm.orderNo,
+        transNo: searchForm.transNo,
+        merNos: searchForm.merNos,
+        actualAmount: searchForm.actualAmount,
+        balancePaymentAmount: searchForm.balancePaymentAmount,
+        paymentStatus: searchForm.paymentStatus,
+        paymentType: searchForm.paymentType,
+        routingOrganId: searchForm.routingOrganId,
+        lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
+        lessActualAmount: searchForm.lessActualAmount,
+        ...this.extraQuery,
+      };
+      data.routingOrganId = this.searchForm.routingOrganId.join(",");
+
+      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+        data.orderStartDate = this.searchForm.orderDate[0];
+        data.orderEndDate = this.searchForm.orderDate[1];
+      } else {
+        data.orderStartDate = null;
+        data.orderEndDate = null;
+      }
+      return data;
+    },
+    onAdaPayExport() {
+      // 报表导出
+      let url = "/api-web/adapay/exportBill";
+      let data = {
+        ...this.extraQuery,
+      };
+      data.routingOrganId = this.searchForm.routingOrganId.join(",");
+      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+        data.startTime = this.searchForm.orderDate[0];
+        data.endTime = this.searchForm.orderDate[1];
+      }
+      return data;
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 228 - 157
src/views/businessManager/orderManager/financeManager.vue

@@ -14,11 +14,11 @@
           }
         "
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         添加订单
       </el-button>
-      <el-button
+      <!-- <el-button
         @click="onOrderExport"
         v-permission="{
           child: 'export/routeOrderList',
@@ -28,27 +28,52 @@
         style="margin-bottom:20px"
       >
         报表导出
-      </el-button>
-      <el-button
+      </el-button> -->
+      <ExportChiose
+        v-permission="{
+          child: 'export/routeOrderList',
+          parent: '/financeManager',
+        }"
+        style="margin-bottom: 20px; display: inline-block"
+        name="报表导出"
+        ExportEnum="ROUTE_ORDER_LIST1"
+        :exportData="onOrderExport"
+        fileName="财务列表"
+        errorMsg="请选择开始日期和结束日期"
+        :isDownList="true"
+      />
+      <!-- <el-button
         v-permission="{ child: 'adapay/exportBill', parent: '/financeManager' }"
         @click="onAdaPayExport"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         汇付订单导出
-      </el-button>
+      </el-button> -->
+      <ExportChiose
+        v-permission="{ child: 'adapay/exportBill', parent: '/financeManager' }"
+        style="margin-bottom: 20px; display: inline-block"
+        name="汇付订单导出"
+        ExportEnum="EXPORT_BILL"
+        :exportData="onAdaPayExport"
+        fileName="汇付订单"
+        errorMsg="请选择开始日期和结束日期"
+        :flag="
+          !(this.searchForm.orderDate && this.searchForm.orderDate.length > 0)
+        "
+      />
       <el-button
         @click="onDownload"
         v-permission="'import/downloadTemplate?financeManager'"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         下载模板
       </el-button>
 
       <el-upload
         v-permission="'import/routeOrder'"
-        style="display: inline-block;margin-left:10px;"
+        style="display: inline-block; margin-left: 10px"
         action="/api-web/import/routeOrder"
         :show-file-list="false"
         :before-upload="beforeUpload"
@@ -57,12 +82,7 @@
         :on-error="handleError"
         :on-success="handleSuccess"
       >
-        <el-button
-          type="primary"
-          style="margin-bottom:20px"
-        >
-          导入
-        </el-button>
+        <el-button type="primary" style="margin-bottom: 20px"> 导入 </el-button>
       </el-upload>
       <!-- 搜索类型 -->
       <save-form
@@ -261,10 +281,13 @@
               scope.row.type | orderType
             }}</template>
           </el-table-column>
-                    <el-table-column align="center" prop="expectAmount" label="订单金额">
+          <el-table-column align="center" prop="expectAmount" label="订单金额">
             <template slot-scope="scope">
               <div>
-                {{ (scope.row.couponRemitFee+scope.row.expectAmount) | moneyFormat }}
+                {{
+                  (scope.row.couponRemitFee + scope.row.expectAmount)
+                    | moneyFormat
+                }}
               </div>
             </template>
           </el-table-column>
@@ -407,6 +430,7 @@
             <el-select
               v-model.trim="form.routeOrganId"
               :disabled="!isAdd"
+              filterable
               @change="changeOrgin"
               style="width: 100% !important"
             >
@@ -709,6 +733,7 @@ import load from "@/utils/loading";
 import { orderServerList } from "@/utils/searchArray";
 import { Export } from "@/utils/downLoadFile";
 import Tooltip from "@/components/Tooltip/index";
+import ExportChiose from "@/components/Export-chiose";
 let validAmount = (rule, value, callback) => {
   if (!value) {
     callback(new Error("请输入商品数量"));
@@ -722,7 +747,7 @@ let validAmount = (rule, value, callback) => {
 };
 let that;
 export default {
-  components: { pagination, Tooltip },
+  components: { pagination, Tooltip, ExportChiose },
   name: "incomeTwo",
   computed: {
     extraQuery() {
@@ -822,7 +847,7 @@ export default {
       },
       headers: {
         Authorization: getToken(),
-        tenantId: getTenantId()
+        tenantId: getTenantId(),
       },
       getCalenderList: [],
     };
@@ -886,10 +911,10 @@ export default {
           }
           form.goodsJson =
             form.applyType == "SERVICE" ? null : JSON.stringify(goodsJson);
-          if(this.insertOrderType == 1) {
-            form.calenderId = null
-          } else if(this.insertOrderType == 2) {
-            form.userId = null
+          if (this.insertOrderType == 1) {
+            form.calenderId = null;
+          } else if (this.insertOrderType == 2) {
+            form.userId = null;
           }
           routeOrderAdd(form).then((res) => {
             if (res.code == 200) {
@@ -921,138 +946,138 @@ export default {
       // }
       // 关闭弹窗重置验证
       this.$refs[formName].resetFields();
-      this.insertOrderType = 1
+      this.insertOrderType = 1;
     },
-    onOrderExport() {
-      // 报表导出
-      let url = "/api-web/export/routeOrderList";
-      let searchForm = this.searchForm;
+    // onOrderExport() {
+    //   // 报表导出
+    //   let url = "/api-web/export/routeOrderList";
+    //   let searchForm = this.searchForm;
 
-      let data = {
-        orderType: 3,
-        search: searchForm.search,
-        orderNo: searchForm.orderNo,
-        transNo: searchForm.transNo,
-        merNos: searchForm.merNos,
-        actualAmount: searchForm.actualAmount,
-        balancePaymentAmount: searchForm.balancePaymentAmount,
-        paymentStatus: searchForm.paymentStatus,
-        paymentType: searchForm.paymentType,
-        routingOrganId: searchForm.routingOrganId,
-        lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
-        lessActualAmount: searchForm.lessActualAmount,
-        ...this.extraQuery,
-      };
-        data.routingOrganId= this.searchForm.routingOrganId.join(',')
+    //   let data = {
+    //     orderType: 3,
+    //     search: searchForm.search,
+    //     orderNo: searchForm.orderNo,
+    //     transNo: searchForm.transNo,
+    //     merNos: searchForm.merNos,
+    //     actualAmount: searchForm.actualAmount,
+    //     balancePaymentAmount: searchForm.balancePaymentAmount,
+    //     paymentStatus: searchForm.paymentStatus,
+    //     paymentType: searchForm.paymentType,
+    //     routingOrganId: searchForm.routingOrganId,
+    //     lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
+    //     lessActualAmount: searchForm.lessActualAmount,
+    //     ...this.extraQuery,
+    //   };
+    //   data.routingOrganId = this.searchForm.routingOrganId.join(",");
 
-      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
-        data.orderStartDate = this.searchForm.orderDate[0];
-        data.orderEndDate = this.searchForm.orderDate[1];
-      } else {
-        data.orderStartDate = null;
-        data.orderEndDate = null;
-      }
-      const options = {
-        method: "POST",
-        headers: {
-          Authorization: getToken(),
-          tenantId: getTenantId()
-        },
-        data: qs.stringify(cleanDeep(data)),
-        url,
-        responseType: "json",
-      };
-      this.$confirm("您确定导出报表", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          load.startLoading();
-          axios(options).then((res) => {
-            load.endLoading();
-            if (res.data.code == 200) {
-              this.$message.info(res.data.msg);
-            } else {
-              this.$message.error(res.data.msg);
-            }
-            // let blob = new Blob([res.data], {
-            //   // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            //   type: "application/vnd.ms-excel;charset=utf-8",
-            //   //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-            // });
-            // let objectUrl = URL.createObjectURL(blob);
-            // let link = document.createElement("a");
-            // let nowTime = new Date();
-            // let ymd =
-            //   nowTime.getFullYear() +
-            //   "" +
-            //   (nowTime.getMonth() + 1) +
-            //   "" +
-            //   nowTime.getDate() +
-            //   "" +
-            //   nowTime.getHours() +
-            //   "" +
-            //   nowTime.getMinutes();
-            // let fname = "报表导出" + new Date().getTime() + ".xls"; //下载文件的名字
-            // link.href = objectUrl;
-            // link.setAttribute("download", fname);
-            // document.body.appendChild(link);
-            // link.click();
-            // load.endLoading();
-          });
-        })
-        .catch(() => {});
-    },
-    onAdaPayExport() {
-      // 报表导出
-      let url = "/api-web/adapay/exportBill";
-      let data = {
-        ...this.extraQuery,
-      };
-      data.routingOrganId= this.searchForm.routingOrganId.join(',')
-      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
-        data.startTime = this.searchForm.orderDate[0];
-        data.endTime = this.searchForm.orderDate[1];
-      } else {
-        this.$message.error("请选择开始日期和结束日期");
-        return;
-      }
-      const options = {
-        method: "get",
-        headers: {
-          Authorization: getToken(),
-          tenantId: getTenantId()
-        },
-        params: data,
-        url,
-        responseType: "blob",
-      };
-      this.$confirm("您确定导出汇付订单", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          load.startLoading();
-          axios(options).then((res) => {
-            let blob = new Blob([res.data], {
-              // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-              type: "application/vnd.ms-excel;charset=utf-8",
-              //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-            });
-            let objectUrl = URL.createObjectURL(blob);
-            let link = document.createElement("a");
-            let fname = "汇付订单" + new Date().getTime() + ".xls"; //下载文件的名字
-            link.href = objectUrl;
-            link.setAttribute("download", fname);
-            document.body.appendChild(link);
-            link.click();
-            load.endLoading();
-          });
-        })
-        .catch(() => {});
-    },
+    //   if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+    //     data.orderStartDate = this.searchForm.orderDate[0];
+    //     data.orderEndDate = this.searchForm.orderDate[1];
+    //   } else {
+    //     data.orderStartDate = null;
+    //     data.orderEndDate = null;
+    //   }
+    //   const options = {
+    //     method: "POST",
+    //     headers: {
+    //       Authorization: getToken(),
+    //       tenantId: getTenantId(),
+    //     },
+    //     data: qs.stringify(cleanDeep(data)),
+    //     url,
+    //     responseType: "json",
+    //   };
+    //   this.$confirm("您确定导出报表", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(() => {
+    //       load.startLoading();
+    //       axios(options).then((res) => {
+    //         load.endLoading();
+    //         if (res.data.code == 200) {
+    //           this.$message.info(res.data.msg);
+    //         } else {
+    //           this.$message.error(res.data.msg);
+    //         }
+    //         // let blob = new Blob([res.data], {
+    //         //   // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+    //         //   type: "application/vnd.ms-excel;charset=utf-8",
+    //         //   //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+    //         // });
+    //         // let objectUrl = URL.createObjectURL(blob);
+    //         // let link = document.createElement("a");
+    //         // let nowTime = new Date();
+    //         // let ymd =
+    //         //   nowTime.getFullYear() +
+    //         //   "" +
+    //         //   (nowTime.getMonth() + 1) +
+    //         //   "" +
+    //         //   nowTime.getDate() +
+    //         //   "" +
+    //         //   nowTime.getHours() +
+    //         //   "" +
+    //         //   nowTime.getMinutes();
+    //         // let fname = "报表导出" + new Date().getTime() + ".xls"; //下载文件的名字
+    //         // link.href = objectUrl;
+    //         // link.setAttribute("download", fname);
+    //         // document.body.appendChild(link);
+    //         // link.click();
+    //         // load.endLoading();
+    //       });
+    //     })
+    //     .catch(() => {});
+    // },
+    // onAdaPayExport() {
+    //   // 报表导出
+    //   let url = "/api-web/adapay/exportBill";
+    //   let data = {
+    //     ...this.extraQuery,
+    //   };
+    //   data.routingOrganId = this.searchForm.routingOrganId.join(",");
+    //   if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+    //     data.startTime = this.searchForm.orderDate[0];
+    //     data.endTime = this.searchForm.orderDate[1];
+    //   } else {
+    //     this.$message.error("请选择开始日期和结束日期");
+    //     return;
+    //   }
+    //   const options = {
+    //     method: "get",
+    //     headers: {
+    //       Authorization: getToken(),
+    //       tenantId: getTenantId(),
+    //     },
+    //     params: data,
+    //     url,
+    //     responseType: "blob",
+    //   };
+    //   this.$confirm("您确定导出汇付订单", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(() => {
+    //       load.startLoading();
+    //       axios(options).then((res) => {
+    //         let blob = new Blob([res.data], {
+    //           // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+    //           type: "application/vnd.ms-excel;charset=utf-8",
+    //           //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+    //         });
+    //         let objectUrl = URL.createObjectURL(blob);
+    //         let link = document.createElement("a");
+    //         let fname = "汇付订单" + new Date().getTime() + ".xls"; //下载文件的名字
+    //         link.href = objectUrl;
+    //         link.setAttribute("download", fname);
+    //         document.body.appendChild(link);
+    //         link.click();
+    //         load.endLoading();
+    //       });
+    //     })
+    //     .catch(() => {});
+    // },
     search() {
       this.pageInfo.page = 1;
       this.$refs.searchForm.save(this.searchForm);
@@ -1077,7 +1102,7 @@ export default {
       params.balancePaymentAmount = params.balancePaymentAmount
         ? params.balancePaymentAmount
         : null;
-        params.routingOrganId= this.searchForm.routingOrganId.join(',')
+      params.routingOrganId = this.searchForm.routingOrganId.join(",");
       if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
         params.orderStartDate = this.searchForm.orderDate[0];
         params.orderEndDate = this.searchForm.orderDate[1];
@@ -1221,12 +1246,12 @@ export default {
                 })
               );
 
-            if(orderInfo.userId && !res.data.calenderId) {
-              this.insertOrderType = 1
-            } else if(res.data.calenderId && !orderInfo.userId) {
-              this.insertOrderType = 2
+            if (orderInfo.userId && !res.data.calenderId) {
+              this.insertOrderType = 1;
+            } else if (res.data.calenderId && !orderInfo.userId) {
+              this.insertOrderType = 2;
             } else {
-              this.insertOrderType = 3
+              this.insertOrderType = 3;
             }
             this.routeOrderStatus = true;
           });
@@ -1363,6 +1388,52 @@ export default {
       return str;
     },
   },
+  computed: {
+    onOrderExport() {
+      // 报表导出
+      let url = "/api-web/export/routeOrderList";
+      let searchForm = this.searchForm;
+
+      let data = {
+        orderType: 3,
+        search: searchForm.search,
+        orderNo: searchForm.orderNo,
+        transNo: searchForm.transNo,
+        merNos: searchForm.merNos,
+        actualAmount: searchForm.actualAmount,
+        balancePaymentAmount: searchForm.balancePaymentAmount,
+        paymentStatus: searchForm.paymentStatus,
+        paymentType: searchForm.paymentType,
+        routingOrganId: searchForm.routingOrganId,
+        lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
+        lessActualAmount: searchForm.lessActualAmount,
+        ...this.extraQuery,
+      };
+      data.routingOrganId = this.searchForm.routingOrganId.join(",");
+
+      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+        data.orderStartDate = this.searchForm.orderDate[0];
+        data.orderEndDate = this.searchForm.orderDate[1];
+      } else {
+        data.orderStartDate = null;
+        data.orderEndDate = null;
+      }
+      return data;
+    },
+    onAdaPayExport() {
+      // 报表导出
+      let url = "/api-web/adapay/exportBill";
+      let data = {
+        ...this.extraQuery,
+      };
+      data.routingOrganId = this.searchForm.routingOrganId.join(",");
+      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+        data.startTime = this.searchForm.orderDate[0];
+        data.endTime = this.searchForm.orderDate[1];
+      }
+      return data;
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 116 - 76
src/views/businessManager/orderManager/income.vue

@@ -5,14 +5,24 @@
       订单管理
     </h2>
     <div class="m-core">
-      <el-button
+      <!-- <el-button
         @click="onOrderExport"
         v-permission="{ child: 'export/orderList', parent: '/income' }"
         type="primary"
         style="margin-bottom:20px"
       >
         报表导出
-      </el-button>
+      </el-button> -->
+      <ExportChiose
+        v-permission="{ child: 'export/orderList', parent: '/income' }"
+        style="margin-bottom: 20px"
+        name='报表导出'
+        ExportEnum="ORDER_LIST1"
+        :exportData="onOrderExport"
+        fileName="问卷调查"
+        errorMsg="请选择月份"
+        :isDownList="true"
+      />
       <!-- 搜索类型 -->
       <save-form
         :inline="true"
@@ -94,7 +104,7 @@
             class="multiple"
             v-model.trim="searchForm.organId"
             filterable
-              collapse-tags
+            collapse-tags
             clearable
             multiple
             @clear="onClear('organId')"
@@ -352,8 +362,9 @@ import qs from "qs";
 import { getToken, getTenantId } from "@/utils/auth";
 import load from "@/utils/loading";
 import { getTimes } from "@/utils";
+import ExportChiose from "@/components/Export-chiose";
 export default {
-  components: { pagination },
+  components: { pagination, ExportChiose },
   name: "income",
   data() {
     return {
@@ -431,80 +442,80 @@ export default {
         this.searchForm.organId = [];
       }
     },
-    onOrderExport() {
-      // 报表导出
-      let url = "/api-web/export/orderList";
-      let searchForm = this.searchForm;
-      let data = {
-        orderType: 0,
-        search: searchForm.search,
-        orderNo: searchForm.orderNo,
-        transNo: searchForm.transNo,
-        merNos: searchForm.merNos,
-        actualAmount: searchForm.actualAmount,
-        balancePaymentAmount: searchForm.balancePaymentAmount,
-        paymentStatus: searchForm.paymentStatus,
-        paymentType: searchForm.paymentType,
-        organId: searchForm.organId.join(','),
-        lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
-        lessActualAmount: searchForm.lessActualAmount,
-      };
-      if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
-        data.orderStartDate = this.searchForm.orderDate[0];
-        data.orderEndDate = this.searchForm.orderDate[1];
-      } else {
-        data.orderStartDate = null;
-        data.orderEndDate = null;
-      }
-      const options = {
-        method: "POST",
-        headers: {
-          Authorization: getToken(),
-          tenantId: getTenantId()
-        },
-        data: qs.stringify(cleanDeep(data)),
-        url,
-        responseType: "json",
-      };
-      this.$confirm("您确定导出报表", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          load.startLoading();
-          axios(options)
-            .then((res) => {
-              load.endLoading();
-              if (res.data.code == 200) {
-                this.$message.info(res.data.msg);
-              } else if(res.data.code == 403) {
-                this.$message.error(`登录过期,请重新登录!`)
-                setTimeout(() => {
-                  this.$store.dispatch('user/resetToken').then(() => {
-                    location.reload()
-                  })
-                }, 1000);
-              } else {
-                this.$message.error(res.data.msg);
-              }
-              // this.$confirm(res.data.data, "提示", {
-              //   confirmButtonText: "确定",
-              //   cancelButtonText: "取消",
-              //   type: "warning",
-              // }).then(() => {
+    // onOrderExport() {
+    //   // 报表导出
+    //   let url = "/api-web/export/orderList";
+    //   let searchForm = this.searchForm;
+    //   let data = {
+    //     orderType: 0,
+    //     search: searchForm.search,
+    //     orderNo: searchForm.orderNo,
+    //     transNo: searchForm.transNo,
+    //     merNos: searchForm.merNos,
+    //     actualAmount: searchForm.actualAmount,
+    //     balancePaymentAmount: searchForm.balancePaymentAmount,
+    //     paymentStatus: searchForm.paymentStatus,
+    //     paymentType: searchForm.paymentType,
+    //     organId: searchForm.organId.join(","),
+    //     lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
+    //     lessActualAmount: searchForm.lessActualAmount,
+    //   };
+    //   if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+    //     data.orderStartDate = this.searchForm.orderDate[0];
+    //     data.orderEndDate = this.searchForm.orderDate[1];
+    //   } else {
+    //     data.orderStartDate = null;
+    //     data.orderEndDate = null;
+    //   }
+    //   const options = {
+    //     method: "POST",
+    //     headers: {
+    //       Authorization: getToken(),
+    //       tenantId: getTenantId(),
+    //     },
+    //     data: qs.stringify(cleanDeep(data)),
+    //     url,
+    //     responseType: "json",
+    //   };
+    //   this.$confirm("您确定导出报表", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(() => {
+    //       load.startLoading();
+    //       axios(options)
+    //         .then((res) => {
+    //           load.endLoading();
+    //           if (res.data.code == 200) {
+    //             this.$message.info(res.data.msg);
+    //           } else if (res.data.code == 403) {
+    //             this.$message.error(`登录过期,请重新登录!`);
+    //             setTimeout(() => {
+    //               this.$store.dispatch("user/resetToken").then(() => {
+    //                 location.reload();
+    //               });
+    //             }, 1000);
+    //           } else {
+    //             this.$message.error(res.data.msg);
+    //           }
+    //           // this.$confirm(res.data.data, "提示", {
+    //           //   confirmButtonText: "确定",
+    //           //   cancelButtonText: "取消",
+    //           //   type: "warning",
+    //           // }).then(() => {
 
-              // }).catch(err => {
+    //           // }).catch(err => {
 
-              // })
-            })
-            .catch((error) => {
-              this.$message.error("导出数据失败,请联系管理员");
-              load.endLoading();
-            });
-        })
-        .catch(() => {});
-    },
+    //           // })
+    //         })
+    //         .catch((error) => {
+    //           this.$message.error("导出数据失败,请联系管理员");
+    //           load.endLoading();
+    //         });
+    //     })
+    //     .catch(() => {});
+    // },
     search() {
       this.pageInfo.page = 1;
       this.getList();
@@ -591,6 +602,35 @@ export default {
       this.getList();
     },
   },
+  computed: {
+    onOrderExport() {
+      // 报表导出
+      let url = "/api-web/export/orderList";
+      let searchForm = this.searchForm;
+      let data = {
+        orderType: 0,
+        search: searchForm.search,
+        orderNo: searchForm.orderNo,
+        transNo: searchForm.transNo,
+        merNos: searchForm.merNos,
+        actualAmount: searchForm.actualAmount,
+        balancePaymentAmount: searchForm.balancePaymentAmount,
+        paymentStatus: searchForm.paymentStatus,
+        paymentType: searchForm.paymentType,
+        organId: searchForm.organId.join(","),
+        lessBalancePaymentAmount: searchForm.lessBalancePaymentAmount,
+        lessActualAmount: searchForm.lessActualAmount,
+      };
+            if (this.searchForm.orderDate && this.searchForm.orderDate.length > 0) {
+        data.orderStartDate = this.searchForm.orderDate[0];
+        data.orderEndDate = this.searchForm.orderDate[1];
+      } else {
+        data.orderStartDate = null;
+        data.orderEndDate = null;
+      }
+      return data;
+    },
+  },
 };
 </script>
 <style lang="scss">

+ 97 - 59
src/views/categroyManager/insideSetting/adminManager.vue

@@ -1,104 +1,142 @@
 <template>
-  <div class='m-container'>
+  <div class="m-container">
     <h2>
-      <div class="squrt"></div>角色管理
+      <div class="squrt"></div>
+      角色管理
     </h2>
+
     <div class="m-core">
-      <el-button  style="margin-bottom: 20px;" type="primary" v-permission="'role/add'" @click="onAdminOperation('create')" icon="el-icon-plus">添加</el-button>
+      <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-form-item>
+      </save-form>
+      <el-button
+        style="margin-bottom: 20px"
+        type="primary"
+        v-permission="'role/add'"
+        @click="onAdminOperation('create')"
+        icon="el-icon-plus"
+        >添加</el-button
+      >
       <!-- 列表 -->
       <div class="tableWrap">
-        <el-table :data='tableList'
-                  header-cell-class-name="headerName">
-          <el-table-column align='center'
-                           prop="roleName"
-                           label="角色类型">
+        <el-table :data="tableList" header-cell-class-name="headerName">
+          <el-table-column align="center" prop="roleName" label="角色类型">
           </el-table-column>
-          <el-table-column align='center'
-                           prop="roleDesc"
-                           label="角色描述">
+          <el-table-column align="center" prop="roleDesc" label="角色描述">
           </el-table-column>
-          <el-table-column align='center'
-                           label="操作">
+          <el-table-column align="center" label="操作">
             <template slot-scope="scope">
-              <el-button @click="onAdminOperation('update', scope.row)"
-                         v-permission="'role/update'"
-                         type="text">修改</el-button>
+              <el-button
+                @click="onAdminOperation('update', scope.row)"
+                v-permission="'role/update'"
+                type="text"
+                >修改</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
-        <pagination :total.sync="pageInfo.total"
-                    :page.sync="pageInfo.page"
-                    :limit.sync="pageInfo.limit"
-                    :page-sizes="pageInfo.page_size"
-                    @pagination="getList" />
+        <pagination
+          :total.sync="pageInfo.total"
+          :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 { roleQueryPage } from '@/api/systemManage'
+import pagination from "@/components/Pagination/index";
+import { roleQueryPage } from "@/api/systemManage";
 export default {
-  name: 'adminManager',
+  name: "adminManager",
   components: { pagination },
-  data () {
+  data() {
     return {
       tableList: [],
+      searchForm:{
+        search:''
+      },
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [10, 20, 40, 50] // 选择限制显示条数
-      }
-    }
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+    };
   },
-  created () {
-    this.init()
+  created() {
+    this.init();
   },
-  activated () {
-    this.init()
-  },
-  mounted () {
-
-
+  activated() {
+    this.init();
   },
+  mounted() {},
   methods: {
-    init () {
-      this.$route.query.page ? this.pageInfo.page = parseInt(this.$route.query.page) : this.pageInfo.page = 1
-      this.getList()
+    search() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+    onReSet() {
+      this.$refs.searchForm.resetFields();
+      this.search();
+    },
+    init() {
+      this.$route.query.page
+        ? (this.pageInfo.page = parseInt(this.$route.query.page))
+        : (this.pageInfo.page = 1);
+      this.getList();
     },
-    getList () {
+    getList() {
       roleQueryPage({
         rows: this.pageInfo.limit,
-        page: this.pageInfo.page
-      }).then(res => {
+        page: this.pageInfo.page,
+        ...this.searchForm
+      }).then((res) => {
         if (res.code == 200 && res.data) {
-          this.tableList = res.data.rows
-          this.pageInfo.total = res.data.total
-
+          this.tableList = res.data.rows;
+          this.pageInfo.total = res.data.total;
         }
-      })
+      });
     },
-    onAdminOperation (type, row) {
+    onAdminOperation(type, row) {
       let params = {
-        path: '/systemManager/adminOperation',
+        path: "/systemManager/adminOperation",
         query: {
           type: type,
-          page: this.pageInfo.page
-        }
-      }
-      let tagTitle = '新建'
+          page: this.pageInfo.page,
+        },
+      };
+      let tagTitle = "新建";
       if (row) {
-        params.query.id = row.id
-        tagTitle = '修改'
+        params.query.id = row.id;
+        tagTitle = "修改";
       }
       this.$router.push(params, (route) => {
-        route.meta.title = tagTitle + '系统角色权限'
-      })
-    }
-  }
-}
+        route.meta.title = tagTitle + "系统角色权限";
+      });
+    },
+  },
+};
 </script>
 <style lang="scss">
 .headerName {

+ 22 - 12
src/views/operationManual/index.vue

@@ -11,6 +11,15 @@
         @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>
+        <!-- search -->
         <el-form-item prop="menuId">
           <el-cascader
             ref="myCascader"
@@ -130,6 +139,7 @@ export default {
     return {
       searchForm: {
         menuId: [],
+        search:''
       },
       operationStatus: "create",
       form: {
@@ -179,6 +189,7 @@ export default {
       try {
         const res = await getSysManualList({
           menuId: this.searchForm.menuId[this.searchForm.menuId.length - 1],
+          search: this.searchForm.search,
           page: this.rules.page,
           rows: this.rules.limit,
         });
@@ -193,10 +204,9 @@ export default {
       this.getList();
     },
     onReSet() {
-      this.$nextTick(()=>{
-           this.search()
-      })
-
+      this.$nextTick(() => {
+        this.search();
+      });
     },
     setTableData(result) {
       let list = [];
@@ -251,15 +261,15 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-      }).then(async()=>{
-        try{
-          const res = await deteltSysManual({id:row.id})
-          this.$message.success('删除成功')
-          this.getList()
-        }catch(e){
-          console.log(e)
+      }).then(async () => {
+        try {
+          const res = await deteltSysManual({ id: row.id });
+          this.$message.success("删除成功");
+          this.getList();
+        } catch (e) {
+          console.log(e);
         }
-      })
+      });
     },
     addManual() {
       this.operationStatus = "create";

+ 99 - 67
src/views/organManager/components/organInfo.vue

@@ -23,8 +23,8 @@
             {
               required: true,
               message: '请上传机构LOGO',
-              trigger: 'blur, change'
-            }
+              trigger: 'blur, change',
+            },
           ]"
         >
           <div style="width: 300px !important">
@@ -41,11 +41,19 @@
               <img v-if="form.logo" :src="form.logo" class="avatar" />
               <i v-else class="el-icon-plus avatar-uploader-icon"></i>
             </el-upload> -->
-            <image-cropper :options="cropperOptions" :disabled="isDisabled" :imgSize="5" accept=".png" :acceptArray="['image/png']" :imageUrl="form.logo" @crop-upload-success="cropSuccess" />
+            <image-cropper
+              :options="cropperOptions"
+              :disabled="isDisabled"
+              :imgSize="5"
+              accept=".png"
+              :acceptArray="['image/png']"
+              :imageUrl="form.logo"
+              @crop-upload-success="cropSuccess"
+            />
             <div
               class="tips"
               v-show="!isDisabled"
-              style="line-height: 1.3;color: red;"
+              style="line-height: 1.3; color: red"
             >
               仅支持图片格式:png,大小:5MB;
             </div>
@@ -68,8 +76,8 @@
             {
               required: true,
               message: '请上企业公章',
-              trigger: 'blur, change'
-            }
+              trigger: 'blur, change',
+            },
           ]"
         >
           <div style="width: 300px !important" class="ant-upload-preview">
@@ -84,18 +92,22 @@
               :on-success="handleAvatarSuccess"
               :before-upload="beforeAvatarUpload"
             >
-              <img v-if="form.corporateChops" :src="form.corporateChops" class="avatar" />
+              <img
+                v-if="form.corporateChops"
+                :src="form.corporateChops"
+                class="avatar"
+              />
               <span v-else>
-                  <i class="el-icon-plus avatar-uploader-icon"></i>
-                  <span class="upload-desc">添加上传图片</span>
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+                <span class="upload-desc">添加上传图片</span>
               </span>
             </el-upload>
             <div
               class="tips"
               v-show="!isDisabled && tenantInfo != 'SETTING'"
-              style="line-height: 1.3;color: red;"
+              style="line-height: 1.3; color: red"
             >
-              请上传透明背景PNG格式公章图片;<br/>
+              请上传透明背景PNG格式公章图片;<br />
               仅支持图片格式:png,大小:5MB;
             </div>
           </div>
@@ -107,8 +119,8 @@
             {
               required: true,
               message: '请上传企业财务公章',
-              trigger: 'blur, change'
-            }
+              trigger: 'blur, change',
+            },
           ]"
         >
           <div style="width: 300px !important" class="ant-upload-preview">
@@ -123,18 +135,22 @@
               :on-success="handleAvatarSuccess2"
               :before-upload="beforeAvatarUpload"
             >
-              <img v-if="form.corporateFinanceChops" :src="form.corporateFinanceChops" class="avatar" />
+              <img
+                v-if="form.corporateFinanceChops"
+                :src="form.corporateFinanceChops"
+                class="avatar"
+              />
               <span v-else>
-                  <i class="el-icon-plus avatar-uploader-icon"></i>
-                  <span class="upload-desc">添加上传图片</span>
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+                <span class="upload-desc">添加上传图片</span>
               </span>
             </el-upload>
             <div
               class="tips"
               v-show="!isDisabled && tenantInfo != 'SETTING'"
-              style="line-height: 1.3;color: red;"
+              style="line-height: 1.3; color: red"
             >
-              请上传透明背景PNG格式公章图片;<br/>
+              请上传透明背景PNG格式公章图片;<br />
               仅支持图片格式:png,大小:5MB;
             </div>
           </div>
@@ -154,7 +170,7 @@
           v-if="tenantInfo == 'SETTING'"
           prop="theme"
           :rules="[
-            { required: true, message: '请选择主题', trigger: 'change' }
+            { required: true, message: '请选择主题', trigger: 'change' },
           ]"
         >
           <div style="width: 300px !important">
@@ -182,7 +198,7 @@
         label="机构全称"
         prop="tsignName"
         :rules="[
-          { required: true, message: '请输入机构全称', trigger: 'blur' }
+          { required: true, message: '请输入机构全称', trigger: 'blur' },
         ]"
       >
         <el-input
@@ -195,7 +211,7 @@
         label="机构简称"
         prop="name"
         :rules="[
-          { required: true, message: '请输入机构简称', trigger: 'blur' }
+          { required: true, message: '请输入机构简称', trigger: 'blur' },
         ]"
       >
         <el-input
@@ -210,7 +226,7 @@
         <el-form-item
           prop="province"
           :rules="[{ required: true, message: '请选择省', trigger: 'change' }]"
-          style="margin-right: 0;"
+          style="margin-right: 0"
         >
           <el-select
             v-model.trim="form.province"
@@ -218,7 +234,7 @@
             placeholder="请选择省"
             :disabled="isDisabled"
             clearable
-            style="width: 148px !important;"
+            style="width: 148px !important"
             @change="onChangeProvince"
           >
             <el-option
@@ -232,13 +248,13 @@
         <el-form-item
           prop="city"
           :rules="[{ required: true, message: '请选择市', trigger: 'change' }]"
-          style="margin-right: 0;"
+          style="margin-right: 0"
         >
           <el-select
             v-model.trim="form.city"
             filterable
             :disabled="isDisabled"
-            style="width: 148px !important;"
+            style="width: 148px !important"
             placeholder="请选择市"
             clearable
           >
@@ -251,7 +267,13 @@
           </el-select>
         </el-form-item>
       </el-form-item>
-      <el-form-item label="机构地址" prop="address">
+      <el-form-item
+        label="机构地址"
+        prop="address"
+        :rules="[
+          { required: true, message: '请输入机构地址', trigger: 'blur' },
+        ]"
+      >
         <el-input
           v-model.trim="form.address"
           :disabled="isDisabled"
@@ -262,7 +284,7 @@
         label="营业执照编号"
         prop="tsignCode"
         :rules="[
-          { required: true, message: '请输入营业执照编号', trigger: 'blur' }
+          { required: true, message: '请输入营业执照编号', trigger: 'blur' },
         ]"
       >
         <el-input
@@ -275,7 +297,7 @@
         label="机构联系人"
         prop="contacts"
         :rules="[
-          { required: true, message: '请输入机构联系人', trigger: 'blur' }
+          { required: true, message: '请输入机构联系人', trigger: 'blur' },
         ]"
       >
         <el-input
@@ -293,20 +315,18 @@
           {
             pattern: /^1[3456789]\d{9}$/,
             message: '请输入正确的手机号',
-            trigger: 'blur'
+            trigger: 'blur',
           },
-          { validator: validatePhone, trigger: 'blur' }
+          { validator: validatePhone, trigger: 'blur' },
         ]"
       >
         <template #label>
           联系人手机号
           <el-tooltip placement="top" popper-class="mTooltip">
-            <div slot="content">
-              该手机号为机构管理员登录账号
-            </div>
+            <div slot="content">该手机号为机构管理员登录账号</div>
             <i
               class="el-icon-question micon el-tooltip"
-              style="font-size: 18px; color: #F56C6C"
+              style="font-size: 18px; color: #f56c6c"
               v-permission="'export/teacherSalary'"
             ></i>
           </el-tooltip>
@@ -328,10 +348,11 @@
         :rules="[
           { required: true, message: '请输入机构邮箱', trigger: 'blur' },
           {
-            pattern: /^\w+((.\w+)|(-\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/,
+            pattern:
+              /^\w+((.\w+)|(-\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/,
             message: '请输入正确的邮箱格式',
-            trigger: 'blur'
-          }
+            trigger: 'blur',
+          },
         ]"
       >
         <el-input
@@ -351,7 +372,6 @@
         ></el-input>
       </el-form-item>
     </el-form>
-
   </div>
 </template>
 
@@ -361,40 +381,40 @@ import { checkStudentPhone } from "../api";
 import { areaQueryChild, getParentArea } from "@/api/specialSetting";
 import ThemePicker from "@/components/ThemePicker";
 import { setTheme } from "@/utils/setTheme";
-import ImageCropper from '@/components/ImageCropper'
+import ImageCropper from "@/components/ImageCropper";
 export default {
   props: ["type", "data", "tenantInfo"],
   components: { ThemePicker, ImageCropper },
   data() {
     return {
       headers: {
-        Authorization: getToken()
+        Authorization: getToken(),
       },
       themeList: [
         {
           name: "亚丁绿",
           value: "adenGreen",
           color: "#00A79D",
-          selected: false
+          selected: false,
         },
         {
           name: "暮云灰",
           value: "cloudAshes",
           color: "#444D5C",
-          selected: false
+          selected: false,
         },
         {
           name: "柏林蓝",
           value: "berlinBlue",
           color: "#2B78CC",
-          selected: false
+          selected: false,
         },
         {
           name: "火山红",
           value: "volcanicRed",
           color: "#BC3030",
-          selected: false
-        }
+          selected: false,
+        },
       ],
       form: {
         tsignName: null,
@@ -427,7 +447,7 @@ export default {
         autoCropHeight: 72, //默认生成截图框高度
         fixedBox: true, //是否固定截图框大小 不允许改变
         previewsCircle: false, //预览图是否是圆形
-        title: '上传机构LOGO', //模态框上显示的标题
+        title: "上传机构LOGO", //模态框上显示的标题
       },
     };
   },
@@ -437,14 +457,14 @@ export default {
       this.form = Object.assign(this.form, this.data);
       this.payState = this.data.payState;
 
-      const { phone } = this.data
+      const { phone } = this.data;
       // 判断是否已存在手机号
-      if(phone) {
-        this.originPhone = phone
+      if (phone) {
+        this.originPhone = phone;
       }
     }
     // 选中默认颜色
-    this.themeList.forEach(theme => {
+    this.themeList.forEach((theme) => {
       if (theme.color == this.form.themeColor) {
         theme.selected = true;
       } else {
@@ -453,7 +473,7 @@ export default {
     });
     // 判断是否有城市编号
     if (this.form.areaId) {
-      await getParentArea({ id: this.form.areaId }).then(async res => {
+      await getParentArea({ id: this.form.areaId }).then(async (res) => {
         if (res.code == 200 && res.data) {
           await this.getAreaList(res.data.id, () => {
             this.$set(this.form, "province", res.data.id);
@@ -468,6 +488,11 @@ export default {
     }
 
     this.$refs.form.clearValidate();
+    if (this.data&& this.$route.query.type == "create") {
+      this.checkPhone();
+      //  验证表单 看看是否有异常
+      this.onSubmit();
+    }
   },
   computed: {
     isDisabled() {
@@ -477,18 +502,18 @@ export default {
       } else {
         return this.type == "setting" || this.payState == 1 ? true : false;
       }
-    }
+    },
   },
   methods: {
     //上传图片成功
     cropSuccess(data) {
       // this.imgUrl = data.data.avatar
       this.form.logo = data.data.url;
-      console.log(this.form.logo)
+      console.log(this.form.logo);
     },
     themeChange(item) {
       // 切换主题时设置跟主题对应的主题色
-      this.themeList.forEach(theme => {
+      this.themeList.forEach((theme) => {
         theme.selected = false;
       });
       item.selected = true;
@@ -500,13 +525,13 @@ export default {
         setTheme({
           themeColor: item.color,
           theme: item.value,
-          saveTheme: false
+          saveTheme: false,
         });
       }
     },
     onSubmit() {
       let state = false;
-      this.$refs.form.validate(_ => {
+      this.$refs.form.validate((_) => {
         console.log(_);
         state = _;
       });
@@ -515,9 +540,13 @@ export default {
     async checkPhone() {
       const phone = this.form.phone;
       // 判断是否是自己之前注册的手机号
-      if(phone == this.originPhone && this.originPhone) {
-        this.errorPhone = null
-        return
+      if (
+        phone == this.originPhone &&
+        this.originPhone &&
+        this.$route.query.type != "create"
+      ) {
+        this.errorPhone = null;
+        return;
       }
       try {
         const regu = /^1[3456789]\d{9}$/;
@@ -532,7 +561,9 @@ export default {
             this.errorPhone = null;
           }
         }
-      } catch (e) {}
+      } catch (e) {
+        console.log(e);
+      }
     },
     onChangeProvince(val) {
       this.form.city = null;
@@ -540,13 +571,13 @@ export default {
     },
     getAreaList(parentId, callback) {
       parentId = parentId ? parentId : 0;
-      areaQueryChild({ parentId: parentId }).then(res => {
+      areaQueryChild({ parentId: parentId }).then((res) => {
         if (res.code == 200 && res.data) {
           let tempData = [];
-          res.data.forEach(item => {
+          res.data.forEach((item) => {
             tempData.push({
               label: item.name,
-              value: item.id
+              value: item.id,
             });
           });
           if (parentId) {
@@ -590,7 +621,7 @@ export default {
     // },
     beforeAvatarUpload(file) {
       const imageType = {
-        "image/png": true
+        "image/png": true,
       };
       const isImage = imageType[file.type];
       const isLt2M = file.size / 1024 / 1024 < 5;
@@ -610,8 +641,8 @@ export default {
       } else {
         callback();
       }
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>
@@ -667,7 +698,8 @@ export default {
 .el-textarea {
   width: 300px !important;
 }
-.el-textarea, /deep/.el-textarea__inner {
+.el-textarea,
+/deep/.el-textarea__inner {
   height: 108px !important;
   min-height: 108px !important;
 }

+ 13 - 2
src/views/organManager/organOperation.vue

@@ -58,7 +58,6 @@ export default {
     };
   },
   async mounted () {
-
     if(this.payType !== 'create') {
       try {
         if(this.payType == 'look') {
@@ -75,6 +74,11 @@ export default {
         this.info = { ...other, theme, themeColor, corporateChops, corporateFinanceChops }
         this.productInfo.payState = this.info.payState
       } catch(e) {}
+    }else {
+      if(this.$route.query){
+        this.info = {...this.$route.query}
+        this.info.logo= null
+      }
     }
     this.status = true
   },
@@ -160,9 +164,16 @@ export default {
     },
     onCancel () {
       this.$store.dispatch('delVisitedViews', this.$route)
-      this.$router.push({
+      if(this.$route.query.email){
+           this.$router.push({
+        path: "/tenantApply?tabrouter=2"
+      });
+      }else{
+           this.$router.push({
         path: "/organManager/organList"
       });
+      }
+
     }
     // let lodash = this.$helpers.lodash;
     //     let storage = JSON.parse(localStorage.getItem(`base`));

+ 23 - 1
src/views/platformManager/tenantApply/api.js

@@ -5,4 +5,26 @@ export const tenantApplyList = data => request2({
   url: '/api-web/tenantApply/list',
   method: 'get',
   params: data,
-})
+})
+
+export const tenantPreJoinList = data => request2({
+  url: '/api-web/tenantPreJoin/queryPage',
+  method: 'post',
+  params: data,
+  data
+})
+
+export const getCallRecord = data => request2({
+  url: '/api-web/tenantApplyCallRecord/queryPage',
+  method: 'post',
+  params: data,
+  data
+})
+
+
+export const addCallRecord = data => request2({
+  url: '/api-web/tenantApplyCallRecord/add',
+  method: 'post',
+  params: data,
+  data
+})

+ 228 - 0
src/views/platformManager/tenantApply/component/tenandInFor.vue

@@ -0,0 +1,228 @@
+<template>
+  <div class="m-core">
+    <save-form
+      :inline="true"
+      class="searchForm"
+      ref="searchForm"
+      @submit="search"
+      @reset="reset"
+      :saveKey="'tenantApply'"
+      :model.sync="searchForm"
+    >
+      <el-form-item prop="search">
+        <el-input
+          v-model="searchForm.search"
+          clearable
+          placeholder="公司全称/负责人姓名"
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="createTimer">
+        <el-date-picker
+          v-model.trim="searchForm.createTimer"
+          clearable
+          type="daterange"
+          range-separator="至"
+          start-placeholder="提交开始时间"
+          end-placeholder="提交结束时间"
+          :default-time="['00:00:00', '23:59:59']"
+          :picker-options="{ firstDayOfWeek: 1 }"
+             value-format="yyyy-MM-dd HH:mm:ss"
+
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item prop="state">
+        <el-select
+          v-model.trim="searchForm.state"
+          clearable
+          filterable
+          placeholder="创建机构"
+        >
+          <el-option label="未创建" value="0"></el-option>
+          <el-option label="已创建" value="1"></el-option>
+        </el-select>
+      </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="tableList"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      >
+        <el-table-column align="center" label="所在城市" prop="areaName">
+        </el-table-column>
+        <el-table-column align="center" label="机构全称" prop="tsignName">
+        </el-table-column>
+        <el-table-column align="center" label="机构简称" prop="name">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="企业负责人"
+          prop="enterpriseLiableName"
+        >
+        </el-table-column>
+        <el-table-column align="center" label="项目负责人" prop="contacts">
+        </el-table-column>
+        <el-table-column align="center" label="提交时间" prop="createdTime">
+        </el-table-column>
+        <el-table-column align="center" label="是否创建机构" prop="state">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.state ? "已创建" : "未创建" }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作">
+          <template slot-scope="scope">
+            <el-button @click="lookDetail(scope.row)" type="text"
+              >查看
+            </el-button>
+            <el-button
+              :disabled="!!scope.row.state"
+              @click="createTenand(scope.row)"
+              v-permission="'tenantInfo/add'"
+              type="text"
+              >创建机构
+            </el-button>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column align="center" label="学生规模">
+            <template slot-scope="scope">
+              {{ scope.row.studentNumLevel | formatStudentNumLevel }}
+            </template>
+          </el-table-column> -->
+
+        <!-- <el-table-column align="center" label="推荐人姓名" prop="productName">
+          </el-table-column>
+
+          <el-table-column align="center" label="沟通结果" prop="productName">
+          </el-table-column>
+       -->
+      </el-table>
+      <pagination
+        :saveKey="'tenantApply'"
+        sync
+        :total.sync="pageInfo.total"
+        :page.sync="pageInfo.page"
+        :limit.sync="pageInfo.limit"
+        :page-sizes="pageInfo.page_size"
+        @pagination="getList"
+      />
+    </div>
+    <el-dialog
+      title="入驻机构详情"
+      :visible.sync="detailVisible"
+      width="1000px"
+    >
+      <infodetail :activeRow="activeRow" />
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="detailVisible = false">取 消</el-button>
+        <el-button type="primary" @click="detailVisible = false"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { tenantPreJoinList } from "../api";
+import { getTimes } from "@/utils";
+import infodetail from "../modals/infodetail.vue";
+const initSearch = {
+  name: null,
+  createTimer: null,
+  state:null
+};
+export default {
+  components: {
+    pagination,
+    infodetail,
+  },
+  data() {
+    return {
+      tableList: [],
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      searchForm: {
+        ...initSearch,
+      },
+      activeIndex: "1",
+      activeRow: null,
+      detailVisible: false,
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    async getList() {
+      try {
+        const { search, createTimer,state } = this.searchForm;
+        console.log(createTimer)
+        const res = await tenantPreJoinList({
+          search: search,
+          state:state,
+          ...getTimes(
+            createTimer,
+            ["startTime", "endTime"],
+            "YYYY-MM-DD HH:mm:ss"
+          ),
+          page: this.pageInfo.page,
+          rows: this.pageInfo.limit,
+        });
+        this.pageInfo.total = res.data.total;
+        this.tableList = res.data.rows;
+      } catch (e) {}
+    },
+    search() {
+      this.pageInfo.page = 1;
+      this.$refs.searchForm.save(this.searchForm);
+      this.$refs.searchForm.save(this.pageInfo, "page");
+      this.getList();
+    },
+    reset() {
+      this.searchForm = {
+        ...initSearch,
+      };
+      this.search();
+    },
+    lookDetail(row) {
+      this.activeRow = row;
+      this.detailVisible = true;
+    },
+    createTenand(row) {
+      this.$router.push({
+        path: "platformManager/organOperation?type=create&id",
+        query: { ...row },
+      });
+    },
+  },
+  filters: {
+    formatStudentNumLevel(item) {
+      const template = {
+        1: "500人以下",
+        2: "501-1000人",
+        3: "1001-2000人",
+        4: "2001-3000人",
+        5: "3000人以上",
+      };
+      return template[item];
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.courseMask .el-dialog__body {
+  padding-bottom: 0;
+}
+</style>
+

+ 204 - 0
src/views/platformManager/tenantApply/component/tenantApplyFor.vue

@@ -0,0 +1,204 @@
+<template>
+  <div class="m-core">
+    <save-form
+      :inline="true"
+      class="searchForm"
+      ref="searchForm"
+      @submit="search"
+      @reset="reset"
+      :saveKey="'tenantApply'"
+      :model.sync="searchForm"
+    >
+      <el-form-item prop="name">
+          <el-input
+            v-model="searchForm.name"
+            clearable
+            placeholder="机构名称"
+          ></el-input>
+        </el-form-item>
+      <el-form-item prop="createTimer">
+        <el-date-picker
+          v-model.trim="searchForm.createTimer"
+          clearable
+          type="daterange"
+          range-separator="至"
+          start-placeholder="申请开始时间"
+          end-placeholder="申请结束时间"
+          :default-time="['00:00:00', '23:59:59']"
+          :picker-options="{ firstDayOfWeek: 1 }"
+        ></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="tableList"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      >
+        <el-table-column align="center" label="所在城市" prop="city">
+        </el-table-column>
+        <!-- <el-table-column align="center" label="机构名称" prop="name">
+        </el-table-column> -->
+        <el-table-column align="center" label="联系人" prop="linkman">
+          <template slot-scope="scope">
+            <div>
+              <p>{{scope.row.linkman}}</p>
+              <p>{{scope.row.mobileNo}}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column align="center" label="联系人电话" prop="mobileNo">
+        </el-table-column> -->
+        <el-table-column align="center" label="申请时间" prop="createTime" width="100px">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="推荐人姓名"
+          prop="nameOfReferrer"
+        >
+        </el-table-column>
+        <el-table-column align="center" label="学生规模">
+            <template slot-scope="scope">
+              {{ scope.row.studentNumLevel | formatStudentNumLevel }}
+            </template>
+          </el-table-column>
+        <el-table-column align="center" label="上次沟通时间" prop="callBackTime">
+        </el-table-column>
+        <el-table-column align="center" label="沟通人" prop="callBackPeople">
+        </el-table-column>
+        <el-table-column align="center" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click="openDetail(scope.row)"
+              v-permission="'tenantApplyCallRecord/queryPage'"
+              type="text"
+              >沟通记录
+            </el-button>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column align="center" label="推荐人姓名" prop="productName">
+          </el-table-column>
+
+          <el-table-column align="center" label="沟通结果" prop="productName">
+          </el-table-column>
+       -->
+      </el-table>
+      <pagination
+        :saveKey="'tenantApply'"
+        sync
+        :total.sync="pageInfo.total"
+        :page.sync="pageInfo.page"
+        :limit.sync="pageInfo.limit"
+        :page-sizes="pageInfo.page_size"
+        @pagination="getList"
+      />
+    </div>
+    <el-dialog
+      title="沟通记录"
+      :visible.sync="recordVisible"
+      width="1000px"
+    >
+      <recordDetail :activeRow="activeRow" v-if="recordVisible"/>
+      <span slot="footer" class="dialog-footer">
+        <!-- <el-button @click="recordVisible = false">取 消</el-button> -->
+        <el-button type="primary" @click="recordVisible = false"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import recordDetail from"../modals/recordDetail.vue"
+import { tenantApplyList } from "../api";
+import { getTimes } from "@/utils";
+const initSearch = {
+  name: null,
+  createTimer: null,
+};
+export default {
+  components: {
+    pagination,
+    recordDetail
+  },
+  data() {
+    return {
+      tableList: [],
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      searchForm: {
+        ...initSearch,
+      },
+      activeIndex: "1",
+      recordVisible: false,
+      activeRow:null
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    async getList() {
+      try {
+        const { name, createTimer } = this.searchForm;
+        const res = await tenantApplyList({
+          name: name,
+          ...getTimes(
+            createTimer,
+            ["startDateTime", "endDateTime"],
+            "YYYY-MM-DD HH:mm:ss"
+          ),
+          page: this.pageInfo.page,
+          rows: this.pageInfo.limit,
+        });
+        this.pageInfo.total = res.data.total;
+        this.tableList = res.data.rows;
+      } catch (e) {}
+    },
+    search() {
+      this.pageInfo.page = 1;
+      this.$refs.searchForm.save(this.searchForm);
+      this.$refs.searchForm.save(this.pageInfo, "page");
+      this.getList();
+    },
+    reset() {
+      this.searchForm = {
+        ...initSearch,
+      };
+      this.search();
+    },
+    openDetail(row) {
+      this.activeRow = row
+      this.recordVisible = true;
+    },
+  },
+  filters: {
+    formatStudentNumLevel(item) {
+      const template = {
+        1: "500人以下",
+        2: "501-1000人",
+        3: "1001-2000人",
+        4: "2001-3000人",
+        5: "3000人以上",
+      };
+      return template[item];
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.courseMask .el-dialog__body {
+  padding-bottom: 0;
+}
+</style>
+

+ 43 - 108
src/views/platformManager/tenantApply/index.vue

@@ -5,105 +5,28 @@
       申请机构
     </h2>
     <div class="m-core">
-      <save-form
-        :inline="true"
-        class="searchForm"
-        ref="searchForm"
-        @submit="search"
-        @reset="reset"
-        :saveKey="'tenantApply'"
-        :model.sync="searchForm"
+      <tab-router
+        v-model.trim="activeIndex"
+        type="card"
+        @tab-click="handleClick"
       >
-        <!-- <el-form-item prop="name">
-          <el-input
-            v-model="searchForm.name"
-            clearable
-            placeholder="机构名称"
-          ></el-input>
-        </el-form-item> -->
-        <el-form-item prop="createTimer">
-          <el-date-picker
-            v-model.trim="searchForm.createTimer"
-            clearable
-            type="daterange"
-            range-separator="至"
-            start-placeholder="申请开始时间"
-            end-placeholder="申请结束时间"
-            :default-time="['00:00:00', '23:59:59']"
-            :picker-options="{ firstDayOfWeek: 1 }"
-          ></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="tableList"
-          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-        >
-          <el-table-column align="center" label="所在城市" prop="city">
-          </el-table-column>
-          <!-- <el-table-column align="center" label="机构名称" prop="name">
-          </el-table-column> -->
-          <el-table-column align="center" label="联系人" prop="linkman">
-          </el-table-column>
-          <el-table-column align="center" label="联系人电话" prop="mobileNo">
-          </el-table-column>
-          <el-table-column align="center" label="推荐人" prop="nameOfReferrer">
-          </el-table-column>
-          <el-table-column align="center" label="学生规模">
-            <template slot-scope="scope">
-              {{ scope.row.studentNumLevel | formatStudentNumLevel }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="申请时间" prop="createTime">
-          </el-table-column>
-          <!-- <el-table-column align="center" label="推荐人姓名" prop="productName">
-          </el-table-column>
-          <el-table-column align="center" label="上次沟通时间" prop="productName">
-          </el-table-column>
-          <el-table-column align="center" label="沟通结果" prop="productName">
-          </el-table-column>
-          <el-table-column align="center" label="沟通人" prop="productName">
-          </el-table-column> -->
-          <!-- <el-table-column align="center" label="操作">
-            <template slot-scope="scope">
-              <el-button
-                @click="openService('update', scope.row)"
-                v-permission="'platformServe/update'"
-                type="text"
-                >修改
-              </el-button>
-              <el-button
-                @click="delService(scope.row)"
-                v-permission="'platformServe/delete'"
-                type="text"
-                >删除</el-button
-              >
-            </template>
-          </el-table-column> -->
-        </el-table>
-        <pagination
-          :saveKey="'tenantApply'"
-          sync
-          :total.sync="pageInfo.total"
-          :page.sync="pageInfo.page"
-          :limit.sync="pageInfo.limit"
-          :page-sizes="pageInfo.page_size"
-          @pagination="getList"
-        />
-      </div>
+        <!--    v-if="permissionList.networkList" -->
+        <el-tab-pane label="申请机构" name="1"   v-if="permission('/tenantApplyFor')">
+          <tenantApplyFor v-if="activeIndex ==1"/>
+        </el-tab-pane>
+        <el-tab-pane label="入驻机构" name="2"   v-if="permission('/tenandInFor')">
+          <tenandInFor  v-if="activeIndex ==2"/>
+        </el-tab-pane>
+      </tab-router>
     </div>
   </div>
 </template>
 <script>
-import pagination from "@/components/Pagination/index";
-import {
-  tenantApplyList
-} from "./api";
+// import pagination from "@/components/Pagination/index";
+import tenantApplyFor from "./component/tenantApplyFor.vue";
+import tenandInFor from "./component/tenandInFor.vue";
+import { permission } from "@/utils/directivePage";
+import { tenantApplyList } from "./api";
 import { getTimes } from "@/utils";
 const initSearch = {
   name: null,
@@ -111,10 +34,12 @@ const initSearch = {
 };
 export default {
   components: {
-    pagination
+    tenantApplyFor,
+    tenandInFor,
   },
   data() {
     return {
+      activeIndex: "1",
       tableList: [],
       pageInfo: {
         // 分页规则
@@ -124,7 +49,7 @@ export default {
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
       searchForm: {
-        ...initSearch
+        ...initSearch,
       },
     };
   },
@@ -134,10 +59,14 @@ export default {
   methods: {
     async getList() {
       try {
-        const { name, createTimer } = this.searchForm
+        const { name, createTimer } = this.searchForm;
         const res = await tenantApplyList({
           name: name,
-          ...getTimes(createTimer, ["startDateTime", "endDateTime"], "YYYY-MM-DD HH:mm:ss"),
+          ...getTimes(
+            createTimer,
+            ["startDateTime", "endDateTime"],
+            "YYYY-MM-DD HH:mm:ss"
+          ),
           page: this.pageInfo.page,
           rows: this.pageInfo.limit,
         });
@@ -153,23 +82,29 @@ export default {
     },
     reset() {
       this.searchForm = {
-        ...initSearch
+        ...initSearch,
       };
       this.search();
     },
+    handleClick(val) {
+      this.activeIndex = val.name;
+    },
+    permission(str){
+      return permission(str)
+    }
   },
   filters: {
     formatStudentNumLevel(item) {
       const template = {
-        1: '500人以下',
-        2: '501-1000人',
-        3: '1001-2000人',
-        4: '2001-3000人',
-        5: '3000人以上',
-      }
-      return template[item]
-    }
-  }
+        1: "500人以下",
+        2: "501-1000人",
+        3: "1001-2000人",
+        4: "2001-3000人",
+        5: "3000人以上",
+      };
+      return template[item];
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 211 - 0
src/views/platformManager/tenantApply/modals/infodetail.vue

@@ -0,0 +1,211 @@
+<template>
+  <div>
+    <el-alert title="入驻信息" :closable="false" type="info"> </el-alert>
+    <descriptions :column="2">
+      <descriptions-item label="公司全称:">{{
+        activeRow.tsignName || ""
+      }}</descriptions-item>
+      <descriptions-item label="公司简称:">{{
+        activeRow.name || ""
+      }}</descriptions-item>
+      <descriptions-item label="企业负责人:">{{
+        activeRow.enterpriseLiableName || ""
+      }}</descriptions-item>
+      <descriptions-item label="企业负责人联系电话:">{{
+        activeRow.enterpriseLiablePhone || ""
+      }}</descriptions-item>
+      <descriptions-item label="项目负责人:">{{
+        activeRow.contacts || ""
+      }}</descriptions-item>
+      <descriptions-item label="项目负责人联系电话:">{{
+        activeRow.phone || ""
+      }}</descriptions-item>
+      <descriptions-item label="营业执照编号:" span="4">{{
+        activeRow.tsignCode || ""
+      }}</descriptions-item>
+      <descriptions-item label="机构简介:" span="4">{{
+        activeRow.remark || ""
+      }}</descriptions-item>
+      <descriptions-item label="通讯地址:" span="4">{{
+        activeRow.address || ""
+      }}</descriptions-item>
+      <descriptions-item label="提交时间:" span="4">{{
+        activeRow.createdTime || ""
+      }}</descriptions-item>
+    </descriptions>
+    <el-alert
+      title="机构资料"
+      :closable="false"
+      type="info"
+      style="margin: 20px 0"
+    >
+    </el-alert>
+    <div class="detailImgList">
+      <el-row class="row">
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p class="itemTitle">公司营业执照</p>
+            <el-image
+              class="vertical"
+              :src="activeRow.tsignPic"
+              :preview-src-list="[activeRow.tsignPic]"
+              alt=""
+            />
+          </div>
+        </el-col>
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p class="itemTitle">税务登记证</p>
+            <el-image
+              class="vertical"
+              :src="activeRow.taxRegisterPic"
+              :preview-src-list="[activeRow.taxRegisterPic]"
+              alt=""
+            /></div
+        ></el-col>
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p class="itemTitle">公司开户信息</p>
+            <el-image
+              class="vertical"
+              :src="activeRow.companyAccountInfoPic"
+              :preview-src-list="[activeRow.companyAccountInfoPic]"
+              alt=""
+            /></div
+        ></el-col>
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p>企业公章</p>
+            <el-image
+              class="horizontal"
+              :src="activeRow.corporateChops"
+              :preview-src-list="[activeRow.corporateChops]"
+              alt=""
+            />
+          </div>
+        </el-col>
+      </el-row>
+      <el-row class="row">
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p>法人身份证(正面)</p>
+            <el-image
+              class="horizontal"
+              :src="activeRow.legalPersonIdFrontPic"
+              :preview-src-list="[activeRow.legalPersonIdFrontPic]"
+              alt=""
+            />
+          </div>
+        </el-col>
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p>法人身份证(反面)</p>
+            <el-image
+              class="horizontal"
+              :src="activeRow.legalPersonIdReversePic"
+              :preview-src-list="[activeRow.legalPersonIdReversePic]"
+              alt=""
+            />
+          </div>
+        </el-col>
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p>企业财务公章</p>
+            <el-image
+              class="horizontal"
+              :src="activeRow.corporateFinanceChops"
+              :preview-src-list="[activeRow.corporateFinanceChops]"
+              alt=""
+            />
+          </div>
+        </el-col>
+        <el-col :span="6">
+          <div class="imgWrapItem">
+            <p>企业LOGO</p>
+            <a :href="activeRow.logo" class="logo">logo</a>
+          </div></el-col
+        >
+      </el-row>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  props: ["activeRow"],
+  data() {
+    return {
+      processList: [
+        {
+          realName: "张XX",
+          createTime: "2021-12-11 12:10:29",
+          event: "希望提供测试账号",
+        },
+        {
+          realName: "张XX",
+          createTime: "2021-12-11 12:10:29",
+          event: "希望提供测试账号",
+        },
+      ],
+    };
+  },
+  mounted() {},
+  methods: {
+    addRecord() {
+      this.recordVisible = true;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.process {
+  padding: 10px;
+  max-height: 600px;
+  overflow-y: auto;
+  .name {
+    font-size: 16px;
+    font-weight: bold;
+  }
+  div {
+    line-height: 30px;
+  }
+}
+.detailImgList {
+  padding: 0 20px;
+}
+.horizontal {
+  width: 208x;
+  height: 208px;
+}
+.vertical {
+  width: 208px;
+  height: 208px;
+}
+.imgWrapItem {
+  margin-bottom: 20px;
+  font-size: 14px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #666666;
+  line-height: 20px;
+  p {
+    margin-bottom: 8px;
+  }
+  .el-image {
+    border: 1px solid #dedede;
+    border-radius: 4px;
+    background: #ffffff;
+  }
+}
+.logo {
+  // margin-top: 20px;
+  color: var(--color-primary);
+  width: 208px;
+  height: 208px;
+  display: inline-block;
+  line-height: 208px;
+  text-align: center;
+  border: 1px solid #dedede;
+  border-radius: 4px;
+  background: #ffffff;
+}
+</style>

+ 177 - 0
src/views/platformManager/tenantApply/modals/recordDetail.vue

@@ -0,0 +1,177 @@
+<template>
+  <div>
+    <el-alert title="申请信息" :closable="false" type="info"> </el-alert>
+    <descriptions :column="2">
+      <descriptions-item label="所在城市:">{{
+        activeRow.city || ""
+      }}</descriptions-item>
+      <!-- <descriptions-item label="机构名称:">{{
+        activeRow.name || ""
+      }}</descriptions-item> -->
+      <descriptions-item label="申请时间:">{{
+        activeRow.createTime || ""
+      }}</descriptions-item>
+      <descriptions-item label="联系人:">{{
+        activeRow.linkman || ""
+      }}</descriptions-item>
+      <descriptions-item label="联系电话:">{{
+        activeRow.mobileNo || ""
+      }}</descriptions-item>
+    </descriptions>
+    <el-alert
+      title="沟通记录"
+      :closable="false"
+      type="info"
+      style="margin: 20px 0"
+    >
+    </el-alert>
+    <el-button style="margin-bottom: 20px" type="primary" @click="addRecord"
+      >添加记录</el-button
+    >
+    <div class="process" v-if="processList.length > 0">
+      <el-timeline >
+        <el-timeline-item v-for="(activity, index) in processList" :key="index">
+          <div>
+            <div class="name">{{ activity.callBackPeople }}</div>
+            <div class="concat">{{ activity.callBackLog }}</div>
+            <div class="timer">{{ activity.createTime }}</div>
+          </div>
+        </el-timeline-item>
+      </el-timeline>
+    </div>
+    <empty v-else desc="暂无沟通记录" />
+    <el-dialog
+      title="添加记录"
+      :visible.sync="recordVisible"
+      width="600px"
+      append-to-body
+    >
+      <el-form :model="form" ref="ruleForm">
+        <el-form-item label="沟通时间" label-width="120PX" prop="createTime"
+          :rules="[{ required: true, message: '请选择沟通日期', trigger: 'change' }]">
+          <el-date-picker
+            type="datetime"
+            style="width: 100% !important"
+            placeholder="请选择沟通日期"
+            v-model="form.createTime"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+            value-format="yyyy-MM-dd HH:mm:ss"
+          />
+        </el-form-item>
+        <el-form-item label="沟通内容" label-width="120PX" prop="callBackLog"
+          :rules="[{ required: true, message: '请输入沟通沟通内容', trigger: 'blur' }]">
+          <el-input
+            type="textarea"
+            :rows="3"
+            v-model.trim="form.callBackLog"
+            autocomplete="off"
+            maxlength="140"
+            show-word-limit
+            placeholder="请输入沟通沟通内容"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="recordVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitRecode">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { getCallRecord, addCallRecord } from "../api";
+export default {
+  props: ["activeRow"],
+  data() {
+    return {
+      processList: [],
+      recordVisible: false,
+      form: {
+        createTime: "",
+        callBackLog: "",
+      },
+    };
+  },
+  mounted() {
+    this.getRecode();
+  },
+  methods: {
+    addRecord() {
+      this.recordVisible = true;
+    },
+    async submitRecode() {
+      this.$refs['ruleForm'].validate(async (_) => {
+        if(_) {
+          try {
+            const res = await addCallRecord({
+              tenantApplyId: this.activeRow.id,
+              ...this.form,
+            });
+            this.recordVisible = false;
+            this.form = {
+              createTime: "",
+              callBackLog: "",
+            };
+            this.getRecode();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      })
+    },
+    async getRecode() {
+      try {
+        const res = await getCallRecord({
+          applyId: this.activeRow.id,
+          ...this.form,
+        });
+        this.processList = res.data.rows;
+      } catch (e) {
+        console.log(e);
+      }
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.process {
+  padding: 10px;
+  max-height: 400px;
+  overflow-y: auto;
+  .name {
+    font-size: 16px;
+    font-weight: bold;
+    color: #262626;
+    margin-bottom: 8px;
+  }
+  .concat {
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #666666;
+    line-height: 18px;
+    margin-bottom: 8px;
+  }
+  .timer {
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #666666;
+    line-height: 18px;
+    margin-bottom: 8px;
+  }
+  div {
+  }
+}
+.el-timeline-item__content {
+  position: relative;
+}
+/deep/.el-timeline-item__node {
+  background-color: var(--color-primary);
+}
+/deep/.el-timeline-item__tail {
+  border-left: 2px solid var(--color-primary);
+}
+</style>

+ 14 - 0
src/views/reaplceMusicPlayer/index.vue

@@ -239,6 +239,10 @@ import cleanDeep from 'clean-deep'
 import qs from 'qs';
 import QrCode from "@/components/QrCode/index";
 import { encode } from 'js-base64';
+import {
+  getAgreement,
+} from "@/api/buildTeam";
+
 export default {
   components: { pagination, addUrl, detail, QrCode },
   data() {
@@ -277,12 +281,22 @@ export default {
     this.init();
   },
   methods: {
+        async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.$bus.$emit("showguide", ['agreement']);
+        }
+      } catch (e) {}
+
+    },
     permission(str, parent) {
       return permission(str, parent);
     },
     init() {
       this.$store.dispatch("setBranchs");
       this.getList();
+      this.getAgreement()
     },
     async getList() {
       try {

Разница между файлами не показана из-за своего большого размера
+ 470 - 311
src/views/reportForm/index.vue


+ 15 - 3
src/views/resetTeaming/components/payInfoDetail.vue

@@ -79,7 +79,11 @@
                   </div>
                 </div>
                 <div
-                  v-if="isShowLeBao && tenantId == 1 && $route.query.team_status != 'PROGRESS'"
+                  v-if="
+                    isShowLeBao &&
+                    tenantId == 1 &&
+                    $route.query.team_status != 'PROGRESS'
+                  "
                   class="checkBtn"
                   :class="[
                     leBao ? 'active' : '',
@@ -329,6 +333,7 @@ import {
 import {
   getMusicGroupPaymentCalenderDetail,
   findMusicGroupSubjectInfo,
+  getAgreement,
 } from "@/api/buildTeam";
 import { vipGroupActivity } from "@/api/vipSeting";
 export default {
@@ -437,7 +442,6 @@ export default {
       } else if (this.$route.query.team_status == "PROGRESS") {
         this.leBao = false;
         this.leBaoDisabled = true;
-
       }
       if (this.$route.query.payUserType == "SCHOOL") {
         this.member = false;
@@ -454,6 +458,7 @@ export default {
       await this.getLeBao(); // 获取乐保
       await this.getActive(); // 获取活动
       await this.getMemberRules();
+      await this.getAgreement(); // 获取是否有正在启用得协议
       if (this.$route.query.calenderId) {
         // 说明是修改  查缴项目详情
         getMusicGroupPaymentCalenderDetail({
@@ -507,7 +512,6 @@ export default {
       }
       if (this.submitList.length > 0) {
         this.$bus.$emit("showguide", this.submitList);
-        return;
       }
     },
     getActive() {
@@ -528,6 +532,14 @@ export default {
         }
       });
     },
+    async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.submitList.push("agreement");
+        }
+      } catch (e) {}
+    },
     async getMemberRules() {
       try {
         const res = await sysConfigList({ group: "DEFAULT" });

+ 41 - 22
src/views/sporadicManager/sporadicList.vue

@@ -73,7 +73,8 @@
           <el-button native-type="reset" type="primary">重置</el-button>
           <el-button
             @click="exportSporad"
-            v-permission="'export/sporadicChargeInfo'">导出</el-button
+            v-permission="'export/sporadicChargeInfo'"
+            >导出</el-button
           >
         </el-form-item>
       </save-form>
@@ -81,7 +82,7 @@
         v-permission="'sporadicChargeInfo/add'"
         @click="newVisible"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         新增公用收费
       </el-button>
@@ -89,7 +90,7 @@
         v-permission="'sporadicChargeInfo/add'"
         @click="newVisible1"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         新增个人收费
       </el-button>
@@ -113,15 +114,15 @@
             </template>
           </el-table-column>
           <el-table-column align="center" label="标题" prop="title">
-              <template slot-scope="scope">
+            <template slot-scope="scope">
               <div>
                 <copy-text>{{ scope.row.title }}</copy-text>
               </div>
             </template>
           </el-table-column>
-               <el-table-column align="center" label="学生姓名" prop="userName">
+          <el-table-column align="center" label="学生姓名" prop="userName">
             <template slot-scope="scope">
-               <copy-text>{{ scope.row.userName }}</copy-text>
+              <copy-text>{{ scope.row.userName }}</copy-text>
             </template>
           </el-table-column>
           <el-table-column align="center" label="收费状态">
@@ -222,7 +223,11 @@
         ref="maskForm"
       >
         <el-form-item label="标题" prop="title">
-          <el-input v-model.trim="maskForm.title" maxlength="50" :disabled="!isNew"></el-input>
+          <el-input
+            v-model.trim="maskForm.title"
+            maxlength="50"
+            :disabled="!isNew"
+          ></el-input>
         </el-form-item>
         <el-form-item label="收费类型" prop="type">
           <el-select
@@ -233,7 +238,7 @@
             style="width: 180px !important"
           >
             <el-option
-              v-for="item in (isNew ? orderType1 : orderType)"
+              v-for="item in isNew ? orderType1 : orderType"
               :key="item.value"
               :label="item.label"
               :value="item.value"
@@ -383,7 +388,7 @@
             filterable
             style="width: 180px !important"
           >
-            <template v-for="item in (isNew1 ? orderType1 : orderType)">
+            <template v-for="item in isNew1 ? orderType1 : orderType">
               <el-option
                 v-if="item.value != 12"
                 :key="item.value"
@@ -464,7 +469,12 @@
         >
       </span>
     </el-dialog>
-    <el-dialog :visible.sync="qrcodeStatus" center width="300px" title="缴费链接">
+    <el-dialog
+      :visible.sync="qrcodeStatus"
+      center
+      width="300px"
+      title="缴费链接"
+    >
       <div class="right-code">
         <!-- <h2 class="title">缴费链接</h2> -->
         <vue-qr :text="qrCodeUrl" style="width: 100%" :margin="0"></vue-qr>
@@ -479,7 +489,7 @@
   </div>
 </template>
 <script>
-import { getEmployeeOrgan } from "@/api/buildTeam";
+import { getAgreement } from "@/api/buildTeam";
 import pagination from "@/components/Pagination/index";
 import { vaildStudentUrl } from "@/utils/validate";
 import cleanDeep from "clean-deep";
@@ -633,6 +643,7 @@ export default {
     // })
     this.$store.dispatch("setBranchs");
     this.getList();
+    this.getAgreement ()
   },
   methods: {
     search() {
@@ -646,7 +657,7 @@ export default {
         type: null,
         search: null,
       };
-      this.search()
+      this.search();
     },
     getList() {
       let searchForm = this.searchForm;
@@ -707,6 +718,14 @@ export default {
       this.zeroVisible1 = true;
       this.title1 = "新增个人收费";
     },
+    async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.$bus.$emit("showguide", ["agreement"]);
+        }
+      } catch (e) {}
+    },
     lookVisible(row) {
       let maskForm = null;
       if (row.userId) {
@@ -922,7 +941,7 @@ export default {
         method: "get",
         headers: {
           Authorization: getToken(),
-          tenantId: getTenantId()
+          tenantId: getTenantId(),
         },
         params: data,
         url,
@@ -948,14 +967,14 @@ export default {
                 // 判断是否报错
                 if (res.indexOf("code") != -1) {
                   let json = JSON.parse(res);
-                  if(json.code == 403) {
-                    this.$message.error(`登录过期,请重新登录!`)
+                  if (json.code == 403) {
+                    this.$message.error(`登录过期,请重新登录!`);
                     setTimeout(() => {
-                      this.$store.dispatch('user/resetToken').then(() => {
-                        location.reload()
-                      })
+                      this.$store.dispatch("user/resetToken").then(() => {
+                        location.reload();
+                      });
                     }, 1000);
-                    return
+                    return;
                   }
                   this.$message.error(json.msg);
                 } else {
@@ -1017,8 +1036,8 @@ export default {
         10: "乐保服务",
         11: "其它",
         12: "双十一活动",
-        13: '网基课活动',
-        15: '团练宝购买',
+        13: "网基课活动",
+        15: "团练宝购买",
       };
       return template[val];
     },
@@ -1043,6 +1062,6 @@ export default {
   width: 180px !important;
 }
 /deep/.el-select {
-    width: auto !important;
+  width: auto !important;
 }
 </style>

+ 3 - 0
src/views/studentManager/modals/createMember.vue

@@ -157,6 +157,9 @@ export default {
         const rankInfo = await getmemberRankOrganizationFeeMapper({ page: 1, rows: 10, organId: this.organId })
         // console.log(rankInfo)
         const { rows } = rankInfo.data
+        if(!rows[0]?.memberFeeSetting){
+           this.$bus.$emit("showguide", ['memberList']);
+        }
         this.memberFeeSetting = rows[0]?.memberFeeSetting
       } catch(e) {
 

+ 11 - 1
src/views/studentManager/studentList.vue

@@ -880,7 +880,7 @@ import {
 import { queryByOrganId } from "@/api/systemManage";
 import qrCode from "@/components/QrCode/index";
 import { vaildStudentUrl } from "@/utils/validate";
-import { resetPassword2, getTeacher } from "@/api/buildTeam";
+import { resetPassword2, getTeacher,getAgreement } from "@/api/buildTeam";
 import { organizationCloudTeacherFeeQueryPage, subjectListTree } from "@/api/specialSetting";
 import axios from "axios";
 import qs from "qs";
@@ -993,9 +993,19 @@ export default {
     this.$store.dispatch("setBranchs");
     this.$store.dispatch("setTeachers");
     this.getList();
+    this.getAgreement()
         this.tenantId = this.$helpers.tenantId;
   },
   methods: {
+      async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.$bus.$emit("showguide", ['agreement']);
+        }
+      } catch (e) {}
+
+    },
     handleSelectionChange(val) {
       this.multipleSelection = val;
     },

+ 59 - 34
src/views/teamBuild/signupList.vue

@@ -145,7 +145,7 @@
             </div>
           </auth>
           <auth :auths="'subject/findSubApplyDetail'">
-            <el-popover placement="bottom" width="1000" trigger="hover">
+            <el-popover placement="bottom" width="1000" trigger="click">
               <el-table
                 style="width: 100% !important"
                 :data="leftList"
@@ -298,9 +298,7 @@
                   align="center"
                 >
                   <template slot-scope="scope">
-                    <div>
-                     {{ scope.row.totalAmount | moneyFormat}}元
-                    </div>
+                    <div>{{ scope.row.totalAmount | moneyFormat }}元</div>
                   </template>
                 </el-table-column>
                 <!-- <el-table-column label="购买乐器未入团人数" prop="cloudTeacherStudentNumOfApply" align="center">
@@ -332,7 +330,9 @@
                 v-permission="'musicGroup/updateExpectedStudentNum'"
                 style="margin-right: 20px; margin-top: 20px"
               >
-              <p style="color:red">收费总额:{{allSubjectTotal|moneyFormat}}元</p>
+                <p style="color: red">
+                  收费总额:{{ allSubjectTotal | moneyFormat }}元
+                </p>
                 <el-button
                   v-show="
                     !isEdit &&
@@ -800,7 +800,7 @@
               </auth>
               <auth
                 :auths="'musicGroupQuit/apply2'"
-                v-show="scope.row.paymentStatus == 2&&isManage"
+                v-show="scope.row.paymentStatus == 2 && isManage"
               >
                 <el-button type="text" @click="quitTeam(scope.row)"
                   >退团</el-button
@@ -863,11 +863,7 @@
       >
         <el-button @click="onSelectAll">全选/取消</el-button>
         <auth :auths="'studentRegistration/openPayment'">
-          <el-button
-            @click="onPartPayment"
-            type="primary"
-            >提前缴费</el-button
-          >
+          <el-button @click="onPartPayment" type="primary">提前缴费</el-button>
         </auth>
         <!-- <div class='newBand' v-show="status=='APPLY'">允许缴费</div> -->
       </div>
@@ -973,7 +969,7 @@
       title="开始缴费"
       :visible.sync="paymentStatus"
       width="400px"
-     v-if="paymentStatus"
+      v-if="paymentStatus"
     >
       <el-form
         ref="paymentForm"
@@ -1023,7 +1019,9 @@
               <p>退还课程费用:缴费总额-已结束课时单价之和</p>
               <p>退还乐器费用:报名缴费时缴纳的乐器费用(团购、租金)</p>
               <p>退还教辅费用:报名缴费时缴费的教辅费用</p>
-              <p v-if="$helpers.tenantId ==1">退还乐保费用:报名缴费时缴费的乐保费用</p>
+              <p v-if="$helpers.tenantId == 1">
+                退还乐保费用:报名缴费时缴费的乐保费用
+              </p>
             </div>
             <el-button
               type="text"
@@ -1115,6 +1113,7 @@ import {
   checkCanReg,
   getRefundsDetail,
   applyMusicGroupQuit,
+  getAgreement,
 } from "@/api/buildTeam";
 import {
   setNoneCloudTeacher,
@@ -1300,6 +1299,7 @@ export default {
         address: null,
       },
       sysMsg: "",
+      submitList: [],
     };
   },
   created() {},
@@ -1307,7 +1307,7 @@ export default {
     // 通过乐团状态判断显示隐藏的东西
     let isSuperAdmin = this.$store.getters.isSuperAdmin;
     let roles = this.$store.getters.roles;
-     if (isSuperAdmin) {
+    if (isSuperAdmin) {
       this.isManage = "super";
     } else {
       if (roles.indexOf("1") != -1) {
@@ -1361,7 +1361,7 @@ export default {
       } catch (e) {
         console.log(e);
       }
-
+      await this.getAgreement();
       getMusicGroupGradeList({ musicGroupId: this.id }).then((res) => {
         let result = res.data;
         this.gradeListObj = res.data;
@@ -1393,6 +1393,17 @@ export default {
       // 通过乐团id获取乐团学生列表
       this.getList();
     },
+    async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.submitList.push("agreement");
+        }
+      } catch (e) {}
+      if (this.submitList.length > 0) {
+        this.$bus.$emit("showguide", this.submitList);
+      }
+    },
     search() {
       this.rules.page = 1;
       this.getList();
@@ -1529,12 +1540,19 @@ export default {
       // 生成报名二维码
       let id = this.id;
       this.codeStatus = true;
-      let tenantConfig = sessionStorage.getItem('tenantConfig')
-      tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {}
-      const tenantId = tenantConfig.tenantId || 0
+      let tenantConfig = sessionStorage.getItem("tenantConfig");
+      tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {};
+      const tenantId = tenantConfig.tenantId || 0;
       if (type == "payment") {
         this.codeTitle = "学员报名链接";
-        this.qrCodeUrl = vaildStudentUrl() + "/#/login?musicGroupId=" + id + '&organId=' + this.organId+ '&tenantId=' + tenantId;
+        this.qrCodeUrl =
+          vaildStudentUrl() +
+          "/#/login?musicGroupId=" +
+          id +
+          "&organId=" +
+          this.organId +
+          "&tenantId=" +
+          tenantId;
       } else if (type == "detail") {
         let teamName = this.$route.query.name;
         this.codeTitle = "报名缴费详情";
@@ -1547,7 +1565,14 @@ export default {
       } else if (type == "rePayment") {
         this.codeTitle = "学生报名链接(无乐器)";
         this.qrCodeUrl =
-          vaildStudentUrl() + "/#/login?musicGroupId=" + id + '&organId=' + this.organId + '&tenantId=' + tenantId + "&instrument=1";
+          vaildStudentUrl() +
+          "/#/login?musicGroupId=" +
+          id +
+          "&organId=" +
+          this.organId +
+          "&tenantId=" +
+          tenantId +
+          "&instrument=1";
       }
     },
     onCreateQRCode2() {
@@ -1593,7 +1618,7 @@ export default {
         method: "POST",
         headers: {
           Authorization: getToken(),
-          tenantId: getTenantId()
+          tenantId: getTenantId(),
         },
         data: qs.stringify(data),
         url,
@@ -1619,14 +1644,14 @@ export default {
                 // 判断是否报错
                 if (res.indexOf("code") != -1) {
                   let json = JSON.parse(res);
-                  if(json.code == 403) {
-                    this.$message.error(`登录过期,请重新登录!`)
+                  if (json.code == 403) {
+                    this.$message.error(`登录过期,请重新登录!`);
                     setTimeout(() => {
-                      this.$store.dispatch('user/resetToken').then(() => {
-                        location.reload()
-                      })
+                      this.$store.dispatch("user/resetToken").then(() => {
+                        location.reload();
+                      });
                     }, 1000);
-                    return
+                    return;
                   }
                   this.$message.error(json.msg);
                 } else {
@@ -1921,7 +1946,7 @@ export default {
                 memberFee: params.memberFee,
                 musicalFee: params.musicalFee,
               };
-              if (this.isManage!='staff') {
+              if (this.isManage != "staff") {
                 params.status = "APPROVED";
               } else {
                 params.status = "PROCESSING";
@@ -2254,13 +2279,13 @@ export default {
         return ``;
       }
     },
-    allSubjectTotal(){
+    allSubjectTotal() {
       let allConut = 0;
-      this.leftList.forEach(item=>{
-        allConut+=Number(item.totalAmount)
-      })
-      return allConut
-    }
+      this.leftList.forEach((item) => {
+        allConut += Number(item.totalAmount);
+      });
+      return allConut;
+    },
   },
 };
 </script>

+ 14 - 0
src/views/teamDetail/components/studentList.vue

@@ -972,6 +972,7 @@ import {
   getMusicGroupGradeList,
   getRefundsDetail,
   applyMusicGroupQuit,
+  getAgreement
 } from "@/api/buildTeam";
 import {
   addStudent,
@@ -1192,6 +1193,7 @@ export default {
       // memberRankList: [],
       isManage: false,
       gradeListObj: {},
+      submitList:[]
     };
   },
   components: {
@@ -1250,6 +1252,7 @@ export default {
     //   console.log(e);
     // }
     this.init();
+    this.getAgreement()
   },
   methods: {
     onPaymentDetail(row) {
@@ -1965,6 +1968,17 @@ export default {
         params: { search: search },
       });
     },
+        async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.submitList.push("agreement");
+        }
+      } catch (e) {}
+      if (this.submitList.length > 0) {
+        this.$bus.$emit("showguide", this.submitList);
+      }
+    },
     // addTryTime() {
     //   if (this.multipleSelection.length > 0) {
     //     this.addTryVisible = true;

+ 25 - 8
src/views/teamDetail/teamClassList.vue

@@ -5,7 +5,7 @@
       <div class="squrt"></div>
       班级管理
       <filter-search
-      v-if="permission('/teamCLassList/abnormal')"
+        v-if="permission('/teamCLassList/abnormal')"
         :keys="['lessThenThreeHighOnline']"
         @reload="reloadSearch"
         :moreKeys="['organId']"
@@ -230,7 +230,10 @@
     </div>
     <classCompound
       :compoundList="compoundList"
-      v-if="permission('classGroup/spanGroupMergeClassSplitClassAffirm')&&compoundList.length>0"
+      v-if="
+        permission('classGroup/spanGroupMergeClassSplitClassAffirm') &&
+        compoundList.length > 0
+      "
       @clearCom="clearCom"
       @getList="getList"
       @cancleCompound="cancleCompound"
@@ -245,7 +248,11 @@ import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
 import { courseListType } from "@/utils/searchArray";
 import { musicClassTypeList } from "@/utils/searchArray";
-import { getClassGroupPage, removeSingleClass } from "@/api/buildTeam";
+import {
+  getClassGroupPage,
+  removeSingleClass,
+  getAgreement,
+} from "@/api/buildTeam";
 import { permission } from "@/utils/directivePage";
 import classCompound from "./componentClass/classCompound";
 import { Export } from "@/utils/downLoadFile";
@@ -279,9 +286,9 @@ export default {
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    const { query,params } = this.$route;
-    if(params.search){
-       this.searchForm.search = params.search;
+    const { query, params } = this.$route;
+    if (params.search) {
+      this.searchForm.search = params.search;
     }
     if (query.type) {
       this.searchForm.type = query.type;
@@ -294,12 +301,22 @@ export default {
     this.init();
   },
   methods: {
+    async getAgreement() {
+      try {
+        const res = await getAgreement();
+        if (!res.data) {
+          this.$bus.$emit("showguide", ['agreement']);
+        }
+      } catch (e) {}
+
+    },
     reloadSearch() {
       this.rules.page = 1;
       this.getList();
     },
     init() {
       this.getList();
+      this.getAgreement()
     },
     async getList() {
       try {
@@ -360,11 +377,11 @@ export default {
         // this.hightOnlineCount = 0;
         // this.hightCount = 0;
         // this.compoundList = [];
-        this.compoundList.splice(this.compoundList.length-1,1)
+        this.compoundList.splice(this.compoundList.length - 1, 1);
       }
       if (this.hightCount && this.hightCount != this.compoundList.length) {
         this.$message.error("基础技能班仅能和基础技能班合并");
-          this.compoundList.splice(this.compoundList.length-1,1)
+        this.compoundList.splice(this.compoundList.length - 1, 1);
         // this.hightOnlineCount = 0;
         // this.hightCount = 0;
         // this.compoundList = [];

+ 3 - 3
src/views/vipClass/vipReset.vue

@@ -114,14 +114,14 @@
           <template slot-scope="scope">
             <div>
               <el-button type="text"
-                         v-if="!scope.row.isSettlement && $helpers.permission('courseSchedule/classStartDateAdjust/vipReset')"
+                         v-if="scope.row.id&&!scope.row.isSettlement && $helpers.permission('courseSchedule/classStartDateAdjust/vipReset')"
                          @click="resetClass(scope.row)">调整</el-button>
               <el-button type="text"
-                         v-if="!scope.row.isSettlement&&scope.row.status != 'OVER' && $helpers.permission('courseSchedule/batchDelete')"
+                         v-if="scope.row.id&&!scope.row.isSettlement&&scope.row.status != 'OVER' && $helpers.permission('courseSchedule/batchDelete')"
                          @click="removeClass(scope.row)">删除</el-button>
               <!--   -->
               <el-button type="text"
-                         v-if="!scope.row.isSettlement && $helpers.permission('vip/cleanAttendance')"
+                         v-if="scope.row.id&&!scope.row.isSettlement && $helpers.permission('vip/cleanAttendance')"
                          @click="clearAttend(scope.row)">清除考勤</el-button>
             </div>
           </template>

+ 2 - 2
vue.config.js

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

Некоторые файлы не были показаны из-за большого количества измененных файлов