Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

yjwang 3 hafta önce
ebeveyn
işleme
05b0db0d1d

+ 3 - 3
.env.prod-hsyy

@@ -1,7 +1,7 @@
 # 页面标题
-VUE_APP_TITLE =河山医院
+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备2024019526号-1
 # ICP网站访问地址
 VUE_APP_ICP_URL =https://beian.miit.gov.cn
 # 网站LOG
-VUE_APP_LOG_URL =@/assets/logo/hsyy.png
+VUE_APP_LOG_URL =@/assets/logo/hsyynew.jpg
 # 存储桶配置
 VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
 # 存储桶配置

+ 10 - 4
.env.prod-mengniu

@@ -1,7 +1,7 @@
 # 页面标题
-VUE_APP_TITLE =舒康时代总管理系统
+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/shukang.png
+VUE_APP_LOG_URL =@/assets/logo/kxwl.png
 # 存储桶配置
 VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
 # 存储桶配置
@@ -23,7 +23,7 @@ VUE_APP_COS_BUCKET = mengniu-1323137866
 # 存储桶配置
 VUE_APP_COS_REGION = ap-chongqing
 # 线路一地址
-VUE_APP_VIDEO_LINE_1 = https://mengniutcpv.ylrzcloud.com
+VUE_APP_VIDEO_LINE_1 = http://mengniutcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://mengniuobs.ylrztop.com
 
@@ -32,6 +32,9 @@ VUE_APP_VIDEO_URL = https://mengniuvolcengine.ylrztop.com
 #火山云视频点播空间名
 VUE_APP_HSY_SPACE = mengniu-2114522511
 
+#直播解码路径
+VUE_APP_LIVE_PATH = /live
+
 # 开发环境配置
 ENV = 'development'
 
@@ -43,3 +46,6 @@ VUE_APP_COURSE_DEFAULT = 2
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
+
+#上面地址是为了解决跨越,用nginx进行了转发
+VUE_APP_LIVE_WS_URL = wss://websocket.shukangjiankang.cn/ws

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

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

+ 8 - 0
src/api/his/user.js

@@ -151,3 +151,11 @@ export function batchUnbindUser(data) {
     data: data
   })
 }
+
+export function statisticsList(query) {
+  return request({
+    url: '/his/user/statisticsList',
+    method: 'get',
+    params: query
+  })
+}

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

BIN
src/assets/logo/hsyynew.jpg


BIN
src/assets/logo/kxwl.png


+ 0 - 0
src/assets/images/shukang.png → src/assets/logo/shukang.png


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

@@ -475,6 +475,17 @@
         <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>
 
 
@@ -741,7 +752,7 @@ import {
   exportCompany,
   resetPwd,
   getDivConfig,
-  setDiv, exitMiniProgram
+  setDiv, exitMiniProgram,getGatewayCompanyList
 } from '@/api/his/company'
 import { getFollowDoctorList } from '@/api/his/doctor'
 import { docList } from '@/api/his/doctor'
