Bläddra i källkod

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

yjwang 2 månader sedan
förälder
incheckning
791993ee51

+ 4 - 4
.env.prod-bjyjb

@@ -5,9 +5,9 @@ VUE_APP_TITLE_INDEX =医健宝互联网医院
 # 公司名称
 VUE_APP_COMPANY_NAME =医健宝智慧(北京)医药科技有限公司
 # ICP备案号
-VUE_APP_ICP_RECORD =
+VUE_APP_ICP_RECORD =京ICP备2025133930号-2
 # ICP网站访问地址
-VUE_APP_ICP_URL =
+VUE_APP_ICP_URL =https://beian.miit.gov.cn
 # 网站LOG
 VUE_APP_LOG_URL =@/assets/logo/bjyjb.jpg
 # 存储桶配置
@@ -23,9 +23,9 @@ VUE_APP_COS_BUCKET = bjyjb-1323137866
 # 存储桶配置
 VUE_APP_COS_REGION = ap-chongqing
 # 线路一地址
-VUE_APP_VIDEO_LINE_1 = https://cqxzttcpv.ylrzcloud.com
+VUE_APP_VIDEO_LINE_1 = https://bjyjbtcpv.ylrzcloud.com
 # 线路二地址
-VUE_APP_VIDEO_LINE_2 = https://cqxztobs.ylrztop.com
+VUE_APP_VIDEO_LINE_2 = https://bjyjbobs.ylrztop.com
 
 # 开发环境配置
 ENV = 'production'

+ 2 - 2
.env.prod-kyt

@@ -1,7 +1,7 @@
 # 页面标题
 VUE_APP_TITLE =互联网医院管理系统
 # 首页菜单标题
-VUE_APP_TITLE_INDEX =互联网医院管理系统
+VUE_APP_TITLE_INDEX =宽益堂管理系统
 # 公司名称
 VUE_APP_COMPANY_NAME =重庆云联融智科技有限公司
 # ICP备案号
@@ -9,7 +9,7 @@ VUE_APP_ICP_RECORD =渝ICP备2024031984号-1
 # ICP网站访问地址
 VUE_APP_ICP_URL =https://beian.miit.gov.cn
 # 网站LOG
-VUE_APP_LOG_URL =@/assets/logo/ylrz.png
+VUE_APP_LOG_URL =@/assets/logo/kyt.jpg
 # 存储桶配置
 VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
 # 存储桶配置

+ 40 - 0
.env.prod-syysy

@@ -0,0 +1,40 @@
+# 页面标题
+VUE_APP_TITLE =互联网医院管理系统
+# 首页菜单标题
+VUE_APP_TITLE_INDEX =益寿缘
+# 公司名称
+VUE_APP_COMPANY_NAME =沈阳铁西益寿缘中医院有限责任公司
+# ICP备案号
+VUE_APP_ICP_RECORD =辽ICP备2024035076号-17
+# ICP网站访问地址
+VUE_APP_ICP_URL =https://beian.miit.gov.cn
+# 网站LOG
+VUE_APP_LOG_URL =@/assets/logo/syysy.png
+# 存储桶配置
+VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
+# 存储桶配置
+VUE_APP_OBS_SECRET_ACCESS_KEY = sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
+# 存储桶配置
+VUE_APP_OBS_SERVER = https://obs.cn-north-4.myhuaweicloud.com
+# 存储桶配置
+VUE_APP_OBS_BUCKET = syysy-hw079058881
+# 存储桶配置
+VUE_APP_COS_BUCKET = syysy -1323137866
+# 存储桶配置
+VUE_APP_COS_REGION = ap-chongqing
+# 线路一地址
+VUE_APP_VIDEO_LINE_1 = https://syysytcpv.ylrzcloud.com
+# 线路二地址
+VUE_APP_VIDEO_LINE_2 = https://syysyobs.ylrztop.com
+
+# 开发环境配置
+ENV = 'development'
+
+# 今正互联网医院管理系统/开发环境
+VUE_APP_BASE_API = '/prod-api'
+
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
+# 路由懒加载
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 39 - 0
.env.prod-zkzh

@@ -0,0 +1,39 @@
+# 页面标题
+VUE_APP_TITLE = 中康SCRM管理系统
+# 首页菜单标题
+VUE_APP_TITLE_INDEX = 陕西中康智慧
+# 公司名称
+VUE_APP_COMPANY_NAME = 陕西中康智慧药房有限公司
+# ICP备案号
+VUE_APP_ICP_RECORD = 陕ICP备2024048690号-2
+# ICP网站访问地址
+VUE_APP_ICP_URL =https://beian.miit.gov.cn
+# 网站LOG
+VUE_APP_LOG_URL =@/assets/logo/zkzh_logo.png
+# 存储桶配置
+VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
+# 存储桶配置
+VUE_APP_OBS_SECRET_ACCESS_KEY = sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
+# 存储桶配置
+VUE_APP_OBS_SERVER = https://obs.cn-north-4.myhuaweicloud.com
+# 存储桶配置
+VUE_APP_OBS_BUCKET = zkzh-hw079058881
+# 存储桶配置
+VUE_APP_COS_BUCKET = zkzh-1323137866
+# 存储桶配置
+VUE_APP_COS_REGION = ap-chongqing
+# 线路一地址
+VUE_APP_VIDEO_LINE_1 = https://zkzhtcpv.ylrzcloud.com
+# 线路二地址
+VUE_APP_VIDEO_LINE_2 = https://zkzhobs.ylrztop.com
+# 生产环境配置
+ENV = 'production'
+
+#FS管理系统/生产环境
+VUE_APP_BASE_API = '/prod-api'
+
+#默认 1、会员 2、企微
+VUE_APP_COURSE_DEFAULT = 1
+
+# 路由懒加载
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 2 - 0
package.json

@@ -33,6 +33,8 @@
     "build:prod-bjyjb": "vue-cli-service build --mode prod-bjyjb",
     "build:prod-bjczwh": "vue-cli-service build --mode prod-bjczwh",
     "build:prod-fby": "vue-cli-service build --mode prod-fby",
+    "build:prod-zkzh": "vue-cli-service build --mode prod-zkzh",
+    "build:prod-syysy": "vue-cli-service build --mode prod-syysy",
     "preview": "node build/index.js --preview",
     "lint": "eslint --ext .js,.vue src"
   },

+ 8 - 0
src/api/course/userCoursePeriod.js

@@ -199,3 +199,11 @@ export function periodList(data) {
     data: data
   })
 }
