Commit d0f58e1d authored by chuan.liu's avatar chuan.liu

配额订单行项目更新联调

parent 19d58748
......@@ -11,95 +11,139 @@
</view>
<scroll-view class="scroll-area view" :scroll-top="scrollTop" scroll-y="true">
<view class="middle view">
<view class="text-block title-first">
<text class="middle-date title-first__text">计划内</text>
<view class="view">
<view class="planout-block">
<text class="planout-block-title">计划内</text>
<image class="planout-block-icon" src="@/static/image/shop_more@3x.png" @click="addPlanout"
mode="aspectFit"></image>
</view>
<view class="text-block" @click="selectPlanOrder">
<text class="middle-date">计划编号</text>
<uni-swipe-action class="planout-block-lists">
<uni-swipe-action-item v-for="(item,index) in planoutLists" :key='index'>
<view class="middle view planout-block-item">
<view class="text-block title-first">
<text class="middle-date title-first__text">{{index+1}}</text>
</view>
<view class="text-block" @click="selectProduct(index)">
<text class="middle-date">产品</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<text class="middle-date-des">{{item.SHORT_TEXT}}</text>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit">
</image>
</view>
</view>
<view class="text-block">
<text class="middle-date">数量(件)</text>
<input class="middle-date-des" type="text" :value="item.quantity"
@input="calcOuterTotal($event,item,index)" placeholder="请填写" />
</view>
<view class="text-block">
<text class="middle-date">单价</text>
<text class="middle-date-des">{{item.price}}</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">小计</text>
<text class="middle-date-des">{{item.total}}</text>
</view>
</view>
<template v-slot:right>
<view class="swipe-right-block" @click="handleDel">
<text class="swipe-right-block__text">删除</text>
</view>
</template>
</uni-swipe-action-item>
</uni-swipe-action>
</view>
<view class="view">
<view class="planout-block">
<text class="planout-block-title">计划外</text>
</view>
<!-- <view class="text-block title-first">
<text class="middle-date title-first__text">计划内</text>
</view> -->
<uni-swipe-action class="planout-block-lists">
<uni-swipe-action-item v-for="(item,index) in planoutLists" :key='index'>
<view class="middle view planout-block-item">
<view class="text-block title-first">
<text class="middle-date title-first__text">{{index+1}}</text>
</view>
<view class="text-block" @click="selectProduct(index)">
<text class="middle-date">产品</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<text class="middle-date-des">{{item.SHORT_TEXT}}</text>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit">
</image>
</view>
</view>
<view class="text-block">
<text class="middle-date">数量(件)</text>
<input class="middle-date-des" type="text" :value="item.quantity"
@input="calcOuterTotal($event,item,index)" placeholder="请填写" />
</view>
<view class="text-block">
<text class="middle-date">单价</text>
<text class="middle-date-des">{{item.price}}</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">小计</text>
<text class="middle-date-des">{{item.total}}</text>
</view>
</view>
<template v-slot:right>
<view class="swipe-right-block" @click="handleDel">
<text class="swipe-right-block__text">删除</text>
</view>
</template>
</uni-swipe-action-item>
</uni-swipe-action>
<!-- <view class="text-block" @click="selectProduct(-1)">
<text class="middle-date">产品</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<text class="middle-date-des">{{selectedSalePlan.PLAN_NUMBER}}</text>
<text class="middle-date-des">{{selectedProductInner.DESCRIPTION}}</text>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
<view class="text-block">
<text class="middle-date">产品</text>
<text class="middle-date-des">{{selectedSalePlan.WLYBRAND}}</text>
<!-- <view class="middle-date-des uni-list picker-year">
<view class="text-block" @click="selectPlanOrder">
<text class="middle-date">计划编号</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<input class="middle-date-des" type="text" v-model="selectedSalePlan.product"
placeholder="请填写" />
<text class="middle-date-des">{{selectedSalePlan.PLAN_NUMBER}}</text>
</view>
</view>
</view> -->
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
<view class="text-block">
<text class="middle-date">数量(件)</text>
<input class="middle-date-des" type="number" :value="selectedSalePlan.quantity"
@input="calcInnerTotal($event,selectedSalePlan)" placeholder="请填写" />
<input class="middle-date-des" type="number" :value="selectedProductInner.quantity"
@input="calcInnerTotal($event,selectedProductInner)" placeholder="请填写" />
</view>
<view class="text-block">
<text class="middle-date">单价</text>
<text class="middle-date-des">{{selectedSalePlan.price}}</text>
<text class="middle-date-des">{{selectedProductInner.NET_PRICE}}</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">小计</text>
<text class="middle-date-des">{{selectedSalePlan.total}}</text>
</view>
</view>
<view class="planout-block">
<text class="planout-block-title">计划外</text>
<!-- <image class="planout-block-icon" src="@/static/image/shop_more@3x.png" @click="addPlanout"
mode="aspectFit"></image> -->
<text class="middle-date-des">{{selectedProductInner.total}}</text>
</view> -->
</view>
<uni-swipe-action class="planout-block-lists">
<uni-swipe-action-item v-for="(item,index) in planoutLists" :key='index'>
<view class="middle view planout-block-item">
<view class="text-block title-first">
<text class="middle-date title-first__text">{{index+1}}</text>
</view>
<view class="text-block" @click="selectProduct(index)">
<text class="middle-date">产品</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<text class="middle-date-des">{{item.selectedProduct.SHORT_TEXT}}</text>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
<view class="text-block">
<text class="middle-date">数量(件)</text>
<input class="middle-date-des" type="text" :value="item.selectedProduct.quantity"
@input="calcOuterTotal($event,item.selectedProduct,index)" placeholder="请填写" />
</view>
<view class="text-block">
<text class="middle-date">单价</text>
<text class="middle-date-des">{{item.selectedProduct.price}}</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">小计</text>
<text class="middle-date-des">{{item.selectedProduct.quantity}}</text>
</view>
</view>
<template v-slot:right>
<view class="swipe-right-block" @click="handleDel">
<text class="swipe-right-block__text">删除</text>
</view>
</template>
</uni-swipe-action-item>
</uni-swipe-action>
<view class="bottom-area"></view>
<view class="bottom">
......@@ -115,75 +159,283 @@
</template>
<script>
import {
apiUpdateQuotaData
} from '@/servers/quotaOrder.js'
export default {
data() {
return {
selectedSalePlan: {
id: '请选择',
id: '',
checked: false,
product: '',
quantity: 0,
price: 2,
price: 0,
total: 0
},
selectedProductInner: {
"PRODUCT_ID": "",
"ORDERED_PROD": "",
"DESCRIPTION": "",
"SHORT_TEXT": "",
'NET_PRICE': '',
'NET_VALUE': '',
'quantity': 0,
'total': 0
},
scrollTop: 0,
planoutLists: [{
selectedProduct: {
id: '请选择',
checked: false,
product: '',
quantity: 0,
price: 0
}
checked: false,
"PRODUCT_ID": "",
"ORDERED_PROD": "",
"DESCRIPTION": "",
"SHORT_TEXT": "",
'NET_PRICE': '',
'NET_VALUE': '',
'quantity': 0,
'total': 0
}]
}
},
mounted() {
console.log('监听到事件来自 update');
console.log('监听到事件来自 onShow');
let _this = this
uni.$once('selectedSalePlan', function(data) {
uni.$on('selectedSalePlan', function(data) {
console.log('监听到事件来自 selectedSalePlan ,携带参数 msg 为:', data.selectedSalePlan);
_this.selectedSalePlan = {
...data.selectedSalePlan
}
})
uni.$once('selectedProduct', function(data) {
uni.$on('selectedProduct', function(data) {
console.log('监听到事件来自 selectedProduct ,携带参数 msg 为:', data);
// _this.selectedProduct = {
// ...data.selectedProduct
// }
_this.planoutLists.forEach((item, index) => {
if (index == data.index) {
item.selectedProduct = data.selectedProduct
const fromIndex = data.index * 1
const selectedProduct = data.selectedProduct
if (fromIndex === -1) {
this.selectedProductInner = {
...selectedProduct
}
})
_this.updateQuotaData(fromIndex, selectedProduct);
} else {
// _this.planoutLists.forEach((item, index) => {
// if (index === fromIndex) {
// item = selectedProduct
// }
// })
_this.updateQuotaData(fromIndex, selectedProduct);
}
})
},
onUnload() {
uni.$off('selectedSalePlan')
uni.$off('selectedProduct')
},
methods: {
async updateQuotaData(productIndex, product) {
console.log('updateQuotaData---entry', productIndex, product)
let productId = ''
let item_type = ''
let item_inner = []
let item_outer = []
if (productIndex === -1) {
productId = product.PRODUCT_ID
item_type = "ITEM_INNER"
item_outer = []
item_inner = [{
"GUID": "00000000000000000000000000000000",
"HEADER": "00000000000000000000000000000000",
"NUMBER_INT": "0000000010",
"ITM_TYPE": "",
"ZZFLD000029": "V001",
"ZZFLD000005": "3800000826",
"ZZFLD000005_Z1": "",
"ZZFLD000006": "20220322",
"ZZFLD00002Q": "V001",
"ZZFLD00002Q_Z1": "",
"ORDERED_PROD": productId,
"DESCRIPTION": "五粮液.1618(131) 52%618mL×6",
"ZZFLD00002S": "52%618ML×6",
"UNIT": "",
"ZZFLD00002T": "盒",
"QUANTITY": "",
"ZZFLD00002U": "",
"ZZFLD00002W": "",
"ZZFLD000009": "1.00",
"INVENTORY": "",
"ZZFLD00002E": "",
"NET_PRICE": "",
"ZZFLD00002X": "",
"NET_VALUE": "",
"ZZFLD00002Z": "",
"ZZFLD00002A": "",
"ZZFLD00002F": "",
"ZZFLD00002G": "",
"ZZFLD00002I": "",
"ZZFLD000007": "",
"ZZFLD000032": "",
"ZZFLD00002O": "",
"ZZFLD000035": "",
"ZZFLD00002B": "",
"ZZFLD000008": "",
"ZZFLD00002P": "",
"CURRENCY": "",
"MODE": "",
"WAREHOUSE": "",
"PRDTYPE": "",
"YEAR": "",
"ZZFLD00002Q_D": ""
}]
} else {
productId = product.PRODUCT_ID
item_type = "ITEM_OUTER"
item_inner = []
item_outer = [{
"GUID": "00000000000000000000000000000000",
"HEADER": "00000000000000000000000000000000",
"NUMBER_INT": "0000000010",
"ITM_TYPE": "",
"ZZFLD000029": "V001",
"ZZFLD000005": "3800000826",
"ZZFLD000005_Z1": "",
"ZZFLD000006": "20220322",
"ZZFLD00002Q": "V001",
"ZZFLD00002Q_Z1": "",
"ORDERED_PROD": productId,
"DESCRIPTION": "五粮液.1618(131) 52%618mL×6",
"ZZFLD00002S": "52%618ML×6",
"UNIT": "",
"ZZFLD00002T": "盒",
"QUANTITY": "",
"ZZFLD00002U": "",
"ZZFLD00002W": "",
"ZZFLD000009": "1.00",
"INVENTORY": "",
"ZZFLD00002E": "",
"NET_PRICE": "",
"ZZFLD00002X": "",
"NET_VALUE": "",
"ZZFLD00002Z": "",
"ZZFLD00002A": "",
"ZZFLD00002F": "",
"ZZFLD00002G": "",
"ZZFLD00002I": "",
"ZZFLD000007": "",
"ZZFLD000032": "",
"ZZFLD00002O": "",
"ZZFLD000035": "",
"ZZFLD00002B": "",
"ZZFLD000008": "",
"ZZFLD00002P": "",
"CURRENCY": "",
"MODE": "",
"WAREHOUSE": "",
"PRDTYPE": "",
"YEAR": "",
"ZZFLD00002Q_D": ""
}]
}
const params = {
"item_type": item_type,
"info": {
"GUID": "00000000000000000000000000000000",
"OBJECT_ID": "",
"PROCESS_TYPE": "ZS01",
"CUSTOMER": "0050000215",
"CUST_NAME": "崇州顺辰商贸有限公司",
"CUSTOMER_TYPE": "V003",
"ZZFLD000000": "",
"ZZFLD000028": "",
"ZZFLD00002D": "81000010",
"ZZFLD00002D_DSCR": "董平",
"POSTING_DATE": "20220321",
"STATUS": "E0001",
"ZZFLD000001": "0005000006",
"ZZFLD00003E": "",
"ZZFLD000002": "230",
"ZZFLD000003": "000000510100",
"ZZFLD000004": "",
"ZZFLD000004_DSCR": "",
"ZZFLD00002J": "",
"ZZFLD00002K": "",
"ZZFLD00002L": "",
"ZZFLD00002M": "",
"ZZFLD00002N": "",
"SALES_ORG": "",
"CHANNEL": "",
"DIVISION": "",
"CUST_PRIC_PROC": "",
"TAX_GROUP_BP_01": "",
"ZZFLD00003C": "",
"ZZFLD00009O": 0.00,
"ZZFLD00009Q": 0.00,
"ZHKYE": 0.00
},
"item_inner": item_inner,
"item_outer": item_outer
}
const res = await apiUpdateQuotaData(params)
console.log('updateQuotaData', res)
const {
ITEM_INNER,
ITEM_OUTER
} = res.DATA
if (productIndex === -1) {
this.selectedProductInner = {
...this.selectedProductInner,
...ITEM_INNER && ITEM_INNER[0]
}
} else {
this.planoutLists = this.planoutLists.map((item, i) => {
if (i === productIndex) {
item = {
...item,
...product,
...ITEM_OUTER[0]
}
}
return item
})
}
},
calcInnerTotal(e, item) {
console.log('ddd', item, e)
let value = e.target.value
// value = `${value}`.replace(/[^0-9]/g, '') // 正则判断只能输入数字
e.target.value = value * 1
this.selectedSalePlan.quantity = value * 1
this.selectedSalePlan.total = value * item.price * 1
this.selectedProductInner.quantity = value * 1
this.selectedProductInner.total = value * item.NET_VALUE * 1
},
calcOuterTotal(e, item, index) {
console.log('ddd', item, e)
calcOuterTotal(e, item, i) {
console.log('sss', item, e)
let value = e.target.value
// value = `${value}`.replace(/[^0-9]/g, '') // 正则判断只能输入数字
e.target.value = value * 1
// this.planoutLists.forEach(()=>{})
this.selectedSalePlan.quantity = value * 1
this.selectedSalePlan.total = value * item.price * 1
this.planoutLists.forEach((product, index) => {
if (i === index) {
product.quantity = value * 1
product.total = value * item.price * 1
}
})
},
handleDel() {
console.log(1)
},
selectPlanOrder() {
uni.navigateTo({
url: `/pages/select-sale-plan/select-sale-plan`
});
if (this.selectedProductInner.PRODUCT_ID) {
uni.navigateTo({
url: `/pages/select-sale-plan/select-sale-plan?from='quota'&product=${JSON.stringify(this.selectedProductInner)}`
});
} else {
uni.showToast({
title: '请先选择产品',
duration: 2000,
icon: 'none'
});
}
},
selectProduct(index) {
uni.navigateTo({
......@@ -191,7 +443,14 @@
});
},
addPlanout() {
this.planoutLists++
let product = {
checked: false,
product: '',
quantity: 0,
price: 0,
total: 0
}
this.planoutLists.unshift(product)
},
nextStep() {
this.$emit('click', 'orderUpload')
......
......@@ -10,8 +10,8 @@
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker class="picker-block" @change="bindPickerYearChange" mode="date"
:value="condition.year" fields='year'>
<text class="uni-input">{{condition.year}}</text>
:value="condition.GJAHR" fields='year'>
<text class="uni-input">{{condition.GJAHR}}</text>
</picker>
</view>
</view>
......@@ -24,8 +24,8 @@
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker class="picker-block" @change="bindPickerMonthChange" mode="date"
:value="condition.month" fields="month">
<text class="uni-input">{{condition.month}}</text>
:value="condition.MONAT" fields="month">
<text class="uni-input">{{condition.MONAT}}</text>
</picker>
</view>
</view>
......@@ -103,8 +103,8 @@
index: 0,
condition: {
year: '',
month: '',
planType: ''
MONAT: '',
PLAN_TYPE: ''
},
lists: [{
id: 1,
......@@ -121,7 +121,11 @@
price: 200
}
],
selectedSalePlan: {}
selectedSalePlan: {},
toPageParams: {
page: '',
product: {}
}
}
},
computed: {
......@@ -138,7 +142,7 @@
uni.$emit('selectedSalePlan', {
selectedSalePlan: this.selectedSalePlan
})
uni.navigateBack({})
uni.navigateBack()
return
}
this.isOpened = this.isOpened === 'none' ? 'left' : 'none';
......@@ -160,13 +164,27 @@
// })
// #endif
},
onLoad(option) {
console.log('select-saleplan', option)
const {
from,
product
} = option
this.toPageParams.product = JSON.parse(product)
this.toPageParams.page = from
},
created() {
this.condition.year = timeFormat(new Date(), 'yyyy')
this.condition.month = timeFormat(new Date(), 'mm')
this.condition.GJAHR = timeFormat(new Date(), 'yyyy')
this.condition.MONAT = timeFormat(new Date(), 'mm')
this.getSalesPlan();
},
methods: {
async getSalesPlan() {
const {
GJAHR,
MONAT,
PLAN_TYPE
} = this.condition
const params = {
'page': 1,
'pagesize': '10',
......@@ -215,7 +233,7 @@
"ZZFLD000006": "20220322",
"ZZFLD00002Q": "",
"ZZFLD00002Q_Z1": "",
"ORDERED_PROD": "040001005280115668",
"ORDERED_PROD": this.toPageParams.product.PRODUCT_ID,
"DESCRIPTION": "五粮液.1618(131) 52%618mL×6",
"ZZFLD00002S": "52%618ML×6",
"UNIT": "KAR",
......@@ -251,6 +269,11 @@
"input": {
},
"INPUT_APP": {
GJAHR,
MONAT,
PLAN_TYPE
},
}
const res = await apiSalesPlanSelect(params)
this.lists = res.DATA.map((item) => {
......@@ -264,11 +287,11 @@
},
bindPickerYearChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.condition.year = e.detail.value
this.condition.GJAHR = e.detail.value
},
bindPickerMonthChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.condition.month = e.detail.value
this.condition.MONAT = e.detail.value
},
handleClick(e, content, index) {
console.log('click当前索引:', e, content, index);
......
......@@ -39,7 +39,7 @@ const install = (Vue, vm) => {
// 如果把originalData设置为了true,这里得到将会是服务器返回的所有的原始数据
// 判断可能变成了res.statueCode,或者res.data.code之类的,请打印查看结果
console.log('response-----', res)
if (res.MSGTYPE == 'S') {
if (res.MSGTYPE === 'S') {
// 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么
return res;
} else return false;
......
import {
LOGIN
} from './base.api.js'
import apiHelper from './api.helper.js'
/**
* 登录服务
* @param name 账户名
* @param password 账户密码
* @param captcha 验证码
* 销售订单行项目选择或修改后进行页面数据更新
* @param
* @returns {Promise<AxiosResponse<T>>}
*/
export async function login(params) {
const {
status,
data
} = await apiHelper.get(LOGIN, params, false)
return data
export async function apiUpdateQuotaData(params) {
const res = await apiHelper.post('/sap/bc/ztpm/to_new_crm/transdata/so_u_data_quota', params)
return res
}
export default {
login
apiUpdateQuotaData
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment