Browse Source

红德堂-迁移sip外呼代码

Long 8 hours ago
parent
commit
78e36db884

+ 7 - 0
src/api/his/company.js

@@ -120,3 +120,10 @@ export function exitMiniProgram(data) {
     data: data
   })
 }
+
+export function getGatewayCompanyList(companyId) {
+  return request({
+    url: '/easyCall/gateway/getGatewayCompanyList',
+    method: 'get'
+  })
+}

+ 8 - 0
src/api/system/config.js

@@ -89,3 +89,11 @@ export function updateIsTownOn(query) {
     params: query
   })
 }
+
+export function getGatewayList(query) {
+  return request({
+    url: '/easyCall/gateway/list',
+    method: 'get',
+    params: query
+  })
+}

+ 20 - 2
src/views/his/company/index.vue

@@ -462,6 +462,18 @@
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" type="textarea" :rows="2" placeholder="请输入备注"/>
         </el-form-item>
+
+        <el-form-item label="可用外呼网关" prop="showGatewayIds">
+          <!-- <el-input v-model="" placeholder="请输入DeepSeekChat模型名称"></el-input> -->
+          <el-select v-model="form.showGatewayIds" multiple filterable placeholder="请选择系统可见外呼网关">
+            <el-option
+              v-for="item in gatewayList"
+              :key="item.id"
+              :label="item.gwDesc"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
 
 
@@ -711,7 +723,8 @@ import {
   resetPwd,
   changeRedPacketState,
   getDivConfig,
-  setDiv, exitMiniProgram
+  setDiv, exitMiniProgram,
+  getGatewayCompanyList
 } from '@/api/his/company'
 import { getFollowDoctorList } from '@/api/his/doctor'
 import { docList } from '@/api/his/doctor'
@@ -901,6 +914,7 @@ export default {
         open: false,
         title: '批量修改小程序'
       },
