云联一号 4 هفته پیش
والد
کامیت
53f17c7c48
100فایلهای تغییر یافته به همراه1376 افزوده شده و 1222 حذف شده
  1. 17 0
      src/api/company/adminAiModel.js
  2. 12 29
      src/assets/styles/common.scss
  3. 253 0
      src/assets/styles/form-page.scss
  4. 3 1
      src/assets/styles/index.scss
  5. 249 0
      src/assets/styles/list-page.scss
  6. 2 2
      src/views/FastGptExtUserTag/index/index.vue
  7. 2 2
      src/views/ad/AdDyAccount/index.vue
  8. 2 2
      src/views/ad/AdIqiyiAccount/index.vue
  9. 2 2
      src/views/ad/AdUploadLog/index.vue
  10. 2 2
      src/views/ad/AdYouKuaccount/index.vue
  11. 2 2
      src/views/ad/adAccount/index.vue
  12. 2 2
      src/views/ad/adDomain/index.vue
  13. 2 2
      src/views/ad/adDyApi/index/index.vue
  14. 2 2
      src/views/ad/adSite/index.vue
  15. 2 2
      src/views/ad/clickLog/index/index.vue
  16. 2 2
      src/views/ad/html/index.vue
  17. 4 4
      src/views/addressBook/all.vue
  18. 2 2
      src/views/admin/qwExternalContact/index.vue
  19. 3 3
      src/views/admin/sysUser/index.vue
  20. 2 2
      src/views/aiSipCall/aiSipCallBizGroup.vue
  21. 2 2
      src/views/aiSipCall/aiSipCallGateway.vue
  22. 2 2
      src/views/aiSipCall/aiSipCallLlmAgentAccount.vue
  23. 2 2
      src/views/aiSipCall/aiSipCallTask.vue
  24. 2 2
      src/views/aiSipCall/aiSipCallUser.vue
  25. 2 2
      src/views/aiSipCall/aiSipCallVoiceTtsAliyun.vue
  26. 2 2
      src/views/aiob/AiobBaiduCallApi/index.vue
  27. 2 2
      src/views/aiob/AiobBaiduEncryption/index.vue
  28. 2 2
      src/views/aiob/AiobBaiduTask/index.vue
  29. 2 2
      src/views/baidu/BdAccount/index.vue
  30. 2 2
      src/views/bill/billLog/index.vue
  31. 2 2
      src/views/callRecord/index/index.vue
  32. 2 2
      src/views/chat/chatDataset/index.vue
  33. 2 2
      src/views/chat/chatDatasetFile/index.vue
  34. 2 2
      src/views/chat/chatKeyword/index.vue
  35. 2 2
      src/views/chat/chatMsg/index.vue
  36. 2 2
      src/views/chat/chatMsgLogs/index.vue
  37. 2 2
      src/views/chat/chatRole/index.vue
  38. 2 2
      src/views/chat/chatSession/index.vue
  39. 2 2
      src/views/chat/chatUser/index.vue
  40. 2 2
      src/views/company/VoiceRoboticWx/index.vue
  41. 299 610
      src/views/company/aiModel/account/info.vue
  42. 313 352
      src/views/company/aiModel/index.vue
  43. 2 2
      src/views/company/companyApply/index.vue
  44. 5 5
      src/views/company/companyBindUser/index.vue
  45. 3 3
      src/views/company/companyClient/index.vue
  46. 4 4
      src/views/company/companyDomainBind/index.vue
  47. 2 2
      src/views/company/companyMoneyLogs/index.vue
  48. 2 2
      src/views/company/companyPost/index.vue
  49. 3 3
      src/views/company/companyRecharge/index.vue
  50. 4 4
      src/views/company/companyRedPacketBalanceLogs/index.vue
  51. 2 2
      src/views/company/companySms/index.vue
  52. 4 4
      src/views/company/companySmsLogs/index.vue
  53. 2 2
      src/views/company/companySmsOrder/index.vue
  54. 2 2
      src/views/company/companySmsTemp/index.vue
  55. 2 2
      src/views/company/companyUser/card/addSms.vue
  56. 3 3
      src/views/company/companyUser/card/customerSelect.vue
  57. 2 2
      src/views/company/companyUser/card/index.vue
  58. 2 2
      src/views/company/companyUser/companyUserList.vue
  59. 2 2
      src/views/company/companyUser/indexOld.vue
  60. 5 5
      src/views/company/companyVoiceBlacklist/index.vue
  61. 2 2
      src/views/company/companyVoiceBlacklistIntercept/index.vue
  62. 5 5
      src/views/company/companyVoiceCaller/index.vue
  63. 2 2
      src/views/company/companyVoiceDialog/index.vue
  64. 4 4
      src/views/company/companyVoiceLogs/index.vue
  65. 2 2
      src/views/company/companyVoicePackageOrder/index.vue
  66. 3 3
      src/views/company/companyVoiceRobotic/index-old.vue
  67. 6 6
      src/views/company/companyVoiceRobotic/index.vue
  68. 6 6
      src/views/company/companyVoiceRobotic/myIndex.vue
  69. 3 3
      src/views/company/companyVoiceRoboticCallBlacklist/companyVoiceRoboticCallBlacklist.vue
  70. 2 2
      src/views/company/components/cardSelect.vue
  71. 2 2
      src/views/company/components/selectQwUser.vue
  72. 2 2
      src/views/company/components/selectQwUserOlder.vue
  73. 2 2
      src/views/company/components/userSelect.vue
  74. 3 3
      src/views/company/statistics/myVoiceLogs.vue
  75. 2 2
      src/views/company/tcmScheduleReport/companyReport.vue
  76. 2 2
      src/views/company/tcmScheduleReport/consume.vue
  77. 2 2
      src/views/company/tcmScheduleReport/index.vue
  78. 2 2
      src/views/company/tcmScheduleReport/statisticsReport.vue
  79. 9 9
      src/views/company/wxAccount/index.vue
  80. 2 2
      src/views/company/wxDialog/index.vue
  81. 2 2
      src/views/company/wxUser/index.vue
  82. 2 2
      src/views/company/wxUserGroup/wxUserGroup.vue
  83. 3 3
      src/views/components/QwUserSelect.vue
  84. 2 2
      src/views/components/course/courseWatchComment.vue
  85. 2 2
      src/views/components/course/userCourseCatalogDetails.vue
  86. 2 2
      src/views/components/his/doctorDetails.vue
  87. 2 2
      src/views/components/his/packageOrderDetails.vue
  88. 2 2
      src/views/components/his/packageOrderDetails2.vue
  89. 2 2
      src/views/components/his/packageSelect.vue
  90. 2 2
      src/views/components/his/patientDetails.vue
  91. 2 2
      src/views/components/his/pharmacistDetails.vue
  92. 2 2
      src/views/components/his/productAttrValueSelect.vue
  93. 2 2
      src/views/components/his/productDeliveryGiftValueSelect.vue
  94. 2 2
      src/views/components/his/productGiftValueSelect.vue
  95. 2 2
      src/views/components/his/storeAfterSalesDetails.vue
  96. 2 2
      src/views/components/his/storeOrderDetails.vue
  97. 2 2
      src/views/components/his/storeOrderDetails2.vue
  98. 4 4
      src/views/components/his/userPatietDetails.vue
  99. 2 2
      src/views/components/tag/AutoTagDialog.vue
  100. 2 2
      src/views/course/course.vue

+ 17 - 0
src/api/company/adminAiModel.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+/** 外呼场景 — 总后台已分配的模型(只读) */
+export function getOutboundAiScene() {
+  return request({
+    url: '/company/adminAiModel/outboundScene',
+    method: 'get'
+  })
+}
+
+/** 指定场景 — 总后台已分配的模型(只读) */
+export function getAiSceneModels(sceneCode) {
+  return request({
+    url: `/company/adminAiModel/scene/${sceneCode}`,
+    method: 'get'
+  })
+}

+ 12 - 29
src/assets/styles/common.scss

@@ -74,10 +74,11 @@
   .el-table__header-wrapper, .el-table__fixed-header-wrapper {
     th {
       word-break: break-word;
-      background-color: #f8f8f9;
-      color: #515a6e;
-      height: 40px;
+      background-color: #f5f7fa;
+      color: #606266;
+      height: 44px;
       font-size: 13px;
+      font-weight: 600;
     }
   }
   .el-table__body-wrapper {
@@ -87,13 +88,14 @@
   }
 }
 
-/** 表单布局 **/
+/** 表单布局 — 详细样式见 form-page.scss */
 .form-header {
-  font-size:15px;
-  color:#6379bb;
-  border-bottom:1px solid #ddd;
-  margin:8px 10px 25px 10px;
-  padding-bottom:5px
+  font-size: 14px;
+  font-weight: 600;
+  color: #4F46E5;
+  border-bottom: 1px solid #ebeef5;
+  margin: 0 0 20px;
+  padding: 0 0 10px;
 }
 
 /** 表格布局 **/
@@ -188,26 +190,7 @@
   margin-bottom: 10px;
 }
 