+// 根据公司批量设置红包金额
+export function batchSaveRedPacketByCompany(data) {
+  return request({
+    url: '/course/period/batchRedPacket/byCompany',
+    method: 'post',
+    data: data
+  })
+}

+ 2 - 2
src/api/his/storeOrder.js

@@ -159,7 +159,7 @@ export function updateOrder(data) {
 // 修改订单
 export function updateStoreOrder(data) {
   return request({
-    url: '/his/storeOrder/updateStoreOrder',
+    url: '/his/storeOrder',
     method: 'put',
     data: data
   })
@@ -296,4 +296,4 @@ export function getErpAccount() {
     url: '/his/storeOrder/getErpAccount',
     method: 'get'
   })
-}
+}

+ 2 - 2
src/api/hisStore/components/productOrder.vue

@@ -37,9 +37,9 @@
           <el-button size="mini" @click="addTuiMoney()" >分佣</el-button>
         </div>
 
-        <div class="operate-button-container" v-if="order.extendOrderId!=null"  v-hasPermi="['store:storeOrder:getEroOrder']"  >
+<!--        <div class="operate-button-container" v-if="order.extendOrderId!=null"  v-hasPermi="['store:storeOrder:getEroOrder']"  >
           <el-button size="mini" @click="showErpOrder()" >查看ERP订单信息</el-button>
-        </div>
+        </div>-->
         <div class="operate-button-container" v-if="order.isPayRemain!=null&&order.isPayRemain==1"  v-hasPermi="['store:storeOrder:auditPayRemain']"  >
           <el-button size="mini" @click="auditPayRemain()" >尾款审核</el-button>
         </div>

BIN
src/assets/logo/kyt.jpg


BIN
src/assets/logo/syysy.png


BIN
src/assets/logo/zkzh_logo.png


+ 36 - 32
src/views/components/course/userCourseCatalogDetails.vue

@@ -6,7 +6,7 @@
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="小节名称" prop="title">
         <el-input v-model="queryParams.title" placeholder="请输入小节名称" clearable size="small"
-          @keyup.enter.native="handleQuery" />
+                  @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -16,23 +16,23 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-          v-hasPermi="['course:userCourseVideo:add']">新增目录</el-button>
+                   v-hasPermi="['course:userCourseVideo:add']">新增目录</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" plain :disabled="!ids || ids.length <= 0" size="mini" @click="openUpdates"
-          v-hasPermi="['course:userCourseVideo:updateTime']">修改时间</el-button>
+                   v-hasPermi="['course:userCourseVideo:updateTime']">修改时间</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" plain size="mini" @click="openAdds"
-          v-hasPermi="['course:userCourseVideo:batchAdd']">批量添加</el-button>
+                   v-hasPermi="['course:userCourseVideo:batchAdd']">批量添加</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" plain size="mini" @click="updateRedPageckeOpen"
-          v-hasPermi="['course:userCourseVideo:updateRed']">修改红包</el-button>
+                   v-hasPermi="['course:userCourseVideo:updateRed']">修改红包</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
-          v-hasPermi="['course:userCourseVideo:remove']">删除</el-button>
+                   v-hasPermi="['course:userCourseVideo:remove']">删除</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
@@ -72,17 +72,17 @@
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-            v-hasPermi="['course:userCourseVideo:edit']">修改</el-button>
+                     v-hasPermi="['course:userCourseVideo:edit']">修改</el-button>
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleComment(scope.row)"
-            v-hasPermi="['course:courseWatchComment:list']">查看评论</el-button>
+                     v-hasPermi="['course:courseWatchComment:list']">查看评论</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-            v-hasPermi="['course:userCourseVideo:remove']">删除</el-button>
+                     v-hasPermi="['course:userCourseVideo:remove']">删除</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" />
+                @pagination="getList" />
     <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px" v-loading="uploadLoading">
         <el-form-item label="视频标题" prop="title">
@@ -120,17 +120,17 @@
 
         <el-form-item label="视频缩略图" prop="thumbnail">
           <el-upload v-model="form.thumbnail" class="avatar-uploader" :action="uploadUrl" :show-file-list="false"
-            :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
+                     :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
             <img v-if="form.thumbnail" :src="form.thumbnail" class="avatar" width="300px">
             <i v-else class="el-icon-plus avatar-uploader-icon"></i>
           </el-upload>
         </el-form-item>
         <video-upload :type="1" :isPrivate="isPrivate" :fileKey.sync="form.fileKey" :fileSize.sync="form.fileSize"
-          :videoUrl.sync="videoUrl" :fileName.sync="form.fileName" :line_1.sync="form.lineOne"
-          :line_2.sync="form.lineTwo" :line_3.sync="form.lineThree" :thumbnail.sync="form.thumbnail"
-          :uploadType.sync="form.uploadType" :isTranscode.sync="form.isTranscode"
-          :transcodeFileKey.sync="form.transcodeFileKey" @video-duration="handleVideoDuration"
-          @change="handleVideoChange" @selectProjects="handleSelectProjects" ref="videoUpload" append-to-body />
+                      :videoUrl.sync="videoUrl" :fileName.sync="form.fileName" :line_1.sync="form.lineOne"
+                      :line_2.sync="form.lineTwo" :line_3.sync="form.lineThree" :thumbnail.sync="form.thumbnail"
+                      :uploadType.sync="form.uploadType" :isTranscode.sync="form.isTranscode"
+                      :transcodeFileKey.sync="form.transcodeFileKey" @video-duration="handleVideoDuration"
+                      @change="handleVideoChange" @selectProjects="handleSelectProjects" ref="videoUpload" append-to-body />
 
         <el-form-item label="课题选择" prop="questionBankId">
           <el-button size="small" type="primary" @click="chooseQuestionBank">选取课题</el-button>
@@ -155,7 +155,7 @@
             <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="handleQuestionBankDelete(scope.row)">删除</el-button>
+                           @click="handleQuestionBankDelete(scope.row)">删除</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -177,7 +177,7 @@
             <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="handleCourseProductDelete(scope.row)">删除</el-button>
+                           @click="handleCourseProductDelete(scope.row)">删除</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -204,12 +204,12 @@
       <el-form ref="form" :model="updateBatchData.form" label-width="110px">
         <el-form-item label="看课时间" prop="timeRange">
           <el-time-picker is-range v-model="updateBatchData.form.timeRange" range-separator="至" start-placeholder="开始时间"