@@ -756,7 +767,7 @@ export default {
   name: 'Company',
   data() {
     return {
-
+      gatewayList:[],
       projectFrom:process.env.VUE_APP_HSY_SPACE,
 
       signProjectName:"",
@@ -941,6 +952,10 @@ export default {
     }
   },
   created() {
+    getGatewayCompanyList().then(res=>{
+        this.gatewayList = res.data;
+        console.log(this.gatewayList);
+    }).catch(res=>{});
 
     cateList().then((response) => {
       if (this.projectFrom =='mengniu-2114522511'){

+ 17 - 17
src/views/his/package/index.vue

@@ -275,7 +275,7 @@
                  <el-radio :label="item.dictValue" v-for="item in packageTypeOptions" >{{item.dictLabel}}</el-radio>
               </el-radio-group>
          </el-form-item>
-        <el-form-item label="套餐包子类型" prop="packageSubType">
+        <el-form-item label="套餐包子类型" prop="packageSubType" v-if="form.packageType != 3">
               <el-radio-group v-model="form.packageSubType">
                 <el-tooltip content="咨询包不能推ERP" placement="top" :open-delay="100" v-if="form.packageType == 1">
                   <el-radio label="1">咨询包</el-radio>
@@ -284,22 +284,22 @@
                 <el-radio  label="3" v-if="form.packageType==2">产品包</el-radio>
               </el-radio-group>
          </el-form-item>
-         <el-form-item label="药品类型" prop="productType" v-if="form.packageSubType!=1">
+         <el-form-item label="药品类型" prop="productType" v-if="form.packageSubType!=1 && form.packageType != 3 ">
            <el-radio-group v-model="form.productType">
             <el-radio :label="item.dictValue" v-for="item in productTypeOptions" >{{item.dictLabel}}</el-radio>
            </el-radio-group>
          </el-form-item>
 
-         <el-form-item label="药品制作类型" prop="recipeType" v-if="form.productType==2&&form.packageSubType!=1">
+         <el-form-item label="药品制作类型" prop="recipeType" v-if="form.productType==2&&form.packageSubType!=1 && form.packageType != 3">
            <el-radio v-model="form.recipeType" label="0">颗粒剂</el-radio>
              <el-radio v-model="form.recipeType" label="1">膏方</el-radio>
 			 <el-radio v-model="form.recipeType" label="2">饮片</el-radio>
          </el-form-item>
 
-         <el-form-item label="剂数" prop="counts" v-if="form.productType==2&&form.packageSubType!=1">
+         <el-form-item label="剂数" prop="counts" v-if="form.productType==2&&form.packageSubType!=1 && form.packageType != 3">
            <el-input-number v-model="form.counts"  :min="1" label="剂数"></el-input-number>
          </el-form-item>
-         <el-form-item label="一日几次" prop="usageFrequencyUnit" v-if="form.productType==2&&form.packageSubType!=1">
+         <el-form-item label="一日几次" prop="usageFrequencyUnit" v-if="form.productType==2&&form.packageSubType!=1 && form.packageType != 3">
           <el-select v-model="form.usageFrequencyUnit" placeholder="请选择">
               <el-option
                 v-for="item in usageFrequencyUnitOptions"
@@ -309,15 +309,15 @@
               </el-option>
             </el-select>
          </el-form-item>
-          <el-form-item label="用药数量" prop="tags">
+          <el-form-item label="用药数量" prop="tags" v-if="form.packageType != 3">
             <el-input v-model="form.usagePerUseCount" placeholder="请输入用药数量" />
           </el-form-item>
-        <el-form-item label="是否食品/保健品" prop="isHealthProductType" label-width="130px">
-          <el-radio-group v-model="form.isHealthProductType">
-            <el-radio :label="1">是</el-radio>
-            <el-radio :label="0">否</el-radio>
-          </el-radio-group>
-        </el-form-item>
+<!--        <el-form-item label="是否食品/保健品" prop="isHealthProductType" label-width="130px">-->
+<!--          <el-radio-group v-model="form.isHealthProductType">-->
+<!--            <el-radio :label="1">是</el-radio>-->
+<!--            <el-radio :label="0">否</el-radio>-->
+<!--          </el-radio-group>-->
+<!--        </el-form-item>-->
         <el-form-item label="是否展示" prop="isShow">
               <el-radio-group v-model="form.isShow">
                        <el-radio :label="item.dictValue" v-for="item in orOptions" >{{item.dictLabel}}</el-radio>
@@ -795,7 +795,7 @@ export default {
 
       // 表单参数
       form: {
-        isHealthProductType: 0
+        // isHealthProductType: 0
       },
       // 表单校验
       rules: {
@@ -841,9 +841,9 @@ export default {
               followTempId: [
                 { required: true, message: '请选择随访模板', trigger: 'change' }
               ],
-              isHealthProductType: [
-                { required: true, message: '请选择是否是食品/保健品类型', trigger: 'change' }
-              ],
+              // isHealthProductType: [
+              //   { required: true, message: '请选择是否是食品/保健品类型', trigger: 'change' }
+              // ],
 
       }
     };
@@ -1096,7 +1096,7 @@ export default {
         counts:null,
         followNum:null,
         secondName:null,
-        isHealthProductType: 0,
+        // isHealthProductType: 0,
       };
       this.photoArr=[];
       this.resetForm("form");

+ 221 - 3
src/views/his/user/indexProject.vue

@@ -179,6 +179,15 @@
           v-hasPermi="['his:user:unbind']"
         >解绑会员</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-data-analysis"
+          size="mini"
+          @click="openMemberStatistics"
+          v-hasPermi="['his:user:statistics']"
+        >会员统计</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -190,7 +199,7 @@
           <el-tag v-if="scope.row.projectId !== null">{{ getProjectLabel(scope.row.projectId,scope.row) }}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="会员昵称" align="center" prop="nickname" />
+      <el-table-column label="会员昵称" align="center" prop="nickName" />
       <el-table-column label="会员头像" align="center" width="80">
         <template slot-scope="scope">
           <el-popover
@@ -369,6 +378,83 @@
       <userDetailsByNew  ref="userDetailsByNew" />
     </el-drawer>
 
+    <!-- 会员统计 -->
+    <el-dialog
+      title="会员统计"
+      :visible.sync="memberStatisticsOpen"
+      width="1260px"
+      append-to-body
+      @close="resetMemberStatisticsDialog"
+    >
+      <el-form :inline="true" size="small">
+        <el-form-item label="销售公司">
+          <el-select
+            v-model="memberStatisticsQuery.companyId"
+            placeholder="请选择销售公司"
+            clearable
+            filterable
+            style="width: 240px"
+          >
+            <el-option
+              v-for="item in companyQueryOptions"
+              :key="item.companyId"
+              :label="item.companyName"
+              :value="item.companyId"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleMemberStatisticsSearch">搜索</el-button>
+        </el-form-item>
+      </el-form>
+      <div v-loading="memberStatisticsLoading" style="min-height: 200px">
+        <el-table
+          v-if="memberStatisticsRows.length > 0"
+          :data="memberStatisticsRows"
+          border
+          max-height="480"
+        >
+          <el-table-column
+            v-for="col in statisticsDisplayColumns"
+            :key="col.prop"
+            :label="col.label"
+            :prop="col.prop"
+            min-width="120"
+            show-overflow-tooltip
+          >
+            <template slot-scope="scope">
+              <template v-if="col.prop === 'status'">
+                <el-tag v-if="String(scope.row.status) === '1'" type="success">正常</el-tag>
+                <el-tag v-else-if="String(scope.row.status) === '0'" type="danger">禁止</el-tag>
+                <span v-else>{{ scope.row.status }}</span>
+              </template>
+              <template v-else-if="col.prop === 'avatar'">
+                <el-popover
+                  v-if="scope.row.avatar"
+                  placement="right"
+                  title=""
+                  trigger="hover"
+                >
+                  <img slot="reference" :src="scope.row.avatar" width="40" height="40" style="object-fit: cover; border-radius: 4px;" />
+                  <img :src="scope.row.avatar" style="max-width: 220px; max-height: 220px;" />
+                </el-popover>
+                <span v-else>-</span>
+              </template>
+              <span v-else>{{ scope.row[col.prop] }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-empty v-else-if="!memberStatisticsLoading" description="暂无数据" />
+      </div>
+      <pagination
+        v-show="memberStatisticsTotal > 0"
+        :total="memberStatisticsTotal"
+        :page.sync="memberStatisticsQuery.pageNum"
+        :limit.sync="memberStatisticsQuery.pageSize"
+        @pagination="getMemberStatisticsList"
+      />
+    </el-dialog>
+
     <!-- 更换会员归属对话框 -->
     <el-dialog title="更换会员归属" :visible.sync="changeCompanyUserOpen" width="500px" append-to-body>
       <el-form ref="changeCompanyUserForm" :model="changeCompanyUserForm" :rules="changeCompanyUserRules" label-width="100px">
@@ -402,7 +488,7 @@
 </template>
 
 <script>
-import {listUserByProject, getUser, addUser, updateUser, exportUser, delUserCompanyUser,exportListProject, batchUnbindUser} from "@/api/his/user";
+import {listUserByProject, getUser, addUser, updateUser, exportUser, delUserCompanyUser,exportListProject, batchUnbindUser, statisticsList} from "@/api/his/user";
 import { getCompanyUserList, changeCompanyUser, getCompanyList } from '@/api/company/companyUser';
 import userDetailsByNew from '@/views/his/user/userDetails.vue'
 export default {
@@ -511,9 +597,46 @@ export default {
       companyUserOptions: [],
       companyOptions: [],
       projectOptions: [],
-      selectedUser: []
+      selectedUser: [],
+      // 会员统计弹窗
+      memberStatisticsOpen: false,
+      memberStatisticsLoading: false,
+      memberStatisticsRows: [],
+      memberStatisticsTotal: 0,
+      memberStatisticsQuery: {
+        pageNum: 1,
+        pageSize: 10,
+        companyId: null,
+      }
     };
   },
+  computed: {
+    statisticsDisplayColumns() {
+      const row = this.memberStatisticsRows[0]
+      if (!row) {
+        return []
+      }
+      const labelMap = {
+        userId: '会员ID',
+        nickName: '会员昵称',
+        avatar: '头像',
+        // phone: '手机号码',
+        status: '状态',
+        // companyId: '公司ID',
+        companyName: '所属公司',
+        watchDaysLast3: '最近3天看课天数',
+        watchDaysLast5: '最近5天看课天数',
+        watchDaysLast7: '最近7天看课天数',
+      }
+      // 只展示配置了中文的字段,并按 labelMap 的顺序展示
+      return Object.keys(labelMap)
+        .filter(prop => Object.prototype.hasOwnProperty.call(row, prop))
+        .map(prop => ({
+          prop,
+          label: labelMap[prop]
+        }))
+    }
+  },
   created() {
     this.getDicts("project_user_status").then((response) => {
       this.statusOptions = response.data;
@@ -874,6 +997,101 @@ export default {
     getProjectLabel(projectId) {
       return this.projectOptions.find(item => parseInt(item.dictValue) === projectId)?.dictLabel;
     },
+
+    // 如果主页面有选择公司参数,则直接使用,否则就使用下拉框的第一个参数
+    resolveDefaultStatisticsCompanyId() {
+      const options = this.companyQueryOptions || []
+      if (!options.length) {
+        return null
+      }
+      let companyId = this.queryParams.companyId
+      if (companyId != null && companyId !== '') {
+        const exists = options.some(o => String(o.companyId) === String(companyId))
+        if (exists) {
+          return companyId
+        }
+      }
+      return options[0].companyId
+    },
+    openMemberStatistics() {
+      const ensureOptions = () => {
+        return new Promise((res) => {
+          const options = this.companyQueryOptions || []
+          if (options.length) {
+            res(true)
+            return
+          }
+          getCompanyList().then(response => {
+            if (response.code === 200) {
+              this.companyQueryOptions = response.data || []
+              res(!!this.companyQueryOptions.length)
+            } else {
+              this.$message.error(response.msg || '获取公司列表失败')
+              res(false)
+            }
+          }).catch(() => {
+            this.$message.error('获取公司列表失败')
+            res(false)
+          })
+        })
+      }
+      ensureOptions().then(ok => {
+        if (!ok) {
+          this.$message.warning('没有公司数据')
+          return
+        }
+        const companyId = this.resolveDefaultStatisticsCompanyId()
+        if (companyId == null) {
+          this.$message.warning('没有所属公司')
+          return
+        }
+        this.memberStatisticsQuery = {
+          pageNum: 1,
+          pageSize: 10,
+          companyId,
+        }
+        this.memberStatisticsOpen = true
+        this.$nextTick(() => this.getMemberStatisticsList())
+      })
+    },
+
+    // 查询列表
+    getMemberStatisticsList() {
+      if (this.memberStatisticsQuery.companyId == null || this.memberStatisticsQuery.companyId === '') {
+        this.$message.warning('请选择销售公司')
+        return
+      }
+      this.memberStatisticsLoading = true
+      statisticsList(this.memberStatisticsQuery).then(response => {
+        this.memberStatisticsRows = response.rows || []
+        this.memberStatisticsTotal = response.total || 0
+      }).catch(() => {
+        this.memberStatisticsRows = []
+        this.memberStatisticsTotal = 0
+      }).finally(() => {
+        this.memberStatisticsLoading = false
+      })
+    },
+
+    // handleMemberStatisticsCompanyChange() {
+    //   this.memberStatisticsQuery.pageNum = 1
+    //   this.getMemberStatisticsList()
+    // },
+    handleMemberStatisticsSearch() {
+      this.memberStatisticsQuery.pageNum = 1
+      this.getMemberStatisticsList()
+    },
+
+    // 关闭弹窗
+    resetMemberStatisticsDialog() {
+      this.memberStatisticsRows = []
+      this.memberStatisticsTotal = 0
+      this.memberStatisticsQuery = {
+        pageNum: 1,
+        pageSize: 10,
+        companyId: null,
+      }
+    }
   }
 };
 

+ 58 - 3
src/views/hisStore/integralGoods/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px">
       <el-form-item label="商品名称" prop="goodsName">
         <el-input
           v-model="queryParams.goodsName"
@@ -30,6 +30,26 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="所属小程序" prop="appId">
+        <el-select style="width: 240px" v-model="queryParams.appId" placeholder="请选择所属小程序" clearable size="small">
+          <el-option
+            v-for="dict in appMallOptions"
+            :key="dict.appid"
+            :label="dict.name + '(' + dict.appid + ')'"
+            :value="dict.appid"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -211,6 +231,16 @@
             >{{dict.dictLabel}}</el-radio>
           </el-radio-group>
         </el-form-item>
+        <el-form-item label="所属小程序" prop="appIds">
+          <el-select style="width: 240px" v-model="appIds" placeholder="请选择所属小程序" clearable size="small" multiple>
+            <el-option
+              v-for="dict in appMallOptions"
+              :key="dict.appid"
+              :label="dict.name + '(' + dict.appid + ')'"
+              :value="dict.appid"
+            />
+          </el-select>
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -262,6 +292,7 @@ import Material from '@/components/Material';
 import Editor from '@/components/Editor/wang';
 import { getToken } from "@/utils/auth";
 import integralGoodsDetails from '../components/integralGoodsDetails';
+import { list as getAppMallOptions } from '@/api/course/coursePlaySourceConfig'
 export default {
   name: "HisIntegralGoods",
   components: {Material,Editor,integralGoodsDetails},
@@ -275,6 +306,11 @@ export default {
   },
   data() {
     return {
+
+      appIds:[], // 选择的小程序
+      // 小程序列表
+      appMallOptions:[],
+
       show:{
               open:false,
             },
@@ -325,6 +361,7 @@ export default {
         goodsName: null,
         goodsType: null,
         status: null,
+        appId: null,
         integral: null,
         createTime: null
       },
@@ -343,6 +380,10 @@ export default {
   },
   created() {
     this.getList();
+
+    // 查询小程序
+    this.getAppMallOptions();
+
     this.getDicts("sys_integral_goods_type").then(response => {
       this.goodsTypeOptions = response.data;
     });
@@ -351,6 +392,11 @@ export default {
     });
   },
   methods: {
+    getAppMallOptions() {
+      getAppMallOptions({pageNum:1,pageSize:100}).then(response => {
+        this.appMallOptions = response.rows;
+      })
+    },
         handledetails(row){
             this.show.open=true;
             setTimeout(() => {
@@ -462,6 +508,8 @@ export default {
          if(this.form.images!=null){
              this.photoArr=this.form.images.split(",");
            }
+        this.appIds = this.form.appIds ? this.form.appIds.split(',') : [];
+
         //修改按钮
         setTimeout(() => {
                   if(this.form.descs==null){
@@ -477,15 +525,22 @@ export default {
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
+
+          // 小程序
+          const params = {
+            ...this.form,
+            appIds: this.appIds.join(',') // 数组转字符串
+          };
+
           if (this.form.goodsId != null) {
-            updateIntegralGoods(this.form).then(response => {
+            updateIntegralGoods(params).then(response => {
               this.msgSuccess("修改成功");
               this.open = false;
               this.reset();
               this.getList();
             });
           } else {
-            addIntegralGoods(this.form).then(response => {
+            addIntegralGoods(params).then(response => {
               this.msgSuccess("新增成功");
               this.open = false;
               this.reset();

+ 49 - 1
src/views/system/config/config.vue

@@ -31,6 +31,29 @@
               <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="showGatewayIds">
+            <!-- <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 class="footer">
             <el-button type="primary" @click="submitForm40">提 交</el-button>
@@ -503,6 +526,9 @@
           <el-form-item label="SECRET_KEY" v-if="form7.isIdVerification == 1" prop="SECRET_KEY">
             <el-input   v-model="form7.SECRET_KEY"  label="请输入SECRET_KEY"></el-input>
           </el-form-item>
+          <el-form-item label="跳转商城小程序" prop="jumpStoreAppId">
+            <el-input   v-model="form7.jumpStoreAppId"  label="请输入跳转商城小程序"></el-input>
+          </el-form-item>
           <el-form-item label="检查库存" prop="checkStock">
             <el-radio-group v-model="form7.checkStock">
               <el-radio :label="true">开启</el-radio>
@@ -512,6 +538,19 @@
               <i class="el-icon-question" style="margin-left: 5px; color: #909399;"></i>
             </el-tooltip>
           </el-form-item>
+
+          <el-form-item  label="年支付金额限制" prop="yearPayPrice">
+            <el-input-number v-model="form7.yearPayPrice" :precision="2" :step="0.1"></el-input-number>
+          </el-form-item>
+          <el-form-item  label="达限后支付限制金额" prop="canPayPrice">
+            <el-input-number v-model="form7.canPayPrice" :precision="2" :step="0.1"></el-input-number>
+          </el-form-item>
+          <el-form-item  label="支付金额达限提示" prop="payPriceTip">
+            <el-tooltip class="item" effect="dark" content="支付金额达限提示" placement="top-end">
+              <el-input    v-model="form7.payPriceTip"   ></el-input>
+            </el-tooltip>
+          </el-form-item>
+
           <div class="footer">
             <el-button type="primary" @click="submitForm7">提 交</el-button>
           </div>
@@ -2698,6 +2737,9 @@
           <el-form-item label="直播流链接" prop="domain">
             <el-input v-model="form32.domain" label="请输入domain"></el-input>
           </el-form-item>
+          <el-form-item label="http" prop="http">
+            <el-input v-model="form32.http" label="请输入http"></el-input>
+          </el-form-item>
           <br>
           <div class="footer">
             <el-button type="primary" @click="submitForm32">提 交</el-button>
@@ -2776,7 +2818,7 @@
 </template>
 
 <script>
-import { getConfigByKey, updateConfigByKey, clearCache, updateIsTownOn } from '@/api/system/config'
+import { getConfigByKey, updateConfigByKey, clearCache, updateIsTownOn,getGatewayList } from '@/api/system/config'
 import { listStore } from '@/api/his/storeProduct'
 import { js } from 'js-beautify'
 import Material from '@/components/Material'
@@ -2802,6 +2844,7 @@ export default {
   },
   data() {
     return {
+      gatewayList:[],
       isBeiJingZhuoMei:false,
       citys: [],
       images: [],
@@ -3050,6 +3093,11 @@ export default {
     }
   },
   created() {
+        getGatewayList().then(res=>{
+      this.gatewayList = res.data;
+      console.log(this.gatewayList);
+    }).catch(res=>{
+    })
     this.checkProjectName();
     this.getConfigByKey(this.activeName)
     listStore().then(response => {