소스 검색

Merge remote-tracking branch 'origin/master' into yys_dev

# Conflicts:
#	src/api/course/userCoursePeriod.js
#	src/views/his/user/index.vue
yfh 4 일 전
부모
커밋
101f59aa78
46개의 변경된 파일2984개의 추가작업 그리고 475개의 파일을 삭제
  1. 7 0
      .env.development
  2. 3 0
      .env.prod-bnkc
  3. 5 2
      .env.prod-drk
  4. 12 2
      .env.prod-fcky
  5. 3 0
      .env.prod-hcl
  6. 3 0
      .env.prod-hdt
  7. 3 0
      .env.prod-hzyy
  8. 3 0
      .env.prod-jnmy
  9. 3 0
      .env.prod-jzzx
  10. 4 1
      .env.prod-lmjy
  11. 3 0
      .env.prod-myhk
  12. 3 0
      .env.prod-qdtst
  13. 3 0
      .env.prod-sft
  14. 3 0
      .env.prod-sxjz
  15. 3 0
      .env.prod-test
  16. 2 0
      .env.prod-whhm
  17. 6 3
      .env.prod-xfk
  18. 3 0
      .env.prod-yzt
  19. 2 0
      .env.prod-zsjk
  20. 9 0
      src/api/company/companyUser.js
  21. 9 1
      src/api/course/userCourse.js
  22. 7 7
      src/api/course/userCourseComplaintRecord.js
  23. 31 0
      src/api/his/storeOrder.js
  24. 7 7
      src/components/ImageUpload/index.vue
  25. 4 4
      src/components/Material/index.vue
  26. 53 47
      src/views/company/companyDomainBind/index.vue
  27. 1 1
      src/views/components/his/followMsgDetails.vue
  28. 8 1
      src/views/components/his/inquiryOrderReportDetails.vue
  29. 7 1
      src/views/components/his/msgDetails.vue
  30. 9 1
      src/views/components/his/testReportDetails.vue
  31. 7 1
      src/views/components/his/userDetails.vue
  32. 11 10
      src/views/components/his/userPatietDetails.vue
  33. 2 40
      src/views/course/courseWatchLog/index.vue
  34. 46 1
      src/views/course/userCourse/index.vue
  35. 139 37
      src/views/course/userCourseComplaintRecord/index.vue
  36. 42 2
      src/views/course/userCoursePeriod/index.vue
  37. 5 5
      src/views/his/company/index.vue
  38. 17 12
      src/views/his/doctor/type1.vue
  39. 2 1
      src/views/his/patient/index.vue
  40. 426 155
      src/views/his/storeOrder/order1.vue
  41. 35 34
      src/views/his/user/index.vue
  42. 3 2
      src/views/index.vue
  43. 15 3
      src/views/qw/sopTemp/index.vue
  44. 17 4
      src/views/qw/sopTemp/updateSopTemp.vue
  45. 109 90
      src/views/system/config/config.vue
  46. 1889 0
      src/views/system/config/config2.vue

+ 7 - 0
.env.development

@@ -33,5 +33,12 @@ ENV = 'production'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
+# 患者信息
+VUE_APP_PATIENT_INFO = '客户信息'
+# 添加病人
+VUE_APP_ADD_PATIENT = '添加信息'

+ 3 - 0
.env.prod-bnkc

@@ -33,5 +33,8 @@ ENV = 'production'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 5 - 2
.env.prod-drk

@@ -5,9 +5,9 @@ VUE_APP_TITLE_INDEX =德瑞康互联网医院
 # 公司名称
 VUE_APP_COMPANY_NAME =青岛德瑞康医疗管理有限公司市北德瑞康中医医院
 # ICP备案号
-VUE_APP_ICP_RECORD =
+VUE_APP_ICP_RECORD =鲁ICP备2024135071号-3
 # ICP网站访问地址
-VUE_APP_ICP_URL =
+VUE_APP_ICP_URL =https://beian.miit.gov.cn
 # 网站LOG
 VUE_APP_LOG_URL =@/assets/logo/drk.png
 # 存储桶配置
@@ -33,5 +33,8 @@ ENV = 'production'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 12 - 2
.env.prod-fcky

@@ -1,7 +1,7 @@
 # 页面标题
-VUE_APP_TITLE =蜂巢快药互联网医院管理系统
+VUE_APP_TITLE =CRM客户管理系统
 # 首页菜单标题
-VUE_APP_TITLE_INDEX =蜂巢快药互联网医院
+VUE_APP_TITLE_INDEX =CRM客户管理系统
 # 公司名称
 VUE_APP_COMPANY_NAME =蜂巢快药(北京)医药连锁有限公司
 # ICP备案号
@@ -26,6 +26,8 @@ VUE_APP_COS_REGION = ap-chongqing
 VUE_APP_VIDEO_LINE_1 = https://fckytcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://fckyobs.ylrztop.com
+# 默认看课模式 1会员 2企微
+VUE_APP_COURSE_DEFAULT = 1
 
 # 开发环境配置
 ENV = 'development'
@@ -33,5 +35,13 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
+
+# 患者信息
+VUE_APP_PATIENT_INFO = '客户信息'
+# 添加病人
+VUE_APP_ADD_PATIENT = '添加信息'

+ 3 - 0
.env.prod-hcl

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-hdt

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 2
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-hzyy

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-jnmy

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-jzzx

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 4 - 1
.env.prod-lmjy

@@ -17,7 +17,7 @@ VUE_APP_OBS_SECRET_ACCESS_KEY = sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
 # 存储桶配置
 VUE_APP_OBS_SERVER = https://obs.cn-north-4.myhuaweicloud.com
 # 存储桶配置
-VUE_APP_OBS_BUCKET = lmjy-hw079058881	
+VUE_APP_OBS_BUCKET = lmjy-hw079058881
 # 存储桶配置
 VUE_APP_COS_BUCKET = lm-1323137866
 # 存储桶配置
@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-myhk

@@ -33,5 +33,8 @@ ENV = 'production'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 2
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-qdtst

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-sft

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 2
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-sxjz

@@ -33,5 +33,8 @@ ENV = 'development'
 # 今正互联网医院管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-test

@@ -31,5 +31,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 2 - 0
.env.prod-whhm

@@ -33,5 +33,7 @@ ENV = 'production'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 6 - 3
.env.prod-xfk

@@ -1,9 +1,9 @@
 # 页面标题
-VUE_APP_TITLE =小访客管理系统
+VUE_APP_TITLE =协和魔丽管理系统
 # 首页菜单标题
-VUE_APP_TITLE_INDEX =小访客
+VUE_APP_TITLE_INDEX =协和魔丽
 # 公司名称
-VUE_APP_COMPANY_NAME =西安小访客网络科技有限公司
+VUE_APP_COMPANY_NAME =西安协和魔丽网络科技有限公司
 # ICP备案号
 VUE_APP_ICP_RECORD =陕ICP备2025066365号-3
 # ICP网站访问地址
@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 2
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
.env.prod-yzt

@@ -33,5 +33,8 @@ ENV = 'development'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 2
+
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 2 - 0
.env.prod-zsjk

@@ -33,5 +33,7 @@ ENV = 'production'
 # FS管理系统/开发环境
 VUE_APP_BASE_API = '/prod-api'
 
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 2
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 9 - 0
src/api/company/companyUser.js

@@ -111,3 +111,12 @@ export function changeCompanyUser(data, params) {
     params: params
   })
 }
+
+// 查询企业员工信息列表
+export function getCompanyUserListPage(query) {
+  return request({
+    url: '/company/companyUser/getCompanyUserListPage',
+    method: 'get',
+    params: query
+  })
+}

+ 9 - 1
src/api/course/userCourse.js

@@ -43,6 +43,14 @@ export function delUserCourse(courseId) {
   })
 }
 
+// 复制课程
+export function copyUserCourse(courseId) {
+  return request({
+    url: '/course/userCourse/copy/' + courseId,
+    method: 'get'
+  })
+}
+
 // 导出课程
 export function exportUserCourse(query) {
   return request({
@@ -79,4 +87,4 @@ export function pullOff(courseIds) {
     url: '/course/userCourse/pullOff/' + courseIds,
     method: 'post'
   })
-}
+}

+ 7 - 7
src/api/course/userCourseComplaintRecord.js

@@ -9,13 +9,13 @@ export function listUserCourseComplaintRecord(query) {
   })
 }
 
-// // 查询看课投诉记录详细
-// export function getUserCourseComplaintRecord(recordId) {
-//   return request({
-//     url: '/course/userCourseComplaintRecord/' + recordId,
-//     method: 'get'
-//   })
-// }
+// 查询看课投诉记录详细
+export function getUserCourseComplaintRecord(recordId) {
+  return request({
+    url: '/course/userCourseComplaintRecord/' + recordId,
+    method: 'get'
+  })
+}
 //
 // // 新增看课投诉记录
 // export function addUserCourseComplaintRecord(data) {

+ 31 - 0
src/api/his/storeOrder.js

@@ -234,3 +234,34 @@ export function exportOrder2(query) {
   })
 }
 
+export function queryErpPhone(query) {
+  return request({
+    url: '/his/storeOrder/queryErpPhone',
+    method: 'get',
+    params: query
+  })
+}
+
+export function saveErpPhone(data) {
+  return request({
+    url: '/his/storeOrder/saveErpPhone',
+    method: 'post',
+    data: data
+  })
+}
+
+export function editErpPhone(data) {
+  return request({
+    url: '/his/storeOrder/editErpPhone',
+    method: 'post',
+    data: data
+  })
+}
+
+export function batchCreateErpOrder(data) {
+  return request({
+    url: '/his/storeOrder/batchCreateErpOrder',
+    method: 'post',
+    data: data
+  })
+}

+ 7 - 7
src/components/ImageUpload/index.vue

