|
@@ -9,30 +9,39 @@
|
|
|
placeholder="输入分类名称进行搜索"
|
|
|
v-model="keyword"
|
|
|
@search="searchData"
|
|
|
- @clear="searchData">
|
|
|
+ @clear="searchData"
|
|
|
+ >
|
|
|
</u-search>
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<view class="main-container">
|
|
|
<view class="left-list" v-if="type == 'M'">
|
|
|
- <block v-for="(item, index) in leftList" :key='index'>
|
|
|
- <view class="item ellipsis" :class="leftCurrent == item.categoryId ? 'current':''" @tap="changeLeft(item.categoryId)">{{item.categoryName}}</view>
|
|
|
- </block>
|
|
|
+ <block v-for="(item, index) in leftList" :key="index">
|
|
|
+ <view
|
|
|
+ class="item ellipsis"
|
|
|
+ :class="leftCurrent == item.categoryId ? 'current' : ''"
|
|
|
+ @tap="changeLeft(item.categoryId)"
|
|
|
+ >{{ item.categoryName }}</view
|
|
|
+ >
|
|
|
+ </block>
|
|
|
</view>
|
|
|
<view class="right-list">
|
|
|
<scroll-view scroll-y style="height: 100%">
|
|
|
- <view class="item" v-for="(item, index) in rightList" :key='index'>
|
|
|
- <view class="name">{{item.goodsName}}</view>
|
|
|
- <view class="text">代码:{{item.goodsCode}}</view>
|
|
|
+ <view class="item" v-for="(item, index) in rightList" :key="index">
|
|
|
+ <view class="name">{{ item.goodsName }}</view>
|
|
|
+ <view class="text">代码:{{ item.goodsCode }}</view>
|
|
|
<view class="bottom">
|
|
|
- <view class="price">¥{{item.price | priceFilter}}<text>/{{item.goodsSalesUnit}}</text></view>
|
|
|
+ <view class="price"
|
|
|
+ >¥{{ item.price | priceFilter }}<text>/{{ item.goodsSalesUnit }}</text></view
|
|
|
+ >
|
|
|
<u-number-box
|
|
|
min="0"
|
|
|
:step="item.goodsSalesUnit == '米' ? 1 : 1"
|
|
|
:name="item.goodsId"
|
|
|
v-model="item.num"
|
|
|
- @change="changeNum">
|
|
|
+ @change="changeNum"
|
|
|
+ >
|
|
|
<view slot="minus" class="ctrl">
|
|
|
<u-icon name="minus" color="#FFFFFF" size="12"></u-icon>
|
|
|
</view>
|
|
@@ -43,7 +52,7 @@
|
|
|
inputAlign="center"
|
|
|
border="none"
|
|
|
v-model="item.num"
|
|
|
- @blur="changeNum({name: item.goodsId, value: item.num, unit: item.goodsSalesUnit})"
|
|
|
+ @blur="changeNum({ name: item.goodsId, value: item.num, unit: item.goodsSalesUnit })"
|
|
|
></u--input>
|
|
|
</text>
|
|
|
<view slot="plus" class="ctrl">
|
|
@@ -53,7 +62,7 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
</scroll-view>
|
|
|
- <Loading :type="2" :loadStatus="loadStatus" :dataList="rightList" />
|
|
|
+ <Loading :type="2" :loadStatus="loadStatus" :dataList="rightList" />
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
@@ -64,17 +73,20 @@
|
|
|
<view class="right" @tap="clearCart"><text class="iconfont icon-shanchu"></text>清空购物车</view>
|
|
|
</view>
|
|
|
<view class="list">
|
|
|
- <view class="item" v-for="(item, index) in cartList" :key='index'>
|
|
|
- <view class="name">{{item.goodsName}}</view>
|
|
|
+ <view class="item" v-for="(item, index) in cartList" :key="index">
|
|
|
+ <view class="name">{{ item.goodsName }}</view>
|
|
|
<view class="bottom">
|
|
|
- <view class="price">¥{{item.price | priceFilter}}<text>/{{item.goodsSalesUnit}}</text></view>
|
|
|
+ <view class="price"
|
|
|
+ >¥{{ item.price | priceFilter }}<text>/{{ item.goodsSalesUnit }}</text></view
|
|
|
+ >
|
|
|
<u-number-box
|
|
|
:step="item.goodsSalesUnit == '米' ? 1 : 1"
|
|
|
:min="item.goodsSalesUnit == '米' ? 0.1 : 1"
|
|
|
:name="item.goodsId"
|
|
|
v-model="item.num"
|
|
|
@change="changeCartNum"
|
|
|
- @overlimit="overlimitFun(index)">
|
|
|
+ @overlimit="overlimitFun(index)"
|
|
|
+ >
|
|
|
<view slot="minus" class="ctrl">
|
|
|
<u-icon name="minus" color="#FFFFFF" size="12"></u-icon>
|
|
|
</view>
|
|
@@ -85,7 +97,7 @@
|
|
|
inputAlign="center"
|
|
|
border="none"
|
|
|
v-model="item.num"
|
|
|
- @blur="changeCartNum({name: item.goodsId, value: item.num, unit: item.goodsSalesUnit})"
|
|
|
+ @blur="changeCartNum({ name: item.goodsId, value: item.num, unit: item.goodsSalesUnit })"
|
|
|
></u--input>
|
|
|
</text>
|
|
|
<view slot="plus" class="ctrl">
|
|
@@ -103,7 +115,7 @@
|
|
|
<text class="iconfont icon-gouwuche1"></text>
|
|
|
<u-badge max="99" :value="totalNum" :offset="[1, 1]" absolute></u-badge>
|
|
|
</view>
|
|
|
- <view class="price"><text>合计:</text>¥{{totalPrice | priceFilter}}</view>
|
|
|
+ <view class="price"><text>合计:</text>¥{{ totalPrice | priceFilter }}</view>
|
|
|
<view class="btn">
|
|
|
<u-button type="primary" text="提交" @click="submitData"></u-button>
|
|
|
</view>
|
|
@@ -113,203 +125,206 @@
|
|
|
<!-- #endif -->
|
|
|
|
|
|
<!-- #ifndef H5 -->
|
|
|
- <web-view :src="webViewHref(`/packageMaterial/pages/apply/product`, pam, crossPagePam)" @message="crossPage.$listener"></web-view>
|
|
|
+ <web-view
|
|
|
+ :src="webViewHref(`/packageMaterial/pages/apply/product`, pam, crossPagePam)"
|
|
|
+ @message="crossPage.$listener"
|
|
|
+ ></web-view>
|
|
|
<!-- #endif -->
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- // #ifdef H5
|
|
|
- export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- type: 'M',
|
|
|
- applyName: '',
|
|
|
- websitId: null,
|
|
|
- websitName: null,
|
|
|
+// #ifdef H5
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ type: 'M',
|
|
|
+ applyName: '',
|
|
|
+ websitId: null,
|
|
|
+ websitName: null,
|
|
|
|
|
|
- keyword: '',
|
|
|
- leftList: [],
|
|
|
- leftCurrent: 0,
|
|
|
- rightList: [],
|
|
|
- loadStatus: 0,
|
|
|
- isShowDialog: false,
|
|
|
+ keyword: '',
|
|
|
+ leftList: [],
|
|
|
+ leftCurrent: 0,
|
|
|
+ rightList: [],
|
|
|
+ loadStatus: 0,
|
|
|
+ isShowDialog: false,
|
|
|
|
|
|
- cartList: [],
|
|
|
- }
|
|
|
- },
|
|
|
+ cartList: [],
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- computed: {
|
|
|
- totalNum() {
|
|
|
- // let val = 0;
|
|
|
- // this.cartList.forEach(item => {
|
|
|
- // val = val + item.num;
|
|
|
- // })
|
|
|
- return this.cartList.length;
|
|
|
- },
|
|
|
- totalPrice() {
|
|
|
- let val = 0;
|
|
|
- this.cartList.forEach(item => {
|
|
|
- val = val + (item.num * (item.price * 100) / 100);
|
|
|
- })
|
|
|
- return val;
|
|
|
- },
|
|
|
+ computed: {
|
|
|
+ totalNum() {
|
|
|
+ // let val = 0;
|
|
|
+ // this.cartList.forEach(item => {
|
|
|
+ // val = val + item.num;
|
|
|
+ // })
|
|
|
+ return this.cartList.length;
|
|
|
},
|
|
|
-
|
|
|
- onLoad({type, applyName, websitId, websitName}) {
|
|
|
- this.type = type;
|
|
|
- this.applyName = applyName;
|
|
|
- this.websitId = websitId;
|
|
|
- this.websitName = websitName;
|
|
|
-
|
|
|
- uni.setNavigationBarTitle({
|
|
|
- title: type == 'M' ? '选择辅材' : '选择配件'
|
|
|
+ totalPrice() {
|
|
|
+ let val = 0;
|
|
|
+ this.cartList.forEach(item => {
|
|
|
+ val = val + (item.num * (item.price * 100) / 100);
|
|
|
})
|
|
|
- if(type === 'M') {
|
|
|
- this.getLeftList();
|
|
|
- }else {
|
|
|
- this.getRightList();
|
|
|
- }
|
|
|
+ return val;
|
|
|
},
|
|
|
+ },
|
|
|
|
|
|
- methods: {
|
|
|
- // 获取左侧分类
|
|
|
- getLeftList() {
|
|
|
- this.$api.post('/material/salses/exist/stock/category', {
|
|
|
- websitId: this.websitId,
|
|
|
- }).then(res => {
|
|
|
- this.leftList = res.data;
|
|
|
- this.leftCurrent = res.data.length > 0 ? res.data[0].categoryId : 0;
|
|
|
- this.getRightList();
|
|
|
- })
|
|
|
- },
|
|
|
+ onLoad({type, applyName, websitId, websitName}) {
|
|
|
+ this.type = type;
|
|
|
+ this.applyName = applyName;
|
|
|
+ this.websitId = websitId;
|
|
|
+ this.websitName = websitName;
|
|
|
|
|
|
- // 获取右侧产品
|
|
|
- getRightList() {
|
|
|
- this.loadStatus = 1;
|
|
|
- let url = '', params = {};
|
|
|
- this.$api.post('/material/salses/exist/stock/goods', {
|
|
|
- websitId: this.websitId,
|
|
|
- goodsName: this.keyword,
|
|
|
- type: this.type,
|
|
|
- categoryId: this.type === 'M' ? this.leftCurrent : '',
|
|
|
- }).then(res => {
|
|
|
- this.loadStatus = 0;
|
|
|
- let list = res.data.map(item => {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- num: 0,
|
|
|
- }
|
|
|
- });
|
|
|
- for(let i = 0; i < list.length; i++) {
|
|
|
- for(let j = 0; j < this.cartList.length; j++) {
|
|
|
- if(list[i].goodsId == this.cartList[j].goodsId) {
|
|
|
- list[i].num = this.cartList[j].num;
|
|
|
- }
|
|
|
+ uni.setNavigationBarTitle({
|
|
|
+ title: type == 'M' ? '选择辅材' : '选择配件'
|
|
|
+ })
|
|
|
+ if(type === 'M') {
|
|
|
+ this.getLeftList();
|
|
|
+ }else {
|
|
|
+ this.getRightList();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ // 获取左侧分类
|
|
|
+ getLeftList() {
|
|
|
+ this.$api.post('/material/salses/exist/stock/category', {
|
|
|
+ websitId: this.websitId,
|
|
|
+ }).then(res => {
|
|
|
+ this.leftList = res.data;
|
|
|
+ this.leftCurrent = res.data.length > 0 ? res.data[0].categoryId : 0;
|
|
|
+ this.getRightList();
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取右侧产品
|
|
|
+ getRightList() {
|
|
|
+ this.loadStatus = 1;
|
|
|
+ let url = '', params = {};
|
|
|
+ this.$api.post('/material/salses/exist/stock/goods', {
|
|
|
+ websitId: this.websitId,
|
|
|
+ goodsName: this.keyword,
|
|
|
+ type: this.type,
|
|
|
+ categoryId: this.type === 'M' ? this.leftCurrent : '',
|
|
|
+ }).then(res => {
|
|
|
+ this.loadStatus = 0;
|
|
|
+ let list = res.data.map(item => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ num: 0,
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for(let i = 0; i < list.length; i++) {
|
|
|
+ for(let j = 0; j < this.cartList.length; j++) {
|
|
|
+ if(list[i].goodsId == this.cartList[j].goodsId) {
|
|
|
+ list[i].num = this.cartList[j].num;
|
|
|
}
|
|
|
}
|
|
|
- if(list.length < 1){
|
|
|
- this.loadStatus = 2;
|
|
|
- }
|
|
|
- this.rightList = list;
|
|
|
- }).catch(() => {
|
|
|
- this.loadStatus = 2;
|
|
|
- })
|
|
|
- },
|
|
|
+ }
|
|
|
+ if(list.length < 1){
|
|
|
+ this.loadStatus = 2;
|
|
|
+ }
|
|
|
+ this.rightList = list;
|
|
|
+ }).catch(() => {
|
|
|
+ this.loadStatus = 2;
|
|
|
+ })
|
|
|
+ },
|
|
|
|
|
|
- // 切换一级菜单
|
|
|
- changeLeft(pid) {
|
|
|
- this.leftCurrent = pid;
|
|
|
- this.getRightList();
|
|
|
- },
|
|
|
+ // 切换一级菜单
|
|
|
+ changeLeft(pid) {
|
|
|
+ this.leftCurrent = pid;
|
|
|
+ this.getRightList();
|
|
|
+ },
|
|
|
|
|
|
- // 搜索
|
|
|
- searchData() {
|
|
|
- this.getRightList();
|
|
|
- },
|
|
|
+ // 搜索
|
|
|
+ searchData() {
|
|
|
+ this.getRightList();
|
|
|
+ },
|
|
|
|
|
|
- changeNum(e) {
|
|
|
- let obj = this.rightList.find((item) => item.goodsId === e.name);
|
|
|
- if(e.unit && e.unit != '米') {
|
|
|
- e.value = Math.floor(e.value);
|
|
|
- obj.num = Math.floor(obj.num);
|
|
|
- }
|
|
|
- // 判断对象数组中是否存在该对象
|
|
|
- let index = this.cartList.findIndex((item) => item.goodsId === obj.goodsId);
|
|
|
- // 如果是0,就删除
|
|
|
- if(index !== -1 && e.value == 0) {
|
|
|
- this.cartList.splice(index, 1);
|
|
|
- }
|
|
|
- // 如果有就替换,没有就添加
|
|
|
- else if (index !== -1) {
|
|
|
- this.cartList.splice(index, 1, obj);
|
|
|
- }
|
|
|
- else {
|
|
|
- if(e.value > 0) {
|
|
|
- this.cartList.push(obj);
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- changeCartNum(e) {
|
|
|
- let obj = this.cartList.find((item) => item.goodsId === e.name);
|
|
|
- if(e.unit && e.unit != '米') {
|
|
|
- e.value = Math.floor(e.value);
|
|
|
- obj.num = Math.floor(obj.num);
|
|
|
+ changeNum(e) {
|
|
|
+ let obj = this.rightList.find((item) => item.goodsId === e.name);
|
|
|
+ if(e.unit && e.unit != '米') {
|
|
|
+ e.value = Math.floor(e.value);
|
|
|
+ obj.num = Math.floor(obj.num);
|
|
|
+ }
|
|
|
+ // 判断对象数组中是否存在该对象
|
|
|
+ let index = this.cartList.findIndex((item) => item.goodsId === obj.goodsId);
|
|
|
+ // 如果是0,就删除
|
|
|
+ if(index !== -1 && e.value == 0) {
|
|
|
+ this.cartList.splice(index, 1);
|
|
|
+ }
|
|
|
+ // 如果有就替换,没有就添加
|
|
|
+ else if (index !== -1) {
|
|
|
+ this.cartList.splice(index, 1, obj);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if(e.value > 0) {
|
|
|
+ this.cartList.push(obj);
|
|
|
}
|
|
|
- let index = this.cartList.findIndex((item) => item.goodsId === obj.goodsId);
|
|
|
- this.cartList.splice(index, 1, obj);
|
|
|
-
|
|
|
- this.getRightList();
|
|
|
- },
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- overlimitFun(index) {
|
|
|
- this.$modal({
|
|
|
- content: '把该产品从购物车移除?'
|
|
|
- }).then(() => {
|
|
|
- this.cartList.splice(index, 1);
|
|
|
- this.getRightList();
|
|
|
- }).catch(() => {})
|
|
|
- },
|
|
|
+ changeCartNum(e) {
|
|
|
+ let obj = this.cartList.find((item) => item.goodsId === e.name);
|
|
|
+ if(e.unit && e.unit != '米') {
|
|
|
+ e.value = Math.floor(e.value);
|
|
|
+ obj.num = Math.floor(obj.num);
|
|
|
+ }
|
|
|
+ let index = this.cartList.findIndex((item) => item.goodsId === obj.goodsId);
|
|
|
+ this.cartList.splice(index, 1, obj);
|
|
|
|
|
|
- clearCart() {
|
|
|
- this.$modal({
|
|
|
- content: '确定清空购物车?'
|
|
|
- }).then(() => {
|
|
|
- this.cartList = [];
|
|
|
- this.getRightList();
|
|
|
- }).catch(() => {})
|
|
|
- },
|
|
|
+ this.getRightList();
|
|
|
+ },
|
|
|
|
|
|
- submitData() {
|
|
|
- if(this.cartList.length < 1) return this.$toast('请选择');
|
|
|
- this.$setStorage('materialApplyData', {
|
|
|
- type: this.type,
|
|
|
- applyName: this.applyName,
|
|
|
- websitId: this.websitId,
|
|
|
- websitName: this.websitName,
|
|
|
- goodsList: this.cartList
|
|
|
- });
|
|
|
- this.$navToPage({
|
|
|
- url: `/packageMaterial/pages/apply/order`
|
|
|
- })
|
|
|
- },
|
|
|
+ overlimitFun(index) {
|
|
|
+ this.$modal({
|
|
|
+ content: '把该产品从购物车移除?'
|
|
|
+ }).then(() => {
|
|
|
+ this.cartList.splice(index, 1);
|
|
|
+ this.getRightList();
|
|
|
+ }).catch(() => {})
|
|
|
+ },
|
|
|
|
|
|
+ clearCart() {
|
|
|
+ this.$modal({
|
|
|
+ content: '确定清空购物车?'
|
|
|
+ }).then(() => {
|
|
|
+ this.cartList = [];
|
|
|
+ this.getRightList();
|
|
|
+ }).catch(() => {})
|
|
|
},
|
|
|
- }
|
|
|
|
|
|
- // #endif
|
|
|
- // #ifndef H5
|
|
|
- export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- pam: {},
|
|
|
- }
|
|
|
+ submitData() {
|
|
|
+ if(this.cartList.length < 1) return this.$toast('请选择');
|
|
|
+ this.$setStorage('materialApplyData', {
|
|
|
+ type: this.type,
|
|
|
+ applyName: this.applyName,
|
|
|
+ websitId: this.websitId,
|
|
|
+ websitName: this.websitName,
|
|
|
+ goodsList: this.cartList
|
|
|
+ });
|
|
|
+ this.$navToPage({
|
|
|
+ url: `/packageMaterial/pages/apply/order`
|
|
|
+ })
|
|
|
},
|
|
|
- onLoad(pam) {
|
|
|
- this.pam = pam;
|
|
|
+
|
|
|
+ },
|
|
|
+}
|
|
|
+
|
|
|
+// #endif
|
|
|
+// #ifndef H5
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ pam: {},
|
|
|
}
|
|
|
+ },
|
|
|
+ onLoad(pam) {
|
|
|
+ this.pam = pam;
|
|
|
}
|
|
|
- // #endif
|
|
|
+}
|
|
|
+// #endif
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
@@ -319,10 +334,10 @@
|
|
|
::v-deep .u-search {
|
|
|
height: 60rpx;
|
|
|
input {
|
|
|
- background: #F7F8FF !important;
|
|
|
+ background: #f7f8ff !important;
|
|
|
}
|
|
|
.u-search__content {
|
|
|
- background: #F7F8FF !important;
|
|
|
+ background: #f7f8ff !important;
|
|
|
height: 60rpx;
|
|
|
}
|
|
|
}
|
|
@@ -344,15 +359,15 @@
|
|
|
align-items: center;
|
|
|
padding: 0 20rpx;
|
|
|
&.current {
|
|
|
- color: #FFFFFF;
|
|
|
+ color: #ffffff;
|
|
|
background: $theme-color;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
.right-list {
|
|
|
flex: 1;
|
|
|
- background: #FFFFFF;
|
|
|
- background: #FFFFFF;
|
|
|
+ background: #ffffff;
|
|
|
+ background: #ffffff;
|
|
|
height: 100%;
|
|
|
box-sizing: border-box;
|
|
|
.item {
|
|
@@ -446,7 +461,7 @@
|
|
|
left: 0;
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
- background: rgba($color: #000000, $alpha: .6);
|
|
|
+ background: rgba($color: #000000, $alpha: 0.6);
|
|
|
}
|
|
|
.dialog-container {
|
|
|
width: 100%;
|