-/* button color */
-.el-button--cyan.is-active,
-.el-button--cyan:active {
-  background: #20B2AA;
-  border-color: #20B2AA;
-  color: #FFFFFF;
-}
-
-.el-button--cyan:focus,
-.el-button--cyan:hover {
-  background: #48D1CC;
-  border-color: #48D1CC;
-  color: #FFFFFF;
-}
-
-.el-button--cyan {
-  background-color: #20B2AA;
-  border-color: #20B2AA;
-  color: #FFFFFF;
-}
+/* button color — cyan 已迁移至 list-page.scss,与 primary 主题统一 */
 
 /* text color */
 .text-navy {

+ 253 - 0
src/assets/styles/form-page.scss

@@ -0,0 +1,253 @@
+/**
+ * 全局表单样式 — Dialog / Drawer / 页面内 block & inline 表单统一排版
+ */
+@import './variables.scss';
+
+$form-label-width: 90px;
+$form-control-width: 200px;
+$form-date-width: 240px;
+$form-item-gap: 18px;
+
+// ---- 通用表单项 ----
+@mixin form-item-typography {
+  .el-form-item__label {
+    font-weight: 400 !important;
+    color: #606266;
+    padding-right: 12px;
+  }
+
+  .el-form-item__error {
+    padding-top: 2px;
+    font-size: 12px;
+  }
+}
+
+// ---- 弹窗 / 抽屉内 inline 筛选 ----
+@mixin overlay-inline-filter {
+  display: flex !important;
+  flex-wrap: wrap;
+  align-items: flex-start;
+  column-gap: 16px;
+  row-gap: 12px;
+  margin-bottom: 16px !important;
+  padding: 12px 16px 4px !important;
+  background: #f8fafc !important;
+  border: 1px solid #ebeef5 !important;
+  border-radius: 8px !important;
+
+  .el-form-item {
+    display: inline-flex !important;
+    align-items: center;
+    margin: 0 !important;
+    width: auto;
+    min-width: 280px;
+    min-height: 32px;
+
+    .el-form-item__label {
+      width: $form-label-width !important;
+      flex-shrink: 0;
+      line-height: 32px;
+    }
+
+    .el-form-item__content {
+      flex: 1;
+      min-width: 0;
+      line-height: 32px;
+
+      > .el-input,
+      > .el-select,
+      > .el-cascader,
+      > .vue-treeselect,
+      > .el-input-number {
+        width: $form-control-width !important;
+      }
+
+      > .el-date-editor--daterange,
+      > .el-date-editor--datetimerange,
+      > .el-date-editor--monthrange {
+        width: $form-date-width !important;
+      }
+
+      > .el-date-editor.el-input {
+        width: $form-control-width !important;
+      }
+    }
+
+    &:last-child:not([label]) {
+      min-width: auto;
+
+      .el-form-item__content {
+        display: flex;
+        align-items: center;
+        gap: 10px;
+      }
+    }
+  }
+}
+
+// ===================== Block 表单(垂直布局)=====================
+.el-form:not(.el-form--inline) {
+  @include form-item-typography;
+
+  .el-form-item {
+    margin-bottom: $form-item-gap;
+
+    .el-form-item__label {
+      line-height: 32px;
+    }
+
+    .el-form-item__content {
+      line-height: 32px;
+
+      > .el-input,
+      > .el-select,
+      > .el-textarea,
+      > .el-cascader,
+      > .el-date-editor,
+      > .vue-treeselect,
+      > .el-input-number {
+        width: 100%;
+        max-width: 100%;
+      }
+
+      .el-radio-group,
+      .el-checkbox-group {
+        line-height: 32px;
+        vertical-align: middle;
+      }
+
+      .el-switch {
+        vertical-align: middle;
+      }
+    }
+
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+}
+
+// 表单分区标题
+.form-header {
+  font-size: 14px;
+  font-weight: 600;
+  color: $primary;
+  border-bottom: 1px solid #ebeef5;
+  margin: 0 0 20px;
+  padding: 0 0 10px;
+}
+
+// ===================== Dialog ======================
+.el-dialog {
+  .el-dialog__header {
+    padding: 16px 24px;
+    border-bottom: 1px solid #ebeef5;
+
+    .el-dialog__title {
+      font-size: 16px;
+      font-weight: 600;
+      color: #303133;
+      line-height: 24px;
+    }
+
+    .el-dialog__headerbtn {
+      top: 16px;
+      right: 20px;
+    }
+  }
+
+  .el-dialog__body {
+    padding: 20px 24px 12px !important;
+
+    .el-form:not(.el-form--inline) .el-form-item {
+      margin-bottom: 16px;
+    }
+  }
+
+  .el-dialog__footer {
+    padding: 12px 24px 20px;
+    border-top: 1px solid #ebeef5;
+
+    .el-button + .el-button {
+      margin-left: 12px;
+    }
+  }
+
+  // 弹窗内 inline 筛选
+  .el-form.el-form--inline {
+    @include overlay-inline-filter;
+  }
+}
+
+// 列表页内 Dialog 覆盖 list-page 查询卡片(避免双层卡片冲突)
+.app-container .el-dialog .el-form.el-form--inline,
+.app-container .el-drawer .el-form.el-form--inline {
+  @include overlay-inline-filter;
+}
+
+// ===================== Drawer ======================
+.el-drawer {
+  .el-drawer__header {
+    margin-bottom: 0;
+    padding: 16px 20px;
+    border-bottom: 1px solid #ebeef5;
+    font-size: 16px;
+    font-weight: 600;
+    color: #303133;
+  }
+
+  .el-drawer__body {
+    padding: 20px;
+
+    .el-form:not(.el-form--inline) .el-form-item {
+      margin-bottom: 16px;
+    }
+  }
+
+  .el-form.el-form--inline {
+    @include overlay-inline-filter;
+  }
+}
+
+// ===================== 页面内独立 block 表单 ======================
+.app-container {
+  > .el-form:not(.el-form--inline),
+  .form-panel > .el-form:not(.el-form--inline),
+  .form-panel.el-form:not(.el-form--inline) {
+    padding: 20px 24px;
+    background: #f8fafc;
+    border: 1px solid #ebeef5;
+    border-radius: 8px;
+    margin-bottom: 16px;
+  }
+}
+
+// append-to-body 弹窗(不在 app-container 内)
+.el-dialog__wrapper,
+.el-drawer__wrapper {
+  .el-form:not(.el-form--inline) {
+    @include form-item-typography;
+  }
+}
+
+// 根级 Dialog inline(如 selectUser.vue)
+.el-dialog__wrapper .el-dialog .el-form.el-form--inline {
+  @include overlay-inline-filter;
+}
+
+// 表单内按钮间距
+.el-form-item .el-button + .el-button {
+  margin-left: 10px;
+}
+
+// 必填星号颜色
+.el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before {
+  color: #ef4444;
+}
+
+// 禁用态
+.el-form-item .el-input.is-disabled .el-input__inner,
+.el-form-item .el-textarea.is-disabled .el-textarea__inner {
+  background-color: #f5f7fa;
+  color: #909399;
+}

+ 3 - 1
src/assets/styles/index.scss

@@ -4,6 +4,8 @@
 @import './element-ui.scss';
 @import './sidebar.scss';
 @import './btn.scss';
+@import './list-page.scss';
+@import './form-page.scss';
 
 body {
   height: 100%;
@@ -14,7 +16,7 @@ body {
   background-color: $page-bg;
 }
 
-label {
+label:not(.el-form-item__label):not(.el-radio__label):not(.el-checkbox__label) {
   font-weight: 700;
 }
 

+ 249 - 0
src/assets/styles/list-page.scss

@@ -0,0 +1,249 @@
+/**
+ * 列表页全局样式 — 统一查询区栅格对齐、工具栏按钮、表格排版
+ * 匹配 .app-container 内任意层级的标准 RuoYi 列表结构(含 Tab / el-col / wrapper div)
+ */
+@import './variables.scss';
+
+// ---- 查询筛选区 ----
+$filter-label-width: 90px;
+$filter-control-width: 200px;
+$filter-date-width: 240px;
+$filter-item-width: 310px;
+$filter-gap-x: 16px;
+$filter-gap-y: 12px;
+
+@mixin list-filter-form {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: flex-start;
+  column-gap: $filter-gap-x;
+  row-gap: $filter-gap-y;
+  margin-bottom: 16px !important;
+  padding: 16px 16px 4px;
+  background: #f8fafc;
+  border: 1px solid #ebeef5;
+  border-radius: 8px;
+
+  .el-form-item {
+    display: inline-flex;
+    align-items: center;
+    margin: 0 !important;
+    width: $filter-item-width;
+    min-height: 32px;
+
+    .el-form-item__label {
+      width: $filter-label-width !important;
+      flex-shrink: 0;
+      padding-right: 8px;
+      line-height: 32px;
+      font-weight: 400;
+      color: #606266;
+    }
+
+    .el-form-item__content {
+      flex: 1;
+      min-width: 0;
+      line-height: 32px;
+
+      > .el-input,
+      > .el-select,
+      > .el-cascader,
+      > .vue-treeselect,
+      > .el-input-number {
+        width: $filter-control-width !important;
+      }
+
+      > .el-date-editor--daterange,
+      > .el-date-editor--datetimerange,
+      > .el-date-editor--monthrange {
+        width: $filter-date-width !important;
+      }
+
+      > .el-date-editor.el-input {
+        width: $filter-control-width !important;
+      }
+
+      [style*="width"] {
+        &.el-input,
+        &.el-select,
+        &.el-date-editor {
+          width: $filter-control-width !important;
+        }
+      }
+    }
+
+    &:last-child:not([label]),
+    &.filter-actions {
+      width: auto;
+      min-width: 140px;
+
+      .el-form-item__content {
+        display: flex;
+        align-items: center;
+        gap: 10px;
+      }
+    }
+  }
+}
+
+@mixin list-toolbar-row {
+  margin-bottom: 12px !important;
+  padding: 2px 0 6px;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+
+  .el-col {
+    width: auto !important;
+    flex: 0 0 auto;
+    padding-left: 0 !important;
+    padding-right: 8px !important;
+  }
+
+  .el-button--mini,
+  .el-button--small {
+    padding: 7px 14px;
+    font-size: 13px;
+  }
+
+  .el-button--success:not(.is-plain) {
+    color: $primary;
+    background-color: $primary-light;
+    border-color: #c4b5fd;
+
+    &:hover,
+    &:focus {
+      color: #fff;
+      background-color: $primary;
+      border-color: $primary;
+    }
+  }
+
+  .el-button--warning:not(.is-plain) {
+    color: #606266;
+    background-color: #fff;
+    border-color: #dcdfe6;
+
+    &:hover,
+    &:focus {
+      color: $primary;
+      background-color: $primary-light;
+      border-color: #c4b5fd;
+    }
+  }
+}
+
+@mixin list-table-style {
+  border-radius: 6px;
+  overflow: hidden;
+
+  &::before {
+    display: none;
+  }
+
+  th {
+    background-color: #f5f7fa !important;
+    color: #606266;
+    font-weight: 600;
+    font-size: 13px;
+    padding: 10px 0;
+  }
+
+  td {
+    padding: 8px 0;
+    color: #555;
+    font-size: 13px;
+  }
+
+  .cell {
+    line-height: 22px;
+    padding-left: 10px;
+    padding-right: 10px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  .small-padding .cell,
+  .fixed-width .cell {
+    white-space: normal;
+    overflow: visible;
+  }
+
+  .el-tag {
+    margin: 0 2px;
+  }
+
+  &:not(.el-table--striped) .el-table__body tr:nth-child(even) > td {
+    background-color: #fafbfc;
+  }
+}
+
+.app-container {
+  // 查询区:匹配任意层级 inline 表单(Tab / el-col / wrapper div / filter-card 等)
+  .el-form.el-form--inline {
+    @include list-filter-form;
+  }
+
+  // filter-card:外层已有卡片,内层表单去重
+  .filter-card {
+    margin-bottom: 16px;
+    padding: 16px 16px 4px;
+    background: #f8fafc;
+    border: 1px solid #ebeef5;
+    border-radius: 8px;
+
+    .el-form.el-form--inline,
+    .filter-form.el-form--inline {
+      margin-bottom: 0 !important;
+      padding: 0;
+      background: transparent;
+      border: none;
+      border-radius: 0;
+    }
+  }
+
+  // ---- 工具栏 ----
+  .el-row.mb8,
+  .toolbar-row > .el-row.mb8,
+  .toolbar-row.el-row.mb8 {
+    @include list-toolbar-row;
+  }
+
+  // ---- 表格 ----
+  .el-table,
+  .table-card > .el-table {
+    @include list-table-style;
+  }
+
+  .table-card {
+    margin-bottom: 8px;
+  }
+
+  .toolbar-row {
+    margin-bottom: 4px;
+  }
+}
+
+// 查询按钮 cyan 与主题 primary 统一
+.el-button--cyan {
+  background-color: $primary !important;
+  border-color: $primary !important;
+  color: #fff !important;
+
+  &:hover,
+  &:focus {
+    background-color: #6366f1 !important;
+    border-color: #6366f1 !important;
+    color: #fff !important;
+  }
+
+  &:active {
+    background-color: $primary-dark !important;
+    border-color: $primary-dark !important;
+  }
+}
+
+.app-container .el-form--inline .el-form-item:last-child .el-button + .el-button {
+  margin-left: 10px;
+}

+ 2 - 2
src/views/FastGptExtUserTag/index/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="关键词" prop="keyword">
         <el-input v-model="queryParams.keyword" placeholder="请输入关键词" clearable size="small"
           @keyup.enter.native="handleQuery" />

+ 2 - 2
src/views/ad/AdDyAccount/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="账户ID" prop="advertiserId">
         <el-input
           v-model="queryParams.advertiserId"

+ 2 - 2
src/views/ad/AdIqiyiAccount/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="账号ID" prop="accountId">
         <el-input
           v-model="queryParams.accountId"

+ 2 - 2
src/views/ad/AdUploadLog/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
 
       <el-form-item label="媒体类型" prop="type">
         <el-select v-model="queryParams.type" @change="typeChange" placeholder="请选择媒体类型" clearable size="small">

+ 2 - 2
src/views/ad/AdYouKuaccount/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="账号ID" prop="accountId">
         <el-input
           v-model="queryParams.accountId"

+ 2 - 2
src/views/ad/adAccount/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"

+ 2 - 2
src/views/ad/adDomain/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"

+ 2 - 2
src/views/ad/adDyApi/index/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="关键词" prop="keyword">
         <el-input v-model="queryParams.keyword" placeholder="请输入关键词" clearable size="small"
           @keyup.enter.native="handleQuery" />

+ 2 - 2
src/views/ad/adSite/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="模板" prop="templateId">
         <el-select v-model="queryParams.templateId" @change="accountChange" placeholder="请选择模板">
           <el-option

+ 2 - 2
src/views/ad/clickLog/index/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="关键词" prop="keyword">
         <el-input v-model="queryParams.keyword" placeholder="请输入关键词" clearable size="small"
           @keyup.enter.native="handleQuery" />

+ 2 - 2
src/views/ad/html/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="编号" prop="no">
         <el-input
           v-model="queryParams.no"

+ 4 - 4
src/views/addressBook/all.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-row :gutter="20">
       <!--部门数据-->
@@ -12,12 +12,12 @@
       </el-col>
       <!--用户数据-->
       <el-col :span="20" :xs="24">
-        <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="90px">
           <el-form-item label="员工姓名" prop="nickName">
             <el-input v-model="queryParams.nickName" placeholder="请输入员工姓名" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
           </el-form-item>
-          <el-form-item label="手机号" prop="phonenumber">
-            <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
+          <el-form-item label="手机号" prop="phonenumber">
+            <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
           </el-form-item>
          
           <el-form-item>

+ 2 - 2
src/views/admin/qwExternalContact/index.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="关键词" prop="keyword">
@@ -17,7 +17,7 @@
       <el-table-column type="selection" width="50" align="center" />
       <el-table-column label="ID" align="center" prop="id" width="80" />
       <el-table-column label="用户名称" align="center" prop="name" />
-      <el-table-column label="手机号" align="center" prop="phone" width="120" />
+      <el-table-column label="手机号" align="center" prop="phone" width="120" />
       <el-table-column label="来源" align="center" prop="source" width="100" />
       <el-table-column label="状态" align="center" prop="status" width="80">
         <template slot-scope="scope">

+ 3 - 3
src/views/admin/sysUser/index.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="关键词" prop="keyword">
@@ -17,7 +17,7 @@
       <el-table-column type="selection" width="50" align="center" />
       <el-table-column label="ID" align="center" prop="id" width="80" />
       <el-table-column label="员工姓名" align="center" prop="userName" width="100" />
-      <el-table-column label="手机号" align="center" prop="phonenumber" width="120" />
+      <el-table-column label="手机号" align="center" prop="phonenumber" width="120" />
       <el-table-column label="部门" align="center" prop="deptName" width="120" />
       <el-table-column label="角色" align="center" prop="roleName" width="120" />
       <el-table-column label="状态" align="center" prop="status" width="80">
@@ -48,7 +48,7 @@
         <el-form-item label="员工姓名" prop="userName">
           <el-input v-model="form.userName" placeholder="请输入员工姓名" :disabled="true" />
         </el-form-item>
-        <el-form-item label="手机号" prop="phonenumber">
+        <el-form-item label="手机号" prop="phonenumber">
           <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
         </el-form-item>
         <el-form-item label="邮箱" prop="email">

+ 2 - 2
src/views/aiSipCall/aiSipCallBizGroup.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="业务组名称" prop="bizGroupName">
         <el-input
           v-model="queryParams.bizGroupName"

+ 2 - 2
src/views/aiSipCall/aiSipCallGateway.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="网关用途" prop="purpose">
         <el-select
           v-model="queryParams.purpose"

+ 2 - 2
src/views/aiSipCall/aiSipCallLlmAgentAccount.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"

+ 2 - 2
src/views/aiSipCall/aiSipCallTask.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="任务名称" prop="batchName">
         <el-input
           v-model="queryParams.batchName"

+ 2 - 2
src/views/aiSipCall/aiSipCallUser.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
 
       <el-form-item label="登录账号" prop="loginName">
         <el-input

+ 2 - 2
src/views/aiSipCall/aiSipCallVoiceTtsAliyun.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="tts发音人名称" prop="voiceName">
         <el-input
           v-model="queryParams.voiceName"

+ 2 - 2
src/views/aiob/AiobBaiduCallApi/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"

+ 2 - 2
src/views/aiob/AiobBaiduEncryption/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="秘钥ID" prop="secretId">
         <el-input
           v-model="queryParams.secretId"

+ 2 - 2
src/views/aiob/AiobBaiduTask/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="任务ID" prop="taskId">
         <el-input
           v-model="queryParams.taskId"

+ 2 - 2
src/views/baidu/BdAccount/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="账户ID" prop="accountId">
         <el-input
           v-model="queryParams.accountId"

+ 2 - 2
src/views/bill/billLog/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="订单ID" prop="orderId">
         <el-input
           v-model="queryParams.orderId"

+ 2 - 2
src/views/callRecord/index/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="关键词" prop="keyword">
         <el-input v-model="queryParams.keyword" placeholder="请输入关键词" clearable size="small"
           @keyup.enter.native="handleQuery" />

+ 2 - 2
src/views/chat/chatDataset/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="所属角色" prop="roleId">
         <el-select v-model="queryParams.roleId" placeholder="请选择所属角色" clearable size="small">
           <el-option

+ 2 - 2
src/views/chat/chatDatasetFile/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="数据集ID" prop="datasetId">
         <el-input
           v-model="queryParams.datasetId"

+ 2 - 2
src/views/chat/chatKeyword/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="关键词" prop="keyword">
         <el-input
           v-model="queryParams.keyword"

+ 2 - 2
src/views/chat/chatMsg/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="用户昵称" prop="nickName">
         <el-input
           v-model="queryParams.nickName"

+ 2 - 2
src/views/chat/chatMsgLogs/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="客服角色" prop="roleId">
         <el-select v-model="queryParams.roleId" placeholder="请选择客服角色" clearable size="small">
           <el-option

+ 2 - 2
src/views/chat/chatRole/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="客服角色" prop="roleName">
         <el-input
           v-model="queryParams.roleName"

+ 2 - 2
src/views/chat/chatSession/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="会话标识" prop="sessionCode">
         <el-input
           v-model="queryParams.sessionCode"

+ 2 - 2
src/views/chat/chatUser/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="微信客户 external_userid" prop="externalUserid">
         <el-input
           v-model="queryParams.externalUserid"

+ 2 - 2
src/views/company/VoiceRoboticWx/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="意向" prop="intention">
         <el-input
           v-model="queryParams.intention"

+ 299 - 610
src/views/company/aiModel/account/info.vue

@@ -1,636 +1,325 @@
 <template>
-    <div class="app-container">
-        <el-form
-            ref="form"
-            :model="form"
-            :rules="rules"
-            label-width="120px"
-            class="account-form"
+  <div class="app-container outbound-config-form">
+    <el-form
+      ref="form"
+      :model="form"
+      :rules="rules"
+      label-width="120px"
+      class="account-form"
+    >
+      <el-form-item label="配置名称" prop="name">
+        <el-input v-model="form.name" placeholder="请输入外呼配置名称" />
+      </el-form-item>
+
+      <el-divider content-position="left">提示词与知识库</el-divider>
+
+      <el-form-item label="大模型提示词" prop="accountJson.llmTips">
+        <el-input
+          v-model="form.accountJson.llmTips"
+          type="textarea"
+          :rows="12"
+          placeholder="请输入外呼对话主提示词"
+        />
+      </el-form-item>
+
+      <el-form-item label="FAQ上下文" prop="accountJson.faqContext">
+        <el-input
+          v-model="form.accountJson.faqContext"
+          type="textarea"
+          :rows="12"
+          placeholder="请输入 FAQ 上下文"
+        />
+      </el-form-item>
+
+      <el-form-item label="知识库分类" prop="accountJson.kbCatId">
+        <el-select
+          v-model="form.accountJson.kbCatId"
+          placeholder="请选择知识库分类(可选)"
+          style="width: 100%"
+          clearable
+          filterable
         >
-            <el-form-item label="模型名称" prop="name" required>
-                <el-input v-model="form.name" placeholder="请输入账模型名称" />
-            </el-form-item>
-
-            <el-form-item label="实现类" prop="providerClassName" required>
-                <el-select
-                    v-model="form.providerClassName"
-                    placeholder="请选择实现类"
-                    @change="handleProviderChange"
-                    style="width: 100%"
-                    filterable
-                    clearable
-                >
-                    <el-option
-                        v-for="item in providerOptions"
-                        :key="item"
-                        :label="item"
-                        :value="item"
-                    />
-                </el-select>
-            </el-form-item>
-
-            <el-form-item label="模型并发数" prop="concurrentNum" required>
-                <el-input
-                    v-model="form.concurrentNum"
-                    placeholder="请输入并发数"
-                    @input="handleConcurrentNumInput"
-                    :disabled="true"
-                />
-            </el-form-item>
-
-            <!-- 动态字段区域 -->
-            <template v-if="dynamicFields.length > 0">
-                <div v-for="field in dynamicFields" :key="field.name">
-                    <el-form-item
-                        :label="field.label"
-                        :prop="'accountJson.' + field.name"
-                        :required="field.required"
-                    >
-                        <!-- 文本框 -->
-                        <el-input
-                            v-if="field.type === 'input'"
-                            v-model="form.accountJson[field.name]"
-                            :placeholder="'请输入' + field.label"
-                            :disabled="!!field.disableProp"
-                        />
-
-                        <!-- 文本域 -->
-                        <el-input
-                            v-else-if="field.type === 'textarea'"
-                            v-model="form.accountJson[field.name]"
-                            type="textarea"
-                            :rows="field.rows || 3"
-                            :placeholder="'请输入' + field.label"
-                             :disabled="!!field.disableProp"
-                        />
-
-                        <!-- 下拉框 -->
-                        <el-select
-                            v-else-if="field.type === 'select'"
-                            v-model="form.accountJson[field.name]"
-                            :placeholder="'请选择' + field.label"
-                            style="width: 100%"
-                            @change="(val) => handleSelectChange(field.name, val)"
-                            filterable
-                            clearable
-                             :disabled="!!field.disableProp"
-                        >
-                            <el-option
-                                v-for="option in field.options"
-                                :key="option.value"
-                                :label="option.label"
-                                :value="option.value"
-                            />
-                        </el-select>
-
-                        <!-- 大文本域(30行) -->
-                        <el-input
-                            v-else-if="field.type === 'large-textarea'"
-                            v-model="form.accountJson[field.name]"
-                            type="textarea"
-                            :rows="30"
-                            :placeholder="'请输入' + field.label"
-                             :disabled="!!field.disableProp"
-                        />
-                    </el-form-item>
-
-                    <!-- Coze的token类型特殊字段 -->
-                    <template v-if="field.name === 'tokenType' && form.accountJson.tokenType">
-                        <el-form-item
-                            v-if="form.accountJson.tokenType === 'oauth'"
-                            label="OAuth配置"
-                            prop="accountJson.oauthFields"
-                        >
-                            <el-card class="oauth-card">
-                                <el-form-item label="Client ID" prop="accountJson.oauthClientId" required>
-                                    <el-input v-model="form.accountJson.oauthClientId" />
-                                </el-form-item>
-                                <el-form-item label="Private Key" prop="accountJson.oauthPrivateKey" required>
-                                    <el-input v-model="form.accountJson.oauthPrivateKey" />
-                                </el-form-item>
-                                <el-form-item label="Public Key ID" prop="accountJson.oauthPublicKeyId" required>
-                                    <el-input v-model="form.accountJson.oauthPublicKeyId" />
-                                </el-form-item>
-                            </el-card>
-                        </el-form-item>
-
-                        <el-form-item
-                            v-if="form.accountJson.tokenType === 'pat'"
-                            label="PAT Token"
-                            prop="accountJson.patToken"
-                            required
-                        >
-                            <el-input
-                                v-model="form.accountJson.patToken"
-                                type="textarea"
-                                :rows="3"
-                                placeholder="请输入PAT Token"
-                            />
-                        </el-form-item>
-                    </template>
-                </div>
-            </template>
-
-            <!-- 中断标志 -->
-            <el-form-item label="打断开关" prop="interruptFlag" required>
-                <el-select v-model="form.interruptFlag" placeholder="请选择中断标志" style="width: 100%"  filterable clearable>
-                    <el-option label="不打断" :value="0" />
-                    <el-option label="关键词打断" :value="1" />
-                    <el-option label="有声音就打断" :value="2" />
-                </el-select>
-            </el-form-item>
-
-            <!-- 中断关键词 -->
-            <el-form-item
-                v-if="form.interruptFlag === 1"
-                label="打断关键词"
-                prop="interruptKeywords"
-            >
-                <el-input
-                    v-model="form.interruptKeywords"
-                    type="textarea"
-                    :rows="5"
-                    placeholder="请输入打断关键词"
-                />
-            </el-form-item>
-
-            <!-- 忽略中断关键词 -->
-            <el-form-item
-                v-if="form.interruptFlag === 1"
-                label="忽略打断关键词"
-                prop="interruptIgnoreKeywords"
-            >
-                <el-input
-                    v-model="form.interruptIgnoreKeywords"
-                    type="textarea"
-                    :rows="5"
-                    placeholder="请输入忽略打断关键词"
-                />
-            </el-form-item>
-
-            <!-- 转人工数字按键 -->
-            <el-form-item label="转人工数字按键" prop="transferManualDigit">
-                <el-input
-                    v-model="form.transferManualDigit"
-                    placeholder="例如: 1"
-                    maxlength="1"
-                    @input="handleTransferManualDigitInput"
-                />
-            </el-form-item>
-
-            <!-- 客户意向提示词 -->
-            <el-form-item
-                v-if="showIntentionTips"
-                label="客户意向提示词"
-                prop="intentionTips"
-            >
-                <el-input
-                    v-model="form.intentionTips"
-                    type="textarea"
-                    :rows="5"
-                    placeholder="请输入客户意向提示词"
-                />
-            </el-form-item>
-        </el-form>
-
-        <!-- 底部按钮 -->
-        <div class="dialog-footer">
-            <el-button @click="handleCancel">取 消</el-button>
-            <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
-        </div>
+          <el-option
+            v-for="item in kbCatOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="开场白" prop="accountJson.openingRemarks">
+        <el-input
+          v-model="form.accountJson.openingRemarks"
+          type="textarea"
+          :rows="3"
+          placeholder="请输入开场白"
+        />
+      </el-form-item>
+
+      <el-form-item label="转人工提示词" prop="accountJson.transferToAgentTips">
+        <el-input
+          v-model="form.accountJson.transferToAgentTips"
+          type="textarea"
+          :rows="3"
+          placeholder="请输入转人工提示词"
+        />
+      </el-form-item>
+
+      <el-form-item label="挂机提示" prop="accountJson.hangupTips">
+        <el-input
+          v-model="form.accountJson.hangupTips"
+          type="textarea"
+          :rows="3"
+          placeholder="请输入挂机提示"
+        />
+      </el-form-item>
+
+      <el-form-item label="客户不说话提示" prop="accountJson.customerNoVoiceTips">
+        <el-input
+          v-model="form.accountJson.customerNoVoiceTips"
+          type="textarea"
+          :rows="3"
+          placeholder="请输入客户不说话时的提示"
+        />
+      </el-form-item>
+
+      <el-form-item label="客户意向提示词" prop="intentionTips">
+        <el-input
+          v-model="form.intentionTips"
+          type="textarea"
+          :rows="5"
+          placeholder="请输入客户意向分析提示词"
+        />
+      </el-form-item>
+
+      <el-divider content-position="left">通话行为</el-divider>
+
+      <el-form-item label="打断开关" prop="interruptFlag">
+        <el-select v-model="form.interruptFlag" placeholder="请选择打断方式" style="width: 100%">
+          <el-option label="不打断" :value="0" />
+          <el-option label="关键词打断" :value="1" />
+          <el-option label="有声音就打断" :value="2" />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item
+        v-if="form.interruptFlag === 1"
+        label="打断关键词"
+        prop="interruptKeywords"
+      >
+        <el-input
+          v-model="form.interruptKeywords"
+          type="textarea"
+          :rows="4"
+          placeholder="请输入打断关键词"
+        />
+      </el-form-item>
+
+      <el-form-item
+        v-if="form.interruptFlag === 1"
+        label="忽略打断关键词"
+        prop="interruptIgnoreKeywords"
+      >
+        <el-input
+          v-model="form.interruptIgnoreKeywords"
+          type="textarea"
+          :rows="4"
+          placeholder="请输入忽略打断关键词"
+        />
+      </el-form-item>
+
+      <el-form-item label="转人工数字按键" prop="transferManualDigit">
+        <el-input
+          v-model="form.transferManualDigit"
+          placeholder="例如: 1"
+          maxlength="1"
+          @input="handleTransferManualDigitInput"
+        />
+      </el-form-item>
+    </el-form>
+
+    <div class="dialog-footer">
+      <el-button @click="handleCancel">取 消</el-button>
+      <el-button type="primary" :loading="submitting" @click="handleSubmit">确 定</el-button>
     </div>
+  </div>
 </template>
 
 <script>
-import { add, update, getCidConfig } from '@/api/company/aiModel'  // 假设有 update 接口
+import { add, update } from '@/api/company/aiModel'
 import { all } from '@/api/company/aiCall'
 
+const DEFAULT_IGNORE_KEYWORDS = '呃 哦 哦哦 嗯 嗯嗯 嗯好的 好的 对 对对 是的 明白 啊 这样啊 是这样啊这样的 您好 你好'
+
 export default {
-    name: 'AccountForm',
-    props: {
-        providerOptions: { type: Array, default: () => [] },
-        initialData: {
-            type: Object,
-            default: () => ({})
-        },
-        errorMsg: {
-            type: String,
-            default: ''
-        }
+  name: 'OutboundAiConfigForm',
+  props: {
+    initialData: {
+      type: Object,
+      default: () => ({})
     },
-    data() {
-        return {
-            submitting: false,
-            // 表单数据
-            form: {
-                id: undefined,
-                name: '',
-                providerClassName: '',
-                concurrentNum: '',
-                interruptFlag: 0,
-                interruptKeywords: '',
-                interruptIgnoreKeywords: '呃 哦 哦哦 嗯 嗯嗯 嗯好的 好的 对 对对 是的 明白 啊 这样啊 是这样啊这样的 您好 你好',
-                transferManualDigit: '',
-                intentionTips: '',
-                accountJson: {}
-            },
-            // 知识库分类选项
-            kbCatOptions: [],
-            // 动态字段配置
-            dynamicFields: [],
-            // 是否显示客户意向提示词
-            showIntentionTips: false,
-            cidConf:{}
+    sceneInfo: {
+      type: Object,
+      default: () => ({})
+    }
+  },
+  data() {
+    return {
+      submitting: false,
+      kbCatOptions: [],
+      form: {
+        id: undefined,
+        name: '',
+        interruptFlag: 0,
+        interruptKeywords: '',
+        interruptIgnoreKeywords: DEFAULT_IGNORE_KEYWORDS,
+        transferManualDigit: '',
+        intentionTips: '',
+        accountJson: {
+          llmTips: '',
+          faqContext: '',
+          kbCatId: undefined,
+          openingRemarks: '',
+          transferToAgentTips: '',
+          hangupTips: '',
+          customerNoVoiceTips: ''
         }
-    },
-    computed: {
-        // 表单验证规则
-        rules() {
-            const baseRules = {
-                name: [
-                    { required: true, message: '请输入模型名称', trigger: 'blur' }
-                ],
-                providerClassName: [
-                    { required: true, message: '请选择实现类', trigger: 'change' }
-                ],
-                concurrentNum: [
-                    { required: true, message: '请输入模型并发数', trigger: 'blur' },
-                    { pattern: /^\d+$/, message: '请输入数字', trigger: 'blur' },
-                    { validator: this.validateConcurrentNum, trigger: 'blur' }
-                ],
-                transferManualDigit: [
-                    { pattern: /^[0-9]?$/, message: '请输入单个数字0-9', trigger: 'blur' }
-                ],
-                interruptFlag: [
-                    { required: true, message: '请选择打断开关', trigger: 'change' }
-                ]
-            }
-
-            // 动态字段验证规则
-            this.dynamicFields.forEach(field => {
-                if (field.required) {
-                    const prop = 'accountJson.' + field.name
-                    const isSelect = field.type === 'select'
-                    baseRules[prop] = [
-                        {
-                            required: true,
-                            message: isSelect ? `请选择${field.label}` : `请输入${field.label}`,
-                            trigger: isSelect ? 'change' : 'blur'
-                        }
-                    ]
-                }
-            })
-
-            // Coze OAuth 相关字段验证
-            if (this.form.accountJson.tokenType === 'oauth') {
-                baseRules['accountJson.oauthClientId'] = [
-                    { required: true, message: '请输入Client ID', trigger: 'blur' }
-                ]
-                baseRules['accountJson.oauthPrivateKey'] = [
-                    { required: true, message: '请输入Private Key', trigger: 'blur' }
-                ]
-                baseRules['accountJson.oauthPublicKeyId'] = [
-                    { required: true, message: '请输入Public Key ID', trigger: 'blur' }
-                ]
-            }
-
-            // Coze PAT Token 验证
-            if (this.form.accountJson.tokenType === 'pat') {
-                baseRules['accountJson.patToken'] = [
-                    { required: true, message: '请输入PAT Token', trigger: 'blur' }
-                ]
-            }
-
-            return baseRules
+      },
+      rules: {
+        name: [{ required: true, message: '请输入配置名称', trigger: 'blur' }],
+        'accountJson.llmTips': [{ required: true, message: '请输入大模型提示词', trigger: 'blur' }],
+        'accountJson.faqContext': [{ required: true, message: '请输入 FAQ 上下文', trigger: 'blur' }],
+        'accountJson.openingRemarks': [{ required: true, message: '请输入开场白', trigger: 'blur' }],
+        'accountJson.transferToAgentTips': [{ required: true, message: '请输入转人工提示词', trigger: 'blur' }],
+        'accountJson.hangupTips': [{ required: true, message: '请输入挂机提示', trigger: 'blur' }],
+        'accountJson.customerNoVoiceTips': [{ required: true, message: '请输入客户不说话提示', trigger: 'blur' }],
+        interruptFlag: [{ required: true, message: '请选择打断方式', trigger: 'change' }],
+        transferManualDigit: [{ pattern: /^[0-9]?$/, message: '请输入单个数字 0-9', trigger: 'blur' }]
+      }
+    }
+  },
+  watch: {
+    initialData: {
+      handler(val) {
+        if (val && Object.keys(val).length > 0) {
+          this.initFormData(val)
         }
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  created() {
+    this.loadKbCatOptions()
+  },
+  methods: {
+    initFormData(data) {
+      this.form.id = data.id
+      this.form.name = data.name || ''
+      this.form.interruptFlag = data.interruptFlag != null ? data.interruptFlag : 0
+      this.form.interruptKeywords = data.interruptKeywords || ''
+      this.form.interruptIgnoreKeywords = data.interruptIgnoreKeywords || DEFAULT_IGNORE_KEYWORDS
+      this.form.transferManualDigit = data.transferManualDigit || ''
+      this.form.intentionTips = data.intentionTips || ''
+
+      let parsed = {}
+      try {
+        parsed = data.accountJson
+          ? (typeof data.accountJson === 'string' ? JSON.parse(data.accountJson) : data.accountJson)
+          : {}
+      } catch (e) {
+        parsed = {}
+      }
+
+      const kbCatId = parsed.kbCatId != null && parsed.kbCatId !== -1
+        ? parsed.kbCatId
+        : (data.kbCatId != null && data.kbCatId !== -1 ? data.kbCatId : undefined)
+
+      this.form.accountJson = {
+        llmTips: parsed.llmTips || '',
+        faqContext: parsed.faqContext || '',
+        kbCatId,
+        openingRemarks: parsed.openingRemarks || '',
+        transferToAgentTips: parsed.transferToAgentTips || '',
+        hangupTips: parsed.hangupTips || '',
+        customerNoVoiceTips: parsed.customerNoVoiceTips || ''
+      }
     },
-    watch: {
-        // 监听初始数据变化
-        initialData: {
-            handler(val) {
-                if (val && Object.keys(val).length > 0) {
-                    this.initFormData(val)
-                }
-            },
-            deep: true,
-            immediate: true
-        },
-        // 监听错误信息
-        errorMsg: {
-            handler(val) {
-                if (val) {
-                    this.$alert(val, '错误', {
-                        type: 'error',
-                        confirmButtonText: '确定'
-                    })
-                }
-            },
-            immediate: true
-        }
+    handleTransferManualDigitInput(value) {
+      let val = value.replace(/[^0-9]/g, '')
+      if (val.length > 1) val = val.substring(0, 1)
+      this.$set(this.form, 'transferManualDigit', val)
     },
-    created() {
-        this.loadKbCatOptions();
-        this.initCidConfData();
+    async loadKbCatOptions() {
+      try {
+        const response = await all()
+        const list = response?.data ?? []
+        this.kbCatOptions = Array.isArray(list)
+          ? list.map(item => ({ label: item.cat, value: item.id }))
+          : []
+      } catch (error) {
+        this.kbCatOptions = []
+      }
     },
-    methods: {
-        initCidConfData(){
-            getCidConfig().then(res=>{
-            console.log(JSON.parse(res.data));
-            this.cidConf = JSON.parse(res.data);
-        }).catch(res=>{})
-        },
-        // 初始化表单数据
-        initFormData(data) {
-            this.form.id = data.id
-            this.form.name = data.name || ''
-            this.form.providerClassName = data.providerClassName || ''
-            this.form.concurrentNum = data.concurrentNum || ''
-            this.form.interruptFlag = data.interruptFlag || 0
-            this.form.interruptKeywords = data.interruptKeywords || ''
-            this.form.interruptIgnoreKeywords = data.interruptIgnoreKeywords || ''
-            this.form.transferManualDigit = data.transferManualDigit || ''
-            this.form.intentionTips = data.intentionTips || ''
-            // 解析accountJson
-            try {
-                this.form.accountJson = data.accountJson ?
-                    (typeof data.accountJson === 'string' ? JSON.parse(data.accountJson) : data.accountJson)
-                    : {}
-            } catch (e) {
-                console.error('解析accountJson失败:', e)
-                this.form.accountJson = {}
-            }
-
-            // 根据providerClassName更新动态字段
-            if (this.form.providerClassName) {
-                this.updateDynamicFields(this.form.providerClassName,true)
-            }
-        },
-
-        // 并发数输入处理
-        handleConcurrentNumInput(value) {
-            // 只保留数字
-            let val = value.replace(/[^0-9]/g, '')
-            // 去掉前导0
-            val = val.replace(/^0+(\d)/, '$1')
-            // 上限200
-            if (parseInt(val) > 200) val = '200'
-            this.$set(this.form, 'concurrentNum', val)
-        },
-
-        // 转人工数字按键输入处理
-        handleTransferManualDigitInput(value) {
-            // 只保留0-9的数字,并限制为单个数字
-            let val = value.replace(/[^0-9]/g, '')
-            if (val.length > 1) val = val.substring(0, 1)
-            this.$set(this.form, 'transferManualDigit', val)
-        },
-
-        // 并发数验证器
-        validateConcurrentNum(rule, value, callback) {
-            const num = parseInt(value)
-            if (isNaN(num) || num < 0 || num > 200) {
-                callback(new Error('请输入0-200之间的整数'))
-            } else {
-                callback()
-            }
-        },
-
-        // 实现类变更处理
-        handleProviderChange(val) {
-            this.updateDynamicFields(val)
-        },
-
-        // 更新动态字段
-        updateDynamicFields(providerClassName,isUpdate) {
-            this.dynamicFields = []
-            this.showIntentionTips = false
-
-            // 清空accountJson中不相关的字段
-            const newAccountJson = {}
-
-            if (['DeepSeekChat', 'ChatGpt4o', 'JiutianChat'].includes(providerClassName)) {
-                this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true, disableProp:true  },
-                    { name: 'apiKey', label: 'apiKey', type: 'input', required: true, disableProp:true  },
-                    { name: 'modelName', label: '模型名称', type: 'input', required: true, disableProp:true  },
-                    { name: 'llmTips', label: '大模型提示词', type: 'large-textarea', required: true },
-                    { name: 'faqContext', label: 'FAQ上下文', type: 'large-textarea', required: true },
-                    { name: 'kbCatId', label: '知识库分类', type: 'select', required: false, options: this.kbCatOptions },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'openingRemarks', label: '开场白', type: 'textarea', rows: 3, required: true }
-                ]
-                this.showIntentionTips = true
-            }
-
-            if (['LocalLlmChat'].includes(providerClassName)) {
-                this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true },
-                    { name: 'modelName', label: '模型名称', type: 'input', required: true },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'openingRemarks', label: '开场白', type: 'textarea', rows: 3, required: true }
-                ]
-            }
-
-            if (['LocalNlpChat'].includes(providerClassName)) {
-                this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true },
-                    { name: 'botId', label: 'botId', type: 'input', required: true },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true }
-                ]
-            }
-
-            if (['Coze'].includes(providerClassName)) {
-                this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true },
-                    { name: 'botId', label: 'botId', type: 'input', required: true },
-                    {
-                        name: 'tokenType',
-                        label: 'Token类型',
-                        type: 'select',
-                        required: true,
-                        options: [
-                            { label: 'OAuth', value: 'oauth' },
-                            { label: 'PAT', value: 'pat' }
-                        ]
-                    },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'openingRemarks', label: '开场白', type: 'textarea', rows: 3, required: true }
-                ]
-            }
-
-            if (['MaxKB', 'Dify'].includes(providerClassName)) {
-                this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true },
-                    { name: 'apiKey', label: 'apiKey', type: 'input', required: true },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'openingRemarks', label: '开场白', type: 'textarea', rows: 3, required: true }
-                ]
-            }
-
-            if (['JiutianWorkflow', 'JiutianAgent'].includes(providerClassName)) {
-                this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true },
-                    { name: 'apiKey', label: 'apiKey', type: 'input', required: true },
-                    { name: 'botId', label: 'botId', type: 'input', required: true },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'openingRemarks', label: '开场白', type: 'textarea', rows: 3, required: true }
-                ]
-            }
-
-            // 保留原有数据
-            this.dynamicFields.forEach(field => {
-                if (this.form.accountJson[field.name]) {
-                    newAccountJson[field.name] = this.form.accountJson[field.name]
-                }
-            })
-
-            // 合并数据
-            this.form.accountJson = {
-                ...newAccountJson,
-                ...this.form.accountJson
-            }   
-
-            //默认跟上配置值
-            if('DeepSeekChat' === providerClassName && !!this.cidConf && !!!isUpdate){
-                this.$set(this.form.accountJson,"serverUrl",this.cidConf.serverAddress);
-                this.$set(this.form.accountJson,"apiKey",this.cidConf.apiKey);
-                this.$set(this.form.accountJson,"modelName",this.cidConf.modelName);
-                this.$set(this.form,"concurrentNum",this.cidConf.concurrency);
-                 this.dynamicFields = [
-                    { name: 'serverUrl', label: '服务地址', type: 'input', required: true, disableProp:true },
-                    { name: 'apiKey', label: 'apiKey', type: 'input', required: true, disableProp:true },
-                    { name: 'modelName', label: '模型名称', type: 'input', required: true, disableProp:true },
-                    { name: 'llmTips', label: '大模型提示词', type: 'large-textarea', required: true },
-                    { name: 'faqContext', label: 'FAQ上下文', type: 'large-textarea', required: true },
-                    { name: 'kbCatId', label: '知识库分类', type: 'select', required: false, options: this.kbCatOptions },
-                    { name: 'transferToAgentTips', label: '转人工提示词', type: 'textarea', rows: 3, required: true },
-                    { name: 'hangupTips', label: '挂机提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'customerNoVoiceTips', label: '客户不说话提示', type: 'textarea', rows: 3, required: true },
-                    { name: 'openingRemarks', label: '开场白', type: 'textarea', rows: 3, required: true }
-                ]
-            }
-        },
-
-        // 下拉框变更处理
-        handleSelectChange(fieldName, value) {
-            if (fieldName === 'tokenType') {
-                // 清空相关字段
-                delete this.form.accountJson.oauthClientId
-                delete this.form.accountJson.oauthPrivateKey
-                delete this.form.accountJson.oauthPublicKeyId
-                delete this.form.accountJson.patToken
-            }
-        },
-
-        // 加载知识库分类选项
-        async loadKbCatOptions() {
-            try {
-                const response = await all();
-                const list = response?.data ?? [];
-                this.kbCatOptions = Array.isArray(list)
-                    ? list.map(item => ({ label: item.cat, value: item.id }))
-                    : [];
-            } catch (error) {
-                console.error('加载知识库分类失败:', error);
-                this.kbCatOptions = [];
-            }
-        },
-
-        // 取消
-        handleCancel() {
-            this.$emit('cancel')
-        },
-
-        // 提交
-        async handleSubmit() {
-            await this.$refs.form.validate(async (valid) => {
-                if (valid) {
-                    this.submitting = true
-
-                    try {
-                        if (!this.showIntentionTips) {
-                            this.form.intentionTips = ''
-                        }
-
-                        const submitData = {
-                            id: this.form.id,
-                            name: this.form.name,
-                            providerClassName: this.form.providerClassName,
-                            concurrentNum: this.form.concurrentNum,
-                            interruptFlag: this.form.interruptFlag,
-                            interruptKeywords: this.form.interruptKeywords || '',
-                            interruptIgnoreKeywords: this.form.interruptIgnoreKeywords || '',
-                            transferManualDigit: this.form.transferManualDigit || '',
-                            intentionTips: this.form.intentionTips || ''
-                        }
-
-                        if (this.form.accountJson) {
-                            Object.keys(this.form.accountJson).forEach(key => {
-                                submitData[key] = this.form.accountJson[key]
-                            })
-                        }
-
-                        submitData.accountJson = JSON.stringify(this.form.accountJson)
-
-                        let response;
-                        if (submitData.id) {
-                            // 修改操作
-                            response = await update(submitData);
-                        } else {
-                            // 新增操作
-                            delete submitData.id;
-                            response = await add(submitData);
-                        }
-
-                        this.$message.success('操作成功!')
-                        this.$emit('success', response)
-                    } catch (error) {
-                        console.error('提交失败:', error)
-                        this.$message.error('操作失败')
-                    } finally {
-                        this.submitting = false
-                    }
-                }
-            })
+    handleCancel() {
+      this.$emit('cancel')
+    },
+    handleSubmit() {
+      this.$refs.form.validate(async valid => {
+        if (!valid) return
+        if (!this.sceneInfo.models || !this.sceneInfo.models.length) {
+          this.$message.warning('总后台尚未配置外呼场景模型,无法保存')
+          return
         }
+        this.submitting = true
+        try {
+          const accountJson = { ...this.form.accountJson }
+          const submitData = {
+            id: this.form.id,
+            name: this.form.name,
+            interruptFlag: this.form.interruptFlag,
+            interruptKeywords: this.form.interruptKeywords || '',
+            interruptIgnoreKeywords: this.form.interruptIgnoreKeywords || '',
+            transferManualDigit: this.form.transferManualDigit || '',
+            intentionTips: this.form.intentionTips || '',
+            kbCatId: accountJson.kbCatId != null ? accountJson.kbCatId : -1,
+            accountJson: JSON.stringify(accountJson)
+          }
+          const response = submitData.id ? await update(submitData) : await add(submitData)
+          if (response.code === 200) {
+            this.$message.success('保存成功')
+            this.$emit('success', response)
+          } else {
+            this.$message.error(response.msg || '保存失败')
+          }
+        } catch (error) {
+          this.$message.error(error.msg || error.message || '保存失败')
+        } finally {
+          this.submitting = false
+        }
+      })
     }
+  }
 }
 </script>
 
 <style scoped>