+      gatewayList:[],
     }
   },
   created() {
@@ -933,6 +947,10 @@ export default {
     docList().then(response => {
       this.doctor = response.rows
     })
+    getGatewayCompanyList().then(res=>{
+      this.gatewayList = res.data;
+      console.log(this.gatewayList);
+    }).catch(res=>{});
   },
   methods: {
     // 添加分账账户
@@ -1264,7 +1282,7 @@ export default {
           if (this.doctorIds != null) {
             this.form.doctorIds = (this.doctorIds).toString()
           }
-          
+
           if (this.form.miniAppMaster == null || this.form.miniAppMaster.length === 0) {
             this.form.miniAppMaster = null
           }

+ 179 - 0
src/views/system/config/cidConfig.vue

@@ -0,0 +1,179 @@
+<template>
+  <div class="app-container">
+    <el-form :model="form40" label-width="200px" v-loading="loading">
+      <el-form-item label="是否开启手机号配置" prop="enablePhoneConfig">
+        <el-switch v-model="form40.enablePhoneConfig"></el-switch>
+      </el-form-item>
+
+      <template v-if="form40.enablePhoneConfig">
+        <el-form-item label="生成条数" prop="generateCount">
+          <el-input-number v-model="form40.generateCount" :min="1" :step="1" :precision="0" placeholder="请输入生成条数"></el-input-number>
+        </el-form-item>
+
+        <el-form-item label="开始位置" prop="startIndex">
+          <el-input-number v-model="form40.startIndex" :min="1" :step="1" :precision="0" placeholder="例如: 1"></el-input-number>
+          <span class="tip-text">(从第几位开始生成)</span>
+        </el-form-item>
+
+        <el-form-item label="结束位置" prop="endIndex">
+          <el-input-number v-model="form40.endIndex" :min="1" :step="1" :precision="0" placeholder="例如: 11"></el-input-number>
+          <span class="tip-text">(到第几位结束)</span>
+        </el-form-item>
+      </template>
+
+      <el-form-item label="是否开手机号拨打次数限制" prop="enablePhoneLimitConfig">
+        <el-switch v-model="form40.enablePhoneLimitConfig"></el-switch>
+      </el-form-item>
+      <template v-if="form40.enablePhoneLimitConfig">
+        <el-form-item label="拨打次数限制" prop="startIndex">
+          <el-input-number v-model="form40.numberCalls" :min="1" :step="1" :precision="0" placeholder="例如: 1"></el-input-number>
+        </el-form-item>
+      </template>
+      <el-form-item label="DeepSeekChat模型并发数" prop="DeepSeekChatConcurrency">
+        <el-input v-model="form40.concurrency" placeholder="请输入DeepSeekChat模型并发数"></el-input>
+      </el-form-item>
+      <el-form-item label="DeepSeekChat服务地址" prop="DeepSeekChatServerAddress">
+        <el-input v-model="form40.serverAddress" placeholder="请输入DeepSeekChat服务地址"></el-input>
+      </el-form-item>
+      <el-form-item label="DeepSeekChat_apiKey" prop="DeepSeekChatApiKey">
+        <el-input v-model="form40.apiKey" placeholder="请输入DeepSeekChat_apiKey"></el-input>
+      </el-form-item>
+      <el-form-item label="DeepSeekChat模型名称" prop="DeepSeekChatModelName">
+        <el-input v-model="form40.modelName" placeholder="请输入DeepSeekChat模型名称"></el-input>
+      </el-form-item>
+      <el-form-item label="是否限制外呼网关" prop="enableGateWayLimit">
+        <el-switch v-model="form40.enableGateWayLimit"></el-switch>
+      </el-form-item>
+      <el-form-item label="系统可见外呼网关" prop="showGatewayIds" v-if="!!form40.enableGateWayLimit">
+        <!-- <el-input v-model="" placeholder="请输入DeepSeekChat模型名称"></el-input> -->
+        <el-select v-model="form40.showGatewayIds" multiple filterable placeholder="请选择系统可见外呼网关">
+          <el-option
+            v-for="item in gatewayList"
+            :key="item.id"
+            :label="item.gwDesc"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+
+      <div style="display: flex; justify-content: flex-end;">
+        <el-button type="primary" :disabled="saveLoading" :loading="saveLoading" @click="submitForm40">提  交</el-button>
+      </div>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { getConfigByKey, updateConfigByKey, getGatewayList } from '@/api/system/config'
+
+export default {
+  name: "cidConfig",
+  data() {
+    return {
+      loading: true,
+      gatewayList: [],
+      form40: {
+        enablePhoneConfig: false,
+        enablePhoneLimitConfig:false,
+        generateCount: 1,
+        startIndex: 1,
+        endIndex: 11,
+        numberCalls:1,
+        serverAddress: null,
+        modelName: null,
+        enableGateWayLimit: false,
+        showGatewayIds: null,
+      },
+      saveLoading: false,
+    }
+  },
+  created() {
+    this.getConfigByKey("cid.config");
+    this.initGateway();
+  },
+  methods: {
+    getConfigByKey(key){
+      getConfigByKey(key).then(response => {
+        this.configId = response.data.configId;
+        this.configKey = response.data.configKey;
+        this.form40 = JSON.parse(response.data.configValue);
+        this.loading = false
+      });
+    },
+    initGateway() {
+      getGatewayList().then(response => {
+        this.gatewayList = response.data;
+      })
+    },
+    submitForm40(){
+      this.saveLoading = true
+
+      if (this.form40.enablePhoneConfig) {
+        if (!this.form40.generateCount || this.form40.generateCount < 1) {
+          this.msgError('生成条数不能为空且不能小于1');
+          return false;
+        }
+
+        // if (!this.form40.generateCount || this.form40.generateCount > 10) {
+        //   this.msgError('单个手机号生成条数不能大于10条');
+        //   return false;
+        // }
+
+        if (!this.form40.startIndex || this.form40.startIndex < 1 || this.form40.startIndex > 11) {
+          this.msgError('开始位置不能为空,且必须在1到11之间');
+          return false;
+        }
+
+        if (!this.form40.endIndex || this.form40.endIndex < 1 || this.form40.endIndex > 11) {
+          this.msgError('结束位置不能为空,且必须在1到11之间');
+          return false;
+        }
+
+        if (this.form40.startIndex > this.form40.endIndex) {
+          this.msgError('开始位置不能大于结束位置');
+          return false;
+        }
+
+        if (this.form40.endIndex < this.form40.startIndex) {
+          this.msgError('结束位置不能小于开始位置');
+          return false;
+        }
+        if (this.form40.startIndex === this.form40.endIndex) {
+          this.msgError('开始位置不能等于结束位置');
+          return false;
+        }
+
+        let num = this.form40.endIndex - this.form40.startIndex
+        if(num < 4){
+          this.msgError('开始和结束位置不能小于4位');
+          return false;
+        }
+      }
+
+      if(this.form40.enablePhoneLimitConfig){
+        if(this.form40.numberCalls == null || this.form40.numberCalls === 0){
+          this.msgError('限制次数不能为空或者大于0!');
+          return false;
+        }
+        if(this.form40.numberCalls > 100000){
+          this.msgError('限制次数不能超过10万次!');
+          return false;
+        }
+      }
+
+      const param={configId:this.configId,configValue:JSON.stringify(this.form40)}
+      updateConfigByKey(param).then(response => {
+        const {code} = response
+        if (code === 200) {
+          this.msgSuccess("修改成功");
+        }
+        this.saveLoading = false
+      });
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

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

@@ -1,6 +1,9 @@
 <template>
   <div class="app-container">
     <el-tabs v-model="activeName" @tab-click="handleClick">
+      <el-tab-pane label="CID配置" name="cid.config">
+        <CidConfig v-if="activeName === 'cid.config'"/>
+      </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">
@@ -703,7 +706,7 @@
         </div>
       </el-tab-pane>
       <el-tab-pane label="积分配置" name="his.integral">
-        <IntegralConfig/>
+        <IntegralConfig v-if="activeName === 'his.integral'"/>
       </el-tab-pane>
       <el-tab-pane label="签到配置" name="his.sign">
         <el-table border :data="form12">
@@ -2297,6 +2300,7 @@ import productDeliveryGiftValueSelect from '../../components/his/productDelivery
 import { Col } from 'element-ui'
 import companyMenuConfig from './companyMenuConfig'
 import IntegralConfig from '@/views/system/config/integralConfig.vue'
+import CidConfig from '@/views/system/config/cidConfig.vue'
 import { getCitys } from '@/api/store/city'
 import { listCompany } from '@/api/company/company'
 import { getStoreProductColumns } from '@/api/hisStore/storeProduct'
@@ -2307,7 +2311,8 @@ export default {
   components: {
     companyMenuConfig,
     Material, productAttrValueSelect, productDeliveryGiftValueSelect,
-    IntegralConfig
+    IntegralConfig,
+    CidConfig
   },
   data() {
     return {