瀏覽代碼

Merge branch 'master_feat_statis_20250805'

xdd 3 天之前
父節點
當前提交
0b4869df67
共有 2 個文件被更改,包括 64 次插入40 次删除
  1. 42 38
      src/views/statistics/section/inline.vue
  2. 22 2
      src/views/system/config/config.vue

+ 42 - 38
src/views/statistics/section/inline.vue

@@ -120,6 +120,10 @@
           </span>
         </template>
       </el-table-column>
+
+      <el-table-column prop="trafficSum" label="流量数" align="center"/>
+      <el-table-column prop="regNum" label="注册数" align="center"/>
+
     </el-table>
 
     <pagination
@@ -224,48 +228,48 @@ export default {
           return;
         }
 
-        const values = data.map(item => Number(item[column.property]));
-
-        if (['periodPersonNum','periodNum', 'sendNum', 'notRegisteredNum', 'registeredNum',
-        'interruptNum', 'completedNum', 'qwRepeatNum', 'userRepeatNum','blackNum','deletedNum',
-        'orderNum','orderMoneyTotal','redPackageMoneyTotal','callNum','receivePassNum','receiveNotNum',
-      'callTimeTotal','remindPendingNum','remindProcessedNum'].includes(column.property)) {
-          if (!values.every(value => isNaN(value))) {
-            sums[index] = values.reduce((prev, curr) => {
-              const value = Number(curr);
-              if (!isNaN(value)) {
-                return prev + curr;
-              } else {
-                return prev;
-              }
-            }, 0);
-          } else {
-            sums[index] = 'N/A';
-          }
-          if(['orderMoneyTotal','redPackageMoneyTotal'].includes(column.property)){
+        // 定义所有需要求和的列
+        const sumColumns = [
+          'periodPersonNum', 'periodNum', 'sendNum', 'notRegisteredNum', 'registeredNum',
+          'interruptNum', 'completedNum', 'qwRepeatNum', 'userRepeatNum', 'blackNum', 'deletedNum',
+          'orderNum', 'orderMoneyTotal', 'redPackageMoneyTotal', 'callNum', 'receivePassNum',
+          'receiveNotNum', 'callTimeTotal', 'remindPendingNum', 'remindProcessedNum',
+          // 增加其他所有需要计算的数值列
+          'deleteNum', 'lineNum', 'orderTotalNum'
+        ];
+
+        const rateColumns = ['regRate', 'finishedRate'];
+
+        if (sumColumns.includes(column.property)) {
+          const values = data.map(item => Number(item[column.property]) || 0);
+          sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+
+          if(['orderMoneyTotal', 'redPackageMoneyTotal'].includes(column.property)){
             sums[index] = sums[index].toFixed(2);
           }
         }
-        else if (column.property === 'regRate') {
-          const totalRegistered = data.reduce((sum, item) => sum + (Number(item.registeredNum) || 0), 0);
-          const totalSendNum = data.reduce((sum, item) => sum + (Number(item.sendNum) || 0), 0);
-
-          if (totalSendNum > 0) {
-            const rate = (totalRegistered / totalSendNum * 100).toFixed(2);
-            sums[index] = `${rate}%`;
-          } else {
-            sums[index] = '0.00%';
+        else if (rateColumns.includes(column.property)) {
+          if (column.property === 'regRate') {
+            const totalRegistered = data.reduce((sum, item) => sum + (Number(item.registeredNum) || 0), 0);
+            const totalSendNum = data.reduce((sum, item) => sum + (Number(item.sendNum) || 0), 0);
+
+            if (totalSendNum > 0) {
+              const rate = (totalRegistered / totalSendNum * 100).toFixed(2);
+              sums[index] = `${rate}%`;
+            } else {
+              sums[index] = '0.00%';
+            }
           }
-        }
-        else if (column.property === 'finishedRate') {
-          const totalCompleted = data.reduce((sum, item) => sum + (Number(item.completedNum) || 0), 0);
-          const totalSendNum = data.reduce((sum, item) => sum + (Number(item.sendNum) || 0), 0);
-
-          if (totalSendNum > 0) {
-            const rate = (totalCompleted / totalSendNum * 100).toFixed(2);
-            sums[index] = `${rate}%`;
-          } else {
-            sums[index] = '0.00%';
+          else if (column.property === 'finishedRate') {
+            const totalCompleted = data.reduce((sum, item) => sum + (Number(item.completedNum) || 0), 0);
+            const totalSendNum = data.reduce((sum, item) => sum + (Number(item.sendNum) || 0), 0);
+
+            if (totalSendNum > 0) {
+              const rate = (totalCompleted / totalSendNum * 100).toFixed(2);
+              sums[index] = `${rate}%`;
+            } else {
+              sums[index] = '0.00%';
+            }
           }
         }
         else {

+ 22 - 2
src/views/system/config/config.vue

@@ -155,8 +155,8 @@
           </el-form>
       </el-tab-pane>
 
-      <el-tab-pane label="协议配置" name="his.agreementConfig" :rules="rules3">
-          <el-form ref="form3" :model="form3"  label-width="150px">
+      <el-tab-pane label="协议配置" name="his.agreementConfig" >
+          <el-form ref="form3" :model="form3"  label-width="150px" :rules="rules4">
             <el-form-item label="医生注册协议" prop="doctorRegister">
               <editor v-model="form3.doctorRegister" :min-height="292"/>
             </el-form-item>
@@ -1513,6 +1513,26 @@ export default {
       },
       rules3: {
       },
+      rules4: {
+        doctorRegister: [
+          { required: true, message: '请输入医生注册协议', trigger: 'blur' }
+        ],
+        doctorFiling: [
+          { required: true, message: '请输入医生多机构备案协议', trigger: 'blur' }
+        ],
+        userRegister: [
+          { required: true, message: '请输入用户协议', trigger: 'blur' }
+        ],
+        userPrivacy: [
+          { required: true, message: '请输入隐私协议', trigger: 'blur' }
+        ],
+        userHealth: [
+          { required: true, message: '请输入健康客服协议', trigger: 'blur' }
+        ],
+        vipService: [
+          { required: true, message: '请输入会员服务协议', trigger: 'blur' }
+        ]
+      },
       rulesDelay:[
                 {
                   validator: (rule, value, callback) => {