@@ -165,8 +165,8 @@ export default {
           // 文件大于1MB时进行压缩
           this.compressImage(file).then((compressedFile) => {
             loadingInstance.close();
-            if (compressedFile.size / 1024 > 500) {
-              this.$message.error('图片压缩后仍大于500KB');
+            if (compressedFile.size / 1024 > 1000) {
+              this.$message.error('图片压缩后仍大于1000KB');
               reject();
             } else {
               // this.$message.success(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
@@ -195,7 +195,7 @@ export default {
       //     return false;
       //   }
       // }
-      
+
     },
     compressImage(file) {
       return new Promise((resolve, reject) => {
@@ -215,16 +215,16 @@ export default {
 
             let quality = 1; // 初始压缩质量
             let dataURL = canvas.toDataURL('image/jpeg', quality);
-            
+
             // 逐步压缩,直到图片大小小于500KB并且压缩质量不再降低
             while (dataURL.length / 1024 > 500 && quality > 0.1) {
               quality -= 0.01;
               dataURL = canvas.toDataURL('image/jpeg', quality);
             }
             this.finalQuality = quality; // 存储最终的压缩质量
-            
-            if (dataURL.length / 1024 > 500) {
-              reject(new Error('压缩后图片仍然大于500KB'));
+
+            if (dataURL.length / 1024 > 1000) {
+              reject(new Error('压缩后图片仍然大于1000KB'));
               return;
             }
 

+ 4 - 4
src/components/Material/index.vue

@@ -367,8 +367,8 @@ export default {
           // 文件大于1MB时进行压缩
           this.compressImage(file).then((compressedFile) => {
             loadingInstance.close();
-            if (compressedFile.size / 1024 > 500) {
-              this.$message.error('图片压缩后仍大于500KB');
+            if (compressedFile.size / 1024 > 1000) {
+              this.$message.error('图片压缩后仍大于1M');
               reject();
             } else {
               // this.$message.success(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
@@ -417,8 +417,8 @@ export default {
             }
             this.finalQuality = quality; // 存储最终的压缩质量
 
-            if (dataURL.length / 1024 > 500) {
-              reject(new Error('压缩后图片仍然大于500KB'));
+            if (dataURL.length / 1024 > 1000) {
+              reject(new Error('压缩后图片仍然大于1000KB'));
               return;
             }
 

+ 53 - 47
src/views/company/companyDomainBind/index.vue

@@ -82,7 +82,7 @@
           icon="el-icon-paperclip"
           size="mini"
           @click="handleBindingOpen"
-        >批量分配
+        >批量分配销售
         </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
@@ -178,50 +178,42 @@
       <el-scrollbar style="height: 692px;">
         <h3>选择分配域名:</h3>
         <el-divider></el-divider>
-        <el-form :model="dialog.company.queryParams" ref="companyQueryForm" :inline="true" label-width="68px">
-          <el-form-item label="公司名称" prop="companyName">
-            <el-input
-              v-model="dialog.company.queryParams.companyName"
-              placeholder="请输入销售公司名称"
-              clearable
-              size="small"
-              @keyup.enter.native="handleQuery"
-            />
-          </el-form-item>
-          <el-form-item label="域名" prop="domain">
-            <el-input
-              v-model="dialog.company.queryParams.domain"
-              placeholder="请输入域名名称"
-              clearable
-              size="small"
-              @keyup.enter.native="handleQuery"
-            />
-          </el-form-item>
-          <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini" @click="companyHandleDialogQuery">搜索
-            </el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="companyResetQuery">重置</el-button>
-          </el-form-item>
-        </el-form>
-        <el-table border v-loading="dialog.company.loading" :data="dialog.company.companyList"
-                  @selection-change="handleCompanySelectionChange"
-        >
-          <el-table-column type="selection" width="55" align="center"/>
-          <el-table-column label="编码" align="center" prop="id"/>
-          <el-table-column label="绑定域名" align="center" prop="domain"/>
-        </el-table>
+<!--        <el-form :model="dialog.company.queryParams" ref="companyQueryForm" :inline="true" label-width="68px">-->
+<!--          <el-form-item label="公司名称" prop="companyName">-->
+<!--            <el-input-->
+<!--              v-model="dialog.company.queryParams.companyName"-->
+<!--              placeholder="请输入销售公司名称"-->
+<!--              clearable-->
+<!--              size="small"-->
+<!--              @keyup.enter.native="handleQuery"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--          <el-form-item label="域名" prop="domain">-->
+<!--            <el-input-->
+<!--              v-model="dialog.company.queryParams.domain"-->
+<!--              placeholder="请输入域名名称"-->
+<!--              clearable-->
+<!--              size="small"-->
+<!--              @keyup.enter.native="handleQuery"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--          <el-form-item>-->
+<!--            <el-button type="primary" icon="el-icon-search" size="mini" @click="companyHandleDialogQuery">搜索-->
+<!--            </el-button>-->
+<!--            <el-button icon="el-icon-refresh" size="mini" @click="companyResetQuery">重置</el-button>-->
+<!--          </el-form-item>-->
+<!--        </el-form>-->
         <el-row :span="24">
-          <el-col :span="3">
-            <span style="margin-top: 100px">已选中绑定公司:{{ dialog.company.ids.length }}条</span>
-          </el-col>
-          <el-col :span="20">
-            <pagination
-              v-show="dialog.company.total>0"
-              :total="dialog.company.total"
-              :page.sync="dialog.company.queryParams.pageNum"
-              :limit.sync="dialog.company.queryParams.pageSize"
-              @pagination="getCompanyList()"
-            />
+          <el-col :span="24">
+            <span>选择域名:</span>
+            <el-select v-model="dialog.company.domainId" filterable placeholder="请选择" @change="domainChange">
+              <el-option
+                v-for="item in dialog.company.companyList"
+                :key="item.id"
+                :label="item.domain"
+                :value="item.id">
+              </el-option>
+            </el-select>
           </el-col>
         </el-row>
         <el-divider></el-divider>
@@ -299,7 +291,7 @@ import {
   exportCompanyDomainBind,
   domainBatchBinding
 } from '@/api/company/companyDomainBind'
-import { listCompanyUser } from '@/api/company/companyUser'
+import { getCompanyUserListPage } from '@/api/company/companyUser'
 import companyBindUser from '@/views/company/companyBindUser/index.vue'
 
 export default {
@@ -388,7 +380,8 @@ export default {
           // 总条数
           total: 0,
           //选中数组
-          ids: []
+          ids: [],
+          domainId:null,
         }
       },
       bindingDetailsOpen: false,
@@ -420,6 +413,15 @@ export default {
     }
   },
   methods: {
+    domainChange(){
+      if(this.dialog.company.domainId){
+        this.dialog.company.ids.push(this.dialog.company.domainId);
+      }
+    },
+    //判断勾选
+    selectable(row, index) {
+      return this.displayBoolean;
+    },
     handleClose(done) {
       this.$confirm('确认关闭?')
         .then(_ => {
@@ -585,7 +587,7 @@ export default {
     /** 查询域名管路列表 */
     getDialogList() {
       this.dialog.companyUser.loading = true
-      listCompanyUser(this.dialog.companyUser.queryParams).then(response => {
+      getCompanyUserListPage(this.dialog.companyUser.queryParams).then(response => {
         this.dialog.companyUser.companyDomainList = response.rows
         this.dialog.companyUser.total = response.total
         this.dialog.companyUser.loading = false
@@ -598,6 +600,7 @@ export default {
     // 多选框选中数据
     handleCompanySelectionChange(selection) {
       this.dialog.company.ids = selection.map(item => item.id)
+      this.displayBoolean = this.dialog.company.ids.length <= 0;
     },
     /** 查询企业列表 */
     getCompanyList() {
@@ -615,6 +618,7 @@ export default {
       this.dialog.companyUser.queryParams.domain = null
       this.dialog.company.ids = []
       this.dialog.company.queryParams.companyName = null
+      this.dialog.company.domainId = null;
     },
     //绑定提交
     bindSubmission() {
@@ -636,6 +640,8 @@ export default {
     //处理绑定
     handleBindingOpen() {
       this.bindingOpen = !this.bindingOpen
+      this.dialog.company.queryParams.pageNum=null;
+      this.dialog.company.queryParams.pageSize=null;
       this.getDialogList()
       this.getCompanyList()
     },

+ 1 - 1
src/views/components/his/followMsgDetails.vue

@@ -173,7 +173,7 @@
         <el-descriptions-item label="问诊备注"><span v-if="reportItem!=null">{{reportItem.companyUserRemark}}</span></el-descriptions-item>
       </el-descriptions>
       <div class="desct">
-        患者信息
+        ${process.env.VUE_APP_VIDEO_LINE_1}
       </div>
       <el-descriptions :column="3" border  >
         <el-descriptions-item label="患者姓名" ><span v-if="reportItem.patientJson!=null">{{JSON.parse(reportItem.patientJson).patientName}}</span></el-descriptions-item>

+ 8 - 1
src/views/components/his/inquiryOrderReportDetails.vue

@@ -27,7 +27,13 @@
         </el-descriptions>
   </div>
   <div class="contentx" v-if="item!=null">
-        <div class="desct" > 患者信息</div>
+        <div class="desct" > 
+          <span v-if="patientInfo">
+            {{ patientInfo }}
+          </span>
+          <span v-else>
+            患者信息
+          </span></div>
         <el-descriptions title="" :column="3" border>
           <el-descriptions-item label="患者姓名" ><span v-if="item!=null">{{JSON.parse(item.patientJson).patientName}}</span></el-descriptions-item>
           <el-descriptions-item label="患者年龄" ><span v-if="item!=null">{{JSON.parse(item.patientJson).age}}</span></el-descriptions-item>
@@ -88,6 +94,7 @@ import { listBySearch } from "@/api/his/inquiryDisease";
     props:["data"],
     data() {
       return {
+        patientInfo: process.env.VUE_APP_PATIENT_INFO,
         diseaseParams:{
           diseaseId:null,
           diseaseName:null

+ 7 - 1
src/views/components/his/msgDetails.vue

@@ -173,7 +173,12 @@
         <el-descriptions-item label="问诊备注"><span v-if="reportItem!=null">{{reportItem.companyUserRemark}}</span></el-descriptions-item>
       </el-descriptions>
       <div class="desct">
-        患者信息
+        <span v-if="patientInfo">
+            {{ patientInfo }}
+          </span>
+          <span v-else>
+            患者信息
+          </span>
       </div>
       <el-descriptions :column="3" border  >
        <el-descriptions-item label="患者姓名" ><span v-if="reportItem.patientJson!=null">{{JSON.parse(reportItem.patientJson).patientName}}</span></el-descriptions-item>
@@ -263,6 +268,7 @@ import {getPrescribe,getDrugInfo} from "@/api/his/prescribe";
     name: "MsgList",
     data() {
       return {
+        patientInfo: process.env.VUE_APP_PATIENT_INFO,
         usageJson:{},
         prescribeItem:{},
         statusDrugReportOptions:[],

+ 9 - 1
src/views/components/his/testReportDetails.vue

@@ -17,7 +17,14 @@
         </el-descriptions>
   </div>
   <div class="contentx" v-if="patientJson!=null">
-        <div class="desct" > 患者信息</div>
+        <div class="desct" > 
+          <span v-if="patientInfo">
+            {{ patientInfo }}
+          </span>
+          <span v-else>
+            患者信息
+          </span>
+        </div>
         <el-descriptions title="" :column="3" border >
             <el-descriptions-item label="患者名称"><span >{{patientJson.name}}</span></el-descriptions-item>
             <el-descriptions-item label="患者性别">
@@ -48,6 +55,7 @@ import { listTestReport, getTestReport, delTestReport, addTestReport, updateTest
     props:["data"],
     data() {
       return {
+        patientInfo: process.env.VUE_APP_PATIENT_INFO,
         item:null,
         formJson:null,
         conditioningPlanJson:null,

+ 7 - 1
src/views/components/his/userDetails.vue

@@ -103,7 +103,12 @@
 
   <div class="contentx" v-if="item!=null">
         <div class="desct">
-          患者信息
+          <span v-if="patientInfo">
+            {{ patientInfo }}
+          </span>
+          <span v-else>
+            患者信息
+          </span>
         </div>
     <userPatietDetails  ref="userPatietDetail" />
 
@@ -147,6 +152,7 @@ import userAddDetails from "../his/userAddDetails.vue";
      components: { userStorerDetails ,userInquiryOrderDetails,userPatietDetails,userAddDetails},
     data() {
       return {
+        patientInfo: process.env.VUE_APP_PATIENT_INFO,
         addr:[],
         patient:[],
         userOptions: [],

+ 11 - 10
src/views/components/his/userPatietDetails.vue

@@ -176,6 +176,7 @@ export default {
   name: "Patient",
   data() {
     return {
+      addPatientInfo: process.env.VUE_APP_ADD_PATIENT,
       show:{
          title:"患者详情",
          open:false,
@@ -235,20 +236,20 @@ export default {
         patientName: [
           { required: true, message: "名称不能为空", trigger: "blur" }
         ],
-        idCard: [
-          { required: true, message: "身份证号不能为空", trigger: "blur" },
+        // idCard: [
+        //   { required: true, message: "身份证号不能为空", trigger: "blur" },
 
-        ],
+        // ],
         sex: [
           { required: true, message: "性别不能为空", trigger: "blur" }
 
         ],
-        birthday: [
-          { required: true, message: "生日不能为空", trigger: "blur" }
-        ],
-        mobile:[
-          { required: true, message: "手机号不能为空", trigger: "blur" },
-        ],
+        // birthday: [
+        //   { required: true, message: "生日不能为空", trigger: "blur" }
+        // ],
+        // mobile:[
+        //   { required: true, message: "手机号不能为空", trigger: "blur" },
+        // ],
         status: [
           { required: true, message: "状态不能为空", trigger: "blur" }
         ],
@@ -355,7 +356,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加病人";
+      this.title = this.addPatientInfo||"添加病人";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {

+ 2 - 40
src/views/course/courseWatchLog/index.vue

@@ -1,31 +1,6 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
-      <el-form-item label="用户" prop="userId">
-        <el-select v-model="queryParams.userId" remote placeholder="用户名/手机号" filterable clearable  style="width: 100%;"
-                   @keyup.enter.native="handleQuery"
-                   :remote-method="remoteGetFsUserList"
-                   @clear="handleClear"
-                   :loading="queryUserLoading"
-        >
-          <el-option
-            v-for="dict in fsUserList"
-            :key="`${dict.nickname} - ${dict.phone}`"
-            :label="`${dict.nickname} - ${dict.phone}`"
-            :value="dict.userId">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="所属销售" prop="companyUserName">
-        <el-select v-model="queryParams.companyUserId" remote placeholder="请选择" filterable clearable  style="width: 100%;" @keyup.enter.native="handleQuery">
-          <el-option
-            v-for="dict in companyUserList"
-            :key="`${dict.nickName} - ${dict.userName}`"
-            :label="`${dict.nickName} - ${dict.userName}`"
-            :value="dict.userId">
-          </el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item label="课程" prop="courseId">
         <el-select filterable  v-model="queryParams.courseId" placeholder="请选择课程"  clearable size="small" @change="courseChange(queryParams.courseId)">
           <el-option
@@ -68,16 +43,7 @@
                         range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="updateChange"></el-date-picker>
       </el-form-item>
 
-      <el-form-item label="类型" prop="type">
-        <el-select filterable  v-model="sourceTypeModel" placeholder="请选择小节"  clearable size="small">
-          <el-option
-            v-for="dict in userSourceTypeOptions"
-            :key="dict.dictValue"
-            :label="dict.dictLabel"
-            :value="dict.dictValue"
-          />
-        </el-select>
-      </el-form-item>
+
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -235,11 +201,7 @@ export default {
     this.getDicts("sys_course_watch_log_type").then(response => {
       this.logTypeOptions = response.data;
     });
-    getUserList().then(res=>{
-      if(res.code === 200) {
-        this.companyUserList = res.data
-      }
-    })
+
 
     this.getDicts('user_source_type').then(response => {
       this.userSourceTypeOptions = response.data;

+ 46 - 1
src/views/course/userCourse/index.vue

@@ -31,6 +31,16 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="关联的公司" prop="companyIds">
+        <el-select v-model="queryParams.companyIdsList" multiple placeholder="请选择公司" filterable clearable style="width: 90%;">
+          <el-option
+            v-for="dict in companyOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="课堂类型" prop="isPrivate" style="display: none">
         <el-select v-model="queryParams.isPrivate" placeholder="请选择" clearable size="small">
           <el-option
@@ -135,6 +145,14 @@
             v-hasPermi="['course:userCourse:edit']"
           >修改
           </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleCopy(scope.row)"
+            v-hasPermi="['course:userCourse:copy']"
+          >复制
+          </el-button>
           <el-button
             size="mini"
             type="text"
@@ -202,6 +220,13 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="排序" prop="sort">
+                          <el-input-number v-model="form.sort"  :min="0"  label="排序"></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="课堂简介" prop="description">
@@ -209,6 +234,9 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-form-item label="排序" prop="sort">
+          <el-input-number v-model="form.sort"  :min="0" label="请输入排序"></el-input-number>
+        </el-form-item>
         <el-form-item label="课程封面" prop="imgUrl">
           <ImageUpload v-model="form.imgUrl" type="image" :num="10" :width="150" :height="150"/>
         </el-form-item>
@@ -246,6 +274,7 @@ import {
   updateUserCourse,
   exportUserCourse,
   updateIsShow,
+  copyUserCourse,
   putOn,
   pullOff
 } from "@/api/course/userCourse";
@@ -331,7 +360,8 @@ export default {
         hotRanking: null,
         integral: null,
         price: null,
-        isPrivate: 1
+        isPrivate: 1,
+        companyIdsList:[],
       },
       // 表单参数
       form: {},
@@ -627,6 +657,21 @@ export default {
         }
       });
     },
+    /** 复制按钮操作 */
+    handleCopy(row) {
+      const courseId = row.courseId;
+      this.$confirm('是否确认复制课程编号为"' + courseId + '"的数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return copyUserCourse(courseId);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("复制成功");
+      }).catch(() => {
+      });
+    },
     /** 删除按钮操作 */
     handleDelete(row) {
       const courseIds = row.courseId || this.ids;

+ 139 - 37
src/views/course/userCourseComplaintRecord/index.vue

@@ -87,6 +87,13 @@
 <!--            @click="handleDelete(scope.row)"-->
 <!--            v-hasPermi="['course:userCourseComplaintRecord:remove']"-->
 <!--          >删除</el-button>-->
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-info"
+            @click="handleDetails(scope.row)"
+            v-hasPermi="['course:userCourseComplaintRecord:edit']"
+          >详情</el-button>
           <el-button
             size="mini"
             type="text"
@@ -106,32 +113,55 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改看课投诉记录对话框 -->
-<!--    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>-->
-<!--      <el-form ref="form" :model="form" :rules="rules" label-width="80px">-->
-<!--        <el-form-item label="用户昵称" prop="nickName">-->
-<!--          <el-input v-model="form.nickName" placeholder="请输入用户昵称" />-->
-<!--        </el-form-item>-->
-<!--        <el-form-item label="投诉类型" prop="complaintTypeName">-->
-<!--          <el-input v-model="form.complaintTypeName" placeholder="请输入投诉类型" />-->
+<!--     投诉记录详情对话框-->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="用户昵称" prop="nickName">
+          <el-input v-model="form.nickName" readonly />
+        </el-form-item>
+        <el-form-item label="投诉类型" prop="complaintTypeName">
+          <el-input v-model="form.complaintTypeName" readonly />
+        </el-form-item>
+        <el-form-item label="投诉内容" prop="complaintContent">
+          <el-input v-model="form.complaintContent" type="textarea" :rows="4" readonly />
+        </el-form-item>
+        <el-form-item label="投诉上传图片">
+          <div v-if="imageList.length > 0" class="image-preview-container">
+            <div v-for="(imageUrl, index) in imageList" :key="index" class="image-item">
+              <el-image
+                :src="imageUrl"
+                :preview-src-list="imageList"
+                fit="cover"
+                class="preview-image"
+                @click="previewImage(index)"
+              >
+                <div slot="error" class="image-slot">
+                  <i class="el-icon-picture-outline"></i>
+                </div>
+              </el-image>
+            </div>
+          </div>
+          <span v-else class="no-image-text">暂无图片</span>
+        </el-form-item>
+        <el-form-item label="所属课程" prop="courseName">
+          <el-input v-model="form.courseName" readonly />
+        </el-form-item>
+        <el-form-item label="所属小节" prop="title">
+          <el-input v-model="form.title" readonly />
+        </el-form-item>
+<!--        <el-form-item label="创建时间" prop="createTime">-->
+<!--          <el-input v-model="form.createTime" readonly />-->
 <!--        </el-form-item>-->
-<!--        <el-form-item label="所属课程" prop="courseName">-->
-<!--          <el-input v-model="form.courseName" placeholder="请输入所属课程" />-->
-<!--        </el-form-item>-->
-<!--        <el-form-item label="所属小节" prop="title">-->
-<!--          <el-input v-model="form.title" placeholder="请输入所属小节" />-->
-<!--        </el-form-item>-->
-<!--      </el-form>-->
-<!--      <div slot="footer" class="dialog-footer">-->
-<!--        <el-button type="primary" @click="submitForm">确 定</el-button>-->
-<!--        <el-button @click="cancel">取 消</el-button>-->
-<!--      </div>-->
-<!--    </el-dialog>-->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancel">关 闭</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { listUserCourseComplaintRecord, delUserCourseComplaintRecord, exportUserCourseComplaintRecord } from "@/api/course/userCourseComplaintRecord";
+import { listUserCourseComplaintRecord, delUserCourseComplaintRecord, exportUserCourseComplaintRecord, getUserCourseComplaintRecord } from "@/api/course/userCourseComplaintRecord";
 import { addBlack } from "@/api/course/courseWatchComment";
 export default {
   name: "UserCourseComplaintRecord",
@@ -157,6 +187,8 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      // 图片列表
+      imageList: [],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -199,15 +231,17 @@ export default {
         recordId: null,
         nickName: null,
         complaintTypeName: null,
+        complaintContent: null,
+        complaintUrl: null,
         courseName: null,
         title: null,
-        createTime: null
-        // userId: null,
-        // complaintTypeId: null,
-        // complaintContent: null,
-        // courseId: null,
-        // videoId: null,
+        createTime: null,
+        userId: null,
+        complaintTypeId: null,
+        courseId: null,
+        videoId: null,
       };
+      this.imageList = [];
       this.resetForm("form");
     },
     /** 搜索按钮操作 */
@@ -232,16 +266,29 @@ export default {
     //   this.open = true;
     //   this.title = "添加看课投诉记录";
     // },
-    // /** 修改按钮操作 */
-    // handleUpdate(row) {
-    //   this.reset();
-    //   const recordId = row.recordId || this.ids
-    //   getUserCourseComplaintRecord(recordId).then(response => {
-    //     this.form = response.data;
-    //     this.open = true;
-    //     this.title = "修改看课投诉记录";
-    //   });
-    // },
+    /** 详情按钮操作 */
+    handleDetails(row) {
+      this.reset();
+      const recordId = row.recordId || this.ids
+      getUserCourseComplaintRecord(recordId).then(response => {
+        this.form = response.data;
+        // 处理多个图片URL,通过逗号分割
+        if (this.form.complaintUrl) {
+          this.imageList = this.form.complaintUrl.split(',').filter(url => url.trim() !== '');
+        } else {
+          this.imageList = [];
+        }
+        this.open = true;
+        this.title = "看课投诉记录详情";
+      }).catch(error => {
+        console.error('获取详情失败:', error);
+        this.msgError("获取详情失败,请稍后重试");
+      });
+    },
+    /** 预览图片 */
+    previewImage(index) {
+      // Element UI的图片组件会自动处理预览
+    },
     // /** 提交按钮 */
     // submitForm() {
     //   this.$refs["form"].validate(valid => {
@@ -315,3 +362,58 @@ export default {
   }
 };
 </script>
+
+<style scoped>
+.image-preview-container {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+}
+
+.image-item {
+  width: 100px;
+  height: 100px;
+  border: 1px solid #dcdfe6;
+  border-radius: 6px;
+  overflow: hidden;
+  cursor: pointer;
+}
+
+.preview-image {
+  width: 100%;
+  height: 100%;
+}
+
+.image-slot {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+  background: #f5f7fa;
+  color: #909399;
+  font-size: 20px;
+}
+
+.no-image-text {
+  color: #909399;
+  font-size: 14px;
+}
+
+/* 只读表单样式优化 */
+.el-input.is-disabled .el-input__inner,
+.el-input__inner[readonly] {
+  background-color: #f5f7fa;
+  border-color: #e4e7ed;
+  color: #606266;
+  cursor: not-allowed;
+}
+
+.el-textarea.is-disabled .el-textarea__inner,
+.el-textarea__inner[readonly] {
+  background-color: #f5f7fa;
+  border-color: #e4e7ed;
+  color: #606266;
+  cursor: not-allowed;
+}
+</style>

+ 42 - 2
src/views/course/userCoursePeriod/index.vue

@@ -496,6 +496,17 @@
                 v-hasPermi="['course:period:updateCourseTime']"
               >修改看课时间</el-button>
             </el-col>
+
+            <el-col :span="1.5">
+              <el-button
+                type="warning"
+                size="mini"
+                icon="el-icon-delete"
+                :disabled="updateCourse.ids.length <= 0"
+                @click="handleDeleteCourse"
+                v-hasPermi="['course:period:dayRemove']"
+              >删除课程</el-button>
+            </el-col>
           </el-row>
           <el-table ref="courseTable" v-loading="course.loading" :data="course.list" @selection-change="handleSelectionCourseChange" border>
             <el-table-column type="selection" width="55" align="center" />
@@ -540,6 +551,13 @@
                 icon="el-icon-edit"
                 @click="handleUpdateDate(scope.row)"
               >修改营期时间</el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handleDeleteCourse(scope.row)"
+                  v-hasPermi="['course:period:dayRemove']"
+                >删除课程</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -580,7 +598,7 @@
 </template>
 
 <script>
-import {addPeriod, delPeriod, exportPeriod, getPeriod, pagePeriod, updatePeriod, getDays, addCourse, updateCourseTime, updateCourseDate, updateListCourseData, periodCourseMove, closePeriod} from "@/api/course/userCoursePeriod";
+import {addPeriod, delPeriod, exportPeriod, getPeriod, pagePeriod, updatePeriod, getDays, addCourse,delPeriodDay,  updateCourseTime, updateCourseDate, updateListCourseData, periodCourseMove, closePeriod} from "@/api/course/userCoursePeriod";
 import {getCompanyList} from "@/api/company/company";
 import { listCamp, addCamp, editCamp, delCamp, copyCamp } from "@/api/course/userCourseCamp";
 import { courseList,videoList } from '@/api/course/courseRedPacketLog'
@@ -820,6 +838,28 @@ export default {
 
   },
   methods: {
+    /** 删除按钮操作 */
+    async handleDeleteCourse(row) {
+      const periodDayIds = row.id || this.updateCourse.ids;
+      try {
+        await this.$confirm('是否确认删除该课程?', "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        });
+
+        const res = await delPeriodDay(periodDayIds);
+
+        if (res && res.code === 200) {
+          this.getCourseList();// 刷新列表
+          this.$message.success('删除成功');
+        } else {
+          this.$message.error(res.msg);
+        }
+      } catch (error) {
+
+      }
+    },
     /** 查询会员营期列表 */
     getList() {
       this.loading = true;
@@ -1093,7 +1133,7 @@ export default {
           }
           this.leftLoading = false;
         }).catch(error => {
-          this.$message.error('删除失败: ' + error.message);
+          // this.$message.error('删除失败: ' + error.message);
           this.leftLoading = false;
         });
       }).catch(() => {

+ 5 - 5
src/views/his/company/index.vue

@@ -279,10 +279,10 @@
 <!--                              end: '24:00'-->
 <!--                            }"></el-time-select>-->
 <!--      </el-form-item>-->
-        <el-form-item label="公众号点播配置" prop="courseMaAppId">
+        <el-form-item label="服务号点播配置" prop="courseMaAppId">
           <el-select
             v-model="form.courseMaAppId"
-            placeholder="请选择公众号"
+            placeholder="请选择服务号"
             clearable
             size="small"
           >
@@ -297,7 +297,7 @@
       <el-form-item label="小程序点播配置" prop="courseMiniAppId">
         <el-select
           v-model="form.courseMiniAppId"
-          placeholder="请选择公众号"
+          placeholder="请选择小程序"
           clearable
           size="small"
         >
@@ -692,10 +692,10 @@ export default {
           let value = data?.configValue
           if (value) {
             const appList = JSON.parse(value);
-            this.maAppList = appList.filter(v => v.type === '1').map(v => {
+            this.maAppList = appList.filter(v => v.type === '2').map(v => {
               return { appId: v.appid, appName: v.name }
             })
-            this.miniAppList = appList.filter(v => v.type === '2').map(v => {
+            this.miniAppList = appList.filter(v => v.type === '1').map(v => {
               return { appId: v.appid, appName: v.name }
             })
           }

+ 17 - 12
src/views/his/doctor/type1.vue

@@ -315,7 +315,7 @@
         <el-row>
               <el-col :span="12">
                 <el-form-item label="科室" prop="deptId">
-                <el-select v-model="form.deptId" placeholder="请选择所属科室">
+                <el-select v-model="form.deptId"  placeholder="请选择所属科室">
                       <el-option
                           v-for="dict in depList"
                           :key="dict.dictValue"
@@ -950,9 +950,9 @@ export default {
       this.sexOptions = response.data;
     });
     this.getdeplist();
-	listStore().then(response => {
-	  this.storeOPtions = response.rows;
-	});
+    listStore().then(response => {
+      this.storeOPtions = response.rows;
+    });
     this.getHospitaldeplist();
     getAllFollowDoctorList().then(response => {
 
@@ -1298,9 +1298,9 @@ export default {
         if(this.form.packageIds!=null){
            this.form.packageIds= ((this.form.packageIds).split(",")).map(Number)
         }
-		if(this.form.storeIds!=null){
-		   this.form.storeIds= ((this.form.storeIds).split(",")).map(Number)
-		}
+        if(this.form.storeIds!=null){
+          this.form.storeIds= ((this.form.storeIds).split(",")).map(Number)
+        }
         if(this.form.isSelf!=null){
           this.form.isSelf = String(this.form.isSelf)
         }
@@ -1316,7 +1316,10 @@ export default {
         if(this.form.isPrescribeDoctor!=null){
           this.form.isPrescribeDoctor = String(this.form.isPrescribeDoctor)
         }
-        this.form.cityIds=((this.form.cityIds).split(",")).map(Number)
+        if(this.form.cityIds){
+          this.form.cityIds=((this.form.cityIds).split(",")).map(Number)
+        }
+        
         if(this.form.prescribeDoctorName!=null){
               this.doctorName.name=this.form.prescribeDoctorName;
               this.getlistdocuser();
@@ -1366,15 +1369,17 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
+      if(this.form.isPrescribeDoctor!=null){
+          this.form.isPrescribeDoctor = String(this.form.isPrescribeDoctor)
+        }
       this.$refs["form"].validate(valid => {
         if (valid) {
           if(this.form.packageIds!=null){
             this.form.packageIds=(this.form.packageIds).toString()
           }
-		  if(this.form.storeIds!=null){
-		    this.form.storeIds=(this.form.storeIds).toString()
-		  }
-	
+          if(this.form.storeIds!=null){
+            this.form.storeIds=(this.form.storeIds).toString()
+          }
           this.form.cityIds=(this.form.cityIds).toString()
           if (this.form.doctorId != null) {
             this.form.doctorType=1;

+ 2 - 1
src/views/his/patient/index.vue

@@ -262,6 +262,7 @@ export default {
   components: {patientDetails},
   data() {
     return {
+      addPatientInfo: process.env.VUE_APP_ADD_PATIENT,
       show:{
               title:"患者详情",
               open:false,
@@ -431,7 +432,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加病人";
+      this.title = this.addPatientInfo||"添加病人";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {

+ 426 - 155
src/views/his/storeOrder/order1.vue

@@ -235,16 +235,16 @@
               />
         </el-select>
       </el-form-item>
-	<el-form-item label="订单来源" prop="source">
-	  <el-select v-model="queryParams.source" placeholder="请选择是否支付" clearable size="small">
-	    <el-option
-	      v-for="dict in sourceOptions"
-	      :key="dict.dictValue"
-	      :label="dict.dictLabel"
-	      :value="dict.dictValue"
-	    />
-	  </el-select>
-	</el-form-item>
+      <el-form-item label="订单来源" prop="source">
+        <el-select v-model="queryParams.source" placeholder="请选择是否支付" clearable size="small">
+          <el-option
+            v-for="dict in sourceOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
 
       <el-form-item label="下单时间" prop="createTime">
             <el-date-picker v-model="createTime" size="small" style="width: 220px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="changeTime"></el-date-picker>
@@ -265,123 +265,162 @@
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
-    </el-form>
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          :loading="exportLoading"
-          @click="handleExport"
-          v-hasPermi="['his:storeOrder:export']"
-        >财务导出</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          :loading="exportLoading"
-          @click="handleOrderExport"
-          v-hasPermi="['store:storeOrder:export']"
-        >导出订单</el-button>
+      </el-form>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            :loading="exportLoading"
+            @click="handleExport"
+            v-hasPermi="['his:storeOrder:export']"
+          >财务导出</el-button>
         </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="info"
-          plain
-          icon="el-icon-upload2"
-          size="mini"
-          @click="handleImport"
-          v-hasPermi="['his:storeOrder:exportDeliver']"
-        >导入发货</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="info"
-          plain
-          icon="el-icon-upload2"
-          size="mini"
-          @click="handleImportExpress"
-          v-hasPermi="['store:storeOrder:importExpress']"
-        >导入银行回单</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-    <el-tabs type="card" v-model="actName" @tab-click="handleClickX">
-      <el-tab-pane label="全部订单" name="10"></el-tab-pane>
-      <el-tab-pane v-for="(item,index) in orderOptions" :label="item.dictLabel" :name="item.dictValue"></el-tab-pane>
-    </el-tabs>
-    <el-table height="500" v-loading="loading" border :data="orderList" @selection-change="handleSelectionChange" >
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="处方单编号" align="center" prop="prescribeCode" width="180px"/>
-      <el-table-column label="药品订单号" align="center" prop="orderCode" width="180px"/>
-      <el-table-column label="所属公司" align="center" prop="companyName" />
-      <el-table-column label="员工" align="center" prop="companyUserName" />
-      <el-table-column label="店铺名称" align="center" prop="storeName" />
-      <el-table-column label="就诊人" align="center" prop="patientName" />
-      <el-table-column label="收货人" align="center" prop="userName" />
-      <el-table-column label="套餐名称" align="center" prop="packageName" />
-      <el-table-column label="套餐别名" align="center" prop="packageSecondName" width="100px"/>
-      <el-table-column label="应收金额" align="center" prop="payPrice" />
-      <el-table-column label="实收金额" align="center" prop="payMoney" />
-      <el-table-column label="支付方式" align="center" prop="payType" >
-       <template slot-scope="scope">
-              <dict-tag :options="PayOptions" :value="scope.row.payType"/>
-         </template>
-       </el-table-column>
-        <el-table-column label="下单时间" align="center" prop="createTime" width="180" />
-        <el-table-column label="支付时间" align="center" prop="payTime" width="180" />
-        <el-table-column label="订单状态" align="center" prop="status" >
-          <template slot-scope="scope">
-                <dict-tag :options="orderOptions" :value="scope.row.status"/>
-           </template>
-        </el-table-column>
-		<el-table-column label="订单来源" align="center" prop="source" >
-		  <template slot-scope="scope">
-		     <dict-tag :options="sourceOptions" :value="scope.row.source"/>
-		  </template>
-		</el-table-column>
-     <el-table-column label="物流状态" align="center" prop="deliveryStatus" >
-       <template slot-scope="scope">
-             <dict-tag :options="deliveryStatusOptions" :value="scope.row.deliveryStatus"/>
-        </template>
-     </el-table-column>
-	 <el-table-column label="结算状态" align="center" prop="deliveryPayStatus" >
-      <template slot-scope="scope">
-            <dict-tag :options="deliveryPayStatusOptions" :value="scope.row.deliveryPayStatus"/>
-       </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="100px">
-      <template slot-scope="scope">
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            :loading="exportLoading"
+            @click="handleOrderExport"
+            v-hasPermi="['store:storeOrder:export']"
+          >导出订单</el-button>
+          </el-col>
+        <el-col :span="1.5">
           <el-button
+            type="info"
+            plain
+            icon="el-icon-upload2"
+            size="mini"
+            @click="handleImport"
+            v-hasPermi="['his:storeOrder:exportDeliver']"
+          >导入发货</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="info"
+            plain
+            icon="el-icon-upload2"
+            size="mini"
+            @click="handleImportExpress"
+            v-hasPermi="['store:storeOrder:importExpress']"
+          >导入银行回单</el-button>
+        </el-col>
+        <el-col :span="1.5" v-if="orderStatus == 5"> <!--待推送erp-->
+          <el-tooltip content="默认erp推送手机号" placement="top">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-phone"
+              size="mini"
+              @click="handleErpPhone"
+              v-hasPermi="['store:storeOrder:erpphone']"
+            >推送手机号码</el-button>
+          </el-tooltip>
+        </el-col>
+        <el-col :span="1.5" v-if="orderStatus == 5">
+          <el-tooltip content="批量设置erp推送手机号" placement="top">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-phone"
               size="mini"
-              type="text"
-              @click="handledetails(scope.row)"
-            >查看
-            </el-button>
-      </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-   <el-drawer
-        :with-header="false"
-        size="75%"
-         :title="show.title" :visible.sync="show.open">
-     <storeOrderDetails  ref="Details" />
-   </el-drawer>
-  <!-- 用户导入对话框 -->
+              :disabled="multiple"
+              @click="setErpPhone"
+              v-hasPermi="['his:storeOrder:createErpOrder']"
+            >设置推送手机</el-button>
+          </el-tooltip>
+        </el-col>
+        <el-col :span="1.5" v-if="orderStatus == 5">
+          <el-tooltip content="批量推送erp" placement="top">
+            <el-button
+              type="warning"
+              plain
+              icon="el-icon-s-cooperation"
+              size="mini"
+              :disabled="multiple"
+              @click="createErpOrder"
+              v-hasPermi="['his:storeOrder:createErpOrder']"
+            >创建erp</el-button>
+          </el-tooltip>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+      <el-tabs type="card" v-model="actName" @tab-click="handleClickX">
+        <el-tab-pane label="全部订单" name="10"></el-tab-pane>
+        <el-tab-pane v-for="(item,index) in orderOptions" :label="item.dictLabel" :name="item.dictValue"></el-tab-pane>
+      </el-tabs>
+      <el-table height="500" v-loading="loading" border :data="orderList" @selection-change="handleSelectionChange" >
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="处方单编号" align="center" prop="prescribeCode" width="180px"/>
+        <el-table-column label="药品订单号" align="center" prop="orderCode" width="180px"/>
+        <el-table-column label="所属公司" align="center" prop="companyName" />
+        <el-table-column label="员工" align="center" prop="companyUserName" />
+        <el-table-column label="店铺名称" align="center" prop="storeName" />
+        <el-table-column label="就诊人" align="center" prop="patientName" />
+        <el-table-column label="收货人" align="center" prop="userName" />
+        <el-table-column label="套餐名称" align="center" prop="packageName" />
+        <el-table-column label="套餐别名" align="center" prop="packageSecondName" width="100px"/>
+        <el-table-column label="应收金额" align="center" prop="payPrice" />
+        <el-table-column label="实收金额" align="center" prop="payMoney" />
+        <el-table-column label="支付方式" align="center" prop="payType" >
+        <template slot-scope="scope">
+                <dict-tag :options="PayOptions" :value="scope.row.payType"/>
+          </template>
+        </el-table-column>
+          <el-table-column label="下单时间" align="center" prop="createTime" width="180" />
+          <el-table-column label="支付时间" align="center" prop="payTime" width="180" />
+          <el-table-column label="订单状态" align="center" prop="status" >
+            <template slot-scope="scope">
+                  <dict-tag :options="orderOptions" :value="scope.row.status"/>
+            </template>
+          </el-table-column>
+        <el-table-column label="订单来源" align="center" prop="source" >
+          <template slot-scope="scope">
+            <dict-tag :options="sourceOptions" :value="scope.row.source"/>
+          </template>
+        </el-table-column>
+        <el-table-column label="物流状态" align="center" prop="deliveryStatus" >
+          <template slot-scope="scope">
+                <dict-tag :options="deliveryStatusOptions" :value="scope.row.deliveryStatus"/>
+            </template>
+        </el-table-column>
+        <el-table-column label="结算状态" align="center" prop="deliveryPayStatus" >
+          <template slot-scope="scope">
+                <dict-tag :options="deliveryPayStatusOptions" :value="scope.row.deliveryPayStatus"/>
+          </template>
+        </el-table-column>
+        <el-table-column label="ERP电话" align="center" prop="erpPhone" v-if="orderStatus == 5"/>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
+          <template slot-scope="scope">
+              <el-button
+                  size="mini"
+                  type="text"
+                  @click="handledetails(scope.row)"
+                >查看
+                </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+      <el-drawer
+            :with-header="false"
+            size="75%"
+            :title="show.title" :visible.sync="show.open">
+        <storeOrderDetails  ref="Details" />
+      </el-drawer>
+      <!-- 用户导入对话框 -->
 
-  <el-dialog :title="importExpress.title" :visible.sync="importExpress.open" width="400px" append-to-body>
+      <el-dialog :title="importExpress.title" :visible.sync="importExpress.open" width="400px" append-to-body>
         <el-upload
           ref="importExpress"
           :limit="1"
@@ -398,7 +437,7 @@
           <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
           <div class="el-upload__tip text-center" slot="tip">
             <div class="el-upload__tip" slot="tip">
-         <!--     <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 -->
+        <!--     <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 -->
             </div>
             <span>仅允许导入xls、xlsx格式文件。</span>
             <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplateExpress">下载模板</el-link>
@@ -410,41 +449,104 @@
         </div>
       </el-dialog>
 
-
-
-
-<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
-      <el-upload
-        ref="upload"
-        :limit="1"
-        accept=".xlsx, .xls"
-        :headers="upload.headers"
-        :action="upload.url + '?updateSupport=' + upload.updateSupport"
-        :disabled="upload.isUploading"
-        :on-progress="handleFileUploadProgress"
-        :on-success="handleFileSuccess"
-        :auto-upload="false"
-        drag
-      >
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-        <div class="el-upload__tip text-center" slot="tip">
-          <div class="el-upload__tip" slot="tip">
+      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+        <el-upload
+          ref="upload"
+          :limit="1"
+          accept=".xlsx, .xls"
+          :headers="upload.headers"
+          :action="upload.url + '?updateSupport=' + upload.updateSupport"
+          :disabled="upload.isUploading"
+          :on-progress="handleFileUploadProgress"
+          :on-success="handleFileSuccess"
+          :auto-upload="false"
+          drag
+        >
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+          <div class="el-upload__tip text-center" slot="tip">
+            <div class="el-upload__tip" slot="tip">
+            </div>
+            <span>仅允许导入xls、xlsx格式文件。</span>
+            <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
           </div>
-          <span>仅允许导入xls、xlsx格式文件。</span>
-          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
-        </div>
-      </el-upload>
-    <div slot="footer" class="dialog-footer">
-      <el-button type="primary" @click="submitFileForm">确 定</el-button>
-      <el-button @click="upload.open = false">取 消</el-button>
-    </div>
-  </el-dialog>
+        </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+    
+    <!-- 设置推送手机对话框 -->
+    <el-dialog :title="erpPhone.title" :visible.sync="erpPhone.open" width="600px" append-to-body>
+      <div style="margin-bottom: 20px;">
+        <el-button type="primary" size="small" @click="handleAddPhone">新增手机号</el-button>
+      </div>
+      <el-table :data="phoneList" border style="width: 100%">
+        <el-table-column prop="phone" label="手机号" align="center">
+          <template slot-scope="scope">
+            <el-input 
+              v-if="scope.row.editing" 
+              v-model="scope.row.phone" 
+              placeholder="请输入手机号"
+              @blur="validatePhone(scope.row)"
+              @keyup.enter.native="handleSavePhone(scope.$index)"
+            />
+            <span v-else>{{ scope.row.phone }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="300">
+          <template slot-scope="scope">
+            <el-button 
+              v-if="scope.row.editing" 
+              type="success" 
+              size="mini" 
+              @click="handleSavePhone(scope.$index)"
+            >保存</el-button>
+            <el-button 
+              v-if="scope.row.editing" 
+              type="info" 
+              size="mini" 
+              @click="handleCancelEdit(scope.$index)"
+            >取消</el-button>
+            <el-button 
+              v-if="!scope.row.editing" 
+              type="primary" 
+              size="mini" 
+              @click="handleEditPhone(scope.$index)"
+            >修改</el-button>
+            <el-button 
+              type="danger" 
+              size="mini" 
+              @click="handleDeletePhone(scope.$index)"
+            >删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="handleSavePhoneList">确 定</el-button>
+        <el-button @click="handleCancelPhoneDialog">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="erpPhone.title" :visible.sync="setPhoneOpen" width="600px" append-to-body>
+      <el-select v-model="erpPhoneValue" placeholder="请选择">
+        <el-option
+          v-for="item in phoneList"
+          :key="item.phone"
+          :label="item.phone"
+          :value="item.phone">
+        </el-option>
+      </el-select>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitErpPhone">确 定</el-button>
+        <el-button @click="handleCancelErpPhone">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { listOrder, getOrder, delOrder, addOrder,importExpressTemplate, updateOrder, exportOrder,importTemplate,exportOrder2 } from "@/api/his/storeOrder";
+import { listOrder, getOrder, delOrder, addOrder,importExpressTemplate, updateOrder, exportOrder,importTemplate,exportOrder2,queryErpPhone,saveErpPhone,editErpPhone,batchCreateErpOrder } from "@/api/his/storeOrder";
 import storeOrderDetails from '../../components/his/storeOrderDetails.vue';
 import { getToken } from "@/utils/auth";
 import {listStore} from "@/api/his/storeProduct";
@@ -463,6 +565,15 @@ export default {
   },
   data() {
     return {
+      erpPhoneValue:null,
+      setPhoneOpen:false,
+      erpPhone:{
+        open:false,
+        title:"设置推送手机号"
+      },
+      phoneList: [], // 手机号列表
+      originalPhoneList: [], // 原始手机号列表,用于取消时恢复
+      orderStatus:null,
       scheduleOptions:[],
       companys:[],
       deptOptions:[],
@@ -673,6 +784,165 @@ export default {
 
   },
   methods: {
+    createErpOrder(){
+      this.$confirm('确认创建erp?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        batchCreateErpOrder(this.ids).then(response=>{
+          if(response.code == 200){
+            this.$message.success('创建成功');
+            this.getList();
+          }
+        })
+        
+      });
+    },
+    handleCancelErpPhone(){
+      this.erpPhoneValue = null;
+      this.setPhoneOpen = false;
+    },
+    submitErpPhone(){
+      const param = {orderIds:this.ids,erpPhone:this.erpPhoneValue};
+      editErpPhone(param).then(response=>{
+        this.msgSuccess("修改成功");
+        this.setPhoneOpen = false;
+        this.getList();
+      })
+    },
+    setErpPhone(){
+      this.getErpPhoneList();
+      this.setPhoneOpen = true;
+    },
+    // 设置推送手机相关方法
+    handleErpPhone(){
+      //查询配置手机号
+      this.getErpPhoneList();
+      this.erpPhone.open = true
+    },
+    getErpPhoneList(){
+      queryErpPhone().then(response =>{
+        if(response.data && response.data != null && response.data.length >0){
+          const phones = response.data.filter(phone => phone.trim());
+          this.phoneList = phones.map(phone => ({
+            phone: phone.trim(),
+            editing: false,
+            originalPhone: phone.trim()
+          }));
+        }
+        
+        // 保存原始数据用于取消操作
+        this.originalPhoneList = this.phoneList;
+      });
+    },
+    // 新增手机号
+    handleAddPhone() {
+      this.phoneList.push({
+        phone: '',
+        editing: true,
+        originalPhone: '',
+        isNew: true
+      });
+    },
+    // 编辑手机号
+    handleEditPhone(index) {
+      this.$set(this.phoneList[index], 'editing', true);
+      this.$set(this.phoneList[index], 'originalPhone', this.phoneList[index].phone);
+    },
+    // 保存手机号
+    handleSavePhone(index) {
+      const phone = this.phoneList[index].phone.trim();
+      if (!phone) {
+        this.$message.error('手机号不能为空');
+        return;
+      }
+      if (!this.validatePhoneFormat(phone)) {
+        this.$message.error('请输入正确的手机号格式');
+        return;
+      }
+      // 检查是否重复
+      const duplicateIndex = this.phoneList.findIndex((item, idx) => 
+        idx !== index && item.phone === phone
+      );
+      if (duplicateIndex !== -1) {
+        this.$message.error('手机号已存在');
+        return;
+      }
+      this.$set(this.phoneList[index], 'editing', false);
+      this.$set(this.phoneList[index], 'isNew', false);
+    },
+    // 取消编辑
+    handleCancelEdit(index) {
+      if (this.phoneList[index].isNew) {
+        // 如果是新增的,直接删除
+        this.phoneList.splice(index, 1);
+      } else {
+        // 如果是编辑的,恢复原值
+        this.$set(this.phoneList[index], 'phone', this.phoneList[index].originalPhone);
+        this.$set(this.phoneList[index], 'editing', false);
+      }
+    },
+    // 删除手机号
+    handleDeletePhone(index) {
+      this.$confirm('确认删除该手机号?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.phoneList.splice(index, 1);
+        this.$message.success('删除成功');
+      });
+    },
+    // 验证手机号格式
+    validatePhoneFormat(phone) {
+      const phoneRegex = /^1[3-9]\d{9}$/;
+      return phoneRegex.test(phone);
+    },
+    // 验证手机号
+    validatePhone(row) {
+      if (row.phone && !this.validatePhoneFormat(row.phone)) {
+        this.$message.error('请输入正确的手机号格式');
+      }
+    },
+    // 保存手机号列表
+    handleSavePhoneList() {
+      // 检查是否有正在编辑的项
+      const editingItem = this.phoneList.find(item => item.editing);
+      if (editingItem) {
+        this.$message.error('请先保存正在编辑的手机号');
+        return;
+      }
+      
+      // 检查是否有空的手机号
+      const emptyPhone = this.phoneList.find(item => !item.phone.trim());
+      if (emptyPhone) {
+        this.$message.error('存在空的手机号,请删除或填写完整');
+        return;
+      }
+      
+      // 构造手机号列表
+      const phoneList = this.phoneList.map(item => item.phone);
+      
+      // 调用保存接口
+      saveErpPhone(phoneList).then(response => {
+        if (response.code === 200) {
+          this.$message.success('保存成功');
+          this.erpPhone.open = false;
+        } else {
+          this.$message.error(response.msg || '保存失败');
+        }
+      }).catch(() => {
+        this.$message.error('保存失败');
+      });
+    },
+    // 取消手机号对话框
+    handleCancelPhoneDialog() {
+      // 恢复原始数据
+      this.phoneList = JSON.parse(JSON.stringify(this.originalPhoneList));
+      this.erpPhone.open = false;
+    },
+    
     handleImportExpress() {
           this.importExpress.title = "导入";
           this.importExpress.open = true;
@@ -843,6 +1113,7 @@ export default {
       this.getList();
     },
    handleClickX(tab, event) {
+    this.orderStatus = tab.name;
     if(tab.name=="10"){
       this.queryParams.status=null;
     }else{
@@ -1114,4 +1385,4 @@ export default {
     },
   }
 };
-</script>
+</script>

+ 35 - 34
src/views/his/user/index.vue

@@ -1,6 +1,40 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="所属公司" prop="companyName">
+        <el-select
+          v-model="queryCompanyId"
+          placeholder="请选择所属公司"
+          clearable
+          filterable
+          size="small"
+          @change="handleQueryCompanyChange"
+        >
+          <el-option
+            v-for="item in companyQueryOptions"
+            :key="item.companyId"
+            :label="item.companyName"
+            :value="item.companyId">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="所属销售" prop="companyUserId">
+
+        <el-select
+          v-model="queryCompanyUserId"
+          placeholder="请选择所属销售"
+          clearable
+          filterable
+          size="small"
+        >
+          <el-option
+            v-for="item in companyQueryUserOptions"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId">
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="会员ID" prop="userId">
         <el-input
           v-model="queryParams.userId"
@@ -67,42 +101,9 @@
         </el-select>
       </el-form-item>
       <el-form-item label="注册时间" prop="createTime">
-                <el-date-picker v-model="createTime" size="small" style="width: 220px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
+                <el-date-picker v-model="createTime" size="small" style="width: 230px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
       </el-form-item>
-      <el-form-item label="所属公司" prop="companyName">
-        <el-select
-          v-model="queryCompanyId"
-          placeholder="请选择所属公司"
-          clearable
-          filterable
-          size="small"
-          @change="handleQueryCompanyChange"
-        >
-          <el-option
-            v-for="item in companyQueryOptions"
-            :key="item.companyId"
-            :label="item.companyName"
-            :value="item.companyId">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="所属销售" prop="companyUserId">
 
-        <el-select
-          v-model="queryCompanyUserId"
-          placeholder="请选择所属销售"
-          clearable
-          filterable
-          size="small"
-        >
-          <el-option
-            v-for="item in companyQueryUserOptions"
-            :key="item.userId"
-            :label="item.nickName"
-            :value="item.userId">
-          </el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>

+ 3 - 2
src/views/index.vue

@@ -219,6 +219,7 @@
 
         <div class="action-group">
           <el-radio-group v-model="userTypeText" @change="handleUserType">
+            <el-radio-button label="会员"></el-radio-button>
             <el-radio-button label="企微"></el-radio-button>
           </el-radio-group>
 
@@ -857,8 +858,8 @@ export default {
       smsRemainCount: 0,
       viewerType: '0',
       viewerChart: null,
-      userTypeText: '企微',
-      userType: 2,
+      userTypeText: process.env.VUE_APP_COURSE_DEFAULT==1?"会员":"企微",
+      userType: process.env.VUE_APP_COURSE_DEFAULT,
       dealerChart: null,
       // 分公司数量
       dealderCount: 0,

+ 15 - 3
src/views/qw/sopTemp/index.vue

@@ -263,7 +263,7 @@
             value-format="HH:mm"
             format="HH:mm"
             placeholder="时间"
-            style="width: 100px;height: 20px;margin-left: 10px;margin-top: 10px">
+            style="width: 200px;height: 20px;margin-left: 10px;margin-top: 10px">
           </el-time-picker>
         </el-form-item>
         <el-form-item label="每天催课次数" prop="num" v-if="form.sendType == 11 && !form.id">
@@ -278,7 +278,7 @@
             format="HH:mm"
             :picker-options="{ selectableRange: startTimeRange }"
             placeholder="时间"
-            style="width: 100px;height: 20px;margin-left: 10px;margin-top: 10px">
+            style="width: 200px;height: 20px;margin-left: 10px;margin-top: 10px">
           </el-time-picker>
         </el-form-item>
       </el-form>
@@ -403,10 +403,22 @@ export default {
         gap: [
           {required: true, message: '间隔天数不能为空', trigger: 'blur'}
         ],
+        time:[{
+          required: true, message: '发课时间不能为空', trigger: 'blur'
+        }],
+        courseId:[{
+          required: true, message: '课程不能为空', trigger: 'blur'
+        }],
+        companyId:[{
+          required: true, message: '销售公司不能为空', trigger: 'blur'
+        }],
+        project:[{
+          required: true, message: '所属项目不能为空', trigger: 'blur'
+        }],
       },
       contentRules: {
         time: [{required: true, message: '时间不能为空', trigger: 'blur'}],
-      }
+      },
     };
   },
   created() {

+ 17 - 4
src/views/qw/sopTemp/updateSopTemp.vue

@@ -1219,8 +1219,18 @@ export default {
       if (this.setting[index].content.length > 0 && this.form.sendType == 1) {
         return this.$message.error("因为企微接口限制,企微模板一天只能设置一条消息~")
       } else {
-        this.setting[index].content.push({type: this.defaultContentType, contentType: 1, setting: [{contentType: '1', value: "",}]})
-        this.videoList.push([])
+        const sourceContent = this.setting[index].content[0];
+        const newContent = {
+          type: this.defaultContentType,
+          contentType: 1,
+          setting: [{contentType: '1', value: ""}],
+          // 复制课程相关字段,如 courseId、videoId,根据实际数据结构补充
+          courseId: sourceContent.courseId,
+          videoId: sourceContent.videoId,
+          courseType: sourceContent.courseType
+        };
+        this.setting[index].content.push(newContent);
+        this.videoList.push([]);
         this.addTag.push({
           addTag: [],
           inputVisible: false,
@@ -1228,9 +1238,12 @@ export default {
           delTag: [],
           delTagVisible: false,
           delTagValue: ''
-        })
+        });
+        // 如果有视频列表关联,也可同步处理 videoList,根据 courseId 重新请求或复制已有视频数据
+        if (sourceContent.courseId) {
+          this.courseUpdate(newContent, index, this.setting[index].content.length - 1);
+        }
       }
-
     },
     delContent(index, contentIndex) {
       this.setting[index].content.splice(contentIndex, 1)

+ 109 - 90
src/views/system/config/config.vue

@@ -1,73 +1,73 @@
 <template>
   <div class="app-container">
-     <el-tabs v-model="activeName" @tab-click="handleClick" >
+    <el-tabs v-model="activeName" @tab-click="handleClick" >
       <el-tab-pane label="OSS配置" name="sys.oss.cloudStorage">
-          <el-form ref="form1" :model="form1" :rules="rules1" label-width="160px">
-            <el-form-item label="类型" prop="type">
-               <el-radio-group v-model="form1.type">
-                <el-radio :label="1">七牛云</el-radio>
-                <el-radio :label="2">阿里云</el-radio>
-                <el-radio :label="3">腾讯云</el-radio>
-                <el-radio :label="4">华为云</el-radio>
-              </el-radio-group>
-            </el-form-item>
-            <el-form-item v-if="form1.type==1" label="七牛绑定的域名" prop="qiniuDomain">
-                <el-input  v-model="form1.qiniuDomain"  label="请输入七牛绑定的域名"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==1" label="七牛路径前缀" prop="qiniuPrefix">
-                <el-input  v-model="form1.qiniuPrefix" label="请输入七牛路径前缀"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==1" label="七牛ACCESS_KEY" prop="qiniuAccessKey">
-                <el-input  v-model="form1.qiniuAccessKey" label="请输入七牛ACCESS_KEY"></el-input>
-            </el-form-item>
-            <el-form-item v-if="form1.type==1" label="七牛SecretKey" prop="qiniuSecretKey">
-                <el-input  v-model="form1.qiniuSecretKey" label="七牛SecretKey不能为空"></el-input>
-            </el-form-item>
-            <el-form-item v-if="form1.type==1" label="七牛空间名" prop="qiniuBucketName">
-                <el-input  v-model="form1.qiniuBucketName" label="七牛空间名不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==2" label="阿里云绑定的域名" prop="aliyunDomain">
-                <el-input  v-model="form1.aliyunDomain" label="阿里云绑定的域名不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==2" label="阿里云路径前缀" prop="aliyunPrefix">
-                <el-input  v-model="form1.aliyunPrefix" label="阿里云路径前缀不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==2" label="阿里云EndPoint" prop="aliyunEndPoint">
-                <el-input  v-model="form1.aliyunEndPoint" label="阿里云EndPoint不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==2" label="阿里云AccessKeyId" prop="aliyunAccessKeyId">
-                <el-input  v-model="form1.aliyunAccessKeyId" label="阿里云AccessKeyId不能为空"></el-input>
-            </el-form-item>
-            <el-form-item v-if="form1.type==2" label="阿里云AccessKeySecret" prop="aliyunAccessKeySecret">
-                <el-input  v-model="form1.aliyunAccessKeySecret" label="阿里云AccessKeySecret不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==2" label="阿里云BucketName" prop="aliyunBucketName">
-                <el-input  v-model="form1.aliyunBucketName" label="阿里云BucketName不能为空"></el-input>
-            </el-form-item>
-              <el-form-item v-if="form1.type==3" label="腾讯云绑定的域名" prop="qcloudDomain">
-                <el-input  v-model="form1.qcloudDomain" label="腾讯云绑定的域名格式不正确"></el-input>
-            </el-form-item>
-              <el-form-item v-if="form1.type==3" label="腾讯云前缀" prop="qcloudPrefix">
-                <el-input  v-model="form1.qcloudPrefix" label="腾讯云前缀不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==3" label="腾讯云SecretId" prop="qcloudSecretId">
-                <el-input  v-model="form1.qcloudSecretId" label="腾讯云SecretId不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==3" label="腾讯云SecretKey" prop="qcloudSecretKey">
-                <el-input  v-model="form1.qcloudSecretKey" label="腾讯云SecretKey不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==3" label="腾讯云BucketName" prop="qcloudBucketName">
-                <el-input  v-model="form1.qcloudBucketName" label="腾讯云BucketName不能为空"></el-input>
-            </el-form-item>
-             <el-form-item v-if="form1.type==3" label="所属地区" prop="qcloudRegion">
-                <el-input  v-model="form1.qcloudRegion" label="所属地区不能为空"></el-input>
-            </el-form-item>
-            <el-form-item v-if="form1.type==4" label="华为云绑定的域名" prop="huaweiDomain">
-              <el-input  v-model="form1.huaweiDomain" label="华为云绑定的域名格式不正确"></el-input>
-            </el-form-item>
-            <el-form-item v-if="form1.type==4" label="华为云Endpoint" prop="huaweiBucketName">
-              <el-input  v-model="form1.huaweiEndpoint" label="华为云Endpoint不能为空"></el-input>
-            </el-form-item>
+        <el-form ref="form1" :model="form1" :rules="rules1" label-width="160px">
+          <el-form-item label="类型" prop="type">
+            <el-radio-group v-model="form1.type">
+              <el-radio :label="1">七牛云</el-radio>
+              <el-radio :label="2">阿里云</el-radio>
+              <el-radio :label="3">腾讯云</el-radio>
+              <el-radio :label="4">华为云</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item v-if="form1.type==1" label="七牛绑定的域名" prop="qiniuDomain">
+            <el-input  v-model="form1.qiniuDomain"  label="请输入七牛绑定的域名"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==1" label="七牛路径前缀" prop="qiniuPrefix">
+            <el-input  v-model="form1.qiniuPrefix" label="请输入七牛路径前缀"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==1" label="七牛ACCESS_KEY" prop="qiniuAccessKey">
+            <el-input  v-model="form1.qiniuAccessKey" label="请输入七牛ACCESS_KEY"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==1" label="七牛SecretKey" prop="qiniuSecretKey">
+            <el-input  v-model="form1.qiniuSecretKey" label="七牛SecretKey不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==1" label="七牛空间名" prop="qiniuBucketName">
+            <el-input  v-model="form1.qiniuBucketName" label="七牛空间名不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==2" label="阿里云绑定的域名" prop="aliyunDomain">
+            <el-input  v-model="form1.aliyunDomain" label="阿里云绑定的域名不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==2" label="阿里云路径前缀" prop="aliyunPrefix">
+            <el-input  v-model="form1.aliyunPrefix" label="阿里云路径前缀不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==2" label="阿里云EndPoint" prop="aliyunEndPoint">
+            <el-input  v-model="form1.aliyunEndPoint" label="阿里云EndPoint不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==2" label="阿里云AccessKeyId" prop="aliyunAccessKeyId">
+            <el-input  v-model="form1.aliyunAccessKeyId" label="阿里云AccessKeyId不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==2" label="阿里云AccessKeySecret" prop="aliyunAccessKeySecret">
+            <el-input  v-model="form1.aliyunAccessKeySecret" label="阿里云AccessKeySecret不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==2" label="阿里云BucketName" prop="aliyunBucketName">
+            <el-input  v-model="form1.aliyunBucketName" label="阿里云BucketName不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==3" label="腾讯云绑定的域名" prop="qcloudDomain">
+            <el-input  v-model="form1.qcloudDomain" label="腾讯云绑定的域名格式不正确"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==3" label="腾讯云前缀" prop="qcloudPrefix">
+            <el-input  v-model="form1.qcloudPrefix" label="腾讯云前缀不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==3" label="腾讯云SecretId" prop="qcloudSecretId">
+            <el-input  v-model="form1.qcloudSecretId" label="腾讯云SecretId不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==3" label="腾讯云SecretKey" prop="qcloudSecretKey">
+            <el-input  v-model="form1.qcloudSecretKey" label="腾讯云SecretKey不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==3" label="腾讯云BucketName" prop="qcloudBucketName">
+            <el-input  v-model="form1.qcloudBucketName" label="腾讯云BucketName不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==3" label="所属地区" prop="qcloudRegion">
+            <el-input  v-model="form1.qcloudRegion" label="所属地区不能为空"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==4" label="华为云绑定的域名" prop="huaweiDomain">
+            <el-input  v-model="form1.huaweiDomain" label="华为云绑定的域名格式不正确"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form1.type==4" label="华为云Endpoint" prop="huaweiBucketName">
+            <el-input  v-model="form1.huaweiEndpoint" label="华为云Endpoint不能为空"></el-input>
+          </el-form-item>
 
             <el-form-item v-if="form1.type==4" label="华为云AK" prop="huaweiAK">
               <el-input  v-model="form1.huaweiAK" label="华为云AK不能为空"></el-input>
@@ -736,24 +736,41 @@
           <el-input   v-model="form13.erpShopCode"  label="请输入erpShopCode"></el-input>
       </el-form-item>
 
-      <el-form-item   label="erpWdAppKey" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdAppKey">
-          <el-input   v-model="form13.erpWdAppKey"  label="请输入erpAppKey"></el-input>
-      </el-form-item>
-      <el-form-item   label="erpWdAppsecret" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdAppsecret">
-          <el-input   v-model="form13.erpWdAppsecret"  label="erpWdAppsecret"></el-input>
-      </el-form-item>
-      <el-form-item   label="erpWdSid" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdSid">
-          <el-input   v-model="form13.erpWdSid"  label="请输入erpWdSid"></el-input>
-      </el-form-item>
-      <el-form-item   label="erpWdShopCode" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdShopCode">
-          <el-input   v-model="form13.erpWdShopCode"  label="请输入erpWdShopCode"></el-input>
-      </el-form-item>
-      <el-form-item   label="erpWdBaseUrl" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdBaseUrl">
-          <el-input   v-model="form13.erpWdBaseUrl"  label="请输入erpWdBaseUrl"></el-input>
-      </el-form-item>
-      <el-form-item   label="erpWarehouseCode" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWarehouseCode">
-          <el-input   v-model="form13.erpWarehouseCode"  label="请输入erpWarehouseCode"></el-input>
-      </el-form-item>
+          <el-form-item   label="erpWdAppKey" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdAppKey">
+            <el-input   v-model="form13.erpWdAppKey"  label="请输入erpAppKey"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpWdAppsecret" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdAppsecret">
+            <el-input   v-model="form13.erpWdAppsecret"  label="erpWdAppsecret"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpWdSid" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdSid">
+            <el-input   v-model="form13.erpWdSid"  label="请输入erpWdSid"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpWdShopCode" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdShopCode">
+            <el-input   v-model="form13.erpWdShopCode"  label="请输入erpWdShopCode"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpWdBaseUrl" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdBaseUrl">
+            <el-input   v-model="form13.erpWdBaseUrl"  label="请输入erpWdBaseUrl"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpWarehouseCode" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWarehouseCode">
+            <el-input   v-model="form13.erpWarehouseCode"  label="请输入erpWarehouseCode"></el-input>
+          </el-form-item>
+
+          <el-form-item   label="erpHzOMSAppKey" v-if="form13.erpOpen == 1 && form13.erpType == 3 " prop="erpHzOMSAppKey">
+            <el-input   v-model="form13.erpHzOMSAppKey"  label="请输入erpAppKey"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpHzOMSAppsecret" v-if="form13.erpOpen == 1 && form13.erpType == 3 " prop="erpHzOMSAppsecret">
+            <el-input   v-model="form13.erpHzOMSAppsecret"  label="erpWdAppsecret"></el-input>
+          </el-form-item>
+          <!-- erpHzOMSid -->
+          <el-form-item   label="erpHzOMSItenantid" v-if="form13.erpOpen == 1 && form13.erpType == 3 " prop="erpHzOMSItenantid">
+            <el-input   v-model="form13.erpHzOMSItenantid"  label="请输入erpHzOMSItenantid"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpHzOMTokenUrl" v-if="form13.erpOpen == 1 && form13.erpType == 3 " prop="erpHzOMTokenUrl">
+            <el-input   v-model="form13.erpHzOMTokenUrl"  label="请输入erpHzOMTokenUrl"></el-input>
+          </el-form-item>
+          <el-form-item   label="erpHzOMBaseUrl" v-if="form13.erpOpen == 1 && form13.erpType == 3 " prop="erpHzOMBaseUrl">
+            <el-input   v-model="form13.erpHzOMBaseUrl"  label="请输入erpHzOMBaseUrl"></el-input>
+          </el-form-item>
 
       <el-form-item   label="appid" prop="appid">
           <el-input   v-model="form13.appid"  label="请输入appid"></el-input>
@@ -936,6 +953,11 @@
                <el-radio label="1">线路二</el-radio>
              </el-radio-group>
            </el-form-item>
+           <el-form-item label="一级域名">
+             <el-tooltip class="item" effect="dark" content="顶级域名" placement="top-end">
+               <el-input  v-model="form18.courseDomainName"     ></el-input>
+             </el-tooltip>
+           </el-form-item>
            <el-form-item label="通用看课域名">
              <el-tooltip class="item" effect="dark" content="真链域名" placement="top-end">
                <el-input  v-model="form18.realLinkDomainName"     ></el-input>
@@ -1061,8 +1083,8 @@
                  v-model="scope.row.type"
                   placeholder="请选择类型"
                  :disabled="!scope.row.editing">
-                 <el-option label="公众号" value="1"></el-option>
-                 <el-option label="小程序" value="2"></el-option>
+                 <el-option label="小程序" value="1"></el-option>
+                 <el-option label="服务号" value="2"></el-option>
                </el-select>
              </template>
            </el-table-column>
@@ -1272,9 +1294,6 @@
            </div>
          </el-form>
        </el-tab-pane>
-       <el-tab-pane label="公司销售角色默认生成配置" name="companymenu.config">
-         <companyMenuConfig></companyMenuConfig>
-       </el-tab-pane>
     </el-tabs>
 
 

+ 1889 - 0
src/views/system/config/config2.vue

@@ -0,0 +1,1889 @@
+<template>
+  <div class="app-container">
+     <el-tabs v-model="activeName" @tab-click="handleClick" >
+      <el-tab-pane label="OSS配置" name="sys.oss.cloudStorage">
+          <el-form ref="form1" :model="form1" :rules="rules1" label-width="160px">
+            <el-form-item label="类型" prop="type">
+               <el-radio-group v-model="form1.type">
+                <el-radio :label="1">七牛云</el-radio>
+                <el-radio :label="2">阿里云</el-radio>
+                <el-radio :label="3">腾讯云</el-radio>
+                <el-radio :label="4">华为云</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item v-if="form1.type==1" label="七牛绑定的域名" prop="qiniuDomain">
+                <el-input  v-model="form1.qiniuDomain"  label="请输入七牛绑定的域名"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==1" label="七牛路径前缀" prop="qiniuPrefix">
+                <el-input  v-model="form1.qiniuPrefix" label="请输入七牛路径前缀"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==1" label="七牛ACCESS_KEY" prop="qiniuAccessKey">
+                <el-input  v-model="form1.qiniuAccessKey" label="请输入七牛ACCESS_KEY"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==1" label="七牛SecretKey" prop="qiniuSecretKey">
+                <el-input  v-model="form1.qiniuSecretKey" label="七牛SecretKey不能为空"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==1" label="七牛空间名" prop="qiniuBucketName">
+                <el-input  v-model="form1.qiniuBucketName" label="七牛空间名不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==2" label="阿里云绑定的域名" prop="aliyunDomain">
+                <el-input  v-model="form1.aliyunDomain" label="阿里云绑定的域名不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==2" label="阿里云路径前缀" prop="aliyunPrefix">
+                <el-input  v-model="form1.aliyunPrefix" label="阿里云路径前缀不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==2" label="阿里云EndPoint" prop="aliyunEndPoint">
+                <el-input  v-model="form1.aliyunEndPoint" label="阿里云EndPoint不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==2" label="阿里云AccessKeyId" prop="aliyunAccessKeyId">
+                <el-input  v-model="form1.aliyunAccessKeyId" label="阿里云AccessKeyId不能为空"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==2" label="阿里云AccessKeySecret" prop="aliyunAccessKeySecret">
+                <el-input  v-model="form1.aliyunAccessKeySecret" label="阿里云AccessKeySecret不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==2" label="阿里云BucketName" prop="aliyunBucketName">
+                <el-input  v-model="form1.aliyunBucketName" label="阿里云BucketName不能为空"></el-input>
+            </el-form-item>
+              <el-form-item v-if="form1.type==3" label="腾讯云绑定的域名" prop="qcloudDomain">
+                <el-input  v-model="form1.qcloudDomain" label="腾讯云绑定的域名格式不正确"></el-input>
+            </el-form-item>
+              <el-form-item v-if="form1.type==3" label="腾讯云前缀" prop="qcloudPrefix">
+                <el-input  v-model="form1.qcloudPrefix" label="腾讯云前缀不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==3" label="腾讯云SecretId" prop="qcloudSecretId">
+                <el-input  v-model="form1.qcloudSecretId" label="腾讯云SecretId不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==3" label="腾讯云SecretKey" prop="qcloudSecretKey">
+                <el-input  v-model="form1.qcloudSecretKey" label="腾讯云SecretKey不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==3" label="腾讯云BucketName" prop="qcloudBucketName">
+                <el-input  v-model="form1.qcloudBucketName" label="腾讯云BucketName不能为空"></el-input>
+            </el-form-item>
+             <el-form-item v-if="form1.type==3" label="所属地区" prop="qcloudRegion">
+                <el-input  v-model="form1.qcloudRegion" label="所属地区不能为空"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==4" label="华为云绑定的域名" prop="huaweiDomain">
+              <el-input  v-model="form1.huaweiDomain" label="华为云绑定的域名格式不正确"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==4" label="华为云Endpoint" prop="huaweiBucketName">
+              <el-input  v-model="form1.huaweiEndpoint" label="华为云Endpoint不能为空"></el-input>
+            </el-form-item>
+
+            <el-form-item v-if="form1.type==4" label="华为云AK" prop="huaweiAK">
+              <el-input  v-model="form1.huaweiAK" label="华为云AK不能为空"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==4" label="华为云SK" prop="huaweiSK">
+              <el-input  v-model="form1.huaweiSK" label="华为云SK不能为空"></el-input>
+            </el-form-item>
+            <el-form-item v-if="form1.type==4" label="华为云BucketName" prop="huaweiBucketName">
+              <el-input  v-model="form1.huaweiBucketName" label="华为云BucketName不能为空"></el-input>
+            </el-form-item>
+            <div   class="footer">
+              <el-button type="primary" @click="submitForm1">提  交</el-button>
+            </div>
+          </el-form>
+      </el-tab-pane>
+
+
+      <el-tab-pane label="问诊配置" name="his.inquiryConfig">
+          <el-form   label-width="180px">
+            <el-form-item  :label="item.type==1?'图文问诊价格':'视频问诊价格'" prop="price" v-for="item in form2.prices">
+                  <el-input-number v-model="item.price" :precision="2" :step="0.1"></el-input-number>
+            </el-form-item>
+            <el-form-item  label="问诊费扣款" prop="companyPrice">
+                  <el-input-number v-model="form2.companyPrice" :precision="2" :step="0.1"></el-input-number>
+            </el-form-item>
+            <el-form-item  label="开药问诊费扣款" prop="companyPrescribePrice">
+                  <el-input-number v-model="form2.companyPrescribePrice" :precision="2" :step="0.1"></el-input-number>
+            </el-form-item>
+            <el-form-item label="待支付订单取消时间(分钟)" prop="unPayCancelTime">
+              <el-tooltip class="item" effect="dark" content="待支付订单取消时间(分钟)" placement="top-end">
+                   <el-input-number v-model="form2.unPayCancelTime" :min="0"  ></el-input-number>
+              </el-tooltip>
+            </el-form-item>
+            <el-form-item label="问诊未接单取消时间(分钟)" prop="unReceiveCancelTime">
+              <el-tooltip class="item" effect="dark" content="问诊未接单取消时间(分钟)" placement="top-end">
+                   <el-input-number v-model="form2.unReceiveCancelTime" :min="0"  ></el-input-number>
+              </el-tooltip>
+            </el-form-item>
+            <el-form-item label="是否自动审方" prop="doctorRegister">
+              <el-switch
+                v-model="form2.isAutoPrescribeAudit"
+                active-color="#13ce66"
+                  inactive-color="#ff4949">
+              </el-switch>
+            </el-form-item>
+            <el-form-item label="会诊类型" prop="inquirySubType">
+                <div>
+                  <el-button plain  type="primary" icon="el-icon-plus" @click="addInquirySubType" style="margin-bottom: 5px;">添加会诊类型</el-button>
+                  <el-table border :data="form2.inquirySubType"  style="width: 701px;">
+
+                    <el-table-column prop="lable"label="名称" width="300px">
+                      <template slot-scope="scope"><el-input  v-model="scope.row.lable"    ></el-input>  </template>
+                    </el-table-column>
+                    <el-table-column prop="value"label="类型" width="300px">
+
+                      <template slot-scope="scope">
+                        <el-select v-model="scope.row.value" placeholder="类型" clearable size="small">
+                             <el-option
+                               v-for="dict in inquirySubTypeOptions"
+                               :key="dict.dictValue"
+                               :label="dict.dictLabel"
+                               :value="dict.dictValue"
+                             />
+                         </el-select>
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100px" fixed="right">
+                      <template slot-scope="scope">
+                        <el-button
+                          size="mini"
+                          type="text"
+                          icon="el-icon-delete"
+                          @click="deleteInquirySubType(scope.$index, scope.row)"
+                        >删除</el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+            </el-form-item>
+
+
+             <div   class="footer">
+              <el-button type="primary" @click="submitform2">提  交</el-button>
+            </div>
+          </el-form>
+      </el-tab-pane>
+
+      <el-tab-pane label="协议配置" name="his.agreementConfig" :rules="rules3">
+          <el-form ref="form3" :model="form3"  label-width="150px">
+            <el-form-item label="医生注册协议" prop="doctorRegister">
+              <editor v-model="form3.doctorRegister" :min-height="292"/>
+            </el-form-item>
+            <el-form-item label="医生多机构备案协议" prop="doctorFiling">
+              <editor v-model="form3.doctorFiling" :min-height="292"/>
+            </el-form-item>
+            <el-form-item label="用户协议" prop="userRegister">
+              <editor v-model="form3.userRegister" :min-height="292"/>
+            </el-form-item>
+            <el-form-item label="隐私协议" prop="userPrivacy">
+              <editor v-model="form3.userPrivacy" :min-height="292"/>
+            </el-form-item>
+            <el-form-item label="健康客服协议" prop="userHealth">
+              <editor v-model="form3.userHealth" :min-height="292"/>
+            </el-form-item>
+            <el-form-item label="会员服务协议" prop="vipService">
+              <editor v-model="form3.vipService" :min-height="292"/>
+            </el-form-item>
+
+            <div class="footer">
+              <el-button type="primary" @click="submitForm3">提  交</el-button>
+            </div>
+          </el-form>
+      </el-tab-pane>
+
+    <el-tab-pane label="资质证明" name="his.certs" >
+        <el-form ref="form4" :model="form4"  label-width="150px">
+         <el-form-item   label="资质证明" prop="certs">
+             <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
+         </el-form-item>
+
+          <div class="footer">
+            <el-button type="primary" @click="submitForm4">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+     <el-tab-pane label="品牌介绍" name="his.brand" >
+       <el-form ref="form16" :model="form16"  label-width="150px">
+         <el-form-item   label="品牌介绍" prop="brandInfo">
+           <ImageUpload v-model="form16.brandInfo" type="image" :num="10" :width="150" :height="150" />
+         </el-form-item>
+
+         <div class="footer">
+           <el-button type="primary" @click="submitForm16">提  交</el-button>
+         </div>
+       </el-form>
+     </el-tab-pane>
+    <el-tab-pane label="佣金配置" name="his.brokerage" style="width: 100%;">
+
+      <div  >
+        <el-table border :data="form5"  style="width: 100%;">
+          <el-table-column prop="type" label="类型" width="300px"/>
+          <el-table-column prop="doctorMedicineBrokerage"label="医生中药佣金%" width="300px">
+            <template slot-scope="scope"><el-input-number  v-model="scope.row.doctorMedicineBrokerage" :min="0" :max="100"    ></el-input-number>  </template>
+          </el-table-column>
+          <el-table-column prop="doctorInquiryBrokerage"label="医生服务佣金%" width="300px">
+            <template slot-scope="scope"><el-input-number  v-model="scope.row.doctorInquiryBrokerage" :min="0" :max="100"    ></el-input-number>  </template>
+          </el-table-column>
+          <el-table-column prop="tuiMedicineBrokerage" label="推广人员中药佣金%" width="300px">
+            <template slot-scope="scope">  <el-input-number  v-model="scope.row.tuiMedicineBrokerage" :min="0" :max="100"    > </el-input-number> </template>
+          </el-table-column>
+        </el-table>
+        <div style="float: right;"  class="footer">
+          <el-button type="primary" @click="submitForm5">提  交</el-button>
+        </div>
+      </div>
+    </el-tab-pane>
+
+    <el-tab-pane label="优惠券" name="his.coupon" >
+        <el-form ref="form6" :model="form6"  label-width="150px">
+        <el-form-item label="用户注册优惠券" prop="inquiryBrokerage">
+           <el-select v-model="form6.registerCoupon" multiple placeholder="请选择" style="width: 300px;">
+             <el-option
+               v-for="item in couponList"
+               :key="item.couponId"
+               :label="item.title"
+               :value="item.couponId"
+             ></el-option>
+           </el-select>
+        </el-form-item>
+        <el-form-item label="新手任务优惠券" prop="userTaskCoupon">
+          <el-select v-model="form6.userTaskCoupon" placeholder="请选择" style="width: 300px;">
+            <el-option
+              v-for="item in couponList"
+              :key="item.couponId"
+              :label="item.title"
+              :value="item.couponId"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+          <div class="footer">
+            <el-button type="primary" @click="submitForm6">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+
+    <el-tab-pane label="商城配置" name="his.store" >
+        <el-form ref="form1" :model="form7"  label-width="180px">
+
+          <el-form-item  label="货到付款支付比例" prop="payRate">
+            <el-tooltip class="item" effect="dark" content="货到付款支付比例(%)" placement="top-end">
+              <el-input-number  v-model="form7.payRate"   ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="待支付订单取消时间" prop="unPayTime">
+            <el-tooltip class="item" effect="dark" content="待支付订单取消时间(分钟)" placement="top-end">
+              <el-input-number  v-model="form7.unPayTime" :min="1"    ></el-input-number>
+            </el-tooltip>
+
+          </el-form-item>
+          <el-form-item  label="公司推广佣金比例" prop="tuiMoneyRate">
+            <el-tooltip class="item" effect="dark" content="公司推广佣金比例(%)" placement="top-end">
+              <el-input-number  v-model="form7.tuiMoneyRate" :min="1" :max="100"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="公司发货扣除成本比例" prop="deductMoneyRate">
+            <el-tooltip class="item" effect="dark" content="公司发货扣除成本比例(%)" placement="top-end">
+              <el-input-number  v-model="form7.deductMoneyRate" :min="1" :max="100"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="申请售后有效天数" prop="storeAfterSalesDay">
+            <el-tooltip class="item" effect="dark" content="确认收货后申请售后天数" placement="top-end">
+              <el-input-number  v-model="form7.storeAfterSalesDay" :min="0" :max="100"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="坐席自动回收天数" prop="storeCall">
+            <el-tooltip class="item" effect="dark" content="坐席自动回收天数" placement="top-end">
+              <el-input-number  v-model="form7.storeCall" :min="0" :max="100"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="退货收货人" prop="refundConsignee">
+            <el-tooltip class="item" effect="dark" content="退货收货人" placement="top-end">
+              <el-input style="width:200px"  v-model="form7.refundConsignee"   ></el-input>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="退货手机号" prop="refundPhoneNumber">
+            <el-tooltip class="item" effect="dark" content="退货手机号" placement="top-end">
+              <el-input  style="width:200px"  v-model="form7.refundPhoneNumber"   ></el-input>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="退货地址" prop="refundAddress">
+            <el-tooltip class="item" effect="dark" content="退货地址" placement="top-end">
+              <el-input    v-model="form7.refundAddress"   ></el-input>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item label="随访模板" prop="followTempId">
+            <el-select v-model="form7.followTempId" placeholder="请选择模板" clearable size="small">
+                    <el-option
+                      v-for="dict in tempOptions"
+                      :key="dict.dictValue"
+                      :label="dict.dictLabel"
+                      :value="dict.dictValue"
+                    />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="基础疾病随访" prop="oneFollowTempId">
+            <el-select v-model="form7.oneFollowTempId" placeholder="请选择模板" clearable size="small">
+                    <el-option
+                      v-for="dict in tempOptions"
+                      :key="dict.dictValue"
+                      :label="dict.dictLabel"
+                      :value="dict.dictValue"
+                    />
+            </el-select>
+          </el-form-item>
+          <el-form-item  label="随访频率(天)" prop="followRate">
+            <el-tooltip class="item" effect="dark" content="followRate" placement="top-end">
+              <el-input-number  v-model="form7.followRate" :min="0" :max="1000"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+         <div   class="footer">
+            <el-button type="primary" @click="submitForm7">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+    <el-tab-pane label="套餐包" name="his.package" >
+        <el-form ref="form8" :model="form8"  label-width="150px">
+          <el-form-item  label="物流代收定金比例(%)" prop="payRate">
+            <el-tooltip class="item" effect="dark" content="公司推广佣金比例(%)" placement="top-end">
+              <el-input-number  v-model="form8.payRate" :min="1" :max="100"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+
+          <el-form-item  label="货到付款加收运费(元)" prop="payDelivery">
+            <el-tooltip class="item" effect="dark" content="货到付款加收运费" placement="top-end">
+              <el-input-number  v-model="form8.payDelivery" :min="0" :max="1000"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="随访频率(天)" prop="followRate">
+            <el-tooltip class="item" effect="dark" content="followRate" placement="top-end">
+              <el-input-number  v-model="form8.followRate" :min="0" :max="1000"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item  label="全款支付赠品" prop="gift">
+            <div ><el-button plain  type="primary" icon="el-icon-plus" @click="handleAddProduct">添加商品</el-button></div>
+           <el-table border width="100%" style="margin-top:5px;"  :data="form8.gift">
+             <el-table-column label="商品图片" align="center" width="100">
+               <template slot-scope="scope">
+                 <el-popover
+                   placement="right"
+                   title=""
+                   trigger="hover">
+                   <img slot="reference" :src="scope.row.image" width="50">
+                   <img :src="scope.row.image" style="max-width: 50px;">
+                 </el-popover>
+               </template>
+             </el-table-column>
+             <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+             <el-table-column label="商品编号" align="center" prop="barCode" />
+             <el-table-column label="商品规格" align="center" prop="sku" />
+             <el-table-column label="店铺名称" align="center" prop="storeName" />
+             <el-table-column label="售价" align="center"  prop="price"  />
+           </el-table>
+          </el-form-item>
+          <el-form-item  label="物流代收赠品" prop="gift">
+            <div ><el-button plain  type="primary" icon="el-icon-plus" @click="handleDeliveryGift">添加商品</el-button></div>
+           <el-table border width="100%" style="margin-top:5px;"  :data="form8.deliveryGift">
+             <el-table-column label="商品图片" align="center" width="100">
+               <template slot-scope="scope">
+                 <el-popover
+                   placement="right"
+                   title=""
+                   trigger="hover">
+                   <img slot="reference" :src="scope.row.image" width="50">
+                   <img :src="scope.row.image" style="max-width: 50px;">
+                 </el-popover>
+               </template>
+             </el-table-column>
+             <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
+             <el-table-column label="商品编号" align="center" prop="barCode" />
+             <el-table-column label="商品规格" align="center" prop="sku" />
+             <el-table-column label="店铺名称" align="center" prop="storeName" />
+             <el-table-column label="售价" align="center"  prop="price"  />
+           </el-table>
+          </el-form-item>
+          <el-form-item label="赠品店铺" prop="giftStoreId">
+            <el-select v-model="form8.giftStoreId" placeholder="赠品店铺" clearable size="small">
+                    <el-option
+                      v-for="dict in storeOPtions"
+                      :key="dict.dictValue"
+                      :label="dict.dictLabel"
+                      :value="dict.dictValue"
+                    />
+                  </el-select>
+          </el-form-item>
+          <el-form-item  label="赠品起送金额(元)" prop="giftPrice">
+            <el-tooltip class="item" effect="dark" content="赠品起送金额" placement="top-end">
+              <el-input-number  v-model="form8.giftPrice" :min="0" :max="10000"    ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <div class="footer">
+            <el-button type="primary" @click="submitForm8">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+    <el-tab-pane label="支付配置" name="his.pay">
+        <el-form ref="form9" :model="form9"  label-width="160px">
+          <el-form-item label="支付类型" prop="type">
+             <el-radio-group v-model="form9.type">
+              <el-radio label="yb">易宝</el-radio>
+              <el-radio label="tz">台州银行</el-radio>
+              <el-radio label="wx">微信</el-radio>
+               <el-radio label="hf">汇付</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item   label="appId" prop="appId">
+              <el-input   v-model="form9.appId"  label="请输入appId"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form9.type=='yb'" label="易宝商户号" prop="ybAccount">
+              <el-input   v-model="form9.ybAccount"  label="请输入易宝商户号"></el-input>
+          </el-form-item>
+           <el-form-item v-if="form9.type=='yb'" label="易宝Key" prop="ybKey">
+              <el-input  v-model="form9.ybKey" label="请输入易宝Key"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='yb'" label="易宝回调地址" prop="ybNotifyUrl">
+              <el-input  v-model="form9.ybNotifyUrl" label="易宝回调地址"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form9.type=='tz'" label="台州商户号" prop="tzPlatMerCstNo">
+              <el-input   v-model="form9.tzPlatMerCstNo"  label="请输入台州商户号"></el-input>
+          </el-form-item>
+           <el-form-item v-if="form9.type=='tz'" label="台州appSecret" prop="tzAppSecret">
+              <el-input  v-model="form9.tzAppSecret" label="请输入台州appSecret"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='tz'" label="台州私钥" prop="tzPrivateKey">
+              <el-input  v-model="form9.tzPrivateKey" label="请输入台州私钥"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='tz'" label="台州平台公钥" prop="tzPlatformPublicKey">
+              <el-input  v-model="form9.tzPlatformPublicKey" label="请输入台州平台公钥"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='tz'" label="台州appKey" prop="tzAppKey">
+              <el-input  v-model="form9.tzAppKey" label="请输入台州appKey"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='tz'" label="台州支付回调地址" prop="tzPayDecrypt">
+              <el-input  v-model="form9.tzPayDecrypt" label="请输入台州支付回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='tz'" label="退款回调地址" prop="tzRefundDecrypt">
+              <el-input  v-model="form9.tzRefundDecrypt" label="请输入退款回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='tz'" label="分账回调地址" prop="tzOrderShareDecrypt">
+              <el-input  v-model="form9.tzOrderShareDecrypt" label="请输入台州分账回调地址"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form9.type=='wx'" label="微信商户号" prop="wxMchId">
+              <el-input   v-model="form9.wxMchId"  label="请输入微信商户号"></el-input>
+          </el-form-item>
+           <el-form-item v-if="form9.type=='wx'" label="微信Key" prop="wxMchKey">
+              <el-input  v-model="form9.wxMchKey" label="请输入微信Key"></el-input>
+          </el-form-item>
+
+
+          <el-form-item  v-if="form9.type=='hf'" label="汇付产品号" prop="hfProductId">
+              <el-input   v-model="form9.hfProductId"  label="汇付产品号"></el-input>
+          </el-form-item>
+           <el-form-item v-if="form9.type=='hf'" label="系统号" prop="hfSysId">
+              <el-input  v-model="form9.hfSysId" label="系统号Key"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="商户号" prop="huifuId">
+              <el-input  v-model="form9.huifuId" label="商户号"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="商户私钥" prop="hfRsaPrivateKey">
+              <el-input  v-model="form9.hfRsaPrivateKey" label="商户私钥"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="汇付公钥" prop="hfRsaPublicKey">
+              <el-input  v-model="form9.hfRsaPublicKey" label="汇付公钥"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="汇付支付回调地址" prop="hfPayNotifyUrl">
+              <el-input  v-model="form9.hfPayNotifyUrl" label="汇付支付回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="大额支付回调地址" prop="hfPayOnlineNotifyUrl">
+              <el-input  v-model="form9.hfPayOnlineNotifyUrl" label="汇付支付回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="汇付退款回调地址" prop="hfRefundNotifyUrl">
+              <el-input  v-model="form9.hfRefundNotifyUrl" label="汇付退款回调地址"></el-input>
+          </el-form-item>
+          <el-form-item v-if="form9.type=='hf'" label="汇付大额退款回调地址" prop="hfOnlineRefundNotifyUrl">
+              <el-input  v-model="form9.hfOnlineRefundNotifyUrl" label="汇付分账回调地址"></el-input>
+          </el-form-item>
+           <div   class="footer">
+            <el-button type="primary" @click="submitForm9">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+    <el-tab-pane label="布局配置" name="his.appShow" >
+        <div >
+          <el-table border :data="form10">
+            <el-table-column prop="name" label="模块名称" width="300">
+             <template slot-scope="scope"> <el-input    v-model="scope.row.name"   ></el-input></template>
+            </el-table-column>
+            <el-table-column prop="sort"label="排序号" width="300">
+              <template slot-scope="scope"><el-input-number  v-model="scope.row.sort" :min="0" :max="100"    ></el-input-number>  </template>
+            </el-table-column>
+            <el-table-column prop="isShow" label="是否展示" width="100">
+              <template slot-scope="scope">  <el-switch
+              v-model="scope.row.isShow"
+              active-color="#13ce66"
+                inactive-color="#ff4949">
+            </el-switch> </template>
+            </el-table-column>
+          </el-table>
+          <div style="float: right;" class="footer">
+            <el-button type="primary" @click="submitForm10">提  交</el-button>
+          </div>
+        </div>
+    </el-tab-pane>
+    <el-tab-pane label="积分配置" name="his.integral">
+        <el-form ref="form11" :model="form11" :rules="rules3" label-width="180px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item  label="新手任务积分" prop="integralNewTask">
+                <el-tooltip class="item" effect="dark" content="首次app内下单公域疗法,赠送多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralNewTask"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item  label="购买消费" prop="integralRatio">
+                <el-tooltip class="item" effect="dark" content="实付多少元得1积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralRatio"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item  label="分享获得积分" prop="integralShare">
+                <el-tooltip class="item" effect="dark" content="分享获得多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralShare"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item  label="完成随访获得积分" prop="integralFollow">
+                <el-tooltip class="item" effect="dark" content="完成随访获得多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralFollow"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="12">
+              <el-form-item  label="观看课程获得积分" prop="integralCourse">
+                <el-tooltip class="item" effect="dark" content="每小节观看>=50%获得多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralCourse"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item  label="浏览商品获得积分" prop="integralProduct">
+                <el-tooltip class="item" effect="dark" content="浏览商品每30秒获得多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralProduct"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item  label="短视频/直播 获得积分" prop="integralFirstVideo">
+                <el-tooltip class="item" effect="dark" content="首次浏览每10秒获得多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralFirstVideo"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item  label="短视频/直播 获得积分" prop="integralFinishVideo">
+                <el-tooltip class="item" effect="dark" content="每10秒获得最低多少积分" placement="top-end">
+                  <el-input-number  v-model="form11.integralFinishVideo"   ></el-input-number>
+                </el-tooltip>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-form-item  label="单日可获总积分" prop="integralByOneDay">
+            <el-tooltip class="item" effect="dark" content="每天最多可获得多少积分" placement="top-end">
+              <el-input-number  v-model="form11.integralByOneDay"   ></el-input-number>
+            </el-tooltip>
+          </el-form-item>
+          <el-form-item label="单日可获总积分类型" prop="integralTypeByOneDay">
+            <el-select v-model="form11.integralTypeByOneDay" multiple placeholder="请选择类型" filterable clearable size="small">
+              <el-option
+                v-for="dict in integralLogTypeOptions"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="dict.dictValue"
+              />
+            </el-select>
+          </el-form-item>
+
+         <div   class="footer">
+            <el-button type="primary" @click="submitForm11">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+    <el-tab-pane label="签到配置" name="his.sign">
+    <el-table border :data="form12">
+      <el-table-column prop="day" label="名称" width="300">
+       <template slot-scope="scope"> <el-input    v-model="scope.row.day"   ></el-input></template>
+      </el-table-column>
+      <el-table-column prop="signNum"label="获得积分" width="300">
+        <template slot-scope="scope"><el-input-number  v-model="scope.row.signNum" :min="0" :max="100"    ></el-input-number>  </template>
+      </el-table-column>
+      <el-table-column prop="sort"label="排序" width="300">
+        <template slot-scope="scope"><el-input-number  v-model="scope.row.sort" :min="0" :max="100"    ></el-input-number>  </template>
+      </el-table-column>
+    </el-table>
+    <div style="float: right;" class="footer">
+      <el-button type="primary" @click="submitForm12">提  交</el-button>
+    </div>
+    </el-tab-pane>
+    <el-tab-pane label="短信配置" name="his.sms" >
+
+        <el-form ref="form14" :model="form14"  label-width="150px">
+          <el-form-item label="短信服务商" prop="type">
+             <el-radio-group v-model="form14.type">
+              <el-radio label="rf">重庆润芳</el-radio>
+              <el-radio label="dh">重庆大汉</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳通知账号" prop="rfAccount1">
+              <el-input   v-model="form14.rfAccount1"  label="请输入润芳通知账号"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳通知code" prop="rfCode1">
+              <el-input   v-model="form14.rfCode1"  label="请输入润芳通知code"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳通知密码" prop="rfPassword1">
+              <el-input   v-model="form14.rfPassword1"  label="请输入润芳通知密码"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳通知地址" prop="rfUrl1">
+              <el-input   v-model="form14.rfUrl1"  label="请输入润芳通知地址"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳营销账号" prop="rfAccount2">
+              <el-input   v-model="form14.rfAccount2"  label="请输入润芳营销账号"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳营销code" prop="rfCode2">
+              <el-input   v-model="form14.rfCode2"  label="请输入润芳营销code"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳通知密码" prop="rfPassword2">
+              <el-input   v-model="form14.rfPassword2"  label="请输入润芳通知密码"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳通知地址" prop="rfUrl2">
+              <el-input   v-model="form14.rfUrl2"  label="请输入润芳营销地址"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='rf'" label="润芳签名" prop="rfSign">
+              <el-input   v-model="form14.rfSign"  label="请输入润芳签名"></el-input>
+          </el-form-item>
+
+          <el-form-item  v-if="form14.type=='dh'" label="大汉通知账号" prop="dhAccount1">
+              <el-input   v-model="form14.dhAccount1"  label="请输入大汉通知账号"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='dh'" label="大汉通知密码" prop="dhPassword1">
+              <el-input   v-model="form14.dhPassword1"  label="请输入大汉通知密码"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='dh'" label="大汉营销账号" prop="dhAccount2">
+              <el-input   v-model="form14.dhAccount2"  label="请输入大汉营销账号"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='dh'" label="大汉通知密码" prop="dhPassword2">
+              <el-input   v-model="form14.dhPassword2"  label="请输入大汉通知密码"></el-input>
+          </el-form-item>
+          <el-form-item  v-if="form14.type=='dh'" label="大汉签名" prop="dhSign">
+              <el-input   v-model="form14.dhSign"  label="请输入大汉签名"></el-input>
+          </el-form-item>
+          <div class="footer">
+            <el-button type="primary" @click="submitForm14">提  交</el-button>
+          </div>
+        </el-form>
+    </el-tab-pane>
+
+
+
+    <el-tab-pane label="系统配置" name="his.config">
+     <el-form ref="form11" :model="form13"  label-width="160px">
+      <el-form-item   label="腾讯云sdkAppId" prop="sdkAppId">
+          <el-input   v-model="form13.sdkAppId"  label="请输入sdkAppId"></el-input>
+      </el-form-item>
+      <el-form-item   label="腾讯云sdkAppKey" prop="sdkAppKey">
+          <el-input   v-model="form13.sdkAppKey"  label="请输入sdkAppKey"></el-input>
+      </el-form-item>
+      <el-form-item   label="快递鸟Id" prop="kdnId">
+          <el-input   v-model="form13.kdnId"  label="请输入kdnId"></el-input>
+      </el-form-item>
+      <el-form-item   label="快递鸟Key" prop="kdnKeyId">
+          <el-input   v-model="form13.kdnKeyId"  label="请输入kdnKeyId"></el-input>
+      </el-form-item>
+      <el-form-item   label="快递鸟Url" prop="kdnUrl">
+          <el-input   v-model="form13.kdnUrl"  label="请输入kdnUrl"></el-input>
+      </el-form-item>
+      <el-form-item   label="快递鸟订阅url" prop="kdnSubscribeUrl">
+          <el-input   v-model="form13.kdnSubscribeUrl"  label="请输入kdnSubscribeUrl"></el-input>
+      </el-form-item>
+      <el-form-item   label="快递鸟地址url" prop="kdnAddressUrl">
+          <el-input   v-model="form13.kdnAddressUrl"  label="请输入kdnAddressUrl"></el-input>
+      </el-form-item>
+      <el-form-item   label="是否开启erp">
+          <el-switch
+            v-model="form13.erpOpen"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            active-value=1
+            inactive-value=0>
+          </el-switch>
+      </el-form-item>
+      <el-form-item   label="erp类型" v-if="form13.erpOpen == 1">
+        <el-radio v-model="form13.erpType" label=1>管易</el-radio>
+        <el-radio v-model="form13.erpType" label=2>旺店通</el-radio>
+      </el-form-item>
+      <el-form-item   label="erpAppKey" v-if="form13.erpOpen == 1 && form13.erpType == 1 " prop="erpAppKey">
+          <el-input   v-model="form13.erpAppKey"  label="请输入erpAppKey"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpSessionKey" v-if="form13.erpOpen == 1 && form13.erpType == 1 " prop="erpSessionKey">
+          <el-input   v-model="form13.erpSessionKey"  label="请输入erpSessionKey"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpSecret" v-if="form13.erpOpen == 1 && form13.erpType == 1 " prop="erpSecret">
+          <el-input   v-model="form13.erpSecret"  label="请输入erpSecret"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpUrl" v-if="form13.erpOpen == 1 && form13.erpType == 1 " prop="erpUrl">
+          <el-input   v-model="form13.erpUrl"  label="请输入erpUrl"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpShopCode" v-if="form13.erpOpen == 1 && form13.erpType == 1 " prop="erpShopCode">
+          <el-input   v-model="form13.erpShopCode"  label="请输入erpShopCode"></el-input>
+      </el-form-item>
+
+      <el-form-item   label="erpWdAppKey" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdAppKey">
+          <el-input   v-model="form13.erpWdAppKey"  label="请输入erpAppKey"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpWdAppsecret" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdAppsecret">
+          <el-input   v-model="form13.erpWdAppsecret"  label="erpWdAppsecret"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpWdSid" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdSid">
+          <el-input   v-model="form13.erpWdSid"  label="请输入erpWdSid"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpWdShopCode" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdShopCode">
+          <el-input   v-model="form13.erpWdShopCode"  label="请输入erpWdShopCode"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpWdBaseUrl" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWdBaseUrl">
+          <el-input   v-model="form13.erpWdBaseUrl"  label="请输入erpWdBaseUrl"></el-input>
+      </el-form-item>
+      <el-form-item   label="erpWarehouseCode" v-if="form13.erpOpen == 1 && form13.erpType == 2 " prop="erpWarehouseCode">
+          <el-input   v-model="form13.erpWarehouseCode"  label="请输入erpWarehouseCode"></el-input>
+      </el-form-item>
+
+      <el-form-item   label="appid" prop="appid">
+          <el-input   v-model="form13.appid"  label="请输入appid"></el-input>
+      </el-form-item>
+      <el-form-item   label="secret" prop="secret">
+          <el-input   v-model="form13.secret"  label="请输入secret"></el-input>
+      </el-form-item>
+      <el-form-item   label="token" prop="token">
+          <el-input   v-model="form13.token"  label="请输入token"></el-input>
+      </el-form-item>
+      <el-form-item   label="aesKey" prop="aesKey">
+          <el-input   v-model="form13.aesKey"  label="请输入aesKey"></el-input>
+      </el-form-item>
+      <el-form-item   label="msgDataFormat" prop="msgDataFormat">
+          <el-input   v-model="form13.msgDataFormat"  label="请输入msgDataFormat"></el-input>
+      </el-form-item>
+      <el-form-item   label="极光appKey" prop="appKey">
+          <el-input   v-model="form13.appKey"  label="请输入appKey"></el-input>
+      </el-form-item>
+      <el-form-item   label="极光secret" prop="masterSecret">
+          <el-input   v-model="form13.masterSecret"  label="请输入masterSecret"></el-input>
+      </el-form-item>
+      <el-form-item   label="极光过期时间" prop="liveTime">
+          <el-input   v-model="form13.liveTime"  label="请输入liveTime"></el-input>
+      </el-form-item>
+      <el-form-item   label="处方上传token" prop="prescribeToken">
+          <el-input   v-model="form13.prescribeToken"  label="请输入masterSecret"></el-input>
+      </el-form-item>
+      <el-form-item   label="处方上传地址" prop="prescribeUrl">
+          <el-input   v-model="form13.prescribeUrl"  label="请输入masterSecret"></el-input>
+      </el-form-item>
+      <el-form-item   label="二维码地址" prop="codeUrl">
+          <el-input   v-model="form13.codeUrl"  label="请输入masterSecret"></el-input>
+      </el-form-item>
+       <el-form-item   label="hook地址" prop="hookUrl">
+         <el-input   v-model="form13.hookUrl"  label="请输入hook域名"></el-input>
+       </el-form-item>
+      <div   class="footer">
+         <el-button type="primary" @click="submitForm13">提  交</el-button>
+       </div>
+     </el-form>
+
+    </el-tab-pane>
+    <el-tab-pane label="企微客服配置" name="qw:config">
+      <el-form ref="form15" :model="form15" label-width="120px">
+        <el-form-item label="企业CoripID">
+          <el-input v-model="form15.corpId" style="width:400px"   ></el-input>
+        </el-form-item>
+        <el-form-item label="Secret">
+          <el-input v-model="form15.secret" style="width:400px"   ></el-input>
+        </el-form-item>
+        <el-form-item label="Token">
+          <el-input v-model="form15.token" style="width:400px"   ></el-input>
+        </el-form-item>
+        <el-form-item label="EncodingAESKey">
+          <el-input v-model="form15.encodingAESKey" style="width:400px"   ></el-input>
+        </el-form-item>
+        <el-form-item label="回调地接">
+          <el-input disabled v-model="form15.notifyUrl" style="width:600px"   ></el-input>
+        </el-form-item>
+        <div class="line"></div>
+        <div style="float:right;margin-right:20px">
+          <el-button type="primary" @click="submitForm15">提交</el-button>
+        </div>
+      </el-form>
+    </el-tab-pane>
+    <el-tab-pane label="商城配置小程序" name="store.config" >
+      <el-form ref="form17" :model="form17"  label-width="150px">
+
+
+        <el-form-item   label="erpOpen" prop="erpOpen">
+            <el-input   v-model="form17.erpOpen"  label="请输入erpOpen"></el-input>
+        </el-form-item>
+        <el-form-item   label="erpAppKey" prop="erpAppKey">
+            <el-input   v-model="form17.erpAppKey"  label="请输入erpAppKey"></el-input>
+        </el-form-item>
+        <el-form-item   label="erpSessionKey" prop="erpSessionKey">
+            <el-input   v-model="form17.erpSessionKey"  label="请输入erpSessionKey"></el-input>
+        </el-form-item>
+        <el-form-item   label="erpSecret" prop="erpSecret">
+            <el-input   v-model="form17.erpSecret"  label="请输入erpSecret"></el-input>
+        </el-form-item>
+        <el-form-item   label="erpUrl" prop="erpUrl">
+            <el-input   v-model="form17.erpUrl"  label="请输入erpUrl"></el-input>
+        </el-form-item>
+        <el-form-item   label="erpShopCode" prop="erpShopCode">
+            <el-input   v-model="form17.erpShopCode"  label="请输入erpShopCode"></el-input>
+        </el-form-item>
+        <el-form-item   label="appid" prop="appid">
+            <el-input   v-model="form17.appid"  label="请输入appid"></el-input>
+        </el-form-item>
+        <el-form-item   label="secret" prop="secret">
+            <el-input   v-model="form17.secret"  label="请输入secret"></el-input>
+        </el-form-item>
+        <el-form-item   label="token" prop="token">
+            <el-input   v-model="form17.token"  label="请输入token"></el-input>
+        </el-form-item>
+        <el-form-item   label="aesKey" prop="aesKey">
+            <el-input   v-model="form17.aesKey"  label="请输入aesKey"></el-input>
+        </el-form-item>
+
+        <el-form-item   label="msgDataFormat" prop="msgDataFormat">
+            <el-input   v-model="form17.msgDataFormat"  label="请输入msgDataFormat"></el-input>
+        </el-form-item>
+
+        <el-form-item   label="汇付产品号" prop="hfProductId">
+            <el-input   v-model="form17.hfProductId"  label="汇付产品号"></el-input>
+        </el-form-item>
+         <el-form-item v label="系统号" prop="hfSysId">
+            <el-input  v-model="form17.hfSysId" label="系统号Key"></el-input>
+        </el-form-item>
+        <el-form-item  label="商户号" prop="huifuId">
+            <el-input  v-model="form17.huifuId" label="商户号"></el-input>
+        </el-form-item>
+        <el-form-item  label="服务商私钥" prop="hfRsaPrivateKey">
+            <el-input  v-model="form17.hfRsaPrivateKey" label="服务商私钥"></el-input>
+        </el-form-item>
+        <el-form-item  label="汇付公钥" prop="hfRsaPublicKey">
+            <el-input  v-model="form17.hfRsaPublicKey" label="汇付公钥"></el-input>
+        </el-form-item>
+        <el-form-item  label="汇付支付回调地址" prop="hfPayNotifyUrl">
+            <el-input  v-model="form17.hfPayNotifyUrl" label="汇付支付回调地址"></el-input>
+        </el-form-item>
+        <el-form-item  label="大额支付回调地址" prop="hfPayOnlineNotifyUrl">
+            <el-input  v-model="form17.hfPayOnlineNotifyUrl" label="汇付支付回调地址"></el-input>
+        </el-form-item>
+        <el-form-item  label="汇付退款回调地址" prop="hfRefundNotifyUrl">
+            <el-input  v-model="form17.hfRefundNotifyUrl" label="汇付退款回调地址"></el-input>
+        </el-form-item>
+        <el-form-item  label="汇付大额退款回调地址" prop="hfOnlineRefundNotifyUrl">
+            <el-input  v-model="form17.hfOnlineRefundNotifyUrl" label="汇付大额退款回调地址"></el-input>
+        </el-form-item>
+
+        <div class="footer">
+          <el-button type="primary" @click="submitForm17">提  交</el-button>
+        </div>
+      </el-form>
+    </el-tab-pane>
+       <el-tab-pane label="点播配置" name="course.config">
+         <el-form ref="form18" :model="form18" label-width="120px">
+           <el-form-item label="完课模式">
+             <el-radio-group v-model="form18.completionMode">
+               <el-radio label="1">百分比</el-radio>
+               <el-radio label="2">分钟数</el-radio>
+             </el-radio-group>
+           </el-form-item>
+           <el-form-item label="完课进度(分)" v-if="form18.completionMode == 2">
+             <el-tooltip class="item" effect="dark" content="看多少分钟算完课" placement="top-end">
+               <el-input-number  v-model="form18.minutesNum" :min="1"></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="完课进度(%)" v-if="form18.completionMode == 1">
+             <el-tooltip class="item" effect="dark" content="看多少百分比算完课" placement="top-end">
+               <el-input-number  v-model="form18.answerRate" :min="1" :max="100"    ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="短链有效期(天)">
+             <el-tooltip class="item" effect="dark" content="短链有效期(天)" placement="top-end">
+               <el-input-number  v-model="form18.videoLinkExpireDate" :min="1"    ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="答题允许错误次数(次)">
+             <el-tooltip class="item" effect="dark" content="课程答题允许错误次数(次)" placement="top-end">
+               <el-input-number  v-model="form18.answerErrorCount" :min="1"     ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="每十分钟获取积分">
+             <el-tooltip class="item" effect="dark" content="每十分钟获取多少积分" placement="top-end">
+               <el-input-number  v-model="form18.videoIntegral" :min="1"    ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="答题获得积分">
+             <el-tooltip class="item" effect="dark" content="答题获得积分" placement="top-end">
+               <el-input-number  v-model="form18.answerIntegral" :min="1"    ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="看课默认线路" prop="defaultLine">
+             <el-radio-group v-model="form18.defaultLine">
+               <el-radio label="0">线路一</el-radio>
+               <el-radio label="1">线路二</el-radio>
+             </el-radio-group>
+           </el-form-item>
+           <el-form-item label="通用看课域名">
+             <el-tooltip class="item" effect="dark" content="真链域名" placement="top-end">
+               <el-input  v-model="form18.realLinkDomainName"     ></el-input>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="网页授权域名">
+             <el-tooltip class="item" effect="dark" content="公众号网页授权域名" placement="top-end">
+               <el-input  v-model="form18.authDomainName"  ></el-input>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="公众号appId">
+             <el-tooltip class="item" effect="dark" content="授权公众号appId" placement="top-end">
+               <el-input  v-model="form18.mpAppId"  ></el-input>
+             </el-tooltip>
+           </el-form-item>
+
+           <el-form-item label="小程序appid">
+             <el-tooltip class="item" effect="dark" content="小程序appid" placement="top-end">
+               <el-input  v-model="form18.miniprogramAppid"  ></el-input>
+             </el-tooltip>
+           </el-form-item>
+           <el-form-item label="小程序page路径">
+             <el-tooltip class="item" effect="dark" content="小程序消息打开后的路径" placement="top-end">
+               <el-input  v-model="form18.miniprogramPage"  ></el-input>
+             </el-tooltip>
+           </el-form-item>
+
+           <el-form-item label="奖励类型">
+             <el-radio-group v-model="form18.rewardType">
+               <el-radio label="1">红包</el-radio>
+               <el-radio label="2">积分</el-radio>
+             </el-radio-group>
+           </el-form-item>
+
+           <el-form-item label="红包金额" v-if="form18.rewardType == 1">
+             <el-tooltip class="item" effect="dark" content="课程默认红包金额" placement="top-end">
+               <el-input-number  v-model="form18.redPackageMoney" :min="0.01" ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+
+
+           <el-form-item label="禁止发送时间段">
+             <el-row v-for="(item, index) in form18.disabledTimeList" style="margin-top: 10px">
+               <el-time-picker
+                 class="custom-input"
+                 v-model="item.startDisabledTime"
+                 value-format="HH:mm"
+                 format="HH:mm"
+                 placeholder="开始时间"
+                 style="width: 130px;height: 20px;">
+               </el-time-picker>
+               <el-time-picker
+                 class="custom-input"
+                 v-model="item.endDisabledTime"
+                 value-format="HH:mm"
+                 format="HH:mm"
+                 placeholder="结束时间"
+                 style="width: 130px;height: 20px;margin-left: 10px">
+               </el-time-picker>
+               <el-button type="danger" icon="el-icon-delete" circle style="margin-left: 20px" @click="removeDisabledTime(index)"></el-button>
+             </el-row>
+             <el-button @click="addDisabledTime" style="margin-top: 10px">添加时间段</el-button>
+           </el-form-item>
+
+           <el-form-item label="红包模式" v-if="form18.rewardType==1">
+             <el-radio-group v-model="form18.redPacketMode">
+               <el-radio label="1">总公司</el-radio>
+               <el-radio label="2">分公司</el-radio>
+             </el-radio-group>
+           </el-form-item>
+
+           <el-form-item label="默认客服二维码图片" prop="companyUserQRCode">
+             <ImageUpload v-model="form18.companyUserQRCode" type="image" :num="10" :width="150" :height="150" :limit="1"/>
+           </el-form-item>
+           <el-form-item label="课程LOGO" prop="courseLogo">
+             <image-upload v-model="form18.courseLogo" :limit="1" />
+           </el-form-item>
+
+           <el-form-item label="开启评论/弹幕" prop="openCommentStatus">
+             <el-radio-group v-model="form18.openCommentStatus">
+               <el-radio :label="1" >开启评论</el-radio>
+               <el-radio :label="2" >开启弹幕</el-radio>
+               <el-radio :label="3" >关闭</el-radio>
+             </el-radio-group>
+           </el-form-item>
+        <el-form-item label="发送延时时间" prop="sendDelayTime"
+          :rules="rulesDelay"
+              >
+  <el-tooltip class="item" effect="dark" content="请输入延时时间,范围在1000毫秒-2000毫秒之间" placement="top-end">
+    <el-input
+      v-model.number="form18.sendDelayTime"
+      type="number"
+      :min="1000"
+      :max="2000"
+      placeholder="请输入1000-2000之间的数值">
+      <template slot="append">毫秒</template>
+    </el-input>
+  </el-tooltip>
+</el-form-item>
+           <el-form-item label="可查看评论条数" v-if="false">
+             <el-tooltip class="item" effect="dark" content="在评论区可以查看的历史评论条数,默认200" placement="top-end">
+               <el-input-number  v-model="form18.viewCommentNum" :min="1"></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+
+           <div class="line"></div>
+           <div style="float:right;margin-right:20px">
+             <el-button type="primary" @click="submitForm18">提交</el-button>
+           </div>
+         </el-form>
+       </el-tab-pane>
+       <el-tab-pane label="点播播放源配置" name="courseMa.config">
+         <el-button type="primary" @click="addCourseMaConfig" style="margin-bottom: 10px">添加配置</el-button>
+         <el-table  height="660" border v-loading="courseMaConfigLoading" :data="courseMaConfigList">
+           <el-table-column label="名称" align="center" prop="name">
+             <template slot-scope="scope">
+               <el-input v-model="scope.row.name" placeholder="请输入名称" :disabled="!scope.row.editing" />
+             </template>
+           </el-table-column>
+           <el-table-column label="类型" align="center" prop="type">
+             <template slot-scope="scope">
+               <el-select
+                 v-model="scope.row.type"
+                  placeholder="请选择类型"
+                 :disabled="!scope.row.editing">
+                 <el-option label="公众号" value="1"></el-option>
+                 <el-option label="小程序" value="2"></el-option>
+               </el-select>
+             </template>
+           </el-table-column>
+           <el-table-column label="AppId" align="center" prop="appid">
+             <template slot-scope="scope">
+               <el-input v-model="scope.row.appid" placeholder="请输入AppId" :disabled="!scope.row.editing" />
+             </template>
+           </el-table-column>
+           <el-table-column label="Secret" align="center" prop="secret">
+             <template slot-scope="scope">
+               <el-input v-model="scope.row.secret" placeholder="请输入Secret" :disabled="!scope.row.editing" />
+             </template>
+           </el-table-column>
+           <el-table-column label="token" align="center" prop="token">
+             <template slot-scope="scope">
+               <el-input v-model="scope.row.token" placeholder="请输入token" :disabled="!scope.row.editing" />
+             </template>
+           </el-table-column>
+           <el-table-column label="aesKey" align="center" prop="aesKey">
+             <template slot-scope="scope">
+               <el-input v-model="scope.row.aesKey" placeholder="请输入aesKey" :disabled="!scope.row.editing" />
+             </template>
+           </el-table-column>
+           <el-table-column label="msgDataFormat" align="center" prop="msgDataFormat">
+             <template slot-scope="scope">
+               <el-input v-model="scope.row.msgDataFormat" placeholder="请输入消息格式" :disabled="!scope.row.editing" />
+             </template>
+           </el-table-column>
+           <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+             <template slot-scope="scope">
+               <el-button
+                 v-if="!scope.row.editing"
+                 size="mini"
+                 type="text"
+                 icon="el-icon-edit"
+                 @click="handleEdit(scope.$index, scope.row)"
+               >编辑</el-button>
+               <el-button
+                 v-if="scope.row.editing"
+                 size="mini"
+                 type="text"
+                 icon="el-icon-check"
+                 @click="handleSave(scope.$index, scope.row)"
+               >保存</el-button>
+               <el-button
+                 size="mini"
+                 type="text"
+                 icon="el-icon-delete"
+                 @click="deleteCourseMaConfig(scope.$index)"
+               >删除</el-button>
+             </template>
+           </el-table-column>
+         </el-table>
+         <div class="footer">
+
+           <el-button type="primary" @click="submitCourseMaConfig">提 交</el-button>
+         </div>
+       </el-tab-pane>
+       <el-tab-pane label="红包商户配置" name="redPacket.config" >
+         <el-form ref="form19" :model="form19"  label-width="150px">
+           <el-form-item   label="红包接口类型" prop="isNew">
+             <el-radio-group v-model="form19.isNew">
+               <el-radio label="0">商家转账到零钱(旧)</el-radio>
+               <el-radio label="1">商家转账(新)</el-radio>
+             </el-radio-group>
+           </el-form-item>
+           <el-form-item   label="公众号appid" prop="appId">
+             <el-input   v-model="form19.appId"  label="请输入appId"></el-input>
+           </el-form-item>
+           <el-form-item   label="小程序appid" prop="appId">
+             <el-input   v-model="form19.miniappId"  label="请输入appId"></el-input>
+           </el-form-item>
+           <el-form-item   label="商户号" prop="mchId">
+             <el-input   v-model="form19.mchId"  label="请输入mchId"></el-input>
+           </el-form-item>
+           <el-form-item   label="商户密钥" prop="mchKey">
+             <el-input   v-model="form19.mchKey"  label="mchKey"></el-input>
+           </el-form-item>
+           <el-form-item   label="p12证书路径" prop="keyPath">
+             <el-input   v-model="form19.keyPath"  label="请输入keyPath"></el-input>
+           </el-form-item>
+           <el-form-item   label="apiV3密钥" prop="apiV3Key">
+             <el-input   v-model="form19.apiV3Key"  label="请输入apiV3Key"></el-input>
+           </el-form-item>
+           <el-form-item   label="公钥ID" prop="publicKeyId" v-if="form19.isNew==1">
+             <el-input   v-model="form19.publicKeyId"  label="请输入公钥ID"></el-input>
+           </el-form-item>
+           <el-form-item   label="公钥证书" prop="publicKeyPath" v-if="form19.isNew==1">
+             <el-input   v-model="form19.publicKeyPath"  label="请输入publicKeyPath"></el-input>
+           </el-form-item>
+           <el-form-item   label="key路径" prop="privateKeyPath">
+             <el-input   v-model="form19.privateKeyPath"  label="请输入"></el-input>
+           </el-form-item>
+           <el-form-item   label="cert路径" prop="privateCertPath">
+             <el-input   v-model="form19.privateCertPath"  label="请输入"></el-input>
+           </el-form-item>
+           <el-form-item   label="回调地址" prop="notifyUrl">
+             <el-input   v-model="form19.notifyUrl"  label="请输入"></el-input>
+           </el-form-item>
+
+           <div class="footer">
+             <el-button type="primary" @click="submitForm19">提  交</el-button>
+           </div>
+         </el-form>
+       </el-tab-pane>
+       <el-tab-pane label="企微Sop客户评级配置" name="qwRating:config">
+         <el-form ref="form20" :model="form20" :rules="rules20" label-width="120px">
+           <el-form-item label="评级天数(天)" prop="levelDay">
+             <el-tooltip class="item" effect="dark" content="最小评级天数(天)" placement="top-end">
+               <el-input-number v-model="form20.levelDay" :min="7" :max="365"></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+
+           <!-- A级范围 -->
+           <el-form-item label="A级范围(%)" prop="aLevelMin">
+             <el-tooltip class="item" effect="dark" content="A级客户范围最小值(%)" placement="top-end">
+               <el-input-number
+                 v-model="form20.aLevelMin"
+                 :min="0"
+                 :max="100"
+               ></el-input-number>
+             </el-tooltip>
+             <span style="margin: 0 10px;">-</span>
+             <span>100</span> <!-- aLevelMax 固定为 100 -->
+           </el-form-item>
+
+           <!-- B级范围 -->
+           <el-form-item label="B级范围(%)" prop="bLevelMin">
+             <el-tooltip class="item" effect="dark" content="B级客户范围最小值(%)" placement="top-end">
+               <el-input-number
+                 v-model="form20.bLevelMin"
+                 :min="0"
+                 :max="100"
+               ></el-input-number>
+             </el-tooltip>
+             <span style="margin: 0 10px;">-</span>
+             <el-tooltip class="item" effect="dark" content="B级客户范围最大值(%)" placement="top-end">
+               <el-input-number
+                 v-model="form20.bLevelMax"
+                 :min="0"
+                 :max="100"
+               ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+
+           <!-- C级范围 -->
+           <el-form-item label="C级范围(%)" prop="cLevelMin">
+             <el-tooltip class="item" effect="dark" content="C级客户范围最小值(%)" placement="top-end">
+               <el-input-number
+                 v-model="form20.cLevelMin"
+                 :min="0"
+                 :max="100"
+               ></el-input-number>
+             </el-tooltip>
+             <span style="margin: 0 10px;">-</span>
+             <el-tooltip class="item" effect="dark" content="C级客户范围最大值(%)" placement="top-end">
+               <el-input-number
+                 v-model="form20.cLevelMax"
+                 :min="0"
+                 :max="100"
+               ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+
+           <!-- D级范围 -->
+           <el-form-item label="D级范围(%)" prop="dLevelMin">
+             <span>0</span> <!-- dLevelMin 固定为 0 -->
+             <span style="margin: 0 10px;">-</span>
+             <el-tooltip class="item" effect="dark" content="D级客户范围最大值(%)" placement="top-end">
+               <el-input-number
+                 v-model="form20.dLevelMax"
+                 :min="0"
+                 :max="100"
+               ></el-input-number>
+             </el-tooltip>
+           </el-form-item>
+
+           <div class="line"></div>
+           <div style="float: right; margin-right: 20px">
+             <el-button type="primary" @click="submitForm20">提交</el-button>
+           </div>
+         </el-form>
+       </el-tab-pane>
+       <el-tab-pane label="企业理念" name="store.concept">
+         <el-form ref="form21" :model="form21" :rules="rules21" label-width="160px">
+           <el-form-item   label="企业理念图片" prop="images">
+             <Material v-model="images" type="image" :num="10" :width="150" :height="150" />
+           </el-form-item>
+           <el-form-item label="企业理念视频" prop="videoUrl">
+             <div>
+               <el-upload
+                 ref="upload"
+                 class="upload-demo"
+                 :action="uploadUrl"
+                 :on-success="handleSuccess"
+                 :before-upload="beforeUpload"
+                 :limit="1"
+                 :accept="videoAccept"
+               >
+                 <el-button size="small" type="primary">点击上传视频</el-button>
+               </el-upload>
+               <video :src="form21.videoUrl" controls style="max-width: 400px; max-height: 400px;"></video>
+             </div>
+           </el-form-item>
+           <div  class="footer">
+             <el-button type="primary" @click="submitForm21">提  交</el-button>
+           </div>
+         </el-form>
+       </el-tab-pane>
+    </el-tabs>
+
+
+
+
+    <el-dialog :title="product.title" v-if="product.open"  :visible.sync="product.open" width="1000px" append-to-body>
+        <product-attr-value-select  ref="Details"  @selectProduct="selectProduct" />
+    </el-dialog>
+    <el-dialog :title="deliveryGift.title" v-if="deliveryGift.open"  :visible.sync="deliveryGift.open" width="1000px" append-to-body>
+        <productDeliveryGiftValueSelect  ref="DeliveryGiftDetails"  @selectDeliveryGift="selectDeliveryGift" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {   getConfigByKey,updateConfigByKey, clearCache } from "@/api/system/config";
+import {listStore} from "@/api/his/storeProduct";
+import { js } from "js-beautify";
+import Material from '@/components/Material'
+import { allList} from "@/api/his/coupon";
+import {getAllFollowTempName } from "@/api/his/followTemp";
+import productAttrValueSelect from "../../components/his/productGiftValueSelect.vue";
+import productDeliveryGiftValueSelect from "../../components/his/productDeliveryGiftValueSelect.vue";
+import { Col } from "element-ui";
+import Editor from '@/components/Editor/wang';
+export default {
+  name: "Config",
+  components: {
+    Material,productAttrValueSelect,productDeliveryGiftValueSelect,Editor
+  },
+  data() {
+    return {
+      images:[],
+      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
+      videoAccept:"video/*",
+      courseMaConfigLoading:false,
+      courseMaConfigList:[],
+      deliveryGift:{
+        open:false,
+        title:"商品选择"
+      },
+      product:{
+        open:false,
+        title:"商品选择"
+      },
+      tempOptions:[],
+      integralLogTypeOptions:[],
+      activeName:"sys.oss.cloudStorage",
+      configId:null,
+      storeOPtions:[],
+      // 表单参数
+      form1: {
+      },
+      form2:{
+      },
+      form3:{
+      },
+      form4:{
+      },
+      form5:[],
+      form6:{
+      },
+      form7:{
+      },
+      form8:{
+      },
+      form9:{
+      },
+      form10:[],
+      form11:{
+      },
+      form12:[],
+      form13:{
+      },
+      form14:{
+      },
+      form15:{
+      },
+      form16:{
+      },
+      form17:{
+      },
+      form18:{
+        viewCommentNum: 200
+      },
+      form19:{
+      },
+      form20:{
+        levelDay: 7,
+        aLevelMin: 80,
+        aLevelMax: 100,
+        bLevelMin: 40,
+        bLevelMax: 80,
+        cLevelMin: 10,
+        cLevelMax: 40,
+        dLevelMin: 0,
+        dLevelMax: 10,
+      },
+      form21: {
+
+      },
+      photoArr:[],
+      couponList:[],
+      inquirySubTypeOptions:[],
+      // 表单校验
+      rules1: {
+      },
+      rules3: {
+      },
+      rulesDelay:[
+                {
+                  validator: (rule, value, callback) => {
+                    if (value === '' || value == null) {
+                      callback(); // 允许为空,不校验范围
+                    } else if (isNaN(value)) {
+                      callback(new Error('请输入有效数字'));
+                    } else if (value < 1000 || value > 2000) {
+                      callback(new Error('延时时间必须在1000-2000毫秒之间'));
+                    } else {
+                      callback();
+                    }
+                  },
+                  trigger: 'blur'
+                }
+              ],
+      rules20:{
+        levelDay: [{ required: true, message: '请输入评级天数', trigger: 'blur' }],
+        aLevelMin: [{ required: true, message: '请输入A级最小值', trigger: 'blur' }],
+        bLevelMin: [{ required: true, message: '请输入B级最小值', trigger: 'blur' }],
+        bLevelMax: [{ required: true, message: '请输入B级最大值', trigger: 'blur' }],
+        cLevelMin: [{ required: true, message: '请输入C级最小值', trigger: 'blur' }],
+        cLevelMax: [{ required: true, message: '请输入C级最大值', trigger: 'blur' }],
+        dLevelMax: [{ required: true, message: '请输入D级最大值', trigger: 'blur' }],
+      },
+      rules21:{}
+    };
+  },
+  created() {
+
+    this.getConfigByKey(this.activeName);
+    listStore().then(response => {
+      this.storeOPtions = response.rows;
+    });
+    this.getDicts("sys_inquiry_sub_type").then(response => {
+      this.inquirySubTypeOptions = response.data;
+    });
+    this.getDicts("sys_integral_log_type").then(response => {
+      this.integralLogTypeOptions = response.data;
+    });
+  },
+  watch: {
+    photoArr: function(val) {
+      this.form4.certs = val.join(',')
+    },
+    images: function(val) {
+     this.form21.images = val.join(',')
+   }
+  },
+  methods: {
+    handleSuccess(response, file) {
+      // 上传成功后的回调函数
+      this.myloading.close();
+      this.form21.videoUrl = response.url;
+      this.$refs.upload.clearFiles();
+    },
+    beforeUpload(file) {
+      // 上传前的钩子函数,可以在这里对文件进行处理
+      // 返回 false 则取消上传
+
+      // 例如限制文件大小
+      const isLt2M = file.size / 1024 / 1024 < 200;
+      if (!isLt2M) {
+        this.$message.error('上传视频文件大小不能超过 200MB!');
+        return false;
+      }
+      this.myloading = this.$loading({
+        lock: true,
+        text: '上传中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      });
+
+    },
+    submitCourseMaConfig() {
+      // 验证所有必填字段
+      const isValid = this.courseMaConfigList.every(item => {
+        return item.name && item.appid && item.secret;
+      });
+
+      if (!isValid) {
+        this.$message.error('请填写所有必填字段');
+        return;
+      }
+
+      var param = {configId: this.configId, configValue: JSON.stringify(this.courseMaConfigList)};
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("修改成功");
+        }
+      });
+    },
+      deleteInquirySubType(index,row){
+        this.form2.inquirySubType.splice(index, 1);
+      },
+      handleClick(tab, event){
+        this.getConfigByKey(tab.name);
+
+      },
+      handleAddProduct(){
+          setTimeout(() => {
+               this.$refs.Details.getDetails();
+          }, 1);
+          this.product.open=true;
+
+      },
+      addInquirySubType(){
+
+        this.form2.inquirySubType.push({lable:"名称",value:null})
+      },
+      handleDeliveryGift(){
+          setTimeout(() => {
+               this.$refs.DeliveryGiftDetails.getDetails();
+          }, 1);
+          this.deliveryGift.open=true;
+      },
+
+      selectProduct(row){
+
+        this.form8.gift=[row];
+        this.product.open=false;
+        this.$message({
+                  message: '添加成功',
+                  type: 'success'
+                });
+      },
+
+      selectDeliveryGift(row){
+
+        this.form8.deliveryGift=[row];
+        this.deliveryGift.open=false;
+        this.$message({
+                  message: '添加成功',
+                  type: 'success'
+                });
+      },
+      close(){
+        this.product.open=false;
+      },
+      getConfigByKey(key){
+        getConfigByKey(key).then(response => {
+          this.configId=response.data.configId;
+          this.configKey=response.data.configKey;
+          if(key=="sys.oss.cloudStorage"){
+            this.form1 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.inquiryConfig"){
+            this.form2 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.agreementConfig"){
+             this.form3 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.certs"){
+              this.form4 =JSON.parse(response.data.configValue);
+              if(this.form4.certs!=null){
+                  this.photoArr=this.form4.certs.split(",");
+              }
+          }
+          if(key=="his.brokerage"){
+              this.form5 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.coupon"){
+                allList().then(response => {
+                  this.couponList = response.data;
+                });
+              this.form6 =JSON.parse(response.data.configValue);
+
+          }
+          if(key=="his.store"){
+              this.form7 =JSON.parse(response.data.configValue);
+              getAllFollowTempName().then(response => {
+                this.tempOptions = response.rows;
+              });
+          }
+          if(key=="his.store"){
+              this.form7 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.package"){
+              this.form8 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.pay"){
+              this.form9 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.appShow"){
+              this.form10 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.integral"){
+              this.form11 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.sign"){
+              this.form12 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.config"){
+              this.form13 =JSON.parse(response.data.configValue);
+          }
+          if(key=="store.config"){
+             this.form17 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.sms"){
+              this.form14 =JSON.parse(response.data.configValue);
+          }
+          if(key=="qw:config"){
+              this.form15 =JSON.parse(response.data.configValue);
+          }
+          if(key=="his.brand"){
+            this.form16 =JSON.parse(response.data.configValue);
+            console.log(this.form16)
+          }
+          if(key=="course.config"){
+              this.form18 =JSON.parse(response.data.configValue);
+          }
+          if(key=="redPacket.config"){
+            this.form19 =JSON.parse(response.data.configValue);
+          }
+          if(key=="qwRating.config"){
+            this.form20 =JSON.parse(response.data.configValue);
+          }
+          if(key=="courseMa.config"){
+            this.courseMaConfigLoading = true;
+            if(response.data && response.data.configValue) {
+              this.courseMaConfigList = JSON.parse(response.data.configValue).map(item => ({
+                ...item,
+                editing: false
+              }));
+            } else {
+              this.courseMaConfigList = [];
+            }
+            this.courseMaConfigLoading = false;
+          }
+          else if(key=="store.concept"){
+            this.configId=response.data.configId;
+            this.configKey=response.data.configKey;
+            this.form21 =JSON.parse(response.data.configValue);
+            if(this.form21.images!=null){
+              this.images=this.form21.images.split(",");
+            }
+          }
+        });
+     },
+    /** 提交按钮 */
+    submitForm1: function() {
+      this.$refs["form1"].validate(valid => {
+        if (valid) {
+          var param={configId:this.configId,configValue:JSON.stringify(this.form1)}
+           updateConfigByKey(param).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("修改成功");
+              }
+            });
+        }
+      });
+    },
+    submitForm3(){
+      this.$refs["form3"].validate(valid => {
+        if (valid) {
+           var param={configId:this.configId,configValue:JSON.stringify(this.form3)}
+          updateConfigByKey(param).then(response => {
+             if (response.code === 200) {
+               this.msgSuccess("修改成功");
+             }
+           });
+           }
+           });
+        },
+  submitForm4(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form4)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm5(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form5)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm6(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form6)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm7(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form7)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm8(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form8)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm9(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form9)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm10(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form10)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm11(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form11)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm12(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form12)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm13(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form13)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm14(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form14)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+  submitForm15(){
+    var param={configId:this.configId,configValue:JSON.stringify(this.form15)}
+    updateConfigByKey(param).then(response => {
+       if (response.code === 200) {
+         this.msgSuccess("修改成功");
+       }
+     });
+  },
+    submitForm16(){
+      var param={configId:this.configId,configValue:JSON.stringify(this.form16)}
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("修改成功");
+        }
+      });
+    },
+    submitForm17(){
+      var param={configId:this.configId,configValue:JSON.stringify(this.form17)}
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("修改成功");
+        }
+      });
+    },
+    submitForm18(){
+      var param={configId:this.configId,configValue:JSON.stringify(this.form18)}
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("修改成功");
+        }
+      });
+    },
+    submitForm19(){
+      var param={configId:this.configId,configValue:JSON.stringify(this.form19)}
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("修改成功");
+        }
+      });
+    },
+    submitForm20(){
+
+      this.$refs['form20'].validate((valid) => {
+        if (valid) {
+          const { aLevelMin, aLevelMax, bLevelMin, bLevelMax, cLevelMin, cLevelMax, dLevelMin, dLevelMax } = this.form20;
+
+          // 检查范围是否连续且总长度为100%
+          const totalLength = (100 - aLevelMin) + (bLevelMax - bLevelMin) + (cLevelMax - cLevelMin) + (dLevelMax);
+          console.log("totalLength",totalLength)
+          if (totalLength!==100) {
+            this.$message.error('所有等级范围必须连续且总长度为100%');
+            return;
+          }
+
+          var param={configId:this.configId,configValue:JSON.stringify(this.form20)}
+          updateConfigByKey(param).then(response => {
+            if (response.code === 200) {
+              this.msgSuccess("修改成功");
+            }
+          });
+
+        } else {
+          this.$message.error('请检查输入');
+          return false;
+        }
+      });
+
+    },
+    submitForm21(){
+      var param={configId:this.configId,configKey:this.configKey,configValue:JSON.stringify(this.form21)}
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("修改成功");
+        }
+      });
+    },
+    submitform2(){
+      // 将对象转换为JSON字符串并保留两位小数
+      var json_data = JSON.stringify(this.form2, function(key, value) {
+        if ( key == "price") {
+          return value.toFixed(2);
+        }
+        return value;
+      });
+// 将对象转换为 JSON 字符串
+           var param={configId:this.configId,configValue:json_data};
+           updateConfigByKey(param).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess("修改成功");
+              }
+            });
+    },
+    /** 清理缓存按钮操作 */
+    handleClearCache() {
+      clearCache().then(response => {
+        if (response.code === 200) {
+          this.msgSuccess("清理成功");
+        }
+      });
+    },
+    deleteCourseMaConfig(index) {
+      this.$confirm('确认删除该配置?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.courseMaConfigList.splice(index, 1);
+        this.$message.success('删除成功');
+      }).catch(() => {});
+    },
+    addCourseMaConfig() {
+      this.courseMaConfigList.push({
+        name: "",
+        appid: "",
+        secret: "",
+        token: "",
+        aesKey: "",
+        msgDataFormat: "",
+        editing: true
+      });
+    },
+    handleEdit(index, row) {
+      this.$set(this.courseMaConfigList[index], 'editing', true);
+    },
+    handleSave(index, row) {
+      // 验证必填字段
+      if (!row.name || !row.appid || !row.secret) {
+        this.$message.error('请填写所有必填字段');
+        return;
+      }
+      this.$set(this.courseMaConfigList[index], 'editing', false);
+    },
+    addDisabledTime(){
+      if(this.form18.disabledTimeList == null || this.form18.disabledTimeList == undefined){
+        this.form18.disabledTimeList = []
+      }
+      this.form18.disabledTimeList.push({startDisabledTime: "", endDisabledTime: ""});
+      this.$forceUpdate();
+    },
+    removeDisabledTime(index){
+      this.form18.disabledTimeList.splice(index, 1);
+    },
+  }
+};
+</script>
+<style scoped>
+.footer{
+  width: 100%;
+  display: flex;
+  margin-top: 50px;
+  align-items: flex-end;
+  justify-content: flex-end;
+}
+</style>