-            value-format="HH:mm:ss" end-placeholder="结束时间" placeholder="选择时间范围">
+                          value-format="HH:mm:ss" end-placeholder="结束时间" placeholder="选择时间范围">
           </el-time-picker>
         </el-form-item>
         <el-form-item label="领取红包时间" prop="lastJoinTime">
           <el-time-picker v-model="updateBatchData.form.lastJoinTime" :selectableRange="updateBatchData.form.timeRange"
-            value-format="HH:mm:ss" placeholder="选择时间范围">
+                          value-format="HH:mm:ss" placeholder="选择时间范围">
           </el-time-picker>
           <p style="color: red;margin: 0;font-size: 12px">超过领取红包时间,只允许看课,不允许领取红包</p>
         </el-form-item>
@@ -230,19 +230,19 @@
       <el-form :inline="true" :model="addBatchData.queryParams" class="library-search">
         <el-form-item label="素材名称">
           <el-input v-model="addBatchData.queryParams.resourceName" placeholder="请输入素材名称" clearable size="small"
-            @keyup.enter.native="resourceList" />
+                    @keyup.enter.native="resourceList" />
         </el-form-item>
         <el-form-item label="类型">
           <el-select v-model="addBatchData.queryParams.typeId" @change="changeCateType" placeholder="请选择素材类型" clearable
-            size="small">
+                     size="small">
             <el-option v-for="item in addBatchData.typeOptions" :key="item.dictValue" :label="item.dictLabel"
-              :value="item.dictValue" />
+                       :value="item.dictValue" />
           </el-select>
         </el-form-item>
         <el-form-item label="子类型">
           <el-select v-model="addBatchData.queryParams.typeSubId" placeholder="请选择素材子类型" clearable size="small">
             <el-option v-for="item in addBatchData.typeSubOptions" :key="item.dictValue" :label="item.dictLabel"
-              :value="item.dictValue" />
+                       :value="item.dictValue" />
           </el-select>
         </el-form-item>
         <el-form-item>
@@ -252,7 +252,7 @@
 
       <!-- 视频列表 -->
       <el-table v-loading="addBatchData.loading" :data="addBatchData.list"
-        @selection-change="handVideoleSelectionChange" height="400px">
+                @selection-change="handVideoleSelectionChange" height="400px">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="素材名称" align="center" prop="resourceName" />
         <el-table-column label="文件名称" align="center" prop="fileName" />
@@ -274,8 +274,8 @@
 
       <!-- 分页 -->
       <pagination v-show="addBatchData.total > 0" :total="addBatchData.total"
-        :page.sync="addBatchData.queryParams.pageNum" :limit.sync="addBatchData.queryParams.pageSize"
-        @pagination="resourceList" />
+                  :page.sync="addBatchData.queryParams.pageNum" :limit.sync="addBatchData.queryParams.pageSize"
+                  @pagination="resourceList" />
 
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="batchVideoSave">确 定</el-button>
@@ -304,9 +304,9 @@
       </div>
     </el-dialog>
     <el-dialog :title="commentDialog.title" :visible.sync="commentDialog.open" width="1000px" append-to-body
-      :close-on-click-modal="false">
+               :close-on-click-modal="false">
       <course-watch-comment ref="courseWatchComment" :courseId="commentDialog.courseId" :videoId="commentDialog.videoId"
-        v-if="commentDialog.open">
+                            v-if="commentDialog.open">
       </course-watch-comment>
     </el-dialog>
 
@@ -429,7 +429,9 @@ export default {
       // 非多个禁用
       multiple: true,
       // 表单参数
-      form: {},
+      form: {
+        courseProducts:[]
+      },
       updateBatchData: {
         open: false,
         form: {}
@@ -765,10 +767,12 @@ export default {
             });
             return
           }
