Przeglądaj źródła

feat(data-fill): 增加测量偏差设置功能

duy 1 miesiąc temu
rodzic
commit
5fa4272489

+ 17 - 1
src/api/modules/data-fill/wbs.js

@@ -566,7 +566,23 @@ export default {
     
     async batchAddNumbers(form) {
         return HcApi({
-            url: '/api//blade-manager/exceltab/batchAddNumbers',
+            url: '/api/blade-manager/exceltab/batchAddNumbers',
+            method: 'post',
+            data: form,
+        })
+    },
+    //获取偏差范围    
+    async getDeviationRange(form) {
+        return HcApi({
+            url: '/api/blade-manager/param/getDeviationRange',
+            method: 'get',
+            params: form,
+        })
+    },
+    //设置偏差值范围
+        async setDeviationRange(form) {
+        return HcApi({
+            url: '/api/blade-manager/param/setDeviationRange ',
             method: 'post',
             data: form,
         })

+ 75 - 8
src/views/data-fill/collapse-form/index.vue

@@ -18,7 +18,7 @@
                                 已填{{ item.realFillRate ?? 0 }}%
                             </div> -->
                             <el-tooltip
-                                v-if="item.isSync === 1"
+                                v-if="item.isSync === 1 && item.isBussShow !== 2"
                                 class="box-item"
                                 effect="light"
                                 content="表单保存后更新"
@@ -30,7 +30,7 @@
                                 >同</span>
                             </el-tooltip>
                             <el-tooltip
-                                v-if="item.dateIsComplete === 2 "
+                                v-if="item.dateIsComplete === 2 && item.isBussShow !== 2"
                                 class="box-item"
                                 effect="light"
                                 content="表单日期未完善"
@@ -684,20 +684,24 @@
     <!-- 测量偏差 -->
     <hc-new-dialog v-model="deviationShow" title="设置偏差范围" :loading="deviationLoading" @save="deviationSaveClick">
         <el-form
+            ref="deviationForm"
             :model="deviationModal"
             label-width="auto"
             size="large"
             :inline="true"
+            :rules="rules"
         >
             <div style="display: flex; align-items: center;">
                 <el-form-item label=" " style="margin-right: 20px;">
                     <el-radio-group v-model="deviationModal.type" style="display: flex; flex-direction: column;">
-                        <el-radio value="Sponsor" style="margin-bottom: 8px;">高程偏差</el-radio>
-                        <el-radio value="Venue">平面偏差</el-radio>
+                        <el-radio :value="1" style="margin-bottom: 8px;">高程偏差</el-radio>
+                        <el-radio :value="2">平面偏差</el-radio>
                     </el-radio-group>
                 </el-form-item>
-                <el-form-item label=" ">
-                    <el-input v-model="deviationModal.customValue" block placeholder="请输入" />
+                <el-form-item label=" " :prop="deviationModal.type === 1 ? 'g8pcfw' : 'g10pcfw'">
+                    <el-input v-if="deviationModal.type === 1" v-model="deviationModal.g8pcfw" block placeholder="请输入高程偏差" />
+                    <el-input v-else v-model="deviationModal.g10pcfw" block placeholder="请输入平面高差" />
+                    <div class="text-orange">格式要求:-n,n或者±n</div>
                 </el-form-item>
             </div>
         </el-form>
@@ -745,6 +749,7 @@ import { HcDelMsg, HcUploadFileApi } from 'hc-vue3-ui'
 import { toPdfPage } from '~uti/btn-auth'
 import nodeBaseApi from '~api/data-fill/nodebaseinfo'
 import thirdApi from '~api/tentative/detect/third'
+import { formValidate } from 'js-fast-way'
 //参数
 const props = defineProps({
     datas: {
@@ -1154,6 +1159,7 @@ const handleMenuSelect = async ({ key }) => {
         
     } else if (key === 'deviation') {
          deviationShow.value = true
+         getDeviationData()
     }
 }
 
@@ -2284,9 +2290,70 @@ const pushCodeRef = ref(null)
 //测量偏差
 const deviationShow = ref(false)
 const deviationLoading = ref(false)
-const deviationModal = ref({})
-const deviationSaveClick = ()=>{
+const deviationModal = ref({ type:1 })
+//获取偏差范围
+const getDeviationData = async () => {
+    const { pkeyId } = tableFormItemNode.value
+    const { error, code, msg, data } = await wbsApi.getDeviationRange(
+        { pKeyId: pkeyId },
+    )
+    if (!error && code === 200) {
+        // 从数组中找出k为"g8pcfw"和"g10pcfw"的对象,并提取v值
+        const g8pcfwObj = data.find(item => item.k === 'g8pcfw')
+        const g10pcfwObj = data.find(item => item.k === 'G10pcfw')
+        
+        // 将找到的v值赋给deviationModal对应的属性
+        deviationModal.value.g8pcfw = g8pcfwObj ? g8pcfwObj.v : ''
+        deviationModal.value.g10pcfw = g10pcfwObj ? g10pcfwObj.v : ''
+    } else {
+        // 请求失败时清空这两个值
+        deviationModal.value.g8pcfw = ''
+        deviationModal.value.g10pcfw = ''
+    }
+}  
+const validateDeviation = (rule, value, callback) => {
+  if (!value) {
+    callback(new Error('请输入偏差值')) // 空值提示
+    return
+  }
+
+  // 正则匹配:-n,n 或 ±n 格式
+  const isValid = /^(-?\d+,\d+|±\d+)$/.test(value)
+  if (!isValid) {
+    callback(new Error('格式错误!请输入 -n,n 或 ±n'))
+  } else {
+    callback() // 验证通过
+  }
+}
+
+// 表单规则
+const rules = {
+  g8pcfw: [{ validator: validateDeviation, trigger: 'blur' }], // 高程偏差验证
+  g10pcfw: [{ validator: validateDeviation, trigger: 'blur' }], // 平面偏差验证
+}
+const deviationForm = ref(null)
+const deviationSaveClick = async ()=>{
+        const validate = await formValidate(deviationForm.value, rules)
+     if (!validate) {
+        return false
+     }
+     const { pkeyId } = tableFormItemNode.value
+     deviationLoading.value = true
+        const { error, code, msg, data } = await wbsApi.setDeviationRange(
+        {
+            g8pcfw: deviationModal.value.g8pcfw,
+            g10pcfw: deviationModal.value.g10pcfw,
+            pKeyId: pkeyId,
+           
+        },
+    )
 
+  deviationLoading.value = false
+    if (!error && code === 200) {
+       window.$message?.success(msg || '操作成功')
+      deviationShow.value = false
+    
+}
 }
 
 // 暴露出去