细码采用文本字段,增加分页,优化性能。ok
This commit is contained in:
parent
f12d1c9dd4
commit
8143ce1c2a
@ -12,7 +12,11 @@ Page({
|
|||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
partners: [],
|
partners: [],
|
||||||
userId: null // 用于存储用户ID
|
userId: null, // 用于存储用户ID
|
||||||
|
currentPage: 1, // 当前页码
|
||||||
|
pageSize: 20, // 每页记录数
|
||||||
|
totalRecords: 0, // 总记录数
|
||||||
|
isLoading: false // 是否正在加载数据
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,7 +24,12 @@ Page({
|
|||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
// Odoo 服务器配置
|
// Odoo 服务器配置
|
||||||
const { odooUrl, db, username, password } = app.globalData;
|
const {
|
||||||
|
odooUrl,
|
||||||
|
db,
|
||||||
|
username,
|
||||||
|
password
|
||||||
|
} = app.globalData;
|
||||||
this.setData({
|
this.setData({
|
||||||
odooUrl: odooUrl,
|
odooUrl: odooUrl,
|
||||||
db: db,
|
db: db,
|
||||||
@ -49,7 +58,10 @@ Page({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 解析 XML 响应
|
// 解析 XML 响应
|
||||||
const result = convert.xml2js(xmlResponse, { compact: true, spaces: 4 });
|
const result = convert.xml2js(xmlResponse, {
|
||||||
|
compact: true,
|
||||||
|
spaces: 4
|
||||||
|
});
|
||||||
|
|
||||||
if (result.methodResponse.fault) {
|
if (result.methodResponse.fault) {
|
||||||
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
||||||
@ -65,11 +77,23 @@ Page({
|
|||||||
userId: userId
|
userId: userId
|
||||||
});
|
});
|
||||||
|
|
||||||
// 获取模型信息
|
// 加载第一页数据
|
||||||
|
this.fetchData();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载数据
|
||||||
|
*/
|
||||||
|
fetchData() {
|
||||||
|
if (this.data.isLoading) return; // 避免重复加载
|
||||||
|
|
||||||
|
this.setData({ isLoading: true });
|
||||||
|
|
||||||
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
||||||
const objectParams = [
|
const objectParams = [
|
||||||
`<value><string>${this.data.db}</string></value>`,
|
`<value><string>${this.data.db}</string></value>`,
|
||||||
`<value><int>${userId}</int></value>`,
|
`<value><int>${this.data.userId}</int></value>`,
|
||||||
`<value><string>${this.data.password}</string></value>`,
|
`<value><string>${this.data.password}</string></value>`,
|
||||||
`<value><string>sale.order</string></value>`,
|
`<value><string>sale.order</string></value>`,
|
||||||
`<value><string>search_read</string></value>`,
|
`<value><string>search_read</string></value>`,
|
||||||
@ -82,10 +106,12 @@ Page({
|
|||||||
<value><string>name</string></value>
|
<value><string>name</string></value>
|
||||||
<value><string>orde_ddje</string></value>
|
<value><string>orde_ddje</string></value>
|
||||||
<value><string>date_order</string></value>
|
<value><string>date_order</string></value>
|
||||||
<value><string>product_ids</string></value>
|
|
||||||
<value><string>partner_id</string></value> <!-- 添加 partner_id 字段 -->
|
<value><string>partner_id</string></value> <!-- 添加 partner_id 字段 -->
|
||||||
|
<value><string>order_line</string></value>
|
||||||
</data>
|
</data>
|
||||||
</array></value>
|
</array></value>
|
||||||
|
<value><int>${(this.data.currentPage - 1) * this.data.pageSize}</int></value> <!-- offset -->
|
||||||
|
<value><int>${this.data.pageSize}</int></value> <!-- limit -->
|
||||||
</data>
|
</data>
|
||||||
</array></value>`
|
</array></value>`
|
||||||
];
|
];
|
||||||
@ -93,21 +119,27 @@ Page({
|
|||||||
this.methodCall(objectUrl, 'execute_kw', objectParams, (err, xmlResponse) => {
|
this.methodCall(objectUrl, 'execute_kw', objectParams, (err, xmlResponse) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error('Failed to fetch data:', err);
|
console.error('Failed to fetch data:', err);
|
||||||
|
this.setData({ isLoading: false });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析 XML 响应
|
// 解析 XML 响应
|
||||||
const result = convert.xml2js(xmlResponse, { compact: true, spaces: 4 });
|
const result = convert.xml2js(xmlResponse, {
|
||||||
|
compact: true,
|
||||||
|
spaces: 4
|
||||||
|
});
|
||||||
|
|
||||||
if (result.methodResponse.fault) {
|
if (result.methodResponse.fault) {
|
||||||
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
||||||
console.error('Failed to fetch data:', faultString);
|
console.error('Failed to fetch data:', faultString);
|
||||||
|
this.setData({ isLoading: false });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = result.methodResponse.params.param.value.array.data.value;
|
const data = result.methodResponse.params.param.value.array.data.value;
|
||||||
if (!data) {
|
if (!data) {
|
||||||
console.error('No data found in response');
|
console.error('No data found in response');
|
||||||
|
this.setData({ isLoading: false });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,53 +148,126 @@ Page({
|
|||||||
const name = item.struct.member.find(member => member.name._text === 'name')?.value.string?._text || '';
|
const name = item.struct.member.find(member => member.name._text === 'name')?.value.string?._text || '';
|
||||||
const date_order = item.struct.member.find(member => member.name._text === 'date_order')?.value.string?._text || '';
|
const date_order = item.struct.member.find(member => member.name._text === 'date_order')?.value.string?._text || '';
|
||||||
const orde_ddje = item.struct.member.find(member => member.name._text === 'orde_ddje')?.value.double?._text || '0.00';
|
const orde_ddje = item.struct.member.find(member => member.name._text === 'orde_ddje')?.value.double?._text || '0.00';
|
||||||
let product_ids = item.struct.member.find(member => member.name._text === 'product_ids')?.value.array?.data?.value || [];
|
|
||||||
|
|
||||||
// 如果 product_ids 是对象而不是数组,则处理为数组
|
|
||||||
if (!Array.isArray(product_ids)) {
|
|
||||||
product_ids = [];
|
|
||||||
} else {
|
|
||||||
product_ids = product_ids.map(idObj => idObj.int?._text);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提取 partner_id 和 partner_name
|
// 提取 partner_id 和 partner_name
|
||||||
const partnerInfo = item.struct.member.find(member => member.name._text === 'partner_id')?.value.array?.data?.value;
|
const partnerInfo = item.struct.member.find(member => member.name._text === 'partner_id')?.value.array?.data?.value;
|
||||||
const partner_id = partnerInfo?.[0]?.int?._text || '';
|
const partner_id = partnerInfo?.[0]?.int?._text || '';
|
||||||
const partner_name = partnerInfo?.[1]?.string?._text || '';
|
const partner_name = partnerInfo?.[1]?.string?._text || '';
|
||||||
|
|
||||||
return { id, name, orde_ddje, date_order, product_ids, partner_id, partner_name };
|
// 提取 order_line
|
||||||
});
|
const order_lineInfo = item.struct.member.find(member => member.name._text === 'order_line')?.value.array?.data?.value || [];
|
||||||
|
const order_lineInfoArray = Array.isArray(order_lineInfo) ? order_lineInfo : [order_lineInfo];
|
||||||
console.log('Data fetched successfully:', partners);
|
const orderLineIds = order_lineInfoArray.map(orderLine => orderLine.int?._text);
|
||||||
|
|
||||||
// 获取产品详细信息
|
|
||||||
const allProductIds = partners.flatMap(partner => partner.product_ids);
|
|
||||||
this.fetchProductDetails(allProductIds, (err, products) => {
|
|
||||||
if (err) {
|
|
||||||
console.error('Failed to fetch product details:', err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 将产品详细信息映射到每个订单
|
|
||||||
const partnersWithProducts = partners.map(partner => {
|
|
||||||
const productsInfo = partner.product_ids.map(id => {
|
|
||||||
return products.find(product => product.id === id);
|
|
||||||
}).filter(product => product); // 过滤掉未找到的产品
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...partner,
|
id,
|
||||||
products: productsInfo
|
name,
|
||||||
|
orde_ddje,
|
||||||
|
order_lineInfo,
|
||||||
|
date_order,
|
||||||
|
partner_id,
|
||||||
|
partner_name,
|
||||||
|
orderLineIds,
|
||||||
|
partnerInfo,
|
||||||
|
orderLines: [] // 初始化 orderLines 为空数组
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log('Data with products fetched successfully:', partnersWithProducts);
|
// 获取每个订单的 order_line 详细信息
|
||||||
// 更新页面数据
|
const fetchOrderLinePromises = partners.map(partner => {
|
||||||
|
const order_lineInfoArray = Array.isArray(partner.order_lineInfo) ? partner.order_lineInfo : [partner.order_lineInfo];
|
||||||
|
const orderLineIds = order_lineInfoArray.map(orderLine => orderLine.int?._text);
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.fetchOrderLineDetails(orderLineIds, (err, orderLines) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve({
|
||||||
|
...partner,
|
||||||
|
orderLines
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Promise.all(fetchOrderLinePromises)
|
||||||
|
.then(updatedPartners => {
|
||||||
|
console.log('Data fetched successfully:', updatedPartners);
|
||||||
this.setData({
|
this.setData({
|
||||||
partners: partnersWithProducts
|
partners: updatedPartners,
|
||||||
|
isLoading: false
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.error('Failed to fetch order line details:', err);
|
||||||
|
this.setData({ isLoading: false });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 获取总记录数
|
||||||
|
this.getTotalRecords();
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取总记录数
|
||||||
|
*/
|
||||||
|
getTotalRecords() {
|
||||||
|
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
||||||
|
const objectParams = [
|
||||||
|
`<value><string>${this.data.db}</string></value>`,
|
||||||
|
`<value><int>${this.data.userId}</int></value>`,
|
||||||
|
`<value><string>${this.data.password}</string></value>`,
|
||||||
|
`<value><string>sale.order</string></value>`,
|
||||||
|
`<value><string>search_count</string></value>`,
|
||||||
|
`<value><array>
|
||||||
|
<data>
|
||||||
|
<value><array><data></data></array></value>
|
||||||
|
</data>
|
||||||
|
</array></value>`
|
||||||
|
];
|
||||||
|
|
||||||
|
this.methodCall(objectUrl, 'execute_kw', objectParams, (err, xmlResponse) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('Failed to fetch total records:', err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析 XML 响应
|
||||||
|
const result = convert.xml2js(xmlResponse, {
|
||||||
|
compact: true,
|
||||||
|
spaces: 4
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (result.methodResponse.fault) {
|
||||||
|
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
||||||
|
console.error('Failed to fetch total records:', faultString);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const totalRecords = result.methodResponse.params.param.value.int._text;
|
||||||
|
console.log('Total records:', totalRecords);
|
||||||
|
this.setData({ totalRecords });
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载更多数据
|
||||||
|
*/
|
||||||
|
loadMore() {
|
||||||
|
if (this.data.isLoading || (this.data.currentPage * this.data.pageSize) >= this.data.totalRecords) return;
|
||||||
|
|
||||||
|
this.setData({ currentPage: this.data.currentPage + 1 });
|
||||||
|
this.fetchData();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载上一页数据
|
||||||
|
*/
|
||||||
|
loadPrevious() {
|
||||||
|
if (this.data.isLoading || this.data.currentPage <= 1) return;
|
||||||
|
|
||||||
|
this.setData({ currentPage: this.data.currentPage - 1 });
|
||||||
|
this.fetchData();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -176,7 +281,7 @@ Page({
|
|||||||
header: {
|
header: {
|
||||||
'Content-Type': 'text/xml'
|
'Content-Type': 'text/xml'
|
||||||
},
|
},
|
||||||
success: function(res) {
|
success: function (res) {
|
||||||
// 确保返回的数据是纯 XML 格式
|
// 确保返回的数据是纯 XML 格式
|
||||||
if (res.data && typeof res.data === 'string') {
|
if (res.data && typeof res.data === 'string') {
|
||||||
callback(null, res.data);
|
callback(null, res.data);
|
||||||
@ -184,7 +289,7 @@ Page({
|
|||||||
callback(new Error('Invalid response format'), null);
|
callback(new Error('Invalid response format'), null);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fail: function(err) {
|
fail: function (err) {
|
||||||
callback(err, null);
|
callback(err, null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -206,6 +311,87 @@ Page({
|
|||||||
this.xmlrpcRequest(url, xmlData, callback);
|
this.xmlrpcRequest(url, xmlData, callback);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 order_line 的详细信息
|
||||||
|
*/
|
||||||
|
fetchOrderLineDetails(orderLineIds, callback) {
|
||||||
|
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
||||||
|
const objectParams2 = [
|
||||||
|
`<value><string>${this.data.db}</string></value>`,
|
||||||
|
`<value><int>${this.data.userId}</int></value>`,
|
||||||
|
`<value><string>${this.data.password}</string></value>`,
|
||||||
|
`<value><string>sale.order.line</string></value>`,
|
||||||
|
`<value><string>read</string></value>`,
|
||||||
|
`<value><array>
|
||||||
|
<data>
|
||||||
|
<value><array>
|
||||||
|
<data>
|
||||||
|
${orderLineIds.map(id => `<value><int>${id}</int></value>`).join('')}
|
||||||
|
</data>
|
||||||
|
</array></value>
|
||||||
|
<value><array>
|
||||||
|
<data>
|
||||||
|
<value><string>product_id</string></value>
|
||||||
|
<value><string>name</string></value>
|
||||||
|
<value><string>price_unit</string></value>
|
||||||
|
<value><string>product_uom_qty</string></value>
|
||||||
|
<value><string>fineCode_Text</string></value>
|
||||||
|
</data>
|
||||||
|
</array></value>
|
||||||
|
</data>
|
||||||
|
</array></value>`
|
||||||
|
];
|
||||||
|
|
||||||
|
this.methodCall(objectUrl, 'execute_kw', objectParams2, (err, xmlResponse) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('Failed to fetch order line details:', err);
|
||||||
|
callback(err, []);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析 XML 响应
|
||||||
|
const result = convert.xml2js(xmlResponse, {
|
||||||
|
compact: true,
|
||||||
|
spaces: 4
|
||||||
|
});
|
||||||
|
|
||||||
|
if (result.methodResponse.fault) {
|
||||||
|
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
||||||
|
console.error('Failed to fetch order line details:', faultString);
|
||||||
|
callback(new Error(faultString), []);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = result.methodResponse.params.param.value.array.data.value;
|
||||||
|
if (!data) {
|
||||||
|
console.error('No data found in response');
|
||||||
|
callback(null, []);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保 data 是一个数组
|
||||||
|
const dataArray = Array.isArray(data) ? data : [data];
|
||||||
|
const orderLines = dataArray.map(item => {
|
||||||
|
const saleorderid = item.struct.member.find(member => member.name._text === 'id')?.value.int?._text || '';
|
||||||
|
const name = item.struct.member.find(member => member.name._text === 'name')?.value.string?._text || '';
|
||||||
|
const priceUnit = item.struct.member.find(member => member.name._text === 'price_unit')?.value.double?._text || '0.00';
|
||||||
|
const productUomQty = item.struct.member.find(member => member.name._text === 'product_uom_qty')?.value.double?._text || '0.00';
|
||||||
|
// const fineCode_3 = item.struct.member.find(member => member.name._text === 'fineCode_3')?.value.array?.data?.value || [];
|
||||||
|
const fineCode_Text = item.struct.member.find(member => member.name._text === 'fineCode_Text')?.value.string?._text || '';
|
||||||
|
return {
|
||||||
|
fineCode_Text,
|
||||||
|
// fineCode_3,
|
||||||
|
saleorderid,
|
||||||
|
name,
|
||||||
|
priceUnit,
|
||||||
|
productUomQty
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
callback(null, orderLines);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取产品详细信息
|
* 获取产品详细信息
|
||||||
*/
|
*/
|
||||||
@ -223,72 +409,20 @@ Page({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
// 实现获取产品详细信息的逻辑
|
||||||
const objectParams = [
|
|
||||||
`<value><string>${this.data.db}</string></value>`,
|
|
||||||
`<value><int>${this.data.userId}</int></value>`,
|
|
||||||
`<value><string>${this.data.password}</string></value>`,
|
|
||||||
`<value><string>product.product</string></value>`,
|
|
||||||
`<value><string>search_read</string></value>`,
|
|
||||||
`<value><array>
|
|
||||||
<data>
|
|
||||||
<value><array>
|
|
||||||
<data>
|
|
||||||
${validProductIds.map(id => `<value><int>${id}</int></value>`).join('')}
|
|
||||||
</data>
|
|
||||||
</array></value>
|
|
||||||
<value><array>
|
|
||||||
<data>
|
|
||||||
<value><string>id</string></value>
|
|
||||||
<value><string>name</string></value>
|
|
||||||
<value><string>list_price</string></value>
|
|
||||||
</data>
|
|
||||||
</array></value>
|
|
||||||
</data>
|
|
||||||
</array></value>`
|
|
||||||
];
|
|
||||||
|
|
||||||
this.methodCall(objectUrl, 'execute_kw', objectParams, (err, xmlResponse) => {
|
|
||||||
if (err) {
|
|
||||||
console.error('Failed to fetch product details:', err);
|
|
||||||
callback(err, []);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 解析 XML 响应
|
|
||||||
const result = convert.xml2js(xmlResponse, { compact: true, spaces: 4 });
|
|
||||||
|
|
||||||
if (result.methodResponse.fault) {
|
|
||||||
const faultString = result.methodResponse.fault.value.struct.member.find(member => member.name._text === 'faultString').value.string._text;
|
|
||||||
console.error('Failed to fetch product details:', faultString);
|
|
||||||
callback(new Error(faultString), []);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const products = result.methodResponse.params.param.value.array.data.value.map(item => {
|
|
||||||
const id = item.struct.member.find(member => member.name._text === 'id')?.value.int?._text || '';
|
|
||||||
const name = item.struct.member.find(member => member.name._text === 'name')?.value.string?._text || '';
|
|
||||||
const list_price = item.struct.member.find(member => member.name._text === 'list_price')?.value.double?._text || '0.00';
|
|
||||||
|
|
||||||
return { id, name, list_price };
|
|
||||||
});
|
|
||||||
|
|
||||||
callback(null, products);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成分享文本
|
* 生成分享文本
|
||||||
*/
|
*/
|
||||||
generateShareText(partner) {
|
generateShareText(partner) {
|
||||||
const productNames = partner.products.map(product => product.name).join(', ');
|
|
||||||
return `
|
return `
|
||||||
销售单详情:
|
销售单详情:
|
||||||
订单号: ${partner.id}
|
订单号: ${partner.id}
|
||||||
订单名称: ${partner.name}
|
订单名称: ${partner.name}
|
||||||
订单日期: ${partner.date_order}
|
订单日期: ${partner.date_order}
|
||||||
订单金额: ${partner.orde_ddje}
|
订单金额: ${partner.orde_ddje}
|
||||||
产品: ${productNames}
|
产品: ${partner.orderLines.map(line => `${line.name} (Fine Codes: ${line.fineCode_Text.join(', ')})`).join(', ')}
|
||||||
合作伙伴ID: ${partner.partner_id || '无'}
|
合作伙伴ID: ${partner.partner_id || '无'}
|
||||||
合作伙伴名称: ${partner.partner_name || '无'}
|
合作伙伴名称: ${partner.partner_name || '无'}
|
||||||
`;
|
`;
|
||||||
@ -373,7 +507,7 @@ Page({
|
|||||||
* 页面上拉触底事件的处理函数
|
* 页面上拉触底事件的处理函数
|
||||||
*/
|
*/
|
||||||
onReachBottom() {
|
onReachBottom() {
|
||||||
|
this.loadMore();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -390,6 +524,7 @@ Page({
|
|||||||
path: '/pages/sale_order/sale_order?id=' + partner.id,
|
path: '/pages/sale_order/sale_order?id=' + partner.id,
|
||||||
imageUrl: 'https://fastly.jsdelivr.net/npm/@vant/assets/ipad.jpeg',
|
imageUrl: 'https://fastly.jsdelivr.net/npm/@vant/assets/ipad.jpeg',
|
||||||
desc: this.generateShareText(partner)
|
desc: this.generateShareText(partner)
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
@ -18,8 +18,11 @@
|
|||||||
<van-tag
|
<van-tag
|
||||||
plain
|
plain
|
||||||
type="success"
|
type="success"
|
||||||
|
wx:for="{{item.orderLines}}"
|
||||||
|
wx:key="item"
|
||||||
>
|
>
|
||||||
{{item.product_ids || ''}}
|
{{item.name}}
|
||||||
|
{{item.fineCode_Text}}
|
||||||
</van-tag>
|
</van-tag>
|
||||||
</view>
|
</view>
|
||||||
</van-card>
|
</van-card>
|
||||||
|
Loading…
Reference in New Issue
Block a user