-          if (!this.form.timeRange&& this.form.timeRange.length === 2) {
+
+          if (this.form.timeRange && this.form.timeRange.length === 2) {
             this.form.viewStartTime = this.form.timeRange[0];
             this.form.viewEndTime = this.form.timeRange[1];
           }
+
           if (this.form.duration == null) {
             this.$message({
               message: '未识别到视频时长请稍等。。。',
@@ -777,7 +781,7 @@ export default {
             return
           }
           if (this.form.isProduct != null && this.form.isProduct == 1 && this.form.courseProducts.length < 1) {
-             this.$message({
+            this.$message({
               message: '请选择关联商品',
               type: 'warning'
             });

+ 123 - 32
src/views/components/his/storeOrderDetails.vue

@@ -302,7 +302,8 @@
                          <el-option key="STO"  label="申通" value="ZTO" />
                          <el-option key="JD"  label="京东" value="JD" />
                          <el-option key="DBL"  label="德邦" value="DBL" />
-						 <el-option key="YD"  label="韵达" value="YD" />
+						              <el-option key="YD"  label="韵达" value="YD" />
+						              <el-option key="STO"  label="申通" value="STO" />
                        </el-select>
                      </el-form-item>
                     <el-form-item label="物流单号" prop="deliverySn"  >
@@ -342,6 +343,7 @@
                           :key="dict.dictValue"
                           :label="dict.dictLabel"
                           :value="dict.dictValue"
+                          :disabled="dict.dictLabel == '待推送'"
                         />
                       </el-select>
                    </el-form-item>
@@ -356,7 +358,7 @@
                       </el-select>
                    </el-form-item>
                    <el-form-item label="物流跟踪状态" prop="deliveryType" >
-                   <el-select v-model="editForm.deliveryType" placeholder="请选择状态" clearable size="small" filterable>
+                    <el-select v-model="editForm.deliveryType" placeholder="请选择状态" clearable size="small" filterable>
                         <el-option
                           v-for="dict in deliveryTypeOptions "
                           :key="dict.dictValue"
@@ -366,7 +368,14 @@
                       </el-select>
                    </el-form-item>
                    <el-form-item label="详情地址" prop="userAddress"  >
-                    <el-input v-model="editForm.userAddress" placeholder="请输入" />
+                    <el-cascader
+                      ref="citySelect"
+                      v-model="cityIds"
+                      :options="citys"
+                      @change="handleCityChange"
+                      clearable>
+                    </el-cascader>
+                    <el-input v-model="editForm.userAddress" placeholder="请输入详细地址(不含省/市/区)" />
                    </el-form-item>
                    <el-form-item label="收货人电话" prop="userPhone"  >
                     <el-input v-model="editForm.userPhone" placeholder="请输入" />
@@ -428,6 +437,7 @@ import packageOrderDetails from '../his/packageOrderDetails2.vue';
 import prescribeDetails from '../his/prescribeDetails.vue';
 import msgDetails from '../../components/his/followMsgDetails.vue';
 import { getTcmScheduleList } from "@/api/company/schedule";
+import {getCitys} from "@/api/store/city";
   export default {
     name: "orderDe",
     props:["data"],
@@ -544,8 +554,12 @@ import { getTcmScheduleList } from "@/api/company/schedule";
           deliveryName:null,
           deliverySn:null,
           orderId:null,
-        }
+        },
+        cityIds:[],
+        citys:[],
+        userAddress:null,
       }
+
     },
 
     created() {
@@ -600,6 +614,35 @@ import { getTcmScheduleList } from "@/api/company/schedule";
 
     },
     methods: {
+      getCitys() {
+        return getCitys().then(res => {
+          this.citys = res.data || [];
+          return this.citys;
+        });
+      },
+      // 新增:切换省市区
+      handleCityChange(val) {
+        this.cityIds = Array.isArray(val) ? val : [];
+      },
+
+      // 新增:根据已选的 cityIds 从 citys 中获取对应的 label 数组 [省, 市, 区]
+      getCityLabelsByIds() {
+        if (!this.cityIds || this.cityIds.length === 0) return [];
+        const [pVal, cVal, aVal] = this.cityIds;
+        const p = this.citys.find(p => p.value === pVal);
+        const c = p?.children?.find(c => c.value === cVal);
+        const a = c?.children?.find(a => a.value === aVal);
+        return [p?.label, c?.label, a?.label].filter(Boolean);
+      },
+
+      // 新增:拼装完整地址 = 省 市 区 + 详细地址
+      buildFullAddress() {
+        const region = this.getCityLabelsByIds().join(' ');
+        const detail = (this.editForm.userAddress || '').trim();
+        console.log(region)
+        console.log(detail)
+        return region && detail ? `${region} ${detail}` : (region || detail || '');
+      },
 
       followMsg(row){
          const userId = this.item.userId;
@@ -630,8 +673,11 @@ import { getTcmScheduleList } from "@/api/company/schedule";
       },
       editDelivery(){
         this.editDy.open = true;
+        console.log(this.item)
         this.editDyForm.orderId = this.item.orderId;
-
+        this.editDyForm.deliveryId = this.item.deliveryId;
+        this.editDyForm.deliveryCode = this.item.deliveryCode;
+        this.editDyForm.deliverySn = this.item.deliverySn;
       },
       showListD(){
         if(this.showList){
@@ -707,34 +753,74 @@ import { getTcmScheduleList } from "@/api/company/schedule";
       });
     },
 
-    //修改订单状态
-    submitEditForm(){
-        this.$refs["editForm"].validate(valid => {
-        if (valid) {
-          updateStoreOrder(this.editForm).then(response => {
-            if (response.code === 200) {
-              this.msgSuccess("操作成功");
-               this.edit.open = false;
-              getOrder(this.item.orderId).then(response => {
-                this.item=response.data
-                that.getlogList(this.item.orderId);
-                that.$parent.$parent.getList();
-              });
-            }
-          });
-        }
-      });
+    // 修改订单状态
+    submitEditForm() {
+      this.$refs["editForm"].validate(valid => {
+        if (!valid) return;
+
+        // 提交前拼接完整地址
+        const payload = {
+          ...this.editForm,
+          userAddress: this.buildFullAddress(),
+        };
+
+        updateStoreOrder(payload).then(response => {
+          if (response.code === 200) {
+            this.msgSuccess("操作成功");
+            this.edit.open = false;
+            getOrder(this.item.orderId).then(response => {
+              this.item = response.data;
+              this.getlogList(this.item.orderId);
+              this.$parent.$parent.getList();
+            });
+          }
+        }).finally(()=>{
+          this.editDyForm.deliveryCode = null;
+          this.editDyForm.orderId = null;
+          this.editDyForm.deliveryId = null;
+        });
+        });
     },
-    editOrder(){
-        this.edit.open=true;
-        this.editForm.orderId=this.item.orderId;
-        this.editForm.remark=this.item.remark;
-        this.editForm.userAddress = this.item.userAddress.toString();
-        this.editForm.userPhone = this.item.userPhone.toString();
-        this.editForm.status = this.item.status.toString();
-        this.editForm.deliveryType = this.item.deliveryType.toString();
-        this.editForm.deliveryStatus = this.item.deliveryStatus.toString();
+    editOrder() {
+      this.edit.open = true;
+      this.editForm.orderId = this.item.orderId;
+      this.editForm.remark = this.item.remark;
+
+      // 先设置其他同步的字段
+      this.editForm.userPhone = this.item.userPhone != null ? this.item.userPhone.toString() : "";
+      this.editForm.status = this.item.status != null ? this.item.status.toString() : "";
+      this.editForm.deliveryType = this.item.deliveryType;
+      this.editForm.deliveryStatus = this.item.deliveryStatus;
+
+      // 等城市数据加载后再解析地址
+      const currentAddress = (this.item.userAddress || "").toString().trim();
+      this.getCitys().then(() => {
+        if (!currentAddress) {
+          this.cityIds = [];
+          this.editForm.userAddress = "";
+          return;
+        }
+
+        // 假设格式为:省 市 区 详细地址(空格分隔)
+        const parts = currentAddress.split(/\s+/);
+        const detail = parts.pop() || ""; // 最后一段作为详细地址
+        const provLabel = parts[0];
+        const cityLabel = parts[1];
+        const areaLabel = parts[2];
 
+        const province = this.citys.find(p => p.label === provLabel);
+        const city = province?.children?.find(c => c.label === cityLabel);
+        const area = city?.children?.find(a => a.label === areaLabel);
+
+        if (province && city && area) {
+          this.cityIds = [province.value, city.value, area.value];
+        } else {
+          console.warn("未匹配到完整省市区:", { provLabel, cityLabel, areaLabel });
+          this.cityIds = [];
+        }
+        // 把详细地址写回到输入框(只保留详细地址,不含省市区)
+        this.editForm.userAddress = detail;
+      });
     },
     updateExpress(){
       var that=this;
@@ -1012,7 +1098,12 @@ import { getTcmScheduleList } from "@/api/company/schedule";
                       this.$parent.$parent.getList();
                   });
               }
-            });
+            }).finally(()=>{
+              this.editDyForm.deliveryCode = null;
+              this.editDyForm.orderId = null;
+              this.editDyForm.deliveryId = null;
+              this.editDyForm.deliverySn = null;
+            })
           }
         });
       },

+ 11 - 3
src/views/components/his/storeOrderDetails2.vue

@@ -300,7 +300,8 @@
                          <el-option key="ZTO"  label="中通" value="ZTO" />
                          <el-option key="JD"  label="京东" value="JD" />
                          <el-option key="DBL"  label="德邦" value="DBL" />
