Преглед изворни кода

Merge remote-tracking branch 'refs/remotes/origin/master' into 润天海外版

yfh пре 2 дана
родитељ
комит
7c3042da29

+ 6 - 0
.env.prod-hcl

@@ -27,6 +27,12 @@ VUE_APP_VIDEO_LINE_1 = https://hcltcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://hclobs.ylrztop.com
 
+
+#火山云视频地址域名
+VUE_APP_VIDE0_URL = https://hclvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = hcl-2114522511
+
 # 开发环境配置
 ENV = 'development'
 

+ 6 - 0
.env.prod-hzyy

@@ -27,6 +27,12 @@ VUE_APP_VIDEO_LINE_1 = https://hzyytcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://hzyyobs.ylrztop.com
 
+
+#火山云视频地址域名
+VUE_APP_VIDE0_URL = https://hzyyvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = hzyy-2114522511
+
 # 开发环境配置
 ENV = 'development'
 

+ 1 - 1
.env.prod-jnmy

@@ -28,7 +28,7 @@ VUE_APP_VIDEO_LINE_1 = https://jnmytcpv.ylrzcloud.com
 VUE_APP_VIDEO_LINE_2 = https://jnmyobs.ylrztop.com
 
 #火山云视频地址域名
-VUE_APP_VIDE0_URL = https://cdjnmyvolcengine.ylrztop.com
+VUE_APP_VIDEO_URL = https://cdjnmyvolcengine.ylrztop.com
 #火山云视频点播空间名
 VUE_APP_HSY_SPACE = cdjnmy-2114522511
 

+ 6 - 0
.env.prod-jzzx

@@ -27,6 +27,12 @@ VUE_APP_VIDEO_LINE_1 = https://jzzxtcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://jzzxobs.ylrztop.com
 
+
+#火山云视频地址域名
+VUE_APP_VIDE0_URL = https://jzzxvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = jzzx-2114522511
+
 # 开发环境配置
 ENV = 'development'
 

+ 9 - 0
.env.prod-knt

@@ -26,9 +26,16 @@ VUE_APP_COS_REGION = ap-chongqing
 VUE_APP_VIDEO_LINE_1 = https://jnmytcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://jnmyobs.ylrztop.com
+#火山云视频地址域名
+VUE_APP_VIDEO_URL = https://cdjnmyvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = cdjnmy-2114522511
 # 生产环境配置
 ENV = 'production'
 
+#直播解码路径
+LIVE_PATH = /live
+
 #FS管理系统/生产环境
 VUE_APP_BASE_API = '/prod-api'
 
@@ -37,3 +44,5 @@ VUE_APP_COURSE_DEFAULT = 1
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
+
+VUE_APP_LIVE_WS_URL = wss://liveapp.kangniantangyiyao.top/ws

+ 5 - 0
.env.prod-sczy

@@ -27,6 +27,11 @@ VUE_APP_VIDEO_LINE_1 = https://sczycpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://sczyobs.ylrztop.com
 
+#火山云视频地址域名
+VUE_APP_VIDE0_URL = https://sczytvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = sczy-2114522511
+
 # 开发环境配置
 ENV = 'development'
 

+ 4 - 4
.env.prod-shdn

@@ -1,11 +1,11 @@
 # 页面标题
-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备2024031984号-1
+VUE_APP_ICP_RECORD =鲁ICP备2024100689号-2
 # ICP网站访问地址
 VUE_APP_ICP_URL =https://beian.miit.gov.cn
 # 网站LOG

+ 11 - 1
.env.prod-ylrz

@@ -26,7 +26,14 @@ VUE_APP_COS_REGION = ap-chongqing
 # 线路一地址
 VUE_APP_VIDEO_LINE_1 = https://ylrztcpv.ylrzcloud.com
 # 线路二地址
-VUE_APP_VIDEO_LINE_2 = https://myhkkobs.ylrztop.com
+VUE_APP_VIDEO_LINE_2 = https://cdhytobs.ylrztop.com
+#火山云视频地址域名
+VUE_APP_VIDEO_URL = https://ylrzvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = ylrz-2114522511
+
+#直播解码路径
+VUE_APP_LIVE_PATH = /live
 
 # 开发环境配置
 ENV = 'production'
@@ -44,3 +51,6 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
 VUE_APP_PATIENT_INFO = '客户信息'
 # 添加病人
 VUE_APP_ADD_PATIENT = '添加信息'
+
+
+VUE_APP_LIVE_WS_URL = wss://websocket.scrm.ylrzcloud.com/ws

+ 2 - 4
Dockerfile

