|
|
@@ -53,59 +53,77 @@
|
|
|
:rules="rules.isReturn"
|
|
|
/>
|
|
|
|
|
|
- <template v-if="state.dialog.type === 'detail'">
|
|
|
+ <template v-if="state.dialog.type === 'detail' && turnBackInfoList.length">
|
|
|
<h4 class="mb20 mt20">转回信息</h4>
|
|
|
- <van-cell-group>
|
|
|
- <van-field
|
|
|
- label="门禁卡是否归还"
|
|
|
- :model-value="accessCardReturnText"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- label="转回日期"
|
|
|
- :model-value="returnDateText"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- label="转回数量(雄性+雌性)"
|
|
|
- :model-value="returnAnimalNumberText"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="state.form.returnTransport"
|
|
|
- label="转回运输方式"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="state.form.notReturnReason"
|
|
|
- label="未返回动物情况说明"
|
|
|
- readonly
|
|
|
- />
|
|
|
- </van-cell-group>
|
|
|
-
|
|
|
+ <div class="simple-table">
|
|
|
+ <div class="simple-table__header">
|
|
|
+ <div class="simple-table__cell" align="center">日期</div>
|
|
|
+ <div class="simple-table__cell" align="center">转回数量</div>
|
|
|
+ <div class="simple-table__cell" align="center">运输方式</div>
|
|
|
+ <div class="simple-table__cell" align="center">门禁卡是否归还</div>
|
|
|
+ <div class="simple-table__cell" align="center">审批记录</div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-for="(item, index) in turnBackInfoList"
|
|
|
+ :key="index"
|
|
|
+ class="simple-table__row"
|
|
|
+ >
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ formatYmd(item.createdTime) || '-' }}
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ (item.returnMaleNumber || 0) + (item.returnFemaleNumber || 0) }}
|
|
|
+ (雄:{{ item.returnMaleNumber || 0 }},雌:{{ item.returnFemaleNumber || 0 }})
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ item.returnTransport || '-' }}
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ item.accessCardReturn === 1 ? '是' : item.accessCardReturn === 0 ? '否' : '-' }}
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ <van-button
|
|
|
+ v-if="item.approvalId || item.businessCode"
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click="onViewRebackApproval(item)"
|
|
|
+ >
|
|
|
+ 详情
|
|
|
+ </van-button>
|
|
|
+ <span v-else>-</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-if="state.dialog.type === 'detail' && dieInfoList.length">
|
|
|
<h4 class="mb20 mt20">淘汰上报信息</h4>
|
|
|
- <van-cell-group>
|
|
|
- <van-field
|
|
|
- label="淘汰日期"
|
|
|
- :model-value="dieTimeText"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="state.form.dieReason"
|
|
|
- label="淘汰原因"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- label="淘汰数量(雄性+雌性)"
|
|
|
- :model-value="dieAnimalNumberText"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="state.form.location"
|
|
|
- label="动物尸体存放位置"
|
|
|
- readonly
|
|
|
- />
|
|
|
- </van-cell-group>
|
|
|
+ <div class="simple-table">
|
|
|
+ <div class="simple-table__header-taotai">
|
|
|
+ <div class="simple-table__cell" align="center">淘汰日期</div>
|
|
|
+ <div class="simple-table__cell" align="center">淘汰数量</div>
|
|
|
+ <div class="simple-table__cell" align="center">淘汰原因</div>
|
|
|
+ <div class="simple-table__cell" align="center">尸体存放位置</div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-for="(item, index) in dieInfoList"
|
|
|
+ :key="index"
|
|
|
+ class="simple-table__row-taotai"
|
|
|
+ >
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ formatYmd(item.dieTime) || '-' }}
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ (item.returnMaleNumber || 0) + (item.returnFemaleNumber || 0) }}
|
|
|
+ (雄:{{ item.returnMaleNumber || 0 }},雌:{{ item.returnFemaleNumber || 0 }})
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ item.dieReason || '-' }}
|
|
|
+ </div>
|
|
|
+ <div class="simple-table__cell" align="center">
|
|
|
+ {{ item.location || '-' }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<div class="mt30 mb30 checkbox-wrapper">
|
|
|
<van-checkbox v-model="safePromiseStatus" :disabled="isReadOnly">
|
|
|
@@ -162,6 +180,21 @@
|
|
|
@confirm="onReturnOptionConfirm" @cancel="showReturnPicker = false" />
|
|
|
</van-popup>
|
|
|
|
|
|
+ <!-- 转回审批流程弹窗 -->
|
|
|
+ <van-popup v-model:show="showRebackApproval" position="bottom" :style="{ height: '80vh' }" round>
|
|
|
+ <div class="notice-content">
|
|
|
+ <h4 class="notice-title">转回审批流程</h4>
|
|
|
+ <div class="text">
|
|
|
+ <FlowTable
|
|
|
+ v-if="currentRebackApprovalId || currentRebackBusinessCode"
|
|
|
+ :id="currentRebackApprovalId || 0"
|
|
|
+ :businessCode="currentRebackBusinessCode"
|
|
|
+ defCode="plat_animal_takeway_reback"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </van-popup>
|
|
|
+
|
|
|
<!-- 须知弹窗 -->
|
|
|
<van-popup v-model:show="isShowNotice" position="bottom" round :closeable="true" :style="{ height: '70vh' }">
|
|
|
<div class="notice-content">
|
|
|
@@ -217,6 +250,11 @@ const showCategoryPicker = ref<boolean>(false)
|
|
|
const showDatePicker = ref<boolean>(false)
|
|
|
const selectedDate = ref<Date | null>(null)
|
|
|
const showReturnPicker = ref<boolean>(false)
|
|
|
+const turnBackInfoList = ref<any[]>([])
|
|
|
+const dieInfoList = ref<any[]>([])
|
|
|
+const showRebackApproval = ref<boolean>(false)
|
|
|
+const currentRebackApprovalId = ref<number | null>(null)
|
|
|
+const currentRebackBusinessCode = ref<string>('')
|
|
|
|
|
|
const isReadOnly = computed(() => state.dialog.type === 'detail')
|
|
|
|
|
|
@@ -385,6 +423,9 @@ const loadRebackInfo = async (takeawayId?: number) => {
|
|
|
const turnBackList = list.filter((item: any) => String(item.takeawayType) === '10')
|
|
|
const dieList = list.filter((item: any) => String(item.takeawayType) === '20')
|
|
|
|
|
|
+ turnBackInfoList.value = turnBackList
|
|
|
+ dieInfoList.value = dieList
|
|
|
+
|
|
|
const turnBack = turnBackList[turnBackList.length - 1]
|
|
|
const die = dieList[dieList.length - 1]
|
|
|
|
|
|
@@ -416,6 +457,20 @@ const loadRebackInfo = async (takeawayId?: number) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const onViewRebackApproval = (item: any) => {
|
|
|
+ const id = Number(item.approvalId || 0)
|
|
|
+ let businessCode = ''
|
|
|
+ if (item.businessCode) {
|
|
|
+ businessCode = String(item.businessCode)
|
|
|
+ } else if (item.id) {
|
|
|
+ businessCode = String(item.id)
|
|
|
+ }
|
|
|
+ if (!id && !businessCode) return
|
|
|
+ currentRebackApprovalId.value = id || null
|
|
|
+ currentRebackBusinessCode.value = businessCode
|
|
|
+ showRebackApproval.value = true
|
|
|
+}
|
|
|
+
|
|
|
const openDialog = async (type: ActionType, sourceData?: TakeawayList) => {
|
|
|
await getDicts()
|
|
|
state.dialog.type = type
|
|
|
@@ -508,6 +563,8 @@ const closeDialog = () => {
|
|
|
selectedDate.value = null
|
|
|
state.loading = false
|
|
|
state.dialog.isShowDialog = false
|
|
|
+ turnBackInfoList.value = []
|
|
|
+ dieInfoList.value = []
|
|
|
}
|
|
|
|
|
|
const onCancel = () => {
|
|
|
@@ -749,6 +806,53 @@ defineExpose({
|
|
|
margin-top: 16px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .simple-table {
|
|
|
+ width: 100%;
|
|
|
+ border: 1px solid #ebedf0;
|
|
|
+ border-radius: 8px;
|
|
|
+ overflow-x: auto;
|
|
|
+ overflow-y: hidden;
|
|
|
+ font-size: 12px;
|
|
|
+ background-color: #fff;
|
|
|
+ margin-top: 8px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .simple-table__header,
|
|
|
+ .simple-table__row {
|
|
|
+ display: flex;
|
|
|
+ min-width: 660px;
|
|
|
+ }
|
|
|
+ .simple-table__header-taotai,
|
|
|
+ .simple-table__row-taotai {
|
|
|
+ display: flex;
|
|
|
+ min-width: 500px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .simple-table__header {
|
|
|
+ background-color: #f7f8fa;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ .simple-table__cell {
|
|
|
+ flex: 1;
|
|
|
+ padding: 8px;
|
|
|
+ border-bottom: 1px solid #ebedf0;
|
|
|
+ word-break: break-all;
|
|
|
+ }
|
|
|
+
|
|
|
+ .simple-table__header .simple-table__cell + .simple-table__cell,
|
|
|
+ .simple-table__row .simple-table__cell + .simple-table__cell {
|
|
|
+ border-left: 1px solid #ebedf0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .simple-table__row:last-child .simple-table__cell {
|
|
|
+ border-bottom: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .simple-table__approval {
|
|
|
+ padding: 8px 0 16px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
:deep(.van-checkbox) {
|