Просмотр исходного кода

feat(规则管理): 添加条件抽屉表单及逻辑

在规则管理页面中新增条件抽屉表单,支持添加、删除开场白,设置条件分类、名称、分值、加减类型及是否预警。通过抽屉表单提升用户交互体验,简化条件添加流程。
闪电 месяцев назад: 8
Родитель
Сommit
22f1f2201d
1 измененных файлов с 72 добавлено и 1 удалено
  1. 72 1
      src/views/rules/models.vue

+ 72 - 1
src/views/rules/models.vue

@@ -55,6 +55,51 @@
55 55
       </div>
56 56
       <!-- 右侧内容区 -->
57 57
       <div class="flex-1 overflow-hidden">
58
+        <el-drawer v-model="showConditionDrawer" title="添加条件" size="40%">
59
+          <el-form :model="conditionForm" label-width="100px">
60
+            <el-form-item label="条件分类">
61
+              <el-select v-model="conditionForm.type" placeholder="请选择条件分类">
62
+                <el-option label="基础检测" value="基础检测" />
63
+                <el-option label="通话质量检测" value="通话质量检测" />
64
+              </el-select>
65
+            </el-form-item>
66
+            <el-form-item label="条件名称">
67
+              <el-select v-model="conditionForm.name" placeholder="请选择条件名称">
68
+                <el-option label="开场白" value="开场白" />
69
+                <el-option label="结束语" value="结束语" />
70
+                <el-option label="音量" value="音量" />
71
+              </el-select>
72
+            </el-form-item>
73
+            <el-form-item label="开场白">
74
+              <div v-for="(greeting, index) in conditionForm.greetings" :key="index" class="mb-2">
75
+                <div class="flex items-center">
76
+                  <el-input v-model="conditionForm.greetings[index]" placeholder="请输入开场白" class="flex-1" style="width: 500px;"/>
77
+                  <el-button type="danger" @click="removeGreeting(index)" :icon="Delete" circle class="ml-2" />
78
+                </div>
79
+              </div>
80
+              <el-button type="primary" @click="addGreeting">添加开场白</el-button>
81
+            </el-form-item>
82
+            <el-form-item label="分值">
83
+              <div class="flex items-center">
84
+                <el-slider v-model="conditionForm.score" :max="100" class="flex-1 mr-4" />
85
+                <el-input-number v-model="conditionForm.score" :min="0" :max="100" />
86
+              </div>
87
+            </el-form-item>
88
+            <el-form-item label="加减类型">
89
+              <el-select v-model="conditionForm.operation" placeholder="请选择加减类型">
90
+                <el-option label="加分项" value="加分项" />
91
+                <el-option label="减分项" value="减分项" />
92
+              </el-select>
93
+            </el-form-item>
94
+            <el-form-item label="是否预警">
95
+              <el-switch v-model="conditionForm.warning" />
96
+            </el-form-item>
97
+          </el-form>
98
+          <div class="flex justify-end mt-4">
99
+            <el-button @click="showConditionDrawer = false">取消</el-button>
100
+            <el-button type="primary" @click="saveCondition">保存</el-button>
101
+          </div>
102
+        </el-drawer>
58 103
         <div class="bg-white rounded-lg shadow-sm p-6 h-full overflow-y-auto">
59 104
           <!-- 操作按钮 -->
60 105
           <div class="absolute mt-6 right-8">
@@ -138,8 +183,34 @@ const currentModel: any = ref({
138 183
 const selectModel = (index: number) => {
139 184
   selectedModel.value = index;
140 185
 };
186
+const showConditionDrawer = ref(false);
187
+const conditionForm = ref({
188
+  type: '',
189
+  name: '',
190
+  greetings: [''] as string[],
191
+  score: 0,
192
+  operation: '',
193
+  warning: false
194
+});
195
+
196
+const addGreeting = () => {
197
+  conditionForm.value.greetings.push('');
198
+};
199
+
200
+const removeGreeting = (index: number) => {
201
+  conditionForm.value.greetings.splice(index, 1);
202
+};
203
+
141 204
 const addCondition = () => {
142
-  // 添加条件逻辑
205
+  showConditionDrawer.value = true;
206
+  conditionForm.value = {
207
+    type: '',
208
+    name: '',
209
+    greetings: [''] as string[],
210
+    score: 0,
211
+    operation: '',
212
+    warning: false
213
+  };
143 214
 };
144 215
 const editCondition = (row: any) => {
145 216
   // 编辑条件逻辑