@@ -1,7 +1,5 @@
-
-
 #基于官方 NGINX 镜像部署(精简镜像)
-FROM nginx:alpine
+FROM swr.cn-east-2.myhuaweicloud.com/library/nginx:alpine
 
 # 复制本地打包好的 dist 目录到 NGINX 静态资源目录
 COPY ./dist /usr/share/nginx/html
@@ -13,4 +11,4 @@ COPY ./nginx.conf /etc/nginx/nginx.conf
 #EXPOSE 80
 
 # 启动 NGINX(前台运行,避免容器启动后退出)
-CMD ["nginx", "-g", "daemon off;"]
+CMD ["nginx", "-g", "daemon off;"]

+ 54 - 0
src/views/components/course/userCourseCatalogDetails.vue

@@ -133,6 +133,44 @@
                       @change="handleVideoChange" @selectProjects="handleSelectProjects" ref="videoUpload"
                       append-to-body/>
 
+        <el-form-item label="关联疗法" >
+          <el-button size="small" type="primary" @click="choosePackage">选取疗法</el-button>
+          <el-table border width="100%" style="margin-top:5px;"  :data="packageList">
+            <el-table-column label="疗法名称" align="center" prop="packageName"/>
+            <el-table-column label="疗法图片" align="center" prop="imgUrl">
+              <template slot-scope="scope">
+                <img :src="scope.row.imgUrl" style="height: 80px;">
+              </template>
+            </el-table-column>
+            <el-table-column label="疗法别名" align="center" prop="secondName"/>
+            <el-table-column label="总金额" align="center" prop="totalPrice"/>
+            <!-- 根据课程类型控制是否显示弹出时间列:0是公域(显示),1是私域(不显示) -->
+            <el-table-column label="弹出时间" align="center" width="250px" v-if="isPrivate == 0">
+              <template slot-scope="scope">
+                <div>
+                  <el-time-select
+                    v-model="scope.row.duration"
+                    size="mini"
+                    placeholder="选择时间"
+                    :picker-options="getPickerOptions()"
+                    @change="handleTimeChange(scope.$index, scope.row)"
+                  ></el-time-select>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" width="100px" fixed="right">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handlePackageDelete(scope.row)"
+                >删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-form-item >
+
         <el-form-item label="课题选择" prop="questionBankId">
           <el-button size="small" type="primary" @click="chooseQuestionBank">选取课题</el-button>
           <el-table border width="100%" style="margin-top:5px;" :data="form.questionBankList">
