yinxia.yang пре 3 недеља
родитељ
комит
0da2020a4f
4 измењених фајлова са 12 додато и 10 уклоњено
  1. 0 1
      src/components/EvidenceUpload.vue
  2. 3 2
      src/views/Inbound.vue
  3. 4 3
      src/views/Ledger.vue
  4. 5 4
      src/views/Outbound.vue

+ 0 - 1
src/components/EvidenceUpload.vue

@@ -41,7 +41,6 @@
 		<div v-for="(file, index) in model" :key="file.id" class="attachment">
 			<el-image :src="file.url" :preview-src-list="model.map(item => item.url)" :initial-index="index"
 				preview-teleported fit="cover" />
-			<span>{{ file.name }}</span>
 			<el-button :disabled="busy || disabled" :icon="Delete" text aria-label="移除图片" title="移除图片"
 				@click="model = model.filter(item => item.id !== file.id)" />
 		</div>

+ 3 - 2
src/views/Inbound.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { computed, onMounted, reactive, ref } from 'vue'
+import { computed, nextTick, onMounted, reactive, ref } from 'vue'
 import { useRoute } from 'vue-router'
 import { Plus } from '@element-plus/icons-vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
@@ -118,7 +118,8 @@ const reverseRules = computed<FormRules>(() => ({
   quantity: [{ required: true, type: 'integer', min: 1, max: reverseMax.value, message: `冲销数量须为 1 至 ${reverseMax.value} 的整数`, trigger: 'change' }],
   evidence: [{ required: true, type: 'array', min: 1, message: '请上传照片 / 凭证', trigger: 'change' }],
 }))
-function validateReverseEvidence() {
+async function validateReverseEvidence() {
+  await nextTick()
   void reverseFormRef.value?.validateField('evidence').catch(() => false)
 }
 const logisticsName = (value: string) => ({ express: '快递', instant: '闪送', other: '其他' }[value] || '待填写')

+ 4 - 3
src/views/Ledger.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { computed, onMounted, reactive, ref } from 'vue'
+import { computed, nextTick, onMounted, reactive, ref } from 'vue'
 import { ElMessage } from 'element-plus'
 import type { FormInstance, FormRules } from 'element-plus'
 import EvidenceUpload from '../components/EvidenceUpload.vue'
@@ -80,7 +80,8 @@ const reverseRules = computed<FormRules>(() => ({
   quantity: [{ required: true, type: 'integer', min: 1, max: reverseMax.value, message: `冲销数量须为 1 至 ${reverseMax.value} 的整数`, trigger: 'change' }],
   evidence: [{ required: true, type: 'array', min: 1, message: '请上传照片 / 凭证', trigger: 'change' }],
 }))
-function validateReverseEvidence() {
+async function validateReverseEvidence() {
+  await nextTick()
   void reverseFormRef.value?.validateField('evidence').catch(() => false)
 }
 const errors = ref<Record<string, string>>({})
@@ -169,7 +170,7 @@ async function submitReverse() {
           <div><label>{{ directionName(detail) }}数量</label><div class="ledger-readonly">{{ detail.quantity }} {{ entrySku(detail)?.spec }}</div></div>
           <div v-if="detail.source === 'normal' && detail.direction === 'outbound'"><label>订单类型</label><div class="ledger-readonly">{{ detail.orderType === 'internal' ? '内部订单' : '外部订单' }}</div></div>
         </div>
-        <template v-if="detail.source === 'normal' && detail.orderType === 'internal'"><div class="ledger-evidence-label">内部订单追溯信息</div><div class="ledger-evidence">内部订单:{{ detail.so }};内部订单不展示物流、照片/凭证</div></template>
+        <template v-if="detail.source === 'normal' && detail.orderType === 'internal'"><div class="ledger-evidence-label">内部订单追溯信息</div><div class="ledger-evidence">内部订单:{{ detail.so }}</div></template>
         <template v-else>
           <div class="ledger-evidence-label">照片 / 凭证</div>
           <div class="ledger-evidence"><span v-if="!attachments(detail).length">暂无凭证</span><div v-for="(file, index) in attachments(detail)" :key="file.id" class="ledger-evidence-item"><el-image :src="file.url" :preview-src-list="attachments(detail).map(item => item.url)" :initial-index="index" preview-teleported fit="cover" /></div><span v-if="detail.tracking">{{ detail.company }} · 快递单号 {{ detail.tracking }}</span></div>

+ 5 - 4
src/views/Outbound.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { computed, onMounted, reactive, ref } from 'vue'
+import { computed, nextTick, onMounted, reactive, ref } from 'vue'
 import { useRoute } from 'vue-router'
 import { Plus, Tickets } from '@element-plus/icons-vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
@@ -126,7 +126,8 @@ const reverseRules = computed<FormRules>(() => ({
   quantity: [{ required: true, type: 'integer', min: 1, max: reverseMax.value, message: `冲销数量须为 1 至 ${reverseMax.value} 的整数`, trigger: 'change' }],
   evidence: [{ required: true, type: 'array', min: 1, message: '请上传照片 / 凭证', trigger: 'change' }],
 }))
-function validateReverseEvidence() {
+async function validateReverseEvidence() {
+  await nextTick()
   void reverseFormRef.value?.validateField('evidence').catch(() => false)
 }
 const orderName = (value: string) => ({ internal: '内部订单', external: '外部订单' }[value] || '待填写')
@@ -135,7 +136,7 @@ const entrySku = (entry: Entry) => entry.snapshot
 const attachments = (entry: Entry) => [...entry.orderEvidence, ...entry.evidence, ...entry.screenshots]
 const canReverse = (entry: OutboundEntry) => entry.status === 'completed' && entry.alreadyReversedQty < Number(entry.quantity)
 const reversalStatus = (entry: OutboundEntry) => entry.alreadyReversedQty === 0 ? '未冲销' : entry.alreadyReversedQty >= Number(entry.quantity) ? '已全部冲销' : '部分冲销'
-const logisticsText = (entry: Entry) => entry.orderType === 'internal' ? '—' : entry.logistics === 'express' ? [entry.company, entry.tracking].filter(Boolean).join(' · ') || '待填写' : entry.screenshots.length ? `${logisticsName(entry.logistics)} · 物流截图` : '待填写'
+const logisticsText = (entry: Entry) => entry.orderType === 'internal' ? '—' : entry.logistics === 'express' ? [entry.company, entry.tracking].filter(Boolean).join(' · ') || '待填写' : logisticsName(entry.logistics)
 onMounted(async () => { try { await loadData(); if (route.query.new) open() } catch (error) { report(error) } })
 function filterRows() { applied.value = { ...filters, dates: [...(filters.dates || [])] }; page.value = 1; loadData().catch(report) }
 async function fetchDetail(entry: OutboundEntry) {
@@ -292,7 +293,7 @@ async function submitReverse() {
           <div><label>{{ detail.direction === 'outbound' ? '出库数量' : '入库数量' }}</label><div class="outbound-readonly">{{ detail.quantity }} {{ entrySku(detail)?.spec }}</div></div>
           <div v-if="detail.source === 'normal'"><label>订单类型</label><div class="outbound-readonly">{{ orderName(detail.orderType) }}</div></div>
         </div>
-        <template v-if="detail.orderType === 'internal' && detail.source === 'normal'"><div class="outbound-evidence-label">内部订单追溯信息</div><div class="outbound-evidence"><el-icon><Tickets /></el-icon><span>内部订单:{{ detail.so }};内部订单不展示物流、照片/凭证</span></div></template>
+        <template v-if="detail.orderType === 'internal' && detail.source === 'normal'"><div class="outbound-evidence-label">内部订单追溯信息</div><div class="outbound-evidence"><el-icon><Tickets /></el-icon><span>内部订单:{{ detail.so }}</span></div></template>
         <template v-else>
           <div class="outbound-evidence-label">{{ detail.source === 'normal' ? '订单凭证 / 物流截图' : '冲销凭证' }}</div>
           <div class="outbound-evidence">