duy пре 1 месец
родитељ
комит
3b63240d33
1 измењених фајлова са 37 додато и 5 уклоњено
  1. 37 5
      src/views/other-file/image-data.vue

+ 37 - 5
src/views/other-file/image-data.vue

@@ -36,24 +36,33 @@
             <!-- 相册列表 -->
             <HcTable v-else :column="imageListColumn" :datas="imageListData" :loading="imageLoading" is-new :index-style="{ width: 60 }">
                 <template #groupNumber="{ row }">
-                    <span v-if="!row.isEditing">{{ row.groupNumber }}</span>
+                    <span v-if="!row?.isEditing">{{ row.groupNumber }}</span>
                  
                     <el-input v-else v-model="row.groupNumber" style="width: 100%;" />
                 </template>
+                <template #codes="{ row }">
+                    <span v-if="!row?.isEditing">{{ row.codes }}</span>
+                    <el-input 
+                        v-else
+                        v-model="row.codes" 
+                        placeholder="请输入单个数字或用~连接的两个数字" 
+                        @blur="validateCodesBlur(row)" 
+                    />
+                </template>
                 <template #photographer="{ row }">
-                    <span v-if="!row.isEditing">{{ row.photographer }}</span>
+                    <span v-if="!row?.isEditing">{{ row.photographer }}</span>
                     <el-input v-else v-model="row.photographer" placeholder="请输入" />
                 </template>
                 <template #date="{ row }">
-                    <span v-if="!row.isEditing">{{ row.dateValue }}</span>
+                    <span v-if="!row?.isEditing">{{ row.dateValue }}</span>
                     <hc-date-picker v-else :dates="betweenTime" clearable @change="betweenTimeUpdate($event, row)" />
                 </template>
                 <template #imagesName="{ row }">
-                    <span v-if="!row.isEditing" class="cursor-pointer" @click="viewPdf(row)">{{ row.imagesName }}</span>
+                    <span v-if="!row?.isEditing" class="cursor-pointer" @click="viewPdf(row)">{{ row.imagesName }}</span>
                     <el-input v-else v-model="row.imagesName" placeholder="请输入" />
                 </template>
                 <template #action="{ row }">
-                    <el-link v-if="!row.isEditing" type="primary" @click="startEditing(row)">编辑</el-link>
+                    <el-link v-if="!row?.isEditing" type="primary" @click="startEditing(row)">编辑</el-link>
                     <el-link v-else v-loading="row.load" type="success" @click="saveEditing(row)">保存</el-link>
                     <el-link v-del-com:[handleDelete]="row" type="danger">删除</el-link>
                 </template>
@@ -214,6 +223,7 @@ const goBackList = () => {
 const imageListColumn = ref([
     { key: 'classifyName', name: '分类名称' },
     { key: 'groupNumber', name: '分组号', width:100 },
+    { key: 'codes', name: '照片起止编号' },
     { key: 'photographer', name: '主要拍摄者', width: 100 },
     { key: 'date', name: '拍摄起止日期' },
     { key: 'imagesName', name: '文件题名' },
@@ -222,6 +232,27 @@ const imageListColumn = ref([
 const imageListData = ref([
  
 ])
+const validateCodesBlur = (row) => {
+    if (!row.codes) return
+    
+    // 验证格式:单个数字 或 两个数字用~连接
+    const pattern = /^\d+$|^\d+~\d+$/
+    if (!pattern.test(row.codes)) {
+        window.$message.warning('请输入正确的格式:单个数字或用~连接的两个数字')
+        row.codes = ''
+        return
+    }
+    
+    // 如果是范围格式,确保第二个数字大于第一个
+    if (row.codes.includes('~')) {
+        const [start, end] = row.codes.split('~').map(Number)
+        if (start >= end) {
+            window.$message.warning('结束编号必须大于起始编号')
+            row.codes = ''
+            return
+        }
+    }
+}
 
 const getImageListData = async () => {
     tableLoading.value = true
@@ -288,6 +319,7 @@ const saveEditing = async (row) => {
 
        },
     )
+      row.load = false
     //判断状态
     if (!error && code === 200) {
         window.$message?.success(msg)