-.app-container {
-    padding: 20px;
-}
-
-.account-form {
-    max-width: 800px;
-    margin: 0 auto;
+.outbound-config-form {
+  padding: 16px 20px 72px;
+  overflow-y: auto;
+  flex: 1;
 }
 
 .dialog-footer {
-    text-align: center;
-    padding-top: 20px;
-    border-top: 1px solid #eee;
-    margin-top: 20px;
-}
-
-.oauth-card {
-    margin-bottom: 20px;
-}
-
-.oauth-card :deep(.el-card__body) {
-    padding: 20px;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  padding: 12px 20px;
+  background: #fff;
+  border-top: 1px solid #f0f2f5;
+  text-align: right;
+  z-index: 1;
 }
 </style>

+ 313 - 352
src/views/company/aiModel/index.vue

@@ -1,383 +1,344 @@
 <template>
-    <div class="app-container">
-        <!-- 搜索表单 -->
-        <el-form
-            v-show="showSearch"
-            ref="queryForm"
-            :inline="true"
-            :model="queryParams"
-            label-width="100px"
-        >
-            <el-form-item label="模型名称" prop="name">
-                <el-input
-                    v-model="queryParams.name"
-                    clearable
-                    placeholder="请输入"
-                    size="small"
-                    style="width: 200px"
-                    @keyup.enter.native="handleQuery"
-                />
-            </el-form-item>
-            <el-form-item label="实现类" prop="providerClassName">
-                <el-select
-                    v-model="queryParams.providerClassName"
-                    clearable
-                    placeholder="全部"
-                    size="small"
-                    style="width: 200px"
-                >
-                    <el-option label="全部" value="" />
-                    <el-option
-                        v-for="item in providerClassNameList"
-                        :key="item.id"
-                        :label="item.providerClassName"
-                        :value="item.providerClassName"
-                    />
-                </el-select>
-            </el-form-item>
-            <el-form-item>
-                <el-button icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-            </el-form-item>
-        </el-form>
+  <div class="app-container">
+    <el-alert
+      title="外呼 AI 配置说明"
+      type="info"
+      show-icon
+      :closable="false"
+      style="margin-bottom: 16px"
+    >
+      <template slot="default">
+        <p style="margin: 0 0 6px 0;">
+          本页维护外呼<strong>提示词</strong>与<strong>知识库分类</strong>;大模型由总后台「场景配置 → 外呼对话」统一分配,无需在此选择模型。
+        </p>
+        <p v-if="sceneInfo.models && sceneInfo.models.length" style="margin: 0; color: #606266; font-size: 13px;">
+          当前分配模型:
+          <el-tag
+            v-for="m in sceneInfo.models"
+            :key="m.modelId"
+            size="mini"
+            type="success"
+            style="margin-right: 6px"
+          >{{ m.modelName }}({{ m.modelIdentifier }})</el-tag>
+        </p>
+        <p v-else style="margin: 0; color: #e6a23c; font-size: 13px;">
+          总后台尚未配置外呼场景模型,新增配置前请联系平台管理员。
+        </p>
+      </template>
+    </el-alert>
 
-        <!-- 工具栏 -->
-        <el-row :gutter="10" class="mb8">
-            <el-col :span="1.5">
-                <el-button
-                    icon="el-icon-plus"
-                    plain
-                    size="mini"
-                    type="primary"
-                    @click="handleAdd"
-                >新增</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button
-                    icon="el-icon-edit"
-                    plain
-                    size="mini"
-                    type="success"
-                    @click="handleEdit()"
-                >修改</el-button>
-            </el-col>
-            <el-col :span="1.5">
-                <el-button
-                    icon="el-icon-delete"
-                    plain
-                    size="mini"
-                    type="danger"
-                    @click="handleDelete()"
-                >删除</el-button>
-            </el-col>
-            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" />
-        </el-row>
+    <el-form
+      v-show="showSearch"
+      ref="queryForm"
+      :inline="true"
+      :model="queryParams"
+      label-width="88px"
+    >
+      <el-form-item label="配置名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          clearable
+          placeholder="请输入配置名称"
+          size="small"
+          style="width: 200px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
 
-        <!-- 数据表格 -->
-        <el-table v-loading="loading" :data="modelList" border @selection-change="handleSelectionChange">
-            <el-table-column type="selection" width="55" align="center" />
-            <el-table-column align="center" label="模型名称" prop="name"  />
-            <el-table-column align="center" label="实现类" prop="providerClassName" />
-            <el-table-column
-                align="center"
-                class-name="small-padding fixed-width"
-                label="操作"
-                width="200"
-            >
-                <template slot-scope="scope">
-                    <el-button
-                        size="mini"
-                        type="text"
-                        icon="el-icon-document-copy"
-                        @click="handleCopy(scope.row)"
-                    >复制</el-button>
-                    <el-button
-                        size="mini"
-                        type="text"
-                        icon="el-icon-edit"
-                        @click="handleEdit(scope.row)"
-                    >编辑</el-button>
-                    <el-button
-                        size="mini"
-                        type="text"
-                        icon="el-icon-delete"
-                        @click="handleDelete(scope.row)"
-                    >删除</el-button>
-                </template>
-            </el-table-column>
-        </el-table>
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          icon="el-icon-plus"
+          plain
+          size="mini"
+          type="primary"
+          @click="handleAdd"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          icon="el-icon-edit"
+          plain
+          size="mini"
+          type="success"
+          @click="handleEdit()"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          icon="el-icon-delete"
+          plain
+          size="mini"
+          type="danger"
+          @click="handleDelete()"
+        >删除</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" />
+    </el-row>
 
-        <!-- 分页 -->
-        <pagination
-            v-show="total > 0"
-            :limit.sync="queryParams.pageSize"
-            :page.sync="queryParams.pageNum"
-            :total="total"
-            @pagination="getList"
-        />
+    <el-table v-loading="loading" :data="configList" border @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column align="center" label="配置名称" prop="name" min-width="140" show-overflow-tooltip />
+      <el-table-column align="center" label="知识库分类" min-width="120">
+        <template slot-scope="{ row }">
+          {{ kbCatLabel(row) }}
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="打断方式" width="110">
+        <template slot-scope="{ row }">
+          {{ interruptLabel(row.interruptFlag) }}
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="转人工按键" prop="transferManualDigit" width="100" />
+      <el-table-column
+        align="center"
+        class-name="small-padding fixed-width"
+        label="操作"
+        width="200"
+      >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-document-copy"
+            @click="handleCopy(scope.row)"
+          >复制</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleEdit(scope.row)"
+          >编辑</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
 
-        <!-- 新增/编辑弹窗 -->
-        <el-dialog
-            :title="dialogTitle"
-            :visible.sync="dialogVisible"
-            width="700px"
-            append-to-body
-            @close="handleDialogClose"
-            :fullscreen="isFullscreen"
-        >
-            <template slot="title">
-                <span>{{ dialogTitle }}</span>
-                <div style="display: inline-block; margin-left: 10px;">
-                    <el-tooltip :content="isFullscreen ? '退出全屏' : '全屏'" placement="top">
-                        <el-button
-                            type="text"
-                            icon="el-icon-full-screen"
-                            @click="toggleFullscreen"
-                            style="font-size: 16px;"
-                        />
-                    </el-tooltip>
-                </div>
-            </template>
+    <pagination
+      v-show="total > 0"
+      :limit.sync="queryParams.pageSize"
+      :page.sync="queryParams.pageNum"
+      :total="total"
+      @pagination="getList"
+    />
 
-            <account-form
-                v-if="dialogVisible"
-                ref="accountForm"
-                :initial-data="currentRow"
-                :provider-options="providerOptions"
-                @cancel="handleDialogClose"
-                @success="handleFormSuccess"
-            />
-        </el-dialog>
-    </div>
+    <el-drawer
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      direction="rtl"
+      size="min(760px, 96vw)"
+      append-to-body
+      destroy-on-close
+      wrapper-closable
+      custom-class="ai-model-drawer"
+      @close="handleDialogClose"
+    >
+      <account-form
+        v-if="dialogVisible"
+        ref="accountForm"
+        :initial-data="currentRow"
+        :scene-info="sceneInfo"
+        @cancel="handleDialogClose"
+        @success="handleFormSuccess"
+      />
+    </el-drawer>
+  </div>
 </template>
 
 <script>
 import { list, remove } from '@/api/company/aiModel'
-import { all } from '@/api/company/aiProvider'
+import { all as listKbCats } from '@/api/company/aiCall'
+import { getOutboundAiScene } from '@/api/company/adminAiModel'
 import Info from '@/views/company/aiModel/account/info.vue'
 
 export default {
-    name: 'AiModelList',
-    components: {
-        AccountForm: Info
+  name: 'AiModelConfigView',
+  components: {
+    AccountForm: Info
+  },
+  data() {
+    return {
+      selectedRows: [],
+      loading: false,
+      showSearch: true,
+      total: 0,
+      configList: [],
+      kbCatMap: {},
+      sceneInfo: {},
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: undefined
+      },
+      dialogVisible: false,
+      dialogTitle: '新增外呼配置',
+      currentRow: {}
+    }
+  },
+  created() {
+    this.loadScene()
+    this.loadKbCatMap()
+    this.getList()
+  },
+  methods: {
+    loadScene() {
+      getOutboundAiScene()
+        .then(res => {
+          this.sceneInfo = res.data || {}
+        })
+        .catch(() => {
+          this.sceneInfo = {}
+        })
+    },
+    loadKbCatMap() {
+      listKbCats().then(res => {
+        const map = {}
+        ;(res.data || []).forEach(item => {
+          map[item.id] = item.cat
+        })
+        this.kbCatMap = map
+      }).catch(() => {
+        this.kbCatMap = {}
+      })
     },
-    data() {
-        return {
-            selectedRows: [],
-            isFullscreen: false,
-            // 遮罩层
-            loading: false,
-            // 显示搜索条件
-            showSearch: true,
-            // 总条数
-            total: 0,
-            // 表格数据
-            modelList: [],
-            // 查询参数
-            queryParams: {
-                pageNum: 1,
-                pageSize: 10,
-                name: undefined,
-                providerClassName: undefined
-            },
-            // 实现类列表(用于搜索下拉和弹窗下拉)
-            providerClassNameList: [],
-            // 弹窗控制
-            dialogVisible: false,
-            dialogTitle: '新增模型账户',
-            currentRow: {},
+    kbCatLabel(row) {
+      let id = row.kbCatId
+      if (id == null || id === -1) {
+        try {
+          const json = typeof row.accountJson === 'string' ? JSON.parse(row.accountJson) : row.accountJson
+          id = json && json.kbCatId
+        } catch (e) {
+          id = null
         }
+      }
+      if (id == null || id === -1 || id === '') {
+        return '—'
+      }
+      return this.kbCatMap[id] || id
+    },
+    interruptLabel(flag) {
+      if (flag === 1) return '关键词打断'
+      if (flag === 2) return '有声音就打断'
+      return '不打断'
+    },
+    getList() {
+      this.loading = true
+      list(this.queryParams)
+        .then(response => {
+          this.configList = response.rows || []
+          this.total = response.total || 0
+        })
+        .finally(() => {
+          this.loading = false
+        })
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
     },
-    computed: {
-        providerOptions() {
-            return this.providerClassNameList.map(item => item.providerClassName)
+    handleAdd() {
+      if (!this.sceneInfo.models || !this.sceneInfo.models.length) {
+        this.$message.warning('总后台尚未配置外呼场景模型,无法新增')
+        return
+      }
+      this.dialogTitle = '新增外呼配置'
+      this.currentRow = {}
+      this.dialogVisible = true
+    },
+    handleDialogClose() {
+      this.dialogVisible = false
+      this.currentRow = {}
+    },
+    handleFormSuccess() {
+      this.dialogVisible = false
+      this.getList()
+    },
+    handleEdit(row) {
+      let editRow = row
+      if (!editRow) {
+        if (this.selectedRows.length !== 1) {
+          this.$message.warning('请选择一条要修改的数据')
+          return
         }
+        editRow = this.selectedRows[0]
+      }
+      this.dialogTitle = '编辑外呼配置'
+      this.currentRow = { ...editRow }
+      this.dialogVisible = true
     },
-    created() {
-        this.getList()
-        this.getAll()
+    handleSelectionChange(selection) {
+      this.selectedRows = selection
     },
-    methods: {
-        toggleFullscreen() {
-            this.isFullscreen = !this.isFullscreen;
-        },
-        /** 查询列表 */
-        getList() {
-            this.loading = true
-            list(this.queryParams)
-                .then((response) => {
-                    this.modelList = response.rows || []
-                    this.total = response.total || 0
-                    this.loading = false
-                })
-                .catch(() => {
-                    this.loading = false
-                })
-        },
-        /** 搜索按钮操作 */
-        handleQuery() {
-            this.queryParams.pageNum = 1
-            this.getList()
-        },
-        /** 重置按钮操作 */
-        resetQuery() {
-            this.resetForm('queryForm')
-            this.handleQuery()
-        },
-        /** 获取所有实现类 */
-        getAll() {
-            all().then((response) => {
-                //隐藏其他几种大模型
-                if(!!response.data){
-                    response.data =  response.data.filter(a => a.providerClassName == "DeepSeekChat")
-                }
-                this.providerClassNameList = response.data || [];
-            })
-        },
-        /** 新增按钮 */
-        handleAdd() {
-            this.dialogTitle = '新增模型账户'
-            this.currentRow = {} // 清空当前行
-            this.dialogVisible = true
-            this.isFullscreen = false;
-        },
-        /** 弹窗关闭时清理 */
-        handleDialogClose() {
-            this.isFullscreen = false;
-            this.dialogVisible = false
-            this.currentRow = {};
-        },
-        /** 表单提交成功回调(由子组件触发) */
-        handleFormSuccess(response) {
-            this.dialogVisible = false
-            this.getList()
-        },
-        /** 修改按钮操作 */
-        handleEdit(row) {
-            let editRow = row;
-            // 如果没有传入 row(即点击工具栏按钮),则从选中行获取
-            if (!editRow) {
-                if (this.selectedRows.length !== 1) {
-                    this.$message.warning('请选择一条要修改的数据');
-                    return;
-                }
-                editRow = this.selectedRows[0];
-            }
-
-            this.dialogTitle = '编辑模型账户';
-            this.currentRow = { ...editRow };
-            this.dialogVisible = true;
-            this.isFullscreen = false;
-        },
-        /** 表格多选选中事件 */
-        handleSelectionChange(selection) {
-            this.selectedRows = selection;
-        },
-        /** 删除按钮操作 */
-        handleDelete(row) {
-            let ids = [];
-            if (row) {
-                // 单行删除
-                ids = [row.id];
-            } else {
-                // 批量删除(从选中行获取)
-                if (this.selectedRows.length === 0) {
-                    this.$message.warning('请至少选择一条要删除的数据');
-                    return;
-                }
-                ids = this.selectedRows.map(item => item.id);
-            }
-
-            // 确认对话框
-            this.$confirm(`此操作将永久删除${ids.length > 1 ? '这些' : '该'}记录,是否继续?`, '警告', {
-                confirmButtonText: '确定',
-                cancelButtonText: '取消',
-                type: 'warning'
-            }).then(() => {
-                this.handleDeleteConfirm(ids);
-            }).catch(() => {});
-        },
-        /** 执行删除操作 */
-        async handleDeleteConfirm(ids) {
-            try {
-                const response = await remove(ids.join(','));
-                if (response.code === 200) {
-                    this.$message.success('删除成功');
-                    this.getList(); // 刷新列表
-                } else {
-                    this.$message.error(response.msg || '删除失败');
-                }
-            } catch (error) {
-                console.error('删除失败:', error);
-                this.$message.error('删除失败');
-            }
-        },
-        /** 复制按钮操作 */
-        handleCopy(row) {
-            // 前端直接复制数据
-            const copiedRow = { ...row };
-            // 清空ID,确保是新增操作
-            delete copiedRow.id;
-            // 添加"-副本"后缀
-            copiedRow.name = copiedRow.name + '-副本';
-            
-            this.dialogTitle = '复制模型账户';
-            this.currentRow = copiedRow;
-            this.dialogVisible = true;
-            this.isFullscreen = false;
+    handleDelete(row) {
+      let ids = []
+      if (row) {
+        ids = [row.id]
+      } else {
+        if (this.selectedRows.length === 0) {
+          this.$message.warning('请至少选择一条要删除的数据')
+          return
         }
+        ids = this.selectedRows.map(item => item.id)
+      }
+      this.$confirm(`此操作将永久删除${ids.length > 1 ? '这些' : '该'}配置,是否继续?`, '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        remove(ids.join(',')).then(response => {
+          if (response.code === 200) {
+            this.$message.success('删除成功')
+            this.getList()
+          } else {
+            this.$message.error(response.msg || '删除失败')
+          }
+        })
+      }).catch(() => {})
+    },
+    handleCopy(row) {
+      const copiedRow = { ...row }
+      delete copiedRow.id
+      copiedRow.name = copiedRow.name + '-副本'
+      this.dialogTitle = '复制外呼配置'
+      this.currentRow = copiedRow
+      this.dialogVisible = true
     }
+  }
 }
 </script>
 
 <style scoped>
-/* 原有样式保持不变 */
-.record-container {
-    padding: 20px;
-}
-
-.record-info {
-    margin-bottom: 20px;
-    padding: 10px;
-    background: #f5f7fa;
-    border-radius: 4px;
-}
-
-.record-info p {
-    margin: 5px 0;
-}
-
-.record-controls {
-    text-align: center;
-}
-
-.record-status {
-    margin-bottom: 20px;
-    font-size: 14px;
-    color: #606266;
-}
-
-.recording-indicator {
-    color: #f56c6c;
-}
-
-.record-buttons {
-    margin-bottom: 20px;
-}
-
-.record-buttons .el-button {
-    width: 60px;
-    height: 60px;
-    font-size: 24px;
+.ai-model-drawer.el-drawer /deep/ .el-drawer__body {
+  padding: 0;
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+  height: 100%;
 }
 
-.record-preview {
-    margin-top: 20px;
+.ai-model-drawer.el-drawer /deep/ .el-drawer__header {
+  padding: 16px 20px;
+  margin-bottom: 0;
+  border-bottom: 1px solid #f0f2f5;
 }
 
-.el-dialog__wrapper /deep/ .el-dialog--fullscreen .el-dialog__body {
-    height: calc(100vh - 120px);
-    overflow-y: auto;
-    padding: 20px;
+.ai-model-drawer.el-drawer /deep/ .el-drawer__header span {
+  font-size: 16px;
+  font-weight: 600;
+  color: #303133;
 }
 </style>

+ 2 - 2
src/views/company/companyApply/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="审核状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="请选择审核状态" clearable size="small">
           <el-option label="待审核" value="0" />

+ 5 - 5
src/views/company/companyBindUser/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="域名" prop="domain">
         <el-input
           v-model="queryParams.domain"
@@ -19,10 +19,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="手机号" prop="phonenumber">
+      <el-form-item label="手机号" prop="phonenumber">
         <el-input
           v-model="queryParams.phonenumber"
-          placeholder="请输入手机号"
+          placeholder="请输入手机号"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -86,7 +86,7 @@
       <el-table-column label="编码" align="center" prop="id" />
       <el-table-column label="分配域名" align="center" prop="domain" />
       <el-table-column label="分配人员" align="center" prop="userName" />
-      <el-table-column label="手机号" align="center" prop="phonenumber" />
+      <el-table-column label="手机号" align="center" prop="phonenumber" />
       <el-table-column label="分配时间" align="center" prop="createTime" v-slot="{row}">
         <template>
           {{ formatDate(row.createTime) }}

+ 3 - 3
src/views/company/companyClient/index.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-row :gutter="24" class="baseInfo">
       <el-col :xs="12" :sm="12" :lg="6" class="ivu-mb">
@@ -27,7 +27,7 @@
       </el-col>
     </el-row>
 
-    <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="90px">
       <el-form-item label="外呼任务" prop="roboticId">
         <el-select v-model="queryParams.roboticId" filterable clearable>
           <el-option v-for="item in roboticList" :label="item.name" :value="item.id"/>
@@ -107,7 +107,7 @@
       <el-table-column label="外呼任务" align="center" prop="roboticName"/>
       <el-table-column label="销售" align="center" prop="wxNickName"/>
       <el-table-column label="个微昵称" align="center" prop="nickName"/>
-      <el-table-column label="手机号" align="center" prop="phone"/>
+      <el-table-column label="手机号" align="center" prop="phone"/>
       <el-table-column label="话术" align="center" prop="dialogName"/>
       <el-table-column label="客户意向度" align="center">
         <template slot-scope="scope">

+ 4 - 4
src/views/company/companyDomainBind/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="公司名称" prop="companyName">
         <el-input
           v-model="queryParams.companyName"
@@ -178,7 +178,7 @@
       <el-scrollbar style="height: 692px;">
         <h3>选择分配域名:</h3>
         <el-divider></el-divider>
-<!--        <el-form :model="dialog.company.queryParams" ref="companyQueryForm" :inline="true" label-width="68px">-->
+<!--        <el-form :model="dialog.company.queryParams" ref="companyQueryForm" :inline="true" label-width="90px">-->
 <!--          <el-form-item label="公司名称" prop="companyName">-->
 <!--            <el-input-->
 <!--              v-model="dialog.company.queryParams.companyName"-->
@@ -220,7 +220,7 @@
         <h3>选择分配销售人员:</h3>
         <el-divider></el-divider>
         <el-form :model="dialog.companyUser.queryParams" ref="dialogQueryForm" :inline="true" v-show="showSearch"
-                 label-width="68px"
+                 label-width="90px"
         >
           <el-form-item label="用户账号" prop="domain">
             <el-input

+ 2 - 2
src/views/company/companyMoneyLogs/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="创建时间" prop="createTimeRange">
         <el-date-picker
           style="width:205.4px"

+ 2 - 2
src/views/company/companyPost/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="岗位编码" prop="postCode">
         <el-input
           v-model="queryParams.postCode"

+ 3 - 3
src/views/company/companyRecharge/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="支付时间" prop="payTime">
         <el-date-picker v-model="dateRange" size="small" style="width: 205.4px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
       </el-form-item>
@@ -186,7 +186,7 @@
     <!-- 红包充值对话框 -->
     <el-dialog :title="redRecharge.title" :visible.sync="redRecharge.open" width="500px" append-to-body>
       <el-form ref="redRechargeForm" :rules="redRechargeRules" :model="redRechargeForm" label-width="80px">
-        <el-form-item label="公司">
+        <el-form-item label="公司名称">
           <el-input v-model="redRechargeForm.companyName" disabled/>
         </el-form-item>
         <el-form-item label="余额">

+ 4 - 4
src/views/company/companyRedPacketBalanceLogs/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="ID" prop="logsId">
         <el-input
           v-model="queryParams.logsId"
@@ -10,8 +10,8 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-<!--      <el-form-item label="公司名" prop="companyId">-->
-<!--        <el-select filterable  style="width: 220px" v-model="queryParams.companyId" placeholder="请选择公司名" clearable size="small">-->
+<!--      <el-form-item label="公司名" prop="companyId">-->
+<!--        <el-select filterable  style="width: 220px" v-model="queryParams.companyId" placeholder="请选择公司名" clearable size="small">-->
 <!--          <el-option-->
 <!--            v-for="item in companys"-->
 <!--            :key="item.companyId"-->

+ 2 - 2
src/views/company/companySms/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="公司ID" prop="companyId">
         <el-input
           v-model="queryParams.companyId"

+ 4 - 4
src/views/company/companySmsLogs/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="客户编号" prop="customerCode">
         <el-input
         style="width:220px"
@@ -21,7 +21,7 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="手机号" prop="phone">
+      <el-form-item label="手机号" prop="phone">
         <el-input
         style="width:220px"
           v-model="queryParams.phone"
@@ -86,7 +86,7 @@
           <el-link @click="handleShow(scope.row)" :underline="false" type="primary" >{{scope.row.customerName}}</el-link>
         </template>
       </el-table-column>
-      <el-table-column label="手机号" align="center" prop="phone" />
+      <el-table-column label="手机号" align="center" prop="phone" />
       <el-table-column label="短信内容" show-overflow-tooltip align="center" prop="content" />
       <el-table-column label="发送者" align="center" prop="companyUserNickName" />
       <el-table-column label="提交时间" align="center" prop="createTime" width="180">

+ 2 - 2
src/views/company/companySmsOrder/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="订单号" prop="orderCode">
         <el-input
           v-model="queryParams.orderCode"

+ 2 - 2
src/views/company/companySmsTemp/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="模板名" prop="title">
         <el-input
           v-model="queryParams.title"

+ 2 - 2
src/views/company/companyUser/card/addSms.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
     <div>
             <el-form ref="form" :model="form" :rules="rules" label-width="120px">
                <el-form-item label="我的客户" prop="customerIds"  >
@@ -15,7 +15,7 @@
                                    <!-- <el-link  :underline="false" type="primary" >{{scope.row.customerName}}</el-link> -->
                                 </template>
                             </el-table-column>
-                            <el-table-column  label="手机" width="120px"  align="center" prop="mobile"   >
+                            <el-table-column  label="手机号码" width="120px"  align="center" prop="mobile"   >
                                 <template slot-scope="scope">
                                 {{scope.row.mobile}}
                                 </template>

+ 3 - 3
src/views/company/companyUser/card/customerSelect.vue

@@ -1,6 +1,6 @@
-<template>
+<template>
   <div style="margin-bottom:15px">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="90px">
       <el-form-item label="客户名称" prop="customerName">
         <el-input
           style="width:200px"
@@ -35,7 +35,7 @@
                 <!-- <el-link @click="handleShow(scope.row)" :underline="false" type="primary" >{{scope.row.customerName}}</el-link> -->
                 </template>
             </el-table-column>
-            <el-table-column  label="手机" width="120px"  align="center" prop="mobile"   >
+            <el-table-column  label="手机号码" width="120px"  align="center" prop="mobile"   >
                 <template slot-scope="scope">
                 {{scope.row.mobile}}
                 </template>

+ 2 - 2
src/views/company/companyUser/card/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名片标题" prop="title">
         <el-input
           v-model="queryParams.title"

+ 2 - 2
src/views/company/companyUser/companyUserList.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-row :gutter="24">
       <!--部门数据-->
@@ -13,7 +13,7 @@
 
       <!--用户数据-->
       <el-col :span="20" :xs="24">
-        <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="90px">
           <el-form-item label="员工姓名" prop="nickName">
             <el-input v-model="queryParams.nickName" placeholder="请输入员工姓名" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
           </el-form-item>

+ 2 - 2
src/views/company/companyUser/indexOld.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-row :gutter="20">
       <!--部门数据-->
@@ -12,7 +12,7 @@
       </el-col>
       <!--用户数据-->
       <el-col :span="20" :xs="24">
-        <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="90px">
           <el-form-item label="员工姓名" prop="nickName">
             <el-input v-model="queryParams.nickName" placeholder="请输入员工姓名" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
           </el-form-item>

+ 5 - 5
src/views/company/companyVoiceBlacklist/index.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
 <!--      <el-form-item label="黑名单级别" prop="businessType">-->
@@ -13,10 +13,10 @@
 <!--          <el-option label="线路级" value="13" />-->
 <!--        </el-select>-->
 <!--      </el-form-item>-->
-      <el-form-item label="手机号" prop="targetValue">
+      <el-form-item label="手机号" prop="targetValue">
         <el-input
           v-model="queryParams.targetValue"
-          placeholder="请输入手机号"
+          placeholder="请输入手机号"
           clearable
           size="small"
           style="width: 200px"
@@ -88,7 +88,7 @@
 <!--          <span v-else>{{ scope.row.businessType || '-' }}</span>-->
 <!--        </template>-->
 <!--      </el-table-column>-->
-      <el-table-column label="手机号" align="center" min-width="180">
+      <el-table-column label="手机号" align="center" min-width="180">
         <template slot-scope="scope">
           <span>{{ scope.row.targetValue || '-' }}</span>
           <el-button
@@ -152,7 +152,7 @@
 <!--            <el-option label="线路级" value="13" />-->
 <!--          </el-select>-->
 <!--        </el-form-item>-->
-        <el-form-item label="手机号" prop="targetValue">
+        <el-form-item label="手机号" prop="targetValue">
           <el-input
             v-model="form.targetValue"
             :placeholder="form.id ? '不填写则不修改手机号' : '请输入手机号'"

+ 2 - 2
src/views/company/companyVoiceBlacklistIntercept/index.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="业务场景" prop="sceneCode">
@@ -10,7 +10,7 @@
       </el-form-item>
       <el-form-item label="对象类型" prop="targetType">
         <el-select v-model="queryParams.targetType" placeholder="请选择对象类型" clearable size="small" style="width: 160px">
-          <el-option label="手机号" :value="1" />
+          <el-option label="手机号" :value="1" />
           <el-option label="客户ID" :value="2" />
           <el-option label="企微客户ID" :value="3" />
         </el-select>

+ 5 - 5
src/views/company/companyVoiceCaller/index.vue

@@ -1,7 +1,7 @@
-<template>
+<template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px" size="small">
-      <el-form-item label="所属公司" prop="companyName">
+      <el-form-item label="公司名称" prop="companyName">
         <el-input
           v-model="queryParams.companyName"
           placeholder="请输入公司名称"
@@ -65,7 +65,7 @@
     >
       <el-table-column type="selection" width="45" align="center" :selectable="checkSelectable" />
       <el-table-column label="ID" align="center" prop="id" width="70" />
-      <el-table-column label="所属公司" align="center" prop="companyName" min-width="120" show-overflow-tooltip />
+      <el-table-column label="公司名称" align="center" prop="companyName" min-width="120" show-overflow-tooltip />
       <el-table-column label="分机号码" align="center" prop="extensionNum" width="110" />
       <el-table-column label="绑定员工" align="center" prop="companyUserName" min-width="100" show-overflow-tooltip>
         <template slot-scope="scope">
@@ -99,7 +99,7 @@
     <el-dialog title="分配分机到公司" :visible.sync="assignOpen" width="480px" append-to-body @close="resetAssignForm">
       <el-form ref="assignForm" :model="assignForm" :rules="assignRules" label-width="100px" size="small">
         <el-form-item label="目标公司" prop="companyId">
-          <el-select v-model="assignForm.companyId" placeholder="请选择公司" filterable clearable style="width:100%">
+          <el-select v-model="assignForm.companyId" placeholder="请选择公司名称" filterable clearable style="width:100%">
             <el-option
               v-for="item in companyOptions"
               :key="item.dictValue"
@@ -126,7 +126,7 @@
             <el-form-item label="ID"><span>{{ detailForm.id }}</span></el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="所属公司"><span>{{ detailForm.companyName || '-' }}</span></el-form-item>
+            <el-form-item label="公司名称"><span>{{ detailForm.companyName || '-' }}</span></el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="分机号码"><span>{{ detailForm.extensionNum }}</span></el-form-item>

+ 2 - 2
src/views/company/companyVoiceDialog/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"

+ 4 - 4
src/views/company/companyVoiceLogs/index.vue

@@ -1,8 +1,8 @@
-<template>
+<template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="公司" prop="companyId">
-        <el-select filterable style="width:205.4px" v-model="queryParams.companyId" placeholder="请选择公司" clearable size="small">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="公司名称" prop="companyId">
+        <el-select filterable style="width:205.4px" v-model="queryParams.companyId" placeholder="请选择公司名称" clearable size="small">
           <el-option
             v-for="item in companys"
             :key="item.companyId"

+ 2 - 2
src/views/company/companyVoicePackageOrder/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="订单号" prop="orderSn">
         <el-input
           v-model="queryParams.orderSn"

+ 3 - 3
src/views/company/companyVoiceRobotic/index-old.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="任务名称" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -348,7 +348,7 @@
         <el-table-column label="意向等级" align="center" prop="intention"/>
         <el-table-column label="微信昵称" align="center" prop="wxNickName"/>
         <el-table-column label="微信号" align="center" prop="wxNo"/>
-        <el-table-column label="手机号" align="center" prop="phone"/>
+        <el-table-column label="手机号" align="center" prop="phone"/>
         <el-table-column label="员工名称" align="center" prop="companyUserName"/>
         <el-table-column label="话术" align="center" prop="dialogName"/>
         <el-table-column label="分配数量" align="center" prop="num"/>

+ 6 - 6
src/views/company/companyVoiceRobotic/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="任务名称" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -541,7 +541,7 @@
         <el-table-column label="意向等级" align="center" prop="intention"/>
         <el-table-column label="微信昵称" align="center" prop="wxNickName"/>
         <el-table-column label="微信号" align="center" prop="wxNo"/>
-        <el-table-column label="手机号" align="center" prop="phone"/>
+        <el-table-column label="手机号" align="center" prop="phone"/>
         <el-table-column label="员工名称" align="center" prop="companyUserName"/>
         <el-table-column label="话术" align="center" prop="dialogName"/>
         <el-table-column label="分配数量" align="center" prop="num"/>
@@ -561,7 +561,7 @@
         <el-table-column label="意向等级" align="center" prop="intention"/>
         <el-table-column label="企微昵称" align="center" prop="wxNickName"/>
         <el-table-column label="企微id" align="center" prop="wxNo"/>
-        <el-table-column label="手机号" align="center" prop="phone"/>
+        <el-table-column label="手机号" align="center" prop="phone"/>
         <el-table-column label="话术" align="center" prop="dialogName"/>
         <el-table-column label="分配数量" align="center" prop="num"/>
         <el-table-column label="添加数量" align="center" prop="addNum"/>
@@ -596,10 +596,10 @@
               </el-input>
             </el-form-item>
 
-            <el-form-item label="手机号">
+            <el-form-item label="手机号">
               <el-input
                 v-model="execLogs.customerPhone"
-                placeholder="请输入手机号"
+                placeholder="请输入手机号"
                 clearable
                 @keyup.enter.native="handleSearch"
                 style="width: 200px">

+ 6 - 6
src/views/company/companyVoiceRobotic/myIndex.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="任务名称" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -530,7 +530,7 @@
         <el-table-column label="意向等级" align="center" prop="intention"/>
         <el-table-column label="微信昵称" align="center" prop="wxNickName"/>
         <el-table-column label="微信号" align="center" prop="wxNo"/>
-        <el-table-column label="手机号" align="center" prop="phone"/>
+        <el-table-column label="手机号" align="center" prop="phone"/>
         <el-table-column label="员工名称" align="center" prop="companyUserName"/>
         <el-table-column label="话术" align="center" prop="dialogName"/>
         <el-table-column label="分配数量" align="center" prop="num"/>
@@ -550,7 +550,7 @@
         <el-table-column label="意向等级" align="center" prop="intention"/>
         <el-table-column label="企微昵称" align="center" prop="wxNickName"/>
         <el-table-column label="企微id" align="center" prop="wxNo"/>
-        <el-table-column label="手机号" align="center" prop="phone"/>
+        <el-table-column label="手机号" align="center" prop="phone"/>
         <el-table-column label="话术" align="center" prop="dialogName"/>
         <el-table-column label="分配数量" align="center" prop="num"/>
         <el-table-column label="添加数量" align="center" prop="addNum"/>
@@ -585,10 +585,10 @@
               </el-input>
             </el-form-item>
 
-            <el-form-item label="手机号">
+            <el-form-item label="手机号">
               <el-input
                 v-model="execLogs.customerPhone"
-                placeholder="请输入手机号"
+                placeholder="请输入手机号"
                 clearable
                 @keyup.enter.native="handleSearch"
                 style="width: 200px">

+ 3 - 3
src/views/company/companyVoiceRoboticCallBlacklist/companyVoiceRoboticCallBlacklist.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
     <div class="app-container">
         <!-- 查询区域 -->
         <el-form
@@ -17,7 +17,7 @@
                     size="small"
                     style="width: 160px"
                 >
-                    <el-option label="手机号" :value="1" />
+                    <el-option label="手机号" :value="1" />
                     <el-option label="客户ID" :value="2" />
                     <el-option label="企微客户ID" :value="3" />
                 </el-select>
@@ -277,7 +277,7 @@
                     <el-col :span="12">
                         <el-form-item label="对象类型" prop="targetType">
                             <el-select v-model="form.targetType" placeholder="请选择对象类型" style="width: 100%">
-                                <el-option label="手机号" :value="1" />
+                                <el-option label="手机号" :value="1" />
                                 <el-option label="客户ID" :value="2" />
                                 <el-option label="企微客户ID" :value="3" />
                             </el-select>

+ 2 - 2
src/views/company/components/cardSelect.vue

@@ -1,8 +1,8 @@
-<template>
+<template>
   <div  >
     <el-row>
       <el-col>
-        <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="90px">
                 <el-form-item label="名片标题" prop="title">
                     <el-input
                     v-model="queryParams.title"

+ 2 - 2
src/views/company/components/selectQwUser.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <!-- 现有表单内容保持不变 -->
       <el-form-item label="企微主体" prop="corpId">
         <el-select v-model="queryParams.corpId" placeholder="企微主体" size="small" @change="updateCorpId()">

+ 2 - 2
src/views/company/components/selectQwUserOlder.vue

@@ -1,6 +1,6 @@
-<!--<template>-->
+<!--<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="90px">-->
 <!--      <el-form-item label="企微主体" prop="corpId">-->
 <!--        <el-select v-model="queryParams.corpId" placeholder="企微主体" size="small" @change="updateCorpId()">-->
 <!--          <el-option-->

+ 2 - 2
src/views/company/components/userSelect.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div  >
     <el-row :gutter="20">
       <!--部门数据-->
@@ -12,7 +12,7 @@
       </el-col>
       <!--用户数据-->
       <el-col :span="20" :xs="24">
-        <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="90px">
           <el-form-item label="员工姓名" prop="nickName">
             <el-input v-model="queryParams.nickName" placeholder="请输入员工姓名" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
           </el-form-item>

+ 3 - 3
src/views/company/statistics/myVoiceLogs.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="app-container">
     <div class="app-content">
       <div class="title">
@@ -15,8 +15,8 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="公司名" prop="companyId">
-          <el-select filterable style="width: 220px" v-model="companyId" @change="companyChange" placeholder="请选择公司名" clearable size="small">
+        <el-form-item label="公司名" prop="companyId">
+          <el-select filterable style="width: 220px" v-model="companyId" @change="companyChange" placeholder="请选择公司名" clearable size="small">
             <el-option
               v-for="item in companys"
               :key="item.companyId"

+ 2 - 2
src/views/company/tcmScheduleReport/companyReport.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
        <el-form-item label="所属部门" prop="deptId">
           <treeselect style="width:205.4px" v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属部门" />
       </el-form-item>

+ 2 - 2
src/views/company/tcmScheduleReport/consume.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
      
         <el-form-item label="所属档期" prop="scheduleId">
             <el-select  filterable style="width:205.4px" v-model="queryParams.scheduleId" placeholder="请选择档期" clearable size="small" >

+ 2 - 2
src/views/company/tcmScheduleReport/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
        <el-form-item label="所属部门" prop="deptId">
           <treeselect style="width:205.4px" v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属部门" />
       </el-form-item>

+ 2 - 2
src/views/company/tcmScheduleReport/statisticsReport.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
        <el-form-item label="所属部门" prop="deptId">
           <treeselect style="width:205.4px" v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属部门" />
       </el-form-item>

+ 9 - 9
src/views/company/wxAccount/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="微信昵称" prop="wxNickName">
         <el-input
           v-model="queryParams.wxNickName"
@@ -19,17 +19,17 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="手机号" prop="wxNo">
+      <el-form-item label="手机号" prop="wxNo">
         <el-input
           :maxlength="11"
           v-model="queryParams.phone"
-          placeholder="请输入手机号"
+          placeholder="请输入手机号"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="员工" prop="companyUserId">
+      <el-form-item label="员工姓名" prop="companyUserId">
         <el-select v-model="queryParams.companyUserId" clearable>
           <el-option v-for="item in qwUserList" :label="item.qwUserName" :value="item.id" />
         </el-select>
@@ -87,7 +87,7 @@
       <el-table-column label="id" align="center" prop="id" />
       <el-table-column label="微信昵称" align="center" prop="wxNickName" />
       <el-table-column label="微信号" align="center" prop="wxNo" />
-      <el-table-column label="手机号" align="center" prop="phone" />
+      <el-table-column label="手机号" align="center" prop="phone" />
       <el-table-column label="员工" align="center" prop="companyUserName" />
       <el-table-column label="微信备注前缀" align="center" prop="wxRemark" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -134,10 +134,10 @@
         <el-form-item label="微信号" prop="wxNo">
           <el-input v-model="form.wxNo" placeholder="请输入微信号" />
         </el-form-item>
-        <el-form-item label="手机号" prop="phone">
-          <el-input v-model="form.phone" :maxlength="11" placeholder="请输入手机号" />
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="form.phone" :maxlength="11" placeholder="请输入手机号" />
         </el-form-item>
-        <el-form-item label="员工" prop="companyUserId">
+        <el-form-item label="员工姓名" prop="companyUserId">
           <el-select v-model="form.companyUserId" filterable placeholder="请选择员工">
             <el-option v-for="item in qwUserList" :label="item.nickName" :value="item.userId" />
           </el-select>

+ 2 - 2
src/views/company/wxDialog/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"

+ 2 - 2
src/views/company/wxUser/index.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="销售昵称" prop="companyUserId">
         <el-input
           v-model="queryParams.companyUserName"

+ 2 - 2
src/views/company/wxUserGroup/wxUserGroup.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="分组名" prop="groupName">
         <el-input
           v-model="queryParams.groupName"

+ 3 - 3
src/views/components/QwUserSelect.vue

@@ -1,7 +1,7 @@
-<template>
+<template>
   <el-drawer size="75%" title="客户选择" :visible.sync="shows" append-to-body destroy-on-close>
     <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="90px">
         <el-form-item label="认领人" prop="companyUserNickName">
           <el-input
             v-model="queryParams.companyUserNickName"
@@ -81,7 +81,7 @@
         <el-table-column type="selection" width="55" align="center" :reserve-selection="true" />
         <el-table-column label="微信昵称" align="center" prop="wxNickName"/>
         <el-table-column label="微信号" align="center" prop="wxNo"/>
-        <el-table-column label="手机号" align="center" prop="phone"/>
+        <el-table-column label="手机号" align="center" prop="phone"/>
         <el-table-column label="员工" align="center" prop="companyUserName"/>
       </el-table>
       <div slot="footer" class="dialog-footer" style="width: 100%;display: flex;flex-direction: row-reverse;margin-top: 20px;z-index: 9898989;padding-top: 5px">

+ 2 - 2
src/views/components/course/courseWatchComment.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="用户昵称" prop="nickName">
         <el-input
           v-model="queryParams.nickName"

+ 2 - 2
src/views/components/course/userCourseCatalogDetails.vue

@@ -1,9 +1,9 @@
-<template>
+<template>
   <div class="app-container">
     <div style="padding-bottom: 20px">
       <span v-if="courseName != null">{{ courseName }}</span>
     </div>
-    <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="90px">
       <el-form-item label="小节名称" prop="title">
         <el-input v-model="queryParams.title" placeholder="请输入小节名称" clearable size="small"
                   @keyup.enter.native="handleQuery"/>

+ 2 - 2
src/views/components/his/doctorDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
       医生详情
@@ -64,7 +64,7 @@
      <el-descriptions-item label="平均响应速度" >
          <span v-if="item!=null">{{item.speed}}</span>
      </el-descriptions-item>
-      <el-descriptions-item label="手机号" >
+      <el-descriptions-item label="手机号" >
          <span v-if="item!=null">{{item.mobile}}</span>
      </el-descriptions-item>
     <el-descriptions-item label="性别" >

+ 2 - 2
src/views/components/his/packageOrderDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
 
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
@@ -61,7 +61,7 @@
                <el-descriptions-item label="套餐包类别"> <dict-tag :options="packageSubTypeOptions" :value="item.packageSubType"/></el-descriptions-item>
                <el-descriptions-item label="天数"><span v-if="item!=null">{{item.days}}</span></el-descriptions-item>
                <el-descriptions-item label="状态"> <dict-tag :options="statusOptions" :value="item.status"/></el-descriptions-item>
-               <el-descriptions-item label="所属公司"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
+               <el-descriptions-item label="公司名称"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
                <el-descriptions-item label="公司员工"><span v-if="item!=null">{{item.companyUserName}}</span></el-descriptions-item>
                <el-descriptions-item label="退款状态"> <dict-tag :options="refundStatusOptions" :value="item.refundStatus"/></el-descriptions-item>
                <el-descriptions-item label="退款用户说明"><span v-if="item!=null">{{item.refundExplain}}</span></el-descriptions-item>

+ 2 - 2
src/views/components/his/packageOrderDetails2.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
 
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
@@ -52,7 +52,7 @@
                <el-descriptions-item label="套餐包类别"> <dict-tag :options="packageSubTypeOptions" :value="item.packageSubType"/></el-descriptions-item>
                <el-descriptions-item label="天数"><span v-if="item!=null">{{item.days}}</span></el-descriptions-item>
                <el-descriptions-item label="状态"> <dict-tag :options="statusOptions" :value="item.status"/></el-descriptions-item>
-               <el-descriptions-item label="所属公司"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
+               <el-descriptions-item label="公司名称"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
                <el-descriptions-item label="公司员工"><span v-if="item!=null">{{item.companyUserName}}</span></el-descriptions-item>
                <el-descriptions-item label="退款状态"> <dict-tag :options="refundStatusOptions" :value="item.refundStatus"/></el-descriptions-item>
                <el-descriptions-item label="退款用户说明"><span v-if="item!=null">{{item.refundExplain}}</span></el-descriptions-item>

+ 2 - 2
src/views/components/his/packageSelect.vue

@@ -1,6 +1,6 @@
-<template>
+<template>
   <div class="product-select" >
-    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="90px">
       <el-form-item label="商品名称" prop="productName">
         <el-input
           style="width:200px"

+ 2 - 2
src/views/components/his/patientDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
 
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
@@ -13,7 +13,7 @@
         <el-descriptions-item label="身份证号" ><span v-if="item!=null">{{item.idCard}}</span></el-descriptions-item>
         <el-descriptions-item label="出生年月" ><span v-if="item!=null">{{item.birthday}}</span></el-descriptions-item>
         <el-descriptions-item label="性别" ><dict-tag :options="sexOptions" :value="item.sex"/></el-descriptions-item>
-        <el-descriptions-item label="手机号" > <span v-if="item!=null">{{item.mobile}}</span> </el-descriptions-item>
+        <el-descriptions-item label="手机号" > <span v-if="item!=null">{{item.mobile}}</span> </el-descriptions-item>
         <el-descriptions-item label="体重G" ><span v-if="item!=null">{{item.weight}}</span></el-descriptions-item>
         <el-descriptions-item label="状态" ><dict-tag :options="pOptions" :value="item.status"/></el-descriptions-item>
         <el-descriptions-item label="与本人关系" ><span v-if="item!=null">{{item.relation}}</span></el-descriptions-item>

+ 2 - 2
src/views/components/his/pharmacistDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
 
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
@@ -54,7 +54,7 @@
      <el-descriptions-item label="平均响应速度" >
          <span v-if="item!=null">{{item.speed}}</span>
      </el-descriptions-item>
-      <el-descriptions-item label="手机号" >
+      <el-descriptions-item label="手机号" >
          <span v-if="item!=null">{{item.mobile}}</span>
      </el-descriptions-item>
     <el-descriptions-item label="性别" >

+ 2 - 2
src/views/components/his/productAttrValueSelect.vue

@@ -1,6 +1,6 @@
-<template>
+<template>
   <div class="product-select" >
-    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="90px">
       <el-form-item label="商品名称" prop="productName">
         <el-input
           style="width:200px"

+ 2 - 2
src/views/components/his/productDeliveryGiftValueSelect.vue

@@ -1,6 +1,6 @@
-<template>
+<template>
   <div class="product-select" >
-    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="90px">
       <el-form-item label="商品名称" prop="productName">
         <el-input
           style="width:200px"

+ 2 - 2
src/views/components/his/productGiftValueSelect.vue

@@ -1,6 +1,6 @@
-<template>
+<template>
   <div class="product-select" >
-    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="90px">
       <el-form-item label="商品名称" prop="productName">
         <el-input
           style="width:200px"

+ 2 - 2
src/views/components/his/storeAfterSalesDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
     <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
       <div style="padding: 20px; background-color: #fff;">
         售后详情
@@ -148,7 +148,7 @@
               {{scope.row.operator}}
             </template>
         </el-table-column>
-        <el-table-column label="所属公司" align="center">
+        <el-table-column label="公司名称" align="center">
             <template slot-scope="scope">
               {{scope.row.companyName}}
             </template>

+ 2 - 2
src/views/components/his/storeOrderDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
       订单详情
@@ -94,7 +94,7 @@
               <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['his:storeOrder:queryPhone']"></el-button>
             </el-descriptions-item>
             <el-descriptions-item label="详细地址" > <span>{{item.userAddress}}</span>  </el-descriptions-item>
-            <el-descriptions-item label="所属公司"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
+            <el-descriptions-item label="公司名称"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
             <el-descriptions-item label="员工"><span v-if="item!=null">{{item.companyUserName}}</span></el-descriptions-item>
             <el-descriptions-item label="推广佣金" ><span v-if="item.tuiMoney!=null">{{item.tuiMoney.toFixed(2)}}</span></el-descriptions-item>
             <el-descriptions-item label="推广佣金状态" ><span v-if="item!=null"><dict-tag :options="tuiOptions" :value="item.tuiMoneyStatus"/> </span></el-descriptions-item>

+ 2 - 2
src/views/components/his/storeOrderDetails2.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
     <div style="padding: 20px; background-color: #fff;">
       订单详情
@@ -92,7 +92,7 @@
               <el-button icon="el-icon-search" size="mini" @click="handlePhone()" style="margin-left: 20px;" circle v-hasPermi="['his:storeOrder:queryPhone']"></el-button>
             </el-descriptions-item>
             <el-descriptions-item label="详细地址" > <span>{{item.userAddress}}</span>  </el-descriptions-item>
-            <el-descriptions-item label="所属公司"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
+            <el-descriptions-item label="公司名称"><span v-if="item!=null">{{item.companyName}}</span></el-descriptions-item>
             <el-descriptions-item label="员工"><span v-if="item!=null">{{item.companyUserName}}</span></el-descriptions-item>
             <el-descriptions-item label="推广佣金" ><span v-if="item.tuiMoney!=null">{{item.tuiMoney.toFixed(2)}}</span></el-descriptions-item>
             <el-descriptions-item label="推广佣金状态" ><span v-if="item!=null"><dict-tag :options="tuiOptions" :value="item.tuiMoneyStatus"/> </span></el-descriptions-item>

+ 4 - 4
src/views/components/his/userPatietDetails.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div >
     <el-row :gutter="10" class="mb8" style="float: right; top: -30px;">
       <el-col :span="1.5">
@@ -31,7 +31,7 @@
            </template>
       </el-table-column>
       <el-table-column label="体重G" align="center" prop="weight" />
-      <el-table-column label="手机号" align="center" prop="mobile" />
+      <el-table-column label="手机号" align="center" prop="mobile" />
       <el-table-column label="状态" align="center" prop="status" >
          <template slot-scope="scope">
               <dict-tag :options="pOptions" :value="scope.row.status"/>
@@ -100,8 +100,8 @@
         <el-form-item label="体重KG" prop="weight">
           <el-input v-model="form.weight" placeholder="请输入体重KG" />
         </el-form-item>
-        <el-form-item label="手机号" prop="mobile">
-          <el-input v-model="form.mobile" placeholder="请输入手机号" />
+        <el-form-item label="手机号" prop="mobile">
+          <el-input v-model="form.mobile" placeholder="请输入手机号" />
         </el-form-item>
         <el-form-item label="状态" prop="status">
           <el-select v-model="form.status" placeholder="状态" clearable size="small">

+ 2 - 2
src/views/components/tag/AutoTagDialog.vue

@@ -1,10 +1,10 @@
-<template>
+<template>
   <el-dialog :visible.sync="visible" title="标签绑定管理" width="1000px"
    @close="handleClose"
    append-to-body
   >
     <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="90px">
         <el-form-item label="企微公司" prop="corpId">
           <el-select v-model="queryParams.corpId" placeholder="企微公司"  size="small" @change="updateCorpId()">
             <el-option

+ 2 - 2
src/views/course/course.vue

@@ -1,6 +1,6 @@
-<template>
+<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="90px">
       <el-form-item label="关键词" prop="keyword">
         <el-input v-model="queryParams.keyword" placeholder="请输入关键词" clearable size="small"
           @keyup.enter.native="handleQuery" />

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است