@@ -631,6 +669,22 @@ export default {
           .padStart(2, "0")}`, // 动态结束时间
       };
     },
+
+    // 处理时间选择框值变化
+    handleTimeChange(index, row) {
+      // 确保 packageList 中的数据被正确更新
+      this.$set(this.packageList, index, row);
+      // 同步更新 form.packageJson 字段
+      this.$nextTick(() => {
+        // 确保每个疗法包都有 duration 字段
+        this.packageList.forEach(item => {
+          if (item.duration === undefined || item.duration === null) {
+            item.duration = ''; // 空值应初始化为空字符串而不是null,避免显示"null"
+          }
+        });
+        this.form.packageJson = JSON.stringify(this.packageList);
+      });
+    },
     handlePackageDelete(row) {
       this.packageList.splice(this.packageList.findIndex(item => item.packageId === row.packageId), 1)
     },

+ 3 - 3
src/views/course/coursePlaySourceConfig/index.vue

@@ -589,13 +589,13 @@ export default {
       this.bindCurrentRow = row;  // 保存当前行数据
       this.bindForm.bindShow = true;
     },
-    changeSysPayModes(value){
-      console.log(value)
+    changeSysPayModes(value,row){
       const query = {
         pageNum: 1,
         pageSize: 100,
         merchantType: value,
-        isDeleted: 0
+        isDeleted: 0,
+        appId:this.bindCurrentRow.appid
       }
       listMerchantAppConfig(query).then( response => {
           this.merchantAppConfigList = response.rows;

+ 18 - 1
src/views/his/userCoupon/index.vue

@@ -186,21 +186,29 @@
           :title="show.title" :visible.sync="storeOpen">
       <storeOrderDetails  ref="storeDetails" />
     </el-drawer>
+    <el-drawer
+         :with-header="false"
+         size="75%"
+          :title="show.title" :visible.sync="storeOpenTypeThree">
+      <packageOrderDetails  ref="DetailsTypeThree" />
+    </el-drawer>
   </div>
 </template>
 <script>
 import { listUserCoupon, getUserCoupon, delUserCoupon, addUserCoupon, updateUserCoupon, exportUserCoupon } from "@/api/his/userCoupon";
 import inquiryOrderDetails from '../../components/his/inquiryOrderDetails.vue';
 import storeOrderDetails from '../../components/his/storeOrderDetails.vue';
+import packageOrderDetails from '../../components/his/packageOrderDetails.vue';
 export default {
   name: "UserCoupon",
-  components: { inquiryOrderDetails,storeOrderDetails },
+  components: { inquiryOrderDetails,storeOrderDetails,packageOrderDetails },
   data() {
     return {
       show:{
         open:false,
         },
       storeOpen:false,
+      storeOpenTypeThree:false,
       // 遮罩层
       createTime:[],
       useTime:[],
@@ -290,6 +298,15 @@ export default {
               setTimeout(() => {
                    this.$refs.storeDetails.getDetails(row.businessId);
               }, 1);
+            }else if(row.businessType==3){
+              console.log('进入 businessType=3 分支');
+              this.storeOpenTypeThree=true;
+              console.log('设置 storeOpenTypeThree = true 后:', this.storeOpenTypeThree);
+              setTimeout(() => {
+                   console.log('调用 DetailsTypeThree 组件 getDetails');
+                   
+                   this.$refs.DetailsTypeThree.getDetails(row.businessId);
+              }, 1);
             }
         },
     handleClickX(tab, event) {

+ 11 - 0
src/views/live/order/index.vue

@@ -232,6 +232,15 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="汇付商户订单号" prop="hfshh">
+        <el-input
+          v-model="queryParams.hfshh"
+          placeholder="请输入汇付商户订单号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
 
 <!--      <el-form-item label="成本价格" prop="cost">-->
 <!--        <el-input-->
@@ -447,6 +456,7 @@
       <el-table-column label="手机号" align="center" prop="userPhone" width="120px" />
       <el-table-column label="商品规格" align="center" prop="productSpec" width="120px" />
       <el-table-column label="商品数量" align="center" prop="totalNum" width="100px" />
+      <el-table-column label="汇付商户订单号" align="center" prop="hfshh" width="100px" />
       <el-table-column label="订单金额" align="center" prop="totalPrice" width="100px">
         <template slot-scope="scope">
           <span v-if="scope.row.totalPrice != null">{{ scope.row.totalPrice.toFixed(2) }}</span>
@@ -717,6 +727,7 @@ export default {
         pageSize: 10,
         companyId: null,
         deptId: null,
+        hfshh: null,
         orderTypeFilter: null,
         salesName: null,
         orderCodes: [],

+ 9 - 9
src/views/qw/qwCompany/index.vue

@@ -200,14 +200,14 @@
         <el-form-item label="聊天工具栏实际运用地址" prop="chatToolbarOauth">
           <el-input v-model="form.chatToolbarOauth" placeholder="请输入聊天工具栏实际运用地址" />
         </el-form-item>
-        <el-form-item label="app分享小程序原始id" prop="yjfyyAppId">
-          <el-input v-model="form.yjfyyAppId" placeholder="app分享小程序原始id" />
+        <el-form-item label="app分享小程序原始id" prop="shareAppId">
+          <el-input v-model="form.shareAppId" placeholder="app分享小程序原始id" />
         </el-form-item>
-        <el-form-item label="app分享小程序应用id" prop="yjfyyAgentId">
-          <el-input v-model="form.yjfyyAgentId" placeholder="app分享小程序应用id" />
+        <el-form-item label="app分享小程序应用id" prop="shareAgentId">
+          <el-input v-model="form.shareAgentId" placeholder="app分享小程序应用id" />
         </el-form-item>
-        <el-form-item label="app分享小程序schma" prop="yjfyySchema">
-          <el-input v-model="form.yjfyySchema" placeholder="app分享小程序schema" />
+        <el-form-item label="app分享小程序schma" prop="shareSchema">
+          <el-input v-model="form.shareSchema" placeholder="app分享小程序schema" />
         </el-form-item>
         <el-form-item label="关联公司" prop="companyIds">
 
@@ -369,9 +369,9 @@ export default {
         createTime: null,
         updateTime: null,
         createBy: null,
-        yjfyyAppId: null,
-        yjfyyAgentId: null,
-        yjfyySchema: null,
+        shareAppId: null,
+        shareAgentId: null,
+        shareSchema: null,
       };
       this.resetForm("form");
     },

+ 99 - 0
src/views/system/config/config.vue

@@ -1,6 +1,89 @@
 <template>
   <div class="app-container">
     <el-tabs v-model="activeName" @tab-click="handleClick">
+
+
+
+      <el-tab-pane label="个微配置" name="wx.config">
+        <el-form :model="form30" label-width="200px">
+          <el-form-item  label="新账号判断时间" prop="newAccountTime">
+            <el-input v-model="form30.newAccountTime" placeholder="请输入天" style="width: 150px">
+              <template slot="append">天</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="新账号每天添加数量" prop="newAccountAddNum">
+            <el-input v-model="form30.newAccountAddNum" placeholder="请输入个" style="width: 150px">
+              <template slot="append">个</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="普通账号每天添加数量" prop="accountAddNum">
+            <el-input v-model="form30.accountAddMin" placeholder="请输入个" style="width: 150px">
+              <template slot="append">个</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.accountAddMax" placeholder="请输入个" style="width: 150px">
+              <template slot="append">个</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="文字消息(条/分)" prop="accountAddNum">
+            <el-input v-model="form30.txtMsgMinNum" placeholder="请输入条" style="width: 150px">
+              <template slot="append">条</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.txtMsgMaxNum" placeholder="请输入条" style="width: 150px">
+              <template slot="append">条</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="图片消息(条/分)" prop="accountAddNum">
+            <el-input v-model="form30.imgMsgMinNum" placeholder="请输入条" style="width: 150px">
+              <template slot="append">条</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.imgMsgMaxNum" placeholder="请输入条" style="width: 150px">
+              <template slot="append">条</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="新号添加好友频率(条/分)" prop="accountAddNum">
+            <el-input v-model="form30.newAccountAddWxMin" placeholder="请输入分" style="width: 150px">
+              <template slot="append">分</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.newAccountAddWxMax" placeholder="请输入分" style="width: 150px">
+              <template slot="append">分</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="新号消息发送频率(条/秒)" prop="accountAddNum">
+            <el-input v-model="form30.newAccountSendMsgMin" placeholder="请输入秒" style="width: 150px">
+              <template slot="append">秒</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.newAccountSendMsgMax" placeholder="请输入秒" style="width: 150px">
+              <template slot="append">秒</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="添加好友频率(条/分)" prop="accountAddNum">
+            <el-input v-model="form30.accountAddWxMin" placeholder="请输入分" style="width: 150px">
+              <template slot="append">分</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.accountAddWxMax" placeholder="请输入分" style="width: 150px">
+              <template slot="append">分</template>
+            </el-input>
+          </el-form-item>
+          <el-form-item  label="消息发送频率(条/秒)" prop="accountAddNum">
+            <el-input v-model="form30.accountSendMsgMin" placeholder="请输入秒" style="width: 150px">
+              <template slot="append">秒</template>
+            </el-input>
+            <span> 到 </span>
+            <el-input v-model="form30.accountSendMsgMax" placeholder="请输入秒" style="width: 150px">
+              <template slot="append">秒</template>
+            </el-input>
+          </el-form-item>
+          <div class="footer">
+            <el-button type="primary" @click="submitForm30">提 交</el-button>
+          </div>
+        </el-form>
+      </el-tab-pane>
       <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">
@@ -2547,6 +2630,7 @@ export default {
       },
       form27: {},
       form28: {},
+      form30: {},
       form29:{
         //是否开启拼手气红包
         enableRandomRedpacket:false,
@@ -2953,6 +3037,13 @@ export default {
           this.form29 = {...this.form29, ...JSON.parse(response.data.configValue)}
           }
         }
+        if (key == 'wx.config') {
+          if(!!response.data){
+          this.configId = response.data.configId
+          this.configKey = response.data.configKey
+          this.form30 = {...this.form30, ...JSON.parse(response.data.configValue)}
+          }
+        }
       })
     },
     /** 提交按钮 */
@@ -3229,6 +3320,14 @@ export default {
         }
       })
     },
+    submitForm30(){
+      const param = { configId: this.configId, configKey: this.configKey, configValue: JSON.stringify(this.form30) }
+      updateConfigByKey(param).then(response => {
+        if (response.code === 200) {
+          this.msgSuccess('修改成功')
+        }
+      })
+    },
     formatColumns(){
       console.log(this.form27.pass_columns)
 

+ 1 - 1
vue.config.js

@@ -34,7 +34,7 @@ module.exports = {
     proxy: {
       // 为 watch 模块单独设置的代理
       '/watch-api': {
-        target: 'http://localhost:8114', // 另一个目标服务器
+        target: 'http://localhost:8004', // 另一个目标服务器
         changeOrigin: true,
         pathRewrite: {
           '^/watch-api': '' // 将 /watch-api 替换为空