吉安感知网项目-前端
shuishen
2026-02-04 ffaa6eb6263b131baf1e026060b03aa100abf1b3
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/FormDiaLog.vue
@@ -1,12 +1,6 @@
<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>
@@ -38,15 +32,8 @@
         </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">
@@ -60,81 +47,44 @@
            </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>
@@ -175,17 +125,29 @@
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
@@ -200,14 +162,14 @@
}
// 加载详情
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') {