This commit is contained in:
linfso 2024-07-06 08:00:04 +08:00
parent b464f0acb2
commit 7d62000587
4 changed files with 242 additions and 419 deletions

View File

@ -1,242 +0,0 @@
<template>
<el-cascader
ref="selectRef"
:key="resetCascader"
:size="size"
:options="lineList"
v-model="svalue"
style="width: 100%"
clearable
filterable
:props="lazyProps"
:before-filter="beforeFilter"
@visible-change="visibleChange"
@input.native="searchFilter"
@clear="onClear"
@blur="onBlur"
@change="onChange"
>
</el-cascader>
<!-- :props="props" -->
</template>
<script>
import { listSimpleEmisTransLine } from "@/api/emis/emisTransLine";
import { listSimpleEmisTransProduct } from "@/api/emis/emisTransProduct";
export default {
name: "TransProductCasAdvPicker",
props: {
value: {
type: [String, Number,Array],
required: false
},
countryCode: {
type: String,
required: false
},
size:{
type: String,
required: false
}
},
data() {
return {
resetCascader:0,
svalue: this.value,
lineList:[],
isInit: true,
lineCode:null,
prodCode:null,
searchVal:null,
lazyProps: {
// checkStrictly: true,
// emitPath: true,
lazy: true,
lazyLoad: (node, resolve) => {
const { level } = node;
if (node.level == 0) {
let nodes=this.lineList;
resolve(nodes);
return ;
}
else if(level==1){
let queryParams={
pageNum:1,
pageSize:30,
transLineCode:node.value,
prodCode:this.prodCode,
status:1
};
listSimpleEmisTransProduct(queryParams).then(res=>{
const nodes = res.rows.map((item) => ({
...item,
value: item.prodCode,
label: item.prodName+"("+item.agingDesc+")",
leaf: true,
}));
let nodeItem=this.lineList.find(item=>item.value ==node.value);
if(nodeItem&&nodeItem!=undefined){
nodeItem.children=nodes;
console.log("===>nodes 2==>",nodeItem);
}
resolve(nodes);
});
}
},
},
};
},
watch: {
value(newVal) {
this.svalue = newVal;
if(this.svalue!=null && this.svalue.length==2 && this.isInit) {
this.lineCode=this.svalue[0];
this.prodCode=this.svalue[1];
this.initData();
this.resetCascader++
}else{
this.$refs.selectRef.handleClear()
this.lineCode=null;
this.prodCode=null;
this.resetCascader++
}
},
countryCode(newVal) {
this.resetCascader++
}
},
created() {
console.log("=======created=>"+this.svalue)
if(this.svalue!=null && this.svalue.length==2 && this.isInit) {
this.lineCode=this.svalue[0];
this.prodCode=this.svalue[1];
this.initData();
}
},
methods: {
beforeFilter (val) {
return false;
},
searchFilter(el){
if(!el.target.value){
return false;
} else{
clearTimeout(this.timer);
this.timer = setTimeout(()=>{
this.$refs.selectRef.$refs.panel.activePath=[];
this.searchVal = el.target.value;
this.getLineList();
},200)
}
},
visibleChange(boolean){
if(boolean){
this.$refs.selectRef.$refs.panel.activePath=[];
this.searchVal = null;
this.lineCode=null;
this.prodCode=null;
this.getLineList();
}
},
onClear(){
this.svalue = null;
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
onBlur(){
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
onClick(){
this.isInit = false;
// this.lineCode=null;
// this.prodCode=null;
},
onChange(value) {
console.log("=======onChange=>"+value)
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
this.resetCascader++
},
async initData(){
if(this.lineCode&&this.prodCode){
let queryParams={
pageNum:1,
pageSize:15,
country:this.countryCode,
lineCode:this.lineCode,
lineName:this.searchVal
};
this.lineList=[];
let res=await listSimpleEmisTransLine(queryParams);
let rows=res.rows;
let node={
value: rows[0].lineCode,
label: rows[0].lineName,
children: []
}
let queryParamsProd={
pageNum:1,
pageSize:30,
transLineCode:this.lineCode,
prodCode:this.prodCode,
status:1
};
let resProd=await listSimpleEmisTransProduct(queryParamsProd);
let rowsProd=resProd.rows;
let prodList=[];
let prodItem={
value: rowsProd[0].prodCode,
label: rowsProd[0].prodName+"("+rowsProd[0].agingDesc+")",
leaf: true,
}
prodList.push(prodItem);
node.children=prodList;
this.lineList.push(node);
}
},
async getLineList(){
let queryParams={
pageNum:1,
pageSize:15,
country:this.countryCode,
lineCode:this.lineCode,
lineName:this.searchVal
};
this.lineList=[];
let res=await listSimpleEmisTransLine(queryParams);
res.rows.forEach(item => {
let node={
value: item.lineCode,
label: item.lineName,
children: []
}
this.lineList.push(node);
});
},
},
};
</script>
<style lang="scss" scoped>
// .con {
// display: inline-block;
// }
</style>

View File

@ -1,188 +1,237 @@
<template>
<el-cascader
ref="selectRef"
:size="size"
:props="props"
:key="resetCascader"
v-model="svalue"
style="width: 100%"
clearable
filterable
:filter-method="dataFilter"
@click.native="onClick"
@clear="onClear"
@blur="onBlur"
@change="onChange"
:debounce="200"
></el-cascader>
<el-cascader
ref="selectRef"
:key="resetCascader"
:size="size"
:options="lineList"
v-model="svalue"
style="width: 100%"
clearable
filterable
:props="lazyProps"
:before-filter="beforeFilter"
@visible-change="visibleChange"
@input.native="searchFilter"
@clear="onClear"
@blur="onBlur"
@change="onChange"
>
</el-cascader>
<!-- :props="props" -->
</template>
<!-- @input.native="searchFilter" -->
<!-- filterable -->
<!-- :before-filter="beforeFilter"
@input.native="searchFilter" -->
<script>
import { listSimpleEmisTransLine } from "@/api/emis/emisTransLine";
import { listSimpleEmisTransProduct } from "@/api/emis/emisTransProduct";
export default {
name: "TransProductCasPicker",
props: {
value: {
type: [String, Number,Array],
required: false
},
countryCode: {
type: String,
required: false
},
size:{
type: String,
required: false
}
},
data() {
return {
resetCascader:0,
svalue: this.value,
isInit: true,
lineCode:null,
prodCode:null,
searchVal:null,
props: {
// checkStrictly: true,
// emitPath: true,
lazy: true,
lazyLoad: (node, resolve) => {
const nodes = [];
// level: 层级
// node 节点数据
// 一级菜单数据
let level = node.level;
// level==0 ? "1" : node.value;
let parentCode = node.value;
this.queryData(level,parentCode)
.then((res) => {
res.rows.map((item) => {
if(level==0){
let obj = {
value: item.lineCode,
label: item.lineName,
// disabled:true,
children:[],
leaf: false,
};
nodes.push(obj);
}
else if(level==1){
let obj = {
value: item.prodCode,
label: item.prodName+"("+item.agingDesc+")",
leaf: true,
};
nodes.push(obj);
}
});
name: "TransProductCasAdvPicker",
props: {
value: {
type: [String, Number,Array],
required: false
},
countryCode: {
type: String,
required: false
},
size:{
type: String,
required: false
}
},
data() {
return {
resetCascader:0,
svalue: this.value,
// resolve 节点返回
lineList:[],
isInit: true,
lineCode:null,
prodCode:null,
searchVal:null,
lazyProps: {
// checkStrictly: true,
// emitPath: true,
lazy: true,
lazyLoad: (node, resolve) => {
const { level } = node;
if (node.level == 0) {
let nodes=this.lineList;
resolve(nodes);
return ;
}
else if(level==1){
let queryParams={
pageNum:1,
pageSize:30,
transLineCode:node.value,
prodCode:this.prodCode,
status:1
};
listSimpleEmisTransProduct(queryParams).then(res=>{
const nodes = res.rows.map((item) => ({
...item,
value: item.prodCode,
label: item.prodName+"("+item.agingDesc+")",
leaf: true,
}));
let nodeItem=this.lineList.find(item=>item.value ==node.value);
if(nodeItem&&nodeItem!=undefined){
nodeItem.children=nodes;
console.log("===>nodes 2==>",nodeItem);
}
resolve(nodes);
})
.catch((error) => {
// console.log(error);
});
},
},
};
},
watch: {
value(newVal) {
this.svalue = newVal;
if(this.svalue!=null && this.svalue.length==2 && this.isInit) {
this.lineCode=this.svalue[0];
this.prodCode=this.svalue[1];
this.resetCascader++
}else{
this.$refs.selectRef.handleClear()
this.lineCode=null;
this.prodCode=null;
this.resetCascader++
}
},
countryCode(newVal) {
},
};
},
watch: {
value(newVal) {
this.svalue = newVal;
if(this.svalue!=null && this.svalue.length==2 && this.isInit) {
this.lineCode=this.svalue[0];
this.prodCode=this.svalue[1];
this.initData();
this.resetCascader++
}
},
created() {
},
methods: {
beforeFilter (val) {
return false;
},
searchFilter(el){
let val = el.target.value;
this.searchVal = val;
},
regionMenuChange(boolean){
if(boolean){
this.$refs.selectRef.$refs.panel.activePath=[];
this.queryData(0,0);
}
},
onClear(){
console.log("=======333=>"+this.svalue)
this.svalue = null;
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
onBlur(){
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
onClick(){
this.isInit = false;
}else{
this.$refs.selectRef.handleClear()
this.lineCode=null;
this.prodCode=null;
this.queryData(0,0);
},
onChange(value) {
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
dataFilter(node, val) {
console.log('val', val, 'node', node)
if (!!~node.label.indexOf(val) || !!~node.label.toUpperCase().indexOf(val.toUpperCase())) {
return true
}
},
async queryData(level,parentCode,val) {
// 第1级是线路
if(level == 0){
let queryParams={
pageNum:1,
pageSize:500,
country:this.countryCode,
lineCode:this.lineCode,
lineName:this.searchVal
};
let res=await listSimpleEmisTransLine(queryParams);
return res;
}
// 产品
if(level == 1){
let queryParams={
pageNum:1,
pageSize:500,
transLineCode:parentCode,
prodCode:this.prodCode,
status:1
};
let res=await listSimpleEmisTransProduct(queryParams);
return res;
this.resetCascader++
}
},
countryCode(newVal) {
this.resetCascader++
}
},
created() {
console.log("=======created=>"+this.svalue)
if(this.svalue!=null && this.svalue.length==2 && this.isInit) {
this.lineCode=this.svalue[0];
this.prodCode=this.svalue[1];
this.initData();
}
},
methods: {
beforeFilter (val) {
return false;
},
searchFilter(el){
if(!el.target.value){
return false;
} else{
clearTimeout(this.timer);
this.timer = setTimeout(()=>{
this.$refs.selectRef.$refs.panel.activePath=[];
this.searchVal = el.target.value;
this.getLineList();
},200)
}
},
visibleChange(boolean){
if(boolean){
this.$refs.selectRef.$refs.panel.activePath=[];
this.searchVal = null;
this.lineCode=null;
this.prodCode=null;
this.getLineList();
}
},
onClear(){
this.svalue = null;
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
onBlur(){
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
},
onClick(){
this.isInit = false;
// this.lineCode=null;
// this.prodCode=null;
},
onChange(value) {
console.log("=======onChange=>"+value)
this.$emit("input", this.svalue);
this.$emit("onChange", this.svalue);
this.resetCascader++
},
async initData(){
if(this.lineCode&&this.prodCode){
let queryParams={
pageNum:1,
pageSize:15,
country:this.countryCode,
lineCode:this.lineCode,
lineName:this.searchVal
};
this.lineList=[];
let res=await listSimpleEmisTransLine(queryParams);
let rows=res.rows;
let node={
value: rows[0].lineCode,
label: rows[0].lineName,
children: []
}
let queryParamsProd={
pageNum:1,
pageSize:30,
transLineCode:this.lineCode,
prodCode:this.prodCode,
status:1
};
let resProd=await listSimpleEmisTransProduct(queryParamsProd);
let rowsProd=resProd.rows;
let prodList=[];
let prodItem={
value: rowsProd[0].prodCode,
label: rowsProd[0].prodName+"("+rowsProd[0].agingDesc+")",
leaf: true,
}
prodList.push(prodItem);
node.children=prodList;
this.lineList.push(node);
}
},
async getLineList(){
let queryParams={
pageNum:1,
pageSize:15,
country:this.countryCode,
lineCode:this.lineCode,
lineName:this.searchVal
};
this.lineList=[];
let res=await listSimpleEmisTransLine(queryParams);
res.rows.forEach(item => {
let node={
value: item.lineCode,
label: item.lineName,
children: []
}
this.lineList.push(node);
});
},
},
};
</script>
<style lang="scss" scoped>

View File

@ -615,20 +615,22 @@
<el-table-column prop="initialWeightFee" :label="$t('首重费')" align="center" width="60">
<template slot-scope="scope">
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.initialWeightFee" @input="(val)=>handleCalcFeeItem(scope.row)" size="mini" placeholder=""></el-input>
<el-input-number v-if="form.blSpecialQuote==1" v-model="scope.row.initialWeightFee" @input="(val)=>handleCalcFeeItem(scope.row)" size="mini" placeholder="" :min="0.00" :controls="false" :precision="2"></el-input-number>
<div v-else> {{scope.row.initialWeightFee}} </div>
</template>
</el-table-column>
<el-table-column prop="addWeightPrice" :label="$t('续重单价')" align="center" width="70">
<template slot-scope="scope">
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.addWeightPrice" @input="(val)=>handleCalcFeeItem(scope.row)" size="mini" placeholder=""></el-input>
<el-input-number v-if="form.blSpecialQuote==1" v-model="scope.row.addWeightPrice" @input="(val)=>handleCalcFeeItem(scope.row)" size="mini" placeholder="" :min="0.00" :controls="false" :precision="2"></el-input-number>
<div v-else> {{scope.row.addWeightPrice}} </div>
</template>
</el-table-column>
<el-table-column prop="realFee" :label="$t('实收')" align="center" width="50">
<template slot-scope="scope">
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.realFee" @input="(val)=>handleCalcFeeItem(scope.row)" size="mini" placeholder=""></el-input>
<el-input-number v-if="form.blSpecialQuote==1" v-model="scope.row.realFee" @input="(val)=>handleCalcFeeItem(scope.row)" size="mini" placeholder="" :min="0.00" :controls="false" :precision="2"></el-input-number>
<div v-else> {{scope.row.realFee}} </div>
</template>
</el-table-column>
@ -673,7 +675,7 @@
</el-col>
<el-col :span="24">
<el-form-item :label="$t('总运费')" prop="freight" label-width="70px">
<el-input v-if="form.calcFeeType == 3" v-model="form.freight" placeholder="" > </el-input>
<el-input-number v-if="form.calcFeeType == 3" :min="0.00" v-model="form.freight" placeholder="" :controls="false" :precision="2"> </el-input-number>
<el-input v-else v-model="form.freight" disabled placeholder="" > </el-input>
</el-form-item>
<el-form-item :label="$t('费用备注')" prop="feeRemark" label-width="70px">
@ -769,7 +771,11 @@ import WarehouseInNoPicker from '@/views/emis/EmisBaseTools/WarehouseInNoPicker.
import PayeePicker from '@/views/emis/EmisBaseTools/PayeePicker.vue';
import SalemanPicker from '@/views/emis/EmisBaseTools/SalemanPicker.vue';
import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasAdvPicker.vue';
import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasPicker.vue';
// import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasPicker.vue';
import feeItemForm from './feeItemForm.vue';
import TanexPrinterPanel from '@/views/emis/EmisBaseTools/TanexPrinterPanel.vue';
@ -1148,12 +1154,12 @@ methods: {
orderList.push(this.form.billCode);
// 客户联
// let customerItem ={
// "tplCode":"TAN-CM-130",
// "printerName":this.$refs.tanexPrinter.getDefaultPrinter(),
// "orderList":orderList.toString()
// }
// printDataList.push(customerItem);
let customerItem ={
"tplCode":"TAN-CM-130",
"printerName":this.$refs.tanexPrinter.getDefaultPrinter(),
"orderList":orderList.toString()
}
printDataList.push(customerItem);
// 主单
let mainBillItem ={
@ -2100,6 +2106,16 @@ methods: {
padding: 0px;
text-align: center;
}
.el-input-number.is-without-controls .el-input__inner {
height: 28px;
line-height: 28px;
border: none;
background: #ffffcd;
font-size: 10px;
padding: 0px;
text-align: center;
}
}
.el-collapse-item__content {

View File

@ -771,7 +771,7 @@ import WarehouseInNoPicker from '@/views/emis/EmisBaseTools/WarehouseInNoPicker.
import PayeePicker from '@/views/emis/EmisBaseTools/PayeePicker.vue';
import SalemanPicker from '@/views/emis/EmisBaseTools/SalemanPicker.vue';
import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasAdvPicker.vue';
import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasPicker.vue';
// import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasPicker.vue';