-						 <el-option key="YD"  label="韵达" value="YD" />
+						              <el-option key="YD"  label="韵达" value="YD" />
+						              <el-option key="STO"  label="申通" value="STO" />
                        </el-select>
                      </el-form-item>
                     <el-form-item label="物流单号" prop="deliverySn"  >
@@ -620,8 +621,10 @@ import { getTcmScheduleList } from "@/api/company/schedule";
       },
       editDelivery(){
         this.editDy.open = true;
+        console.log(this.item)
         this.editDyForm.orderId = this.item.orderId;
-
+        this.editDyForm.deliveryId = this.item.deliveryId;
+        this.editDyForm.deliveryCode = this.item.deliveryCode;
       },
       showListD(){
         if(this.showList){
@@ -1001,7 +1004,12 @@ import { getTcmScheduleList } from "@/api/company/schedule";
                       this.$parent.$parent.getList();
                   });
               }
-            });
+            }).finally(()=>{
+              this.editDyForm.deliveryCode = null;
+              this.editDyForm.orderId = null;
+              this.editDyForm.deliveryId = null;
+              this.editDyForm.deliverySn = null;
+            })
           }
         });
       },

+ 4 - 4
src/views/course/userCourse/public.vue

@@ -270,7 +270,7 @@
             </el-form-item>
           </el-col> -->
           <el-col :span="8">
-            <el-form-item label="关联达人" prop="talentId">
+            <el-form-item label="关联达人">
               <el-select v-model="form.talentId" remote filterable clearable reserve-keyword
                          placeholder="输入手机号搜索" :remote-method="talentMethod">
                 <el-option
@@ -548,9 +548,9 @@ export default {
         imgUrl: [
           {required: true, message: "封面图片不能为空", trigger: "blur"}
         ],
-        talentId: [
-          {required: true, message: "关联达人不能为空", trigger: "blur"}
-        ],
+        // talentId: [
+        //   {required: true, message: "关联达人不能为空", trigger: "blur"}
+        // ],
         isTui: [
           {required: true, message: "是否推荐不能为空", trigger: "blur"}
         ],

+ 117 - 26
src/views/course/userCoursePeriod/redPacket.vue

@@ -1,24 +1,36 @@
 <template>
   <div>
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          size="mini"
+          :disabled="this.selectCompanyIds.length === 0"
+          @click="handleChangeRedPacket"
+          v-hasPermi="['course:period:setCompanyRedPacket']"
+        >批量设置红包</el-button>
+      </el-col>
+    </el-row>
     <!-- 公司列表弹窗 -->
-<!--    <el-dialog title="设置红包" :visible.sync="companyDialogVisible" width="800px" append-to-body>-->
-      <el-table :data="companyList" border>
-        <el-table-column type="index" label="序号" width="60" align="center" />
-        <el-table-column label="公司名称" prop="companyName" align="center" />
-        <el-table-column label="操作" align="center" width="120">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              @click="handleInputAmount(scope.row)"
-              v-hasPermi="['course:period:setCourseRedPacket']"
-            >设置红包</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-<!--      <div slot="footer" class="dialog-footer">-->
-<!--      </div>-->
-<!--    </el-dialog>-->
+    <!--    <el-dialog title="设置红包" :visible.sync="companyDialogVisible" width="800px" append-to-body>-->
+    <el-table :data="companyList" border @selection-change="handleSelectionCompany">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column type="index" label="序号" width="60" align="center" />
+      <el-table-column label="公司名称" prop="companyName" align="center" />
+      <el-table-column label="操作" align="center" width="120">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleInputAmount(scope.row)"
+            v-hasPermi="['course:period:setCourseRedPacket']"
+          >设置红包</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!--      <div slot="footer" class="dialog-footer">-->
+    <!--      </div>-->
+    <!--    </el-dialog>-->
 
     <!-- 课程红包设置弹窗 -->
     <el-dialog title="设置红包金额" :visible.sync="courseDialogVisible" width="1200px" append-to-body>
@@ -31,7 +43,7 @@
           <template slot-scope="scope">
             <el-input-number
               v-model="scope.row.amount"
-              :min="0.1"
+              :min="0.0"
               :precision="2"
               :step="0.01"
               size="small"
@@ -47,11 +59,44 @@
         <el-button type="primary" @click="handleSave">保 存</el-button>
       </div>
     </el-dialog>
+
+    <!-- 课程红包设置弹窗 -->
+    <el-dialog title="设置红包金额" :visible.sync="batchRedPacketDialog.visible" width="400px" append-to-body>
+      <el-form ref="batchRedPacketForm" :model="batchRedPacketDialog.form" label-width="100px">
+        <el-form-item label="红包金额" prop="amount" :rules="{required: true, message: '红包金额不能为空', trigger: 'blur'}">
+          <div style="display: inline-flex; align-items: center">
+            <el-input-number
+              v-model="batchRedPacketDialog.form.amount"
+              :min="0.1"
+              :precision="2"
+              :step="0.01"
+              size="small"
+            >
+            </el-input-number>
+            <span style="margin-left: 10px">元</span>
+          </div>
+          <div style="color: rgba(169,88,18,0.9)">金额低于0.1元将自动置为0.1元</div>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="batchRedPacketDialog.visible = false">取 消</el-button>
+        <el-button type="primary"
+                   :loading="batchRedPacketDialog.saveLoading"
+                   :disabled="batchRedPacketDialog.saveLoading"
+                   @click="handleChange">保 存</el-button>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
-import { getPeriodCompanyList, batchSaveRedPacket, getPeriodRedPacketList } from "@/api/course/userCoursePeriod";
+import {
+  getPeriodCompanyList,
+  batchSaveRedPacket,
+  getPeriodRedPacketList,
+  batchSaveRedPacketByCompany
+} from "@/api/course/userCoursePeriod";
 import redPacket from "@/views/course/userCoursePeriod/redPacket.vue";
 
 export default {
@@ -86,7 +131,15 @@ export default {
       courseDialogVisible: false,
       companyList: [],
       redPacketList: [],
-      currentCompany: null
+      currentCompany: null,
+      selectCompanyIds: [],
+      batchRedPacketDialog: {
+        visible: false,
+        form: {
+          amount: 0.1
+        },
+        saveLoading: false,
+      }
     };
   },
   created() {
@@ -130,23 +183,23 @@ export default {
       }).then(response => {
         this.redPacketList = (response.data || []).map(item => ({
           ...item,
-          amount: item.amount || 0.1
+          amount:item.amount ?? 0.1
         }));
       });
     },
     // 保存红包金额
     handleSave() {
       // 筛选出有金额的项目
-      const validAmountItems = this.redPacketList.filter(item => item.amount > 0);
+      const validAmountItems = this.redPacketList.filter(item => item.amount >= 0);
       if (validAmountItems.length === 0) {
         this.$message.warning('请至少设置一个红包金额');
         return;
       }
 
       // 验证金额范围
-      const invalidItems = validAmountItems.filter(item => item.amount < 0.1);
+      const invalidItems = validAmountItems.filter(item => item.amount < 0.0);
       if (invalidItems.length > 0) {
-        this.$message.error('红包金额需要大于等于0.1元');
+        this.$message.error('红包金额需要大于等于0元');
         return;
       }
 
@@ -169,7 +222,45 @@ export default {
       }).catch(error => {
         this.$message.error("保存失败:" + error.message);
       });
-    }
+    },
+    handleSelectionCompany(selection) {
+      this.selectCompanyIds = selection.map(item => item.companyId);
+    },
+    handleChangeRedPacket() {
+      this.batchRedPacketDialog.visible = true
+      this.$refs.batchRedPacketForm.resetFields()
+    },
+    handleChange() {
+      if (!this.selectCompanyIds.length) {
+        this.$message.warning('请选择公司');
+        return;
+      }
+
+      this.$refs.batchRedPacketForm.validate((valid) => {
+        if (!valid) {
+          this.$message.warning('请填写正确的红包金额')
+          return;
+        }
+        this.batchRedPacketDialog.saveLoading = true
+
+        const saveData = {
+          periodId: this.periodId,
+          companyIds: this.selectCompanyIds,
+          redPacketMoney: this.batchRedPacketDialog.form.amount
+        }
+        batchSaveRedPacketByCompany(saveData).then(response => {
+          const {code, msg} = response
+          if (code === 200) {
+            this.$message.success('保存成功');
+            this.batchRedPacketDialog.visible = false;
+            this.$emit('success');
+          } else {
+            this.$message.error(msg || "保存失败");
+          }
+          this.batchRedPacketDialog.saveLoading = false
+        })
+      });
+    },
   }
 };
 </script>

+ 4 - 4
src/views/course/userVideo/index.vue

@@ -236,7 +236,7 @@
         <el-form-item label="视频描述" prop="description">
           <el-input v-model="form.description" type="textarea" :rows="2"  placeholder="请输入内容" />
         </el-form-item>
-        <el-form-item label="关联达人" prop="talentId" >
+        <el-form-item label="关联达人" >
           <el-select v-model="form.talentId" remote filterable reserve-keyword placeholder="输入手机号搜索" :remote-method="talentMethod" clearable >
             <el-option
               v-for="item in talentList"
