提交 0531bb20 authored 作者: lidongxu's avatar lidongxu

refactor(mobile/licenses+promotion): 新增:质检报告勤策App页面_修复店内执行上报的常规陈列部分执行字段计算公式

上级 be7df4ef
<template> <template>
<div> <div class="mobile-container">
123 <van-nav-bar right-text="搜索"
left-arrow
@click-left="clickBack"
@click-right="showSearch = true"
placeholder
fixed />
<!-- 计划列表 -->
<van-pull-refresh v-model="refreshLoading"
:pull-distance="100"
success-text="刷新成功"
@refresh="onRefresh">
<van-list v-model:loading="loading"
:finished="finished"
:immediate-check="false"
finished-text="没有更多了"
@load="onLoad">
<van-cell-group inset>
<van-swipe-cell v-for="item in planList"
:key="item.id">
<van-cell :title="item.prdName + '\n料号: ' + item.prdCode">
<template #label>
<p>批号:{{ item.manufactureBatchNo }}</p>
<p>厂家:{{ item.manufactureDate }}</p>
</template>
<template #value>
</template>
</van-cell>
</van-swipe-cell>
</van-cell-group>
</van-list>
</van-pull-refresh>
</div> </div>
</template> </template>
<script setup> <script setup>
import { getQualityInsPageList } from '@/api'
const router = useRouter()
/*************** 导航栏 ***************/
const showSearch = ref(false)
const clickBack = () => {
router.back()
}
/*************** 刷新+加载 ***************/
const refreshLoading = ref(false)
const onRefresh = async () => {
refreshLoading.value = true
await getPlanListFn()
refreshLoading.value = false
}
// 加载更多
const loading = ref(false)
const finished = ref(false)
const onLoad = async () => {
if (loading.value || finished.value) return
loading.value = true
await getPlanListFn()
loading.value = false
}
/*************** 计划列表 ***************/
const query = reactive({
pageNum: 1,
pageSize: 10,
})
const planList = ref([])
const getPlanListFn = async () => {
const res = await getQualityInsPageList(query)
if (res.code === 200) {
planList.value = res.data.rows || []
finished.value = res.data.rows.length < res.data.pageSize
}
}
getPlanListFn()
</script> </script>
<style scoped <style scoped
lang="scss"></style> lang="scss">
\ No newline at end of file ::v-deep(.van-cell__label) {
margin: 0;
}
</style>
\ No newline at end of file
...@@ -464,6 +464,10 @@ ...@@ -464,6 +464,10 @@
visible: true, visible: true,
type: 'formula', type: 'formula',
func: (row) => { func: (row) => {
// 如果参考值是空则返回 '-'
if (!row.plannedMainShelfType || !row.plannedMainShelfQty) {
return '-';
}
row.actualMainShelfExecuted = ((parseInt(row.actualMainShelfType) >= parseInt(row.plannedMainShelfType)) && (parseInt(row.actualMainShelfQty) >= parseInt(row.plannedMainShelfQty))) ? '是' : '否'; row.actualMainShelfExecuted = ((parseInt(row.actualMainShelfType) >= parseInt(row.plannedMainShelfType)) && (parseInt(row.actualMainShelfQty) >= parseInt(row.plannedMainShelfQty))) ? '是' : '否';
return row.actualMainShelfExecuted; return row.actualMainShelfExecuted;
}, },
...@@ -540,6 +544,10 @@ ...@@ -540,6 +544,10 @@
visible: true, visible: true,
type: 'formula', type: 'formula',
func: (row) => { func: (row) => {
// 如果参考值是空则返回 '-'
if (!row.plannedEndCapQty) {
return '-';
}
row.actualEndCapExecuted = ((parseFloat(row.actualEndCapQty) >= parseFloat(row.plannedEndCapQty))) ? '是' : '否'; row.actualEndCapExecuted = ((parseFloat(row.actualEndCapQty) >= parseFloat(row.plannedEndCapQty))) ? '是' : '否';
return row.actualEndCapExecuted; return row.actualEndCapExecuted;
}, },
...@@ -568,7 +576,7 @@ ...@@ -568,7 +576,7 @@
prop: "plannedThemedFloorStack", prop: "plannedThemedFloorStack",
visible: true, visible: true,
type: 'string', type: 'string',
fill: true, fill: false,
width: 140 width: 140
}, },
{ {
...@@ -668,10 +676,27 @@ ...@@ -668,10 +676,27 @@
// 请求时需要额外携带影响的列字段值 // 请求时需要额外携带影响的列字段值
requestKey: ["actualFloorStackExecuted", "regularDisplayExecuted"] requestKey: ["actualFloorStackExecuted", "regularDisplayExecuted"]
}, },
{
label: "实际地堆是否执行",
prop: "actualFloorStackExecuted",
visible: true,
type: 'formula',
func: (row) => {
// 如果参考值是空则返回 '-'
if (!row.plannedFloorStackArea || !row.plannedFloorStackQty) {
return '-';
}
row.actualFloorStackExecuted = ((parseFloat(row.actualFloorStackArea) >= parseFloat(row.plannedFloorStackArea)) && (parseInt(row.actualFloorStackQty) >= parseInt(row.plannedFloorStackQty))) ? '是' : '否';
return row.actualFloorStackExecuted;
},
formulaStr: '公式:(实际地堆平米数 >= 计划地堆平米数)并且(实际地堆数量 >= 计划地堆数量)',
fill: true,
width: 150
},
{ {
label: "实际主题地堆-是否", label: "实际主题地堆-是否",
prop: "actualThemedFloorStack", prop: "actualThemedFloorStack",
referenceKey: "actualFloorStackQty", referenceKey: "plannedThemedFloorStack",
visible: true, visible: true,
type: 'select', type: 'select',
options: [ options: [
...@@ -683,6 +708,7 @@ ...@@ -683,6 +708,7 @@
render: (_, row, col) => { render: (_, row, col) => {
return ( return (
<div> <div>
<span>{row[col.referenceKey] || '-'}</span>
<el-select modelValue={row[col.prop]} <el-select modelValue={row[col.prop]}
onUpdate:modelValue={(value) => { onUpdate:modelValue={(value) => {
row[col.prop] = value; row[col.prop] = value;
...@@ -702,19 +728,6 @@ ...@@ -702,19 +728,6 @@
) )
} }
}, },
{
label: "实际地堆是否执行",
prop: "actualFloorStackExecuted",
visible: true,
type: 'formula',
func: (row) => {
row.actualFloorStackExecuted = ((parseFloat(row.actualFloorStackArea) >= parseFloat(row.plannedFloorStackArea)) && (parseInt(row.actualFloorStackQty) >= parseInt(row.plannedFloorStackQty))) ? '是' : '否';
return row.actualFloorStackExecuted;
},
formulaStr: '公式:(实际地堆平米数 >= 计划地堆平米数)并且(实际地堆数量 >= 计划地堆数量)',
fill: true,
width: 150
},
{ {
label: "计划多点陈列-数量+形式", label: "计划多点陈列-数量+形式",
prop: "plannedMultiDisplay", prop: "plannedMultiDisplay",
...@@ -738,7 +751,7 @@ ...@@ -738,7 +751,7 @@
type: 'input', type: 'input',
func: (row) => { func: (row) => {
// 没有输入内容时,则是否执行设置为否 // 没有输入内容时,则是否执行设置为否
row.actualMultiDisplayExecuted = !row.actualMultiDisplay ? '否' : '是' // row.actualMultiDisplayExecuted = !row.actualMultiDisplay ? '否' : '是'
}, },
referenceKey: "plannedMultiDisplay", referenceKey: "plannedMultiDisplay",
fill: true, fill: true,
...@@ -765,37 +778,18 @@ ...@@ -765,37 +778,18 @@
label: "实际多点陈列-是否执行", label: "实际多点陈列-是否执行",
prop: "actualMultiDisplayExecuted", prop: "actualMultiDisplayExecuted",
visible: true, visible: true,
type: 'select', type: 'formula',
options: [ func: (row) => {
{ label: '是', value: '是' }, // 如果参考值是空则返回 '-'
{ label: '否', value: '否' } if (!row.plannedMultiDisplay) {
], return '-';
fill: true, }
width: 170, row.actualMultiDisplayExecuted = (row.actualMultiDisplay) ? '是' : '否';
render: (_, row, col) => { return row.actualMultiDisplayExecuted;
return (
<div>
<span>{row[col.referenceKey] || '-'}</span>
<el-select modelValue={row[col.prop]}
onUpdate:modelValue={(value) => {
row[col.prop] = value;
submitChange(row, col);
}}
disabled={!row[col.referenceKey]}
placeholder="">
{col.options.map(item => (
<el-option
key={item.value}
label={item.label}
value={item.value}
/>
))}
</el-select>
</div>
)
}, },
// 请求时需要额外携带影响的列字段值 formulaStr: '公式:实际多点陈列-数量+形式,有值',
requestKey: ["actualMultiDisplayExecuted"] fill: true,
width: 180,
}, },
{ {
label: "合计费用-费用", label: "合计费用-费用",
...@@ -823,7 +817,7 @@ ...@@ -823,7 +817,7 @@
row.regularDisplayExecuted = (row.actualMainShelfExecuted === '是' && row.actualEndCapExecuted === '是' && row.actualFloorStackExecuted === '是' && row.actualMultiDisplayExecuted === '是') ? '是' : '否'; row.regularDisplayExecuted = (row.actualMainShelfExecuted === '是' && row.actualEndCapExecuted === '是' && row.actualFloorStackExecuted === '是' && row.actualMultiDisplayExecuted === '是') ? '是' : '否';
return row.regularDisplayExecuted; return row.regularDisplayExecuted;
}, },
formulaStr: '公式:(实际主货架执行,并且实际端架执行,并且实际地堆执行,并且实际多点陈列执行)', formulaStr: '公式:实际主货架执行,并且实际端架执行,并且实际地堆执行,并且实际多点陈列执行(某项无计划时,忽略该项)',
fill: true, fill: true,
width: 150 width: 150
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论