| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <template>
- <div class="assessment-plan-rules">
- <div class="header">
- <h2>方案生成规则</h2>
- <el-button type="primary" @click="showDialog(null)">新增规则</el-button>
- </div>
- <el-table :data="rules" border stripe style="width: 100%" :max-height="tableHeight">
- <el-table-column prop="dimension" label="维度" width="120" />
- <el-table-column label="分数区间" width="140">
- <template slot-scope="{ row }">{{ row.scoreMin }} - {{ row.scoreMax }}</template>
- </el-table-column>
- <el-table-column prop="templateId" label="模板包ID" width="100" />
- <el-table-column prop="priority" label="优先级" width="80" />
- <el-table-column label="状态" width="80">
- <template slot-scope="{ row }">
- <el-tag :type="row.isActive ? 'success' : 'info'">{{ row.isActive ? '启用' : '禁用' }}</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="createdAt" label="创建时间" />
- <el-table-column label="操作" width="180">
- <template slot-scope="{ row }">
- <el-button size="mini" @click="showDialog(row)">编辑</el-button>
- <el-button size="mini" type="danger" @click="handleDelete(row.id)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <el-dialog title="规则编辑" :visible.sync="dialogVisible" width="500px">
- <el-form :model="form" label-width="100px">
- <el-form-item label="维度">
- <el-select v-model="form.dimension" placeholder="选择维度">
- <el-option label="注意力(attention)" value="attention" />
- <el-option label="专注力(focus)" value="focus" />
- <el-option label="记忆力(memory)" value="memory" />
- <el-option label="逻辑(logic)" value="logic" />
- <el-option label="情绪(emotion)" value="emotion" />
- </el-select>
- </el-form-item>
- <el-form-item label="分数下限">
- <el-input-number v-model="form.scoreMin" :min="0" :max="100" />
- </el-form-item>
- <el-form-item label="分数上限">
- <el-input-number v-model="form.scoreMax" :min="0" :max="100" />
- </el-form-item>
- <el-form-item label="模板包ID">
- <el-input-number v-model="form.templateId" :min="1" />
- </el-form-item>
- <el-form-item label="优先级">
- <el-input-number v-model="form.priority" :min="0" />
- </el-form-item>
- <el-form-item label="启用">
- <el-switch v-model="form.isActive" />
- </el-form-item>
- </el-form>
- <span slot="footer">
- <el-button @click="dialogVisible = false">取消</el-button>
- <el-button type="primary" @click="handleSave">保存</el-button>
- </span>
- </el-dialog>
- </div>
- </template>
- <script>
- import { listPlanRules, savePlanRule, deletePlanRule } from '@/api/assessment'
- export default {
- computed: {
- tableHeight() {
- return window.innerHeight - 300
- }
- },
- data() {
- return {
- rules: [],
- dialogVisible: false,
- form: { dimension: '', scoreMin: 0, scoreMax: 100, templateId: 1, priority: 0, isActive: true }
- }
- },
- created() {
- this.loadRules()
- },
- methods: {
- async loadRules() {
- const res = await listPlanRules()
- if (res.code === 200) this.rules = res.data || []
- },
- showDialog(row) {
- if (row) {
- this.form = { ...row }
- } else {
- this.form = { dimension: '', scoreMin: 0, scoreMax: 100, templateId: 1, priority: 0, isActive: true }
- }
- this.dialogVisible = true
- },
- async handleSave() {
- const res = await savePlanRule(this.form)
- if (res.code === 200) {
- this.$message.success('保存成功')
- this.dialogVisible = false
- this.loadRules()
- }
- },
- async handleDelete(id) {
- await this.$confirm('确认删除?')
- const res = await deletePlanRule({ id })
- if (res.code === 200) {
- this.$message.success('删除成功')
- this.loadRules()
- }
- }
- }
- }
- </script>
- <style scoped>
- .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
- </style>
|