Explorar o código

Merge branch 'refs/heads/master' into ScrmStore

chenguo hai 3 semanas
pai
achega
1b330cdfd7

+ 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
 # 存储桶配置

+ 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
+  })
+}

BIN=BIN
src/assets/logo/kyt.jpg


+ 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'
             });

+ 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,

+ 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;
         }
       })
 

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

@@ -1247,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>