|
|
@@ -1,5 +1,5 @@
|
|
|
<script setup lang="tsx">
|
|
|
-import { reactive, ref, unref } from 'vue'
|
|
|
+import { reactive, ref, unref,onMounted } from 'vue'
|
|
|
import { useTable } from '@/hooks/web/useTable'
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
import { Table, TableColumn } from '@/components/Table'
|
|
|
@@ -26,7 +26,17 @@ import {
|
|
|
ElInput,
|
|
|
ElDatePicker
|
|
|
} from 'element-plus'
|
|
|
-import { getStoreUser, delPur,endPur ,upCompute,authComput,getOut,outAuth,outOut} from '@/api/erp'
|
|
|
+import {
|
|
|
+ getStoreUser,
|
|
|
+ endPur,
|
|
|
+ upCompute,
|
|
|
+ authComput,
|
|
|
+ getOut,
|
|
|
+ outAuth,
|
|
|
+ outOut,
|
|
|
+ delOut,
|
|
|
+ getStoreList
|
|
|
+} from '@/api/erp'
|
|
|
import { useRouter } from 'vue-router'
|
|
|
import { formatTime } from '@/utils'
|
|
|
import { endPuritem } from '@/api/erp/types'
|
|
|
@@ -42,10 +52,7 @@ const { tableRegister, tableState, tableMethods } = useTable({
|
|
|
limit: unref(pageSize) || 10,
|
|
|
...unref(searchParams)
|
|
|
})
|
|
|
- return {
|
|
|
- list: res.data.data,
|
|
|
- total: res.data.count || 0
|
|
|
- }
|
|
|
+ return { list: res.data.data, total: res.data.count || 0 }
|
|
|
}
|
|
|
})
|
|
|
|
|
|
@@ -53,30 +60,17 @@ const { dataList, loading, total, currentPage, pageSize } = tableState
|
|
|
const { getList } = tableMethods
|
|
|
|
|
|
const tableColumns = reactive<TableColumn[]>([
|
|
|
- {
|
|
|
- field: 'id',
|
|
|
- label: 'ID',
|
|
|
- align: 'center',
|
|
|
- width: 70
|
|
|
- },
|
|
|
- {
|
|
|
- field: 'out_order_id',
|
|
|
- label: '出库单号',
|
|
|
- minWidth: 230
|
|
|
- },
|
|
|
- {
|
|
|
- field: 'total_price',
|
|
|
- label: '总价格',
|
|
|
- minWidth: 150
|
|
|
- },
|
|
|
-
|
|
|
+ { field: 'id', label: 'ID', align: 'center', width: 70 },
|
|
|
+ { field: 'out_order_id', label: '出库单号', minWidth: 230 },
|
|
|
+ { field: 'total_price', label: '总价格', minWidth: 150 },
|
|
|
+
|
|
|
{
|
|
|
field: 'in',
|
|
|
label: '调出单位',
|
|
|
minWidth: 150,
|
|
|
slots: {
|
|
|
default: ({ row }: any) => {
|
|
|
- return <>{row.up_store_id ? row.tstore?.name : (row.up_wid? row.tware?.name: '')}</>
|
|
|
+ return <>{row.up_store_id ? row.tstore?.name : row.up_wid ? row.tware?.name : ''}</>
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
@@ -104,7 +98,7 @@ const tableColumns = reactive<TableColumn[]>([
|
|
|
<div>
|
|
|
{item.product_name}
|
|
|
<ElText class="mx-1" type="primary">
|
|
|
- {item.is_weigh == 1? item.net_weight:item.product_num * 1}
|
|
|
+ {item.is_weigh == 1 ? item.net_weight : item.product_num * 1}
|
|
|
</ElText>
|
|
|
{item.suk}
|
|
|
</div>
|
|
|
@@ -125,7 +119,7 @@ const tableColumns = reactive<TableColumn[]>([
|
|
|
return (
|
|
|
<>
|
|
|
<div>{row.cuser?.real_name || '-'}</div>
|
|
|
- <div>{row.create_time?formatTime(row.create_time*1000,'yyyy-MM-dd'): ''}</div>
|
|
|
+ <div>{row.create_time ? formatTime(row.create_time * 1000, 'yyyy-MM-dd') : ''}</div>
|
|
|
</>
|
|
|
)
|
|
|
}
|
|
|
@@ -140,7 +134,7 @@ const tableColumns = reactive<TableColumn[]>([
|
|
|
return (
|
|
|
<>
|
|
|
<div>{row.auser?.real_name || '-'}</div>
|
|
|
- <div>{row.auth_time?formatTime(row.auth_time*1000,'yyyy-MM-dd'): ''}</div>
|
|
|
+ <div>{row.auth_time ? formatTime(row.auth_time * 1000, 'yyyy-MM-dd') : ''}</div>
|
|
|
</>
|
|
|
)
|
|
|
}
|
|
|
@@ -161,10 +155,10 @@ const tableColumns = reactive<TableColumn[]>([
|
|
|
} else if (row.status == 2 && row.auth_status == -2) {
|
|
|
return (
|
|
|
<>
|
|
|
- <ElTag type="danger">收货拒绝</ElTag>
|
|
|
+ <ElTag type="danger">收货拒绝</ElTag>
|
|
|
</>
|
|
|
)
|
|
|
- } else{
|
|
|
+ } else {
|
|
|
return (
|
|
|
<>
|
|
|
<ElTag
|
|
|
@@ -216,25 +210,112 @@ const tableColumns = reactive<TableColumn[]>([
|
|
|
<BaseButton link size="small" type="danger" onClick={() => delAction(row)}>
|
|
|
删除
|
|
|
</BaseButton>
|
|
|
+ <ElDivider direction="vertical" />
|
|
|
+ <BaseButton link size="small" type="primary" onClick={() => action('print', row)}>
|
|
|
+ 打印
|
|
|
+ </BaseButton>
|
|
|
</>
|
|
|
)
|
|
|
- } else if( row.status == 1 ){
|
|
|
+ } else if (row.status == 1) {
|
|
|
return (
|
|
|
<>
|
|
|
<BaseButton link size="small" type="primary" onClick={() => action('out', row)}>
|
|
|
出库
|
|
|
</BaseButton>
|
|
|
+ <ElDivider direction="vertical" />
|
|
|
+ <BaseButton link size="small" type="primary" onClick={() => action('print', row)}>
|
|
|
+ 打印
|
|
|
+ </BaseButton>
|
|
|
</>
|
|
|
)
|
|
|
} else {
|
|
|
- return (<></>)
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <BaseButton link size="small" type="primary" onClick={() => action('print', row)}>
|
|
|
+ 打印
|
|
|
+ </BaseButton>
|
|
|
+ </>
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
])
|
|
|
-
|
|
|
+const storeLoading = ref(false)
|
|
|
+const wareLoading = ref(false)
|
|
|
+const storeOptions = ref<any[]>([])
|
|
|
+const wareOptions = ref<any[]>([])
|
|
|
+ const getStore = async (query = '', id = '') => {
|
|
|
+ try {
|
|
|
+ storeLoading.value = true
|
|
|
+ const res = await getStoreList({ page: 1, limit: 1000, name: query, id, store: 1 })
|
|
|
+ if (res) {
|
|
|
+ storeOptions.value = res.data.data.map((item) => {
|
|
|
+ return {
|
|
|
+ value: item.id,
|
|
|
+ label: item.name
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ } finally {
|
|
|
+ storeLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
+const getWare = async (query = '', id = '') => {
|
|
|
+ try {
|
|
|
+ wareLoading.value = true
|
|
|
+ const res = await getStoreList({ page: 1, limit: 1000, name: query, id, type: 3 })
|
|
|
+ if (res) {
|
|
|
+ wareOptions.value = res.data.data.map((item) => {
|
|
|
+ return {
|
|
|
+ value: item.id,
|
|
|
+ label: item.name
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ } finally {
|
|
|
+ wareLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
const searchSchema = reactive<FormSchema[]>([
|
|
|
+ {
|
|
|
+ field: 'out_order_id',
|
|
|
+ label: '出库单号',
|
|
|
+ component: 'Input',
|
|
|
+ value: '',
|
|
|
+ componentProps: {
|
|
|
+ placeholder: '请输入出库单号'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ field: 'store_id',
|
|
|
+ label: '门店',
|
|
|
+ component: 'Select',
|
|
|
+ value: '',
|
|
|
+ componentProps: {
|
|
|
+ placeholder: '请选择',
|
|
|
+ options: storeOptions
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'wid',
|
|
|
+ label: '仓库',
|
|
|
+ component: 'Select',
|
|
|
+ value: '',
|
|
|
+ componentProps: {
|
|
|
+ placeholder: '请选择',
|
|
|
+ options: wareOptions
|
|
|
+ }
|
|
|
+ },
|
|
|
{
|
|
|
field: 'status',
|
|
|
label: '状态',
|
|
|
@@ -243,31 +324,15 @@ const searchSchema = reactive<FormSchema[]>([
|
|
|
componentProps: {
|
|
|
placeholder: '全部',
|
|
|
options: [
|
|
|
- {
|
|
|
- label: '待审核',
|
|
|
- value: '0'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '出库审核',
|
|
|
- value: '1'
|
|
|
- }
|
|
|
+ { label: '待审核', value: '0' },
|
|
|
+ { label: '出库审核', value: '1' }
|
|
|
]
|
|
|
}
|
|
|
},
|
|
|
- // {
|
|
|
- // field: 'name',
|
|
|
- // label: '名称',
|
|
|
- // component: 'Input',
|
|
|
- // value: '',
|
|
|
- // componentProps: {
|
|
|
- // placeholder: '请输入门店名称'
|
|
|
- // }
|
|
|
- // }
|
|
|
+
|
|
|
])
|
|
|
|
|
|
-const searchParams = ref<{
|
|
|
- status?: string
|
|
|
-}>({
|
|
|
+const searchParams = ref<{ status?: string }>({
|
|
|
// status: '3'
|
|
|
})
|
|
|
const setSearchParams = (data: any) => {
|
|
|
@@ -295,33 +360,33 @@ const dialogVisibles = ref(false)
|
|
|
const dialogVisibless = ref(false)
|
|
|
const dialogVisiblesss = ref(false)
|
|
|
const dialogVisiblessss = ref(false)
|
|
|
+const prDialogVisible = ref(false)
|
|
|
+const prItem = ref<any>({})
|
|
|
|
|
|
-const endItem = ref<endPuritem>({
|
|
|
- purchasing_person_admin_id: 0,
|
|
|
- id: 0,
|
|
|
- info: []
|
|
|
-})
|
|
|
+
|
|
|
+const endItem = ref<endPuritem>({ purchasing_person_admin_id: 0, id: 0, info: [] })
|
|
|
const action = async (type: string, row?: any) => {
|
|
|
actionType.value = type
|
|
|
+ if (type == 'print') {
|
|
|
+ console.log(row)
|
|
|
+
|
|
|
+ prDialogVisible.value = true
|
|
|
+ prItem.value = row
|
|
|
+ }
|
|
|
if (type == 'out') {
|
|
|
ElMessageBox.confirm('是否立即出库?', {
|
|
|
- confirmButtonText: '确认',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- })
|
|
|
- .then(async () => {
|
|
|
- const re = await outOut(row.id)
|
|
|
- if (re) {
|
|
|
- ElMessage({
|
|
|
- showClose: true,
|
|
|
- message: '出库成功',
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
- }
|
|
|
- await getList()
|
|
|
+ confirmButtonText: '确认',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
})
|
|
|
- .catch(() => {})
|
|
|
-
|
|
|
+ .then(async () => {
|
|
|
+ const re = await outOut(row.id)
|
|
|
+ if (re) {
|
|
|
+ ElMessage({ showClose: true, message: '出库成功', type: 'success' })
|
|
|
+ }
|
|
|
+ await getList()
|
|
|
+ })
|
|
|
+ .catch(() => {})
|
|
|
}
|
|
|
if (type == 'authCompute') {
|
|
|
endItem.value = row
|
|
|
@@ -400,13 +465,9 @@ const delAction = (row: any) => {
|
|
|
type: 'warning'
|
|
|
})
|
|
|
.then(async () => {
|
|
|
- const re = await delPur(row.id)
|
|
|
+ const re = await delOut(row.id)
|
|
|
if (re) {
|
|
|
- ElMessage({
|
|
|
- showClose: true,
|
|
|
- message: '删除成功',
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
+ ElMessage({ showClose: true, message: '删除成功', type: 'success' })
|
|
|
}
|
|
|
await getList()
|
|
|
})
|
|
|
@@ -428,10 +489,7 @@ const getAdmin = async () => {
|
|
|
try {
|
|
|
if (res) {
|
|
|
adminOptions.value = res.data.map((item) => {
|
|
|
- return {
|
|
|
- value: item.id,
|
|
|
- label: item.real_name
|
|
|
- }
|
|
|
+ return { value: item.id, label: item.real_name }
|
|
|
})
|
|
|
console.log(adminOptions.value, 'adminOptions.value')
|
|
|
} else {
|
|
|
@@ -452,11 +510,7 @@ const cancelClicks = () => {
|
|
|
dialogVisibless.value = false
|
|
|
authId.value = 0
|
|
|
storeId.value = 0
|
|
|
- endItem.value = {
|
|
|
- id: 0,
|
|
|
- purchasing_person_admin_id:0,
|
|
|
- info: []
|
|
|
- }
|
|
|
+ endItem.value = { id: 0, purchasing_person_admin_id: 0, info: [] }
|
|
|
}
|
|
|
const confirmClick = async () => {
|
|
|
if (!formData.value.auth_admin_id) {
|
|
|
@@ -480,10 +534,10 @@ const confirmClicks = async () => {
|
|
|
purchasing_person_admin_id: endItem.value.purchasing_person_admin_id,
|
|
|
info: []
|
|
|
}
|
|
|
- qdata.info = endItem.value.info.map(item => {
|
|
|
+ qdata.info = endItem.value.info.map((item) => {
|
|
|
if (item.is_weigh == 1) {
|
|
|
item.tare_weight = item.tare_weight_one * 1 * item.pur_num * 1
|
|
|
- item.net_weight = item.weight*1 - item.tare_weight
|
|
|
+ item.net_weight = item.weight * 1 - item.tare_weight
|
|
|
}
|
|
|
return item
|
|
|
})
|
|
|
@@ -495,7 +549,7 @@ const confirmClicks = async () => {
|
|
|
}
|
|
|
}
|
|
|
const confirmClickss = async () => {
|
|
|
- const res = await upCompute(endItem.value.id,{
|
|
|
+ const res = await upCompute(endItem.value.id, {
|
|
|
prove: compteData.value.image[0],
|
|
|
pay_time: new Date(compteData.value.pay_time).getTime() / 1000
|
|
|
})
|
|
|
@@ -507,12 +561,8 @@ const confirmClickss = async () => {
|
|
|
}
|
|
|
const cancelClickss = () => {
|
|
|
dialogVisiblesss.value = false
|
|
|
- endItem.value = {
|
|
|
- id: 0,
|
|
|
- purchasing_person_admin_id:0,
|
|
|
- info: []
|
|
|
- }
|
|
|
- compteData.value = {image: [],pay_time: ''}
|
|
|
+ endItem.value = { id: 0, purchasing_person_admin_id: 0, info: [] }
|
|
|
+ compteData.value = { image: [], pay_time: '' }
|
|
|
}
|
|
|
const compteData = ref({ image: [], pay_time: '' })
|
|
|
const authCompteData = ref({ pay_status: 2 })
|
|
|
@@ -527,13 +577,69 @@ const confirmClicksss = async () => {
|
|
|
}
|
|
|
const cancelClicksss = () => {
|
|
|
dialogVisiblessss.value = false
|
|
|
- endItem.value = {
|
|
|
- id: 0,
|
|
|
- purchasing_person_admin_id:0,
|
|
|
- info: []
|
|
|
+ endItem.value = { id: 0, purchasing_person_admin_id: 0, info: [] }
|
|
|
+ authCompteData.value = { pay_status: 2 }
|
|
|
+}
|
|
|
+const printobj = ref({
|
|
|
+ id: 'dc',
|
|
|
+ popTitle: '好的打印标题',
|
|
|
+ extraCss:
|
|
|
+ 'https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css',
|
|
|
+ extraHead: '<meta http-equiv="content-language" content="zh-cn" />',
|
|
|
+ beforeOpenCallback(vue) {
|
|
|
+ vue.printLoading = true
|
|
|
+ console.log(window.document.body.style, 'window.document.body.innerHTML')
|
|
|
+
|
|
|
+ console.log('打开之前')
|
|
|
+ },
|
|
|
+ openCallback(vue) {
|
|
|
+ vue.printLoading = false
|
|
|
+ console.log('执行了打印')
|
|
|
}
|
|
|
- authCompteData.value = {pay_status: 2}
|
|
|
+})
|
|
|
+const printing = () => {
|
|
|
+ // const splitDoms = document.getElementsByClassName('pri')
|
|
|
+ // console.log(splitDoms)
|
|
|
+ // let startY = 0 // 占用A4纸的高度,从每页第一个poetry div的top值开始累加
|
|
|
+ // for (let i = 0; i < splitDoms.length; i++) {
|
|
|
+ // const splitDom = splitDoms[i]
|
|
|
+ // const splitValue = splitDom.getBoundingClientRect()
|
|
|
+ // console.log(splitDom.getBoundingClientRect())
|
|
|
+ // if (startY === 0) {
|
|
|
+ // startY = splitValue.top
|
|
|
+ // }
|
|
|
+ // const pageHeight = splitValue.bottom - startY
|
|
|
+ // // 当加上当前div的高度大于A4纸高度时,给前一个div加上分页标识
|
|
|
+ // if (pageHeight > PAGE_HEIGHT) {
|
|
|
+ // console.log(i)
|
|
|
+ // startY = 0
|
|
|
+ // if (i > 0) {
|
|
|
+ // splitDoms[i - 1].style.pageBreakBefore = 'always'; // 给前一个元素添加分页符
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+}
|
|
|
+const getTime = () => {
|
|
|
+ let time = new Date().getTime()
|
|
|
+ return formatTime(time, 'yyyy-MM-dd HH:mm:ss')
|
|
|
+}
|
|
|
+const getLen = () => {
|
|
|
+ let sum = 0
|
|
|
+ prItem.value.info.forEach((item) => {
|
|
|
+ console.log(item.product_num)
|
|
|
+ if (item.is_weigh == 1) {
|
|
|
+ sum += item.net_weight * 1
|
|
|
+ } else {
|
|
|
+ sum += item.product_num * 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return sum
|
|
|
}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ getStore()
|
|
|
+ getWare()
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
@@ -552,9 +658,7 @@ const cancelClicksss = () => {
|
|
|
:data="dataList"
|
|
|
:loading="loading"
|
|
|
@register="tableRegister"
|
|
|
- :pagination="{
|
|
|
- total
|
|
|
- }"
|
|
|
+ :pagination="{ total }"
|
|
|
/>
|
|
|
</ContentWrap>
|
|
|
<Dialog v-model="dialogVisibles" :title="dialogTitle" width="500px" maxHeight="160px">
|
|
|
@@ -663,11 +767,7 @@ const cancelClicksss = () => {
|
|
|
<UpImgButtom v-model="compteData.image"></UpImgButtom>
|
|
|
</ElFormItem>
|
|
|
<ElFormItem label="支付时间" prop="status">
|
|
|
- <ElDatePicker
|
|
|
- v-model="compteData.pay_time"
|
|
|
- type="date"
|
|
|
- placeholder="请选择支付时间"
|
|
|
- />
|
|
|
+ <ElDatePicker v-model="compteData.pay_time" type="date" placeholder="请选择支付时间" />
|
|
|
</ElFormItem>
|
|
|
</ElForm>
|
|
|
<template #footer>
|
|
|
@@ -693,4 +793,220 @@ const cancelClicksss = () => {
|
|
|
</div>
|
|
|
</template>
|
|
|
</Dialog>
|
|
|
+ <Dialog v-model="prDialogVisible" title="打印">
|
|
|
+ <div id="dc">
|
|
|
+ <div class="section">
|
|
|
+ <div class="text-center title">调出单</div>
|
|
|
+ <div class="top-tit">
|
|
|
+ <div class="item mb10">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">出库单号:</span><span>{{ prItem.out_order_id }}</span></div
|
|
|
+ >
|
|
|
+ <div class="val"></div>
|
|
|
+ </div>
|
|
|
+ <div class="item mb10" v-if="prItem?.tware && prItem.tware.name">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">调出单位:</span><span>{{ prItem.tware.name || '' }}</span></div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div class="item mb10" v-if="prItem?.tstore && prItem.tstore.name">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">调入单位:</span><span>{{ prItem?.store.name || '' }}</span></div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div class="item mb10" v-if="prItem?.tstore">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">联系电话:</span><span>{{ prItem.tstore.phone }}</span></div
|
|
|
+ >
|
|
|
+ <div class="val"></div>
|
|
|
+ </div>
|
|
|
+ <div class="item mb10" v-if="prItem?.tware">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">联系电话:</span><span>{{ prItem.tware.phone }}</span></div
|
|
|
+ >
|
|
|
+ <div class="val"></div>
|
|
|
+ </div>
|
|
|
+ <div class="item mb10" v-if="prItem?.ware">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">收货单位:</span><span>{{ prItem.ware.name }}</span></div
|
|
|
+ >
|
|
|
+ <div class="val"></div>
|
|
|
+ </div>
|
|
|
+ <div class="item mb10" v-if="prItem?.store">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">收货单位:</span><span>{{ prItem.store.name }}</span></div
|
|
|
+ >
|
|
|
+ <div class="val"></div>
|
|
|
+ </div>
|
|
|
+ <div class="item items mb10" v-if="prItem?.store">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">收货地址:</span><span>{{ prItem.store.address }}</span></div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div class="item items mb10" v-if="prItem?.ware">
|
|
|
+ <div class=""
|
|
|
+ ><span class="name">收货地址:</span><span>{{ prItem.ware.address }}</span></div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="table">
|
|
|
+ <div class="tr">
|
|
|
+ <div class="item w10">序号</div>
|
|
|
+ <div class="item w20">编号</div>
|
|
|
+ <div class="item w30">商品</div>
|
|
|
+ <div class="item w20">数量</div>
|
|
|
+ <div class="item w20">单位</div>
|
|
|
+ </div>
|
|
|
+ <div class="tr" v-for="(item, index) in prItem.info" >
|
|
|
+ <div class="item w10">{{ index + 1 }}</div>
|
|
|
+ <div class="item w20">{{ item.bar_code }}</div>
|
|
|
+ <div class="item w30"
|
|
|
+ >{{ item.product_name }}</div
|
|
|
+ >
|
|
|
+ <div class="item w20">{{
|
|
|
+ item.is_weigh == 1 ? item.net_weight : item.product_num
|
|
|
+ }}</div>
|
|
|
+ <div class="item w20">{{ item.suk }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="btm-tip">
|
|
|
+ <div class="itemt">
|
|
|
+ <span class="name">货品数:</span>
|
|
|
+ <span>{{ prItem.info.length }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="itemt">
|
|
|
+ <span class="name">数量:</span>
|
|
|
+ <span>{{ getLen() }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="itemt">
|
|
|
+ <span class="name">审核人:</span>
|
|
|
+ <span>{{ prItem.auth_admin_id ? prItem.auser.real_name : '' }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="itemt">
|
|
|
+ <span class="name">仓管员签字:</span>
|
|
|
+ <span></span>
|
|
|
+ </div>
|
|
|
+ <div class="itemt">
|
|
|
+ <span class="name">财务员签字:</span>
|
|
|
+ <span></span>
|
|
|
+ </div>
|
|
|
+ <div class="itemt">
|
|
|
+ <span>打印时间:</span>
|
|
|
+ <span>{{ getTime() }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <div style="flex: auto">
|
|
|
+ <BaseButton type="primary" @click="printing" v-print="printobj">打印</BaseButton>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </Dialog>
|
|
|
</template>
|
|
|
+<style>
|
|
|
+@media print {
|
|
|
+ .section {
|
|
|
+ page-break-before: always;
|
|
|
+ margin-top: 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+.bold {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+#dc {
|
|
|
+ font-size: 14px;
|
|
|
+ page-break-before: always;
|
|
|
+ padding: 10px;
|
|
|
+ position: relative;
|
|
|
+ padding-bottom: 100px;
|
|
|
+}
|
|
|
+.title {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #000000;
|
|
|
+}
|
|
|
+.top-tit {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ justify-content: flex-start;
|
|
|
+ padding: 20px 0 10px;
|
|
|
+}
|
|
|
+.item {
|
|
|
+ width: 50%;
|
|
|
+ /* margin-bottom: 10px; */
|
|
|
+}
|
|
|
+.mb10 {
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.items {
|
|
|
+ width: 100% !important;
|
|
|
+}
|
|
|
+.name {
|
|
|
+ font-weight: bold;
|
|
|
+ color: #000000;
|
|
|
+}
|
|
|
+.table {
|
|
|
+ width: 98%;
|
|
|
+ text-align: center;
|
|
|
+ border-top: 1px solid #000;
|
|
|
+ /* border-left: 1px solid #000; */
|
|
|
+}
|
|
|
+.table > .tr {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+}
|
|
|
+.table .tr > .item {
|
|
|
+ padding: 5px 10px;
|
|
|
+ /* border-right: 1px solid #000; */
|
|
|
+ border-bottom: 1px solid #000;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.w30 {
|
|
|
+ width: 30%;
|
|
|
+}
|
|
|
+.w20 {
|
|
|
+ width: 20%;
|
|
|
+}
|
|
|
+.w10 {
|
|
|
+ width: 10%;
|
|
|
+}
|
|
|
+.table .th {
|
|
|
+ color: #000000;
|
|
|
+ padding: 10px 0;
|
|
|
+ border-left: 1px solid #000000;
|
|
|
+ border-top: 1px solid #000000;
|
|
|
+ min-width: 60px;
|
|
|
+}
|
|
|
+
|
|
|
+.table .td {
|
|
|
+ padding: 5px 3px;
|
|
|
+ border-left: 1px solid #000000;
|
|
|
+ border-top: 1px solid #000000;
|
|
|
+}
|
|
|
+@media print {
|
|
|
+ body,
|
|
|
+ html,
|
|
|
+ .previewPageBox {
|
|
|
+ height: auto !important;
|
|
|
+ overflow: visible !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .previewPageBox {
|
|
|
+ position: relative !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+.btm-tip {
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ padding-top: 150px;
|
|
|
+
|
|
|
+}
|
|
|
+.btm-tip .itemt {
|
|
|
+ width: 33.3%;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+</style>
|