| | |
| | | <template> |
| | | <el-dialog |
| | | class="gd-dialog" |
| | | v-model="visible" |
| | | :title="titleEnum[dialogMode]" |
| | | @closed="visible = false" |
| | | destroy-on-close |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-dialog class="gd-dialog" v-model="visible" :title="titleEnum[dialogMode]" @closed="visible = false" |
| | | destroy-on-close :close-on-click-modal="false"> |
| | | <el-row class="detail-row-view" v-if="dialogReadonly"> |
| | | <el-col :span="12"> |
| | | <div class="label">标题</div> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-form |
| | | class="gd-dialog-form" |
| | | v-else |
| | | ref="formRef" |
| | | :model="formData" |
| | | :rules="rules" |
| | | :disabled="dialogReadonly" |
| | | label-width="140px" |
| | | > |
| | | <el-form class="gd-dialog-form" v-else ref="formRef" :model="formData" :rules="rules" :disabled="dialogReadonly" |
| | | label-width="140px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="标题" prop="title"> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="提出部门" prop="proposeDeptId"> |
| | | <el-tree-select |
| | | class="gd-select" |
| | | popper-class="gd-tree-select-popper" |
| | | v-model="formData.proposeDeptId" |
| | | node-key="id" |
| | | :data="deptTree" |
| | | :props="treeProps" |
| | | check-strictly |
| | | clearable |
| | | /> |
| | | <el-tree-select class="gd-select" popper-class="gd-tree-select-popper" |
| | | v-model="formData.proposeDeptId" node-key="id" :data="deptTree" :props="treeProps" |
| | | check-strictly clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="数据提供部门" prop="dataProvideDeptId"> |
| | | <el-tree-select |
| | | class="gd-select" |
| | | popper-class="gd-tree-select-popper" |
| | | v-model="formData.dataProvideDeptId" |
| | | node-key="id" |
| | | :data="deptTree" |
| | | :props="treeProps" |
| | | check-strictly |
| | | clearable |
| | | /> |
| | | <el-tree-select class="gd-select" popper-class="gd-tree-select-popper" |
| | | v-model="formData.dataProvideDeptId" node-key="id" :data="deptTree" :props="treeProps" |
| | | check-strictly clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="评分" prop="score"> |
| | | <el-input-number |
| | | class="gd-input" |
| | | v-model="formData.score" |
| | | :min="1" |
| | | :max="10" |
| | | placeholder="请输入" |
| | | controls-position="right" |
| | | /> |
| | | <el-input-number class="gd-input" v-model="formData.score" :min="1" :max="10" placeholder="请输入" |
| | | controls-position="right" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="是否解决" prop="isResolved"> |
| | | <el-select |
| | | class="gd-select" |
| | | popper-class="gd-select-popper" |
| | | v-model="formData.isResolved" |
| | | placeholder="请选择" |
| | | clearable |
| | | > |
| | | <el-option v-for="item in isResolvedOptions" :key="item.value" :label="item.label" :value="item.value" /> |
| | | <el-select class="gd-select" popper-class="gd-select-popper" v-model="formData.isResolved" |
| | | placeholder="请选择" clearable> |
| | | <el-option v-for="item in isResolvedOptions" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="评价内容" prop="evaluationContent"> |
| | | <el-input |
| | | class="gd-input" |
| | | v-model="formData.evaluationContent" |
| | | type="textarea" |
| | | :rows="4" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | <el-input class="gd-input" v-model="formData.evaluationContent" type="textarea" :rows="4" |
| | | placeholder="请输入" clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer v-if="!dialogReadonly"> |
| | | <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button> |
| | | <el-button |
| | | class="" |
| | | color="#4C34FF" |
| | | |
| | | :loading="submitting" |
| | | :disabled="submitting" |
| | | @click="handleSubmit" |
| | | > |
| | | <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleSubmit"> |
| | | 保存 |
| | | </el-button> |
| | | </template> |
| | |
| | | const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' }) |
| | | |
| | | const rules = { |
| | | title: fieldRules(true,50), |
| | | dataName: fieldRules(true,50), |
| | | title: fieldRules(true, 50), |
| | | dataName: fieldRules(true, 50), |
| | | proposeDeptId: fieldRules(true), |
| | | dataProvideDeptId: fieldRules(true), |
| | | score: fieldRules(true,50), |
| | | score: [ |
| | | { required: true, message: '请输入', trigger: ['blur', 'change'] }, |
| | | { |
| | | validator: (_rule, value, callback) => { |
| | | if (value === '' || value === null || value === undefined) return callback() |
| | | const num = Number(value) |
| | | if (!Number.isFinite(num)) return callback(new Error('请输入数字')) |
| | | if (num > 10) return callback(new Error('最大值为10')) |
| | | return callback() |
| | | }, |
| | | trigger: ['blur', 'change'], |
| | | }, |
| | | ], |
| | | isResolved: fieldRules(true), |
| | | evaluationContent: fieldRules(true,200), |
| | | evaluationContent: fieldRules(true, 200), |
| | | } |
| | | |
| | | // 提交新增/编辑 |
| | | async function handleSubmit() { |
| | | async function handleSubmit () { |
| | | const isValid = await formRef.value?.validate().catch(() => false) |
| | | if (!isValid) return |
| | | submitting.value = true |
| | |
| | | } |
| | | |
| | | // 加载详情 |
| | | async function loadDetail() { |
| | | async function loadDetail () { |
| | | if (!formData.value.id) return |
| | | const res = await gdDataEvaluationDetailApi({ id: formData.value.id }) |
| | | formData.value = res?.data?.data ?? {} |
| | | } |
| | | |
| | | // 打开弹框 |
| | | async function open({ mode = 'add', row } = {}) { |
| | | async function open ({ mode = 'add', row } = {}) { |
| | | dialogMode.value = mode |
| | | formData.value = dialogMode.value === 'add' ? initForm() : row |
| | | if (dialogMode.value !== 'add') { |