填写打印范围以及处理可能需要多次替换英文的问题

dev
qiuhongwu 3 months ago
parent f00043ece3
commit c0d738ccbb

@ -1,22 +1,18 @@
<template> <template>
<Dialog v-model="dialogVisible" title="打印预选"> <Dialog v-model="dialogVisible" title="打印预选">
<el-form <el-form ref="formRef" :model="formData" label-width="178px">
ref="formRef"
:model="formData"
label-width="178px"
>
<el-form-item label="要打印的箱数量为:" prop="" style="display: flex"> <el-form-item label="要打印的箱数量为:" prop="" style="display: flex">
<span> {{ minAmount }}</span> <span> {{ minAmount }}</span>
</el-form-item> </el-form-item>
<el-form-item label="打印范围选择:" prop="" style="margin-bottom: 50px"> <el-form-item label="开始打印页数:" prop="">
<select class="!w-240px" @change="handleChangeRange()" v-model="rangeval"> <el-input-number :min="1" :max="minAmount" v-model="rangeval.min" />
<option v-for="range in ranges" :key="range.label" :value="range.label">{{ </el-form-item>
range.label <el-form-item label="结束打印页数:" prop="" style="margin-bottom: 50px">
}}</option> <el-input-number :min="1" :max="minAmount" v-model="rangeval.max" />
</select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="handleChangeRange()" type="primary"> </el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
</template> </template>
</Dialog> </Dialog>
@ -26,7 +22,7 @@
import * as ProjectOrderApi from '@/api/biz/projectorder' import * as ProjectOrderApi from '@/api/biz/projectorder'
import printDialog from './printDialog.vue' import printDialog from './printDialog.vue'
defineOptions({ name: 'SystemDeptForm' }) defineOptions({ name: 'SystemDeptForm' })
const message = useMessage()
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const formData: any = ref({ const formData: any = ref({
id: undefined id: undefined
@ -68,7 +64,6 @@ const open = async (fdata, val) => {
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 重置表单 */ /** 重置表单 */
const resetForm = () => {} const resetForm = () => {}
@ -76,11 +71,29 @@ const resetForm = () => {}
const selectedRow = ref<string | null>(null) // const selectedRow = ref<string | null>(null) //
const ranges = ref([]) const ranges = ref([])
const printref = ref() const printref = ref()
const rangeval = ref() const rangeval = ref({
min: undefined,
max: undefined
})
const handleChangeRange = () => { const handleChangeRange = () => {
if (rangeval.value.min == undefined || rangeval.value.max == undefined) {
message.error('请填写完整打印页数')
return
} else if (rangeval.value.min > rangeval.value.max) {
message.error('结束页数不能小于开始页数')
return
}else if(rangeval.value.max-rangeval.value.min>99 ){
message.error('打印范围不得超过100页')
return
}
// console.log(':',rangeval.value.max-rangeval.value.min);
// console.log(Fdata.value, vals.value, rangeval.value,'preview') // console.log(Fdata.value, vals.value, rangeval.value,'preview')
printref.value.open(Fdata.value, vals.value, rangeval.value) printref.value.open(Fdata.value, vals.value, rangeval.value)
selectedRow.value = null selectedRow.value = null
rangeval.value = null rangeval.value = {
min: undefined,
max: undefined
}
} }
</script> </script>

@ -145,8 +145,10 @@ const open = async (Fdata, vals, val) => {
const matchingCnen = cnenList.value.find((cnen) => item.projectSubName.includes(cnen.cn)) const matchingCnen = cnenList.value.find((cnen) => item.projectSubName.includes(cnen.cn))
let projectSubNames = item.projectSubName let projectSubNames = item.projectSubName
if (matchingCnen) { if (matchingCnen) {
const regex = new RegExp(matchingCnen.cn, 'g') cnenList.value.forEach((cnen) => {
projectSubNames = projectSubNames.replace(regex, `${matchingCnen.en}`) const regex = new RegExp(cnen.cn, 'g')
projectSubNames = projectSubNames.replace(regex, `${cnen.en}`)
})
} }
const row = { const row = {
projectSubName: item.projectSubName + '(' + projectSubNames + ')', projectSubName: item.projectSubName + '(' + projectSubNames + ')',
@ -157,39 +159,37 @@ const open = async (Fdata, vals, val) => {
// specs // specs
const uniqueSpecs = new Set(allSpecs) const uniqueSpecs = new Set(allSpecs)
specarr.value = Array.from(uniqueSpecs) specarr.value = Array.from(uniqueSpecs)
// val1100
//
val = val.replace('-', ',')
val = val.split(',')
// console.log(val)
for (let i = val[0] * 1; i <= val[1] * 1; i++) { for (let i = val.min; i <= val.max * 1; i++) {
// printCodeName // printCodeName
const newName = `${Fdata.id}-${vals[0].clauseId}-${i}` const newName = `${Fdata.id}-${vals[0].clauseId}-${i}`
printCodeName.value.push(newName) const row = {
index: i,
name: newName
}
printCodeName.value.push(row)
} }
// console.log(printCodeName.value) // console.log(printCodeName.value)
dialogVisible.value = true dialogVisible.value = true
await Promise.all( await Promise.all(
printCodeName.value.map(async (item, index) => { printCodeName.value.map(async (item) => {
const qrCodeData = await QRCode.toDataURL(item) const qrCodeData = await QRCode.toDataURL(item.name)
const qrCodeElement = document.getElementById('qrCodeContainer') const qrCodeElement = document.getElementById('qrCodeContainer')
if (qrCodeElement) { if (qrCodeElement) {
var tempString = '' var tempString = ''
datavals.value.forEach((e) => { datavals.value.forEach((e) => {
tempString += tempString +=
'<p style="margin-left:30px;">' + e.projectSubName + ' , ' + e.amount + '</p>' '<p style="margin-left:30px;">' + e.projectSubName + ' , ' + e.amount + '</p>'
}) }),
qrCodeElement.innerHTML += (qrCodeElement.innerHTML +=
`<div class="page qr-page"> `<div class="page qr-page">
<div class="qr-code-container" style=" padding:0 5mm; border:1px #d3d3d3 solid;display:flex; justify-content: flex-start; font-size:16px;font-weight:700;"> <div class="qr-code-container" style=" padding:0 5mm; border:1px #d3d3d3 solid;display:flex; justify-content: flex-start; font-size:16px;font-weight:700;">
<img src="${qrCodeData}" width="30%" alt="QR Code"/> <img src="${qrCodeData}" width="30%" alt="QR Code"/>
<div style="margin-left:5mm;text-align:left;" > <div style="margin-left:5mm;text-align:left;" >
<p>订单名称(Order name)${Fdata.code}</p> <p>订单名称(Order name)${Fdata.code}</p>
<hr/> <hr/>
<p>序号(Serial number)${specarr.value}-${index + 1}</p> <p>序号(Serial number)${specarr.value}-${item.index}</p>
<hr/> <hr/>
<p>产品清单(Product list)</p>` + <p>产品清单(Product list)</p>` +
tempString + tempString +
@ -197,7 +197,7 @@ const open = async (Fdata, vals, val) => {
</div> </div>
</div> </div>
</div>` </div>`)
} }
}) })
) )

Loading…
Cancel
Save