@@ -543,9 +543,9 @@ export default {
         title: [
           { required: true, message: "短视频标题不能为空", trigger: "blur" }
         ],
-        talentId: [
-          { required: true, message: "关联达人不能为空", trigger: "change" }
-        ],
+        // talentId: [
+        //   { required: true, message: "关联达人不能为空", trigger: "change" }
+        // ],
         thumbnail: [
           { required: true, message: "请上传视频封面", trigger: "blur" }
         ]

+ 4 - 0
src/views/his/company/index.vue

@@ -203,6 +203,9 @@
          <el-form-item  label="管理员密码" prop="password" v-if="form.companyId==null">
           <el-input type="password" v-model="form.password" placeholder="请输入管理员密码" />
         </el-form-item>
+      <el-form-item label="掉线通知群名" prop="groupName">
+        <el-input v-model="form.groupName" :maxlength="15" placeholder="请输入掉线通知群名" />
+      </el-form-item>
         <el-form-item label="地址" prop="companyAddress">
           <el-input v-model="form.companyAddress" placeholder="请输入地址" />
         </el-form-item>
@@ -644,6 +647,7 @@ export default {
         restartTime: '13:10',
         balance: null,
         companyType: null,
+        groupName: null,
         userId: null,
         remark: null,
         linkName: null,

+ 4 - 3
src/views/his/storeOrder/order1.vue

@@ -817,7 +817,7 @@ export default {
       erpAccountList: [], // ERP账户列表
       erpAccountQueryList:[], // ERP账户查询条件列表
       erpAccountForm: {
-        selectedAccount: null // 选中的账户ID
+        selectedAccount: [] // 选中的账户ID
       },
       orderSummary: null, // 订单统计信息
       erpPhoneValue:[],
@@ -1309,6 +1309,7 @@ export default {
           // 设置默认值:第一条真实账户
           if (list.length && !this.queryParams.erpAccount) {
               this.$set(this.queryParams, 'erpAccount', list[0]);
+              this.getList();
           }
         } else {
           this.$message.error(response.msg || '获取ERP账户列表失败');
@@ -1435,7 +1436,7 @@ export default {
         if (response.code === 200) {
           this.$message.success('订单ERP账号设置成功');
           this.cancelErpAccountDialog();
-          this.getList(); // 刷新列表
+          this.getErpAccountList(); // 刷新列表
         } else {
           this.$message.error(response.msg || 'ERP账号设置失败');
         }
@@ -1495,7 +1496,7 @@ export default {
         if (response.code === 200) {
           this.$message.success('ERP订单创建成功');
           this.cancelErpAccountDialog();
-          this.getList(); // 刷新列表
+          this.getErpAccountList(); // 刷新列表
         } else {
           this.$message.error(response.msg || 'ERP订单创建失败');
         }

+ 13 - 13
src/views/hisStore/components/productOrder.vue

@@ -24,7 +24,7 @@
           <el-button size="mini" @click="refundOrderMoney()" >退款</el-button>
         </div>
         <div class="operate-button-container"  v-hasPermi="['store:storeOrder:express']"  >
-          <el-button size="mini" @click="showExpress()" >查看物流</el-button>
+          <el-button size="mini" @click="showExpress()" v-if="false">查看物流</el-button>
         </div>
         <div class="operate-button-container" v-if="order.tuiMoneyStatus==0"  v-hasPermi="['store:storeOrder:editTuiMoney']"  >
           <el-button size="mini" @click="editTuiMoney1()" >解冻</el-button>
@@ -37,9 +37,9 @@
           <el-button size="mini" @click="addTuiMoney()" >分佣</el-button>
         </div>
 
-        <div class="operate-button-container" v-if="order.extendOrderId!=null"  v-hasPermi="['store:storeOrder:getEroOrder']"  >
+<!--        <div class="operate-button-container" v-if="order.extendOrderId!=null"  v-hasPermi="['store:storeOrder:getEroOrder']"  >
           <el-button size="mini" @click="showErpOrder()" >查看ERP订单信息</el-button>
-        </div>
+        </div>-->
         <div class="operate-button-container" v-if="order.isPayRemain!=null&&order.isPayRemain==1"  v-hasPermi="['store:storeOrder:auditPayRemain']"  >
           <el-button size="mini" @click="auditPayRemain()" >尾款审核</el-button>
         </div>
@@ -78,9 +78,9 @@
               <el-tag prop="payType" v-for="(item, index) in payTypeOptions"    v-if="order!=null&&order.payType==item.dictValue">{{item.dictLabel}}
               </el-tag>
             </el-descriptions-item>
-            <el-descriptions-item label="订单类型"  >
+<!--            <el-descriptions-item label="订单类型"  >
               <el-tag prop="orderType" v-for="(item, index) in orderTypeOptions"    v-if="order!=null&&order.orderType==item.dictValue">{{item.dictLabel}}</el-tag>
-            </el-descriptions-item>
+            </el-descriptions-item>-->
             <el-descriptions-item label="物流公司编号"  >
                 <span v-if="order!=null">
                   {{order.deliverySn}}
@@ -346,7 +346,7 @@
 
     <el-dialog :title="edit.title" :visible.sync="edit.open" width="600px" append-to-body>
       <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
-        <el-form-item label="订单类型" prop="orderType"  >
+<!--        <el-form-item label="订单类型" prop="orderType"  >
             <el-select style="width: 200px" v-model="editForm.orderType" placeholder="请选择订单类型" clearable size="small" >
               <el-option
                       v-for="item in orderTypeOptions"
@@ -355,7 +355,7 @@
                       :value="item.dictValue"
                     />
             </el-select>
-        </el-form-item>
+        </el-form-item>-->
        <el-form-item label="状态" prop="status" >
            <el-select style="width:220px" v-model="editForm.status" placeholder="请选择状态" clearable size="small">
             <el-option key="0"  label="待支付" value="0" />
@@ -367,7 +367,7 @@
              <el-option key="-3"  label="已取消" value="-3" />
            </el-select>
          </el-form-item>
-         <el-form-item label="档期归属" prop="scheduleId"  >
+<!--         <el-form-item label="档期归属" prop="scheduleId"  >
             <el-select filterable style="width: 200px" v-model="editForm.scheduleId" placeholder="请选择档期" clearable size="small" >
               <el-option
                       v-for="item in scheduleOptions"
@@ -376,7 +376,7 @@
                       :value="item.id"
                     />
             </el-select>
-        </el-form-item>
+        </el-form-item>-->
          <el-form-item label="详情地址" prop="userAddress"  >
           <el-input v-model="editForm.userAddress" placeholder="请输入" />
         </el-form-item>
@@ -394,9 +394,9 @@
 
     <el-dialog :title="editDy.title" :visible.sync="editDy.open" width="600px" append-to-body>
       <el-form ref="editDyForm" :model="editDyForm" :rules="editDyRules" label-width="120px">
-      <div  v-hasPermi="['store:storeOrder:updateErpOrder']"  style="margin-bottom: 20px;" >
+<!--      <div  v-hasPermi="['store:storeOrder:updateErpOrder']"  style="margin-bottom: 20px;" >
         <el-button size="mini" @click="updateErpOrder" >同步物流单号信息</el-button>
-      </div>
+      </div>-->
         <el-form-item label="物流公司" prop="deliverySn" >
            <el-select style="width:220px" v-model="editDyForm.deliverySn" placeholder="请选择" clearable size="small">
             <el-option key="SF"  label="顺丰" value="SF" />
@@ -418,9 +418,9 @@
     </el-dialog>
 
     <el-dialog :title="expressDialog.title" :visible.sync="expressDialog.open" width="600px" append-to-body>
-      <div  v-hasPermi="['store:storeOrder:syncExpress']"  >
+<!--      <div  v-hasPermi="['store:storeOrder:syncExpress']"  >
         <el-button size="mini" @click="syncExpress()" >同步快递鸟物流状态</el-button>
-      </div>
+      </div>-->
       <el-table style="margin-top: 20px;width: 100%"
                 ref="orderHistoryTable"
                 :data="traces" border>

+ 6 - 6
src/views/hisStore/storeOrder/healthStoreList.vue

@@ -52,7 +52,7 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="订单类型" prop="orderType">
+<!--      <el-form-item label="订单类型" prop="orderType">
          <el-select   v-model="queryParams.orderType" placeholder="请选择订单类型" clearable size="small" >
          <el-option
                 v-for="item in orderTypeOptions"
@@ -61,13 +61,13 @@
                 :value="item.dictValue"
               />
         </el-select>
-      </el-form-item>
-      <el-form-item label="上传凭证" prop="isUpload">
+      </el-form-item>-->
+<!--      <el-form-item label="上传凭证" prop="isUpload">
          <el-select   v-model="queryParams.isUpload" placeholder="请选择" clearable size="small" >
           <el-option key="0"  label="未上传" value="0" />
              <el-option key="1"  label="已上传" value="1" />
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item label="物流状态" prop="deliveryStatus">
          <el-select   v-model="queryParams.deliveryStatus" placeholder="请选择物流状态" clearable size="small" >
          <el-option
@@ -236,11 +236,11 @@
               <el-tag prop="payType" v-for="(item, index) in payTypeOptions"    v-if="scope.row.payType==item.dictValue">{{item.dictLabel}}</el-tag>
           </template>
       </el-table-column>
-      <el-table-column label="订单类型" align="center" prop="orderType" >
+<!--      <el-table-column label="订单类型" align="center" prop="orderType" >
           <template slot-scope="scope">
               <el-tag prop="status" v-for="(item, index) in orderTypeOptions"    v-if="scope.row.orderType==item.dictValue">{{item.dictLabel}}</el-tag>
           </template>
-      </el-table-column>
+      </el-table-column>-->
       <el-table-column label="状态" align="center" prop="status" >
           <template slot-scope="scope">
               <el-tag prop="status" v-for="(item, index) in statusOptions"    v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>

+ 4 - 4
src/views/hisStore/storeProduct/index.vue

@@ -271,7 +271,7 @@
         <el-form-item label="商品图片" prop="image">
           <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150" />
         </el-form-item>
-        <el-form-item label="商品视频" prop="video">
+<!--        <el-form-item label="商品视频" prop="video">
           <div>
             <el-upload
               ref="upload"
@@ -286,7 +286,7 @@
             </el-upload>
             <video v-if="form.video" :src="form.video" controls style="max-width: 300px; max-height: 300px; margin-top: 10px"></video>
           </div>
-        </el-form-item>
+        </el-form-item>-->
         <el-form-item label="轮播图" prop="sliderImage">
           <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
         </el-form-item>
@@ -658,7 +658,7 @@ export default {
     return {
       companyId: null,
       uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
-      videoAccept:"video/*",
+      //videoAccept:"video/*",
       upload: {
         // 是否显示弹出层
         open: false,
@@ -852,7 +852,7 @@ export default {
     handleSuccess(response, file) {
       // 上传成功后的回调函数
       this.myloading.close();
-      this.form.video = response.url;
+      //this.form.video = response.url;
       this.$refs.upload.clearFiles();
     },
     beforeUpload(file) {

+ 10 - 2
src/views/index.vue

@@ -169,7 +169,7 @@
                   <img src="../assets/images/liuliang.png" alt=""><span>剩余流量</span>
                 </div>
                 <div class="cardtopnumber">
-                  100.00GB
+                  <span>{{formatBytes(this.trafficCount)}}</span>
                 </div>
               </div>
               <div class="progress">
@@ -851,6 +851,7 @@ export default {
       remainMessage: '',
       // 当天使用流量
       todayTraffic: 0,
+      trafficCount: 0,
       // 当月使用流量
       thisMonthTraffic: 0,
       dataType: '0',
@@ -1009,6 +1010,9 @@ export default {
      * @returns {string} 格式化后的字符串,包含数值和单位
      */
     formatBytes(bytes, decimals = 2) {
+      const isNegative = bytes < 0;  // 判断是否为负数
+      bytes = Math.abs(bytes);  // 获取绝对值
+
       if (bytes === 0) return '0 Byte';
 
       const k = 1024;
@@ -1021,7 +1025,10 @@ export default {
       const value = bytes / Math.pow(k, i);
 
       // 格式化为指定小数位的字符串
-      return parseFloat(value.toFixed(decimals)) + ' ' + sizes[Math.min(i, sizes.length - 1)];
+      const result = parseFloat(value.toFixed(decimals)) + ' ' + sizes[Math.min(i, sizes.length - 1)];
+
+      // 如果是负数,返回带负号的值
+      return isNegative ? `-${result}` : result;
     },
     // 手动刷新
     manualRefresh() {
@@ -1065,6 +1072,7 @@ export default {
         if(res.code === 200) {
           this.todayTraffic = res.data.today;
           this.thisMonthTraffic = res.data.thisMonth;
+          this.trafficCount = res.data.traffic;
         }
       })
 

+ 53 - 42
src/views/system/config/config.vue

@@ -175,6 +175,9 @@
             <el-form-item label="会员服务协议" prop="vipService">
               <editor v-model="form3.vipService" :min-height="292"/>
             </el-form-item>
+            <el-form-item label="会员自动续费协议" prop="vipAutomaticService">
+              <editor v-model="form3.vipAutomaticService" :min-height="292"/>
+            </el-form-item>
 
             <div class="footer">
               <el-button type="primary" @click="submitForm3">提  交</el-button>
@@ -980,65 +983,65 @@
         <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   label="未支付订单自动取消时间" prop="unPayTime">
+            <el-input   v-model="form17.unPayTime"  label="请输入unPayTime"></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   label="货到付款自定义金额" prop="payAmount">
+            <el-input   v-model="form17.payAmount"  label="请输入payAmount"></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   label="支付比例" prop="payRate">
+            <el-input   v-model="form17.payRate"  label="请输入payRate"></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   label="热门搜索" prop="hotSearch">
+            <el-input   v-model="form17.hotSearch"  label="请输入hotSearch"></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   label="服务费" prop="serviceFee">
+            <el-input   v-model="form17.serviceFee"  label="请输入serviceFee"></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   label="成本售价比例" prop="salesPriceRate">
+            <el-input   v-model="form17.salesPriceRate"  label="请输入salesPriceRate"></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   label="已完成订单售后有效天数" prop="storeAfterSalesDay">
+            <el-input   v-model="form17.storeAfterSalesDay"  label="请输入storeAfterSalesDay"></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   label="orderAttribution" prop="orderAttribution">
+            <el-input   v-model="form17.orderAttribution"  label="请输入orderAttribution"></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   label="refundAddress" prop="refundAddress">
+            <el-input   v-model="form17.refundAddress"  label="请输入refundAddress"></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   label="refundPhoneNumber" prop="refundPhoneNumber">
+            <el-input   v-model="form17.refundPhoneNumber"  label="请输入refundPhoneNumber"></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   label="refundConsignee" prop="refundConsignee">
+            <el-input   v-model="form17.refundConsignee"  label="请输入refundConsignee"></el-input>
         </el-form-item>
-        <el-form-item  label="服务商私钥" prop="hfRsaPrivateKey">
-            <el-input  v-model="form17.hfRsaPrivateKey" label="服务商私钥"></el-input>
+         <el-form-item v label="订单改价方式" prop="createSalesOrderType">
+            <el-input  v-model="form17.createSalesOrderType" label="订单改价方式"></el-input>
         </el-form-item>
-        <el-form-item  label="汇付公钥" prop="hfRsaPublicKey">
-            <el-input  v-model="form17.hfRsaPublicKey" label="汇付公钥"></el-input>
+        <el-form-item  label="订单审核开关" prop="auditSwitch">
+            <el-input  v-model="form17.auditSwitch" label="订单审核开关"></el-input>
         </el-form-item>
-        <el-form-item  label="汇付支付回调地址" prop="hfPayNotifyUrl">
-            <el-input  v-model="form17.hfPayNotifyUrl" label="汇付支付回调地址"></el-input>
+        <el-form-item  label="公司制单金额最低比例" prop="createMoneyRate">
+            <el-input  v-model="form17.createMoneyRate" 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  label="公司佣金比例" prop="tuiMoneyRate">
+            <el-input  v-model="form17.tuiMoneyRate" 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>
@@ -1244,6 +1247,14 @@
              </el-tooltip>
            </el-form-item>
 
+           <el-form-item label="是否绑定" prop="doctorRegister">
+             <el-switch
+               v-model="form18.isBound"
+               active-color="#13ce66"
+               inactive-color="#ff4949">
+             </el-switch>
+           </el-form-item>
+
            <div class="line"></div>
            <div style="float:right;margin-right:20px">
              <el-button type="primary" @click="submitForm18">提交</el-button>