xnzt/xnzt-h5/pages/index/tradeList/sell.vue

499 lines
10 KiB
Vue
Raw Normal View History

2024-11-11 10:27:27 +08:00
<template>
<view class="container">
<view class="list">
<view class="item u-flex u-col-center u-row-between">
<view class="l">
商品名称
</view>
<view class="r u-flex u-col-center u-row-right">
<input type="text" v-model="goodsName" placeholder="请输入">
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
商品数量
</view>
<view class="r u-flex u-col-center u-row-right">
<input type="text" v-model="quantity" placeholder="请输入">
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
单位规格
</view>
<view class="r u-flex u-col-center u-row-right">
<picker mode="selector" :value="measureUnit" range-key='dictLabel' :range="measureUnitList"
@change="measureChange">
<view class="picker u-flex u-col-center u-row-right">
<text v-if="measureUnit">{{measureUnitList[measureUnit-1].dictLabel}}</text>
<text v-else>请选择</text>
<uni-icons type="right" size="20" color="#999"></uni-icons>
</view>
</picker>
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
商品类型
</view>
<view class="r ">
<picker mode="selector" :value="goodsType" range-key='name' :range="list" @change="typeChange">
<view class="picker u-flex u-col-center u-row-right">
<text v-if="goodsType">{{list[goodsType-1].name}}</text>
<text v-else>请选择</text>
<uni-icons type="right" size="20" color="#999"></uni-icons>
</view>
</picker>
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
地区
</view>
<view class="r ">
<picker mode="selector" :value="adcode" :range="list2" @change="addrChange">
<view class="picker u-flex u-col-center u-row-right">
<text v-if="adcode">{{adcode}}</text>
<text v-else>请选择</text>
<uni-icons type="right" size="20" color="#999"></uni-icons>
</view>
</picker>
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
经营主体名称
</view>
<view class="r u-flex u-col-center u-row-right">
<input type="text" v-model="companyname" placeholder="请输入">
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
联系人
</view>
<view class="r u-flex u-col-center u-row-right">
<input type="text" v-model="contact" placeholder="请输入">
</view>
</view>
<view class="item u-flex u-col-center u-row-between">
<view class="l">
联系人电话
</view>
<view class="r u-flex u-col-center u-row-right">
<input type="text" v-model="contactPhone" placeholder="请输入">
</view>
</view>
</view>
<view class="f-btn" @click="submit">
提交
</view>
</view>
</template>
<script>
import {
listProductCat
} from "@/api/xinfadiProduct/product";
import {
newPurchase,
newSales,
commodityCategory
} from '@/api/home.js'
import {
sysUnit
} from '@/api/dictionary.js'
export default {
data() {
return {
type: "",
adcode: '',
userId: "",
list: [],
list2: ['宜都市', '枝江市', '当阳市', '远安县', '兴山县', '秭归县', '长阳土家族自治县', '五峰土家族自治县', '夷陵区', '西陵区', '伍家岗区', '点军区',
'猇亭区', '其他'
],
contact: "",
companyname: "",
contactPhone: "",
goodsName: "",
goodsType: "",
measureUnit: "",
measureUnitList: [],
quantity: "",
}
},
onLoad(o) {
const user = uni.getStorageSync('user')
if (!user) {
uni.reLaunch({
url: '/pages/index/index'
})
} else {
this.userId = user.userId
}
this.type = o.type
console.log('this.userId', this.userId)
this.getData()
sysUnit().then(res => {
this.measureUnitList = res.data
})
},
onReady() {
uni.setNavigationBarTitle({
title: this.type == 0 ? '新增销售物品' : '新增需求物品'
});
},
methods: {
typeChange(e) {
let index = e.detail.value
this.goodsType = this.list[index].id
},
addrChange(e) {
let index = e.detail.value
this.adcode = this.list2[index]
},
measureChange(e) {
let index = e.detail.value
this.measureUnit = this.measureUnitList[index].dictValue
},
getData() {
commodityCategory().then(res => {
if (res.code == 200) {
res.data.forEach((item, index) => {
item.id = index + 1
})
this.list = res.data
} else {
uni.showToast({
title: res.msg,
icon: "none",
duration: 1500
});
}
})
},
submit() {
if (!this.goodsName) {
uni.showToast({
title: '请输入商品名称',
icon: "none",
duration: 1500
});
return
}
if (!this.contact) {
uni.showToast({
title: '请输入联系人',
icon: "none",
duration: 1500
});
return
}
if (!this.companyname) {
uni.showToast({
title: '请输入公司名',
icon: "none",
duration: 1500
});
return
}
if (!this.adcode) {
uni.showToast({
title: '请选择地区',
icon: "none",
duration: 1500
});
return
}
if (!this.goodsType) {
uni.showToast({
title: '请选择类型',
icon: "none",
duration: 1500
});
return
}
if (!this.contactPhone) {
uni.showToast({
title: '请输入手机号',
icon: "none",
duration: 1500
});
return
}
if (!this.measureUnit) {
uni.showToast({
title: '请输入单位规格',
icon: "none",
duration: 1500
});
return
}
if (!this.quantity) {
uni.showToast({
title: '请输入数量',
icon: "none",
duration: 1500
});
return
}
uni.showModal({
title: '温馨提示',
content: '确认要提交信息吗?',
success: (r) => {
if (r.confirm) {
console.log('用户点击确定');
// newPurchase ,newSales
// let url = this.type == 1?'/inventory/purchase_demand/addPurchase':'/inventory/sales_demand/addSales'
if (this.type == 0) {
newPurchase({
contact: this.contact,
companyname: this.companyname,
adcode: this.adcode,
contactPhone: this.contactPhone,
goodsName: this.goodsName,
goodsType: this.goodsType,
measureUnit: this.measureUnit,
quantity: this.quantity,
baseid: this.userId,
}).then(res => {
if (res.code == 200) {
uni.showToast({
title: '发布成功',
icon: "none",
duration: 1500
});
setTimeout(() => {
uni.navigateBack({
delta: 1
})
}, 1500)
} else {
uni.showToast({
title: res.msg,
icon: "none",
duration: 1500
});
}
console.log(res)
})
} else {
newSales({
contact: this.contact,
companyname: this.companyname,
address: this.address,
contactPhone: this.contactPhone,
goodsName: this.goodsName,
goodsType: this.goodsType,
measureUnit: this.measureUnit,
quantity: this.quantity,
baseid: this.userId,
}).then(res => {
if (res.code == 200) {
uni.showToast({
title: '发布成功',
icon: "none",
duration: 1500
});
setTimeout(() => {
uni.navigateBack({
delta: 1
})
}, 1500)
} else {
uni.showToast({
title: res.msg,
icon: "none",
duration: 1500
});
}
console.log(res)
})
}
} else if (r.cancel) {
console.log('用户点击取消');
}
}
});
},
}
}
</script>
<style lang="scss" scoped>
$color: #4892FD;
.container {
padding: 30rpx 30rpx 200rpx;
.f-btn {
position: fixed;
bottom: 60rpx;
left: 30rpx;
right: 30rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background-color: $color;
color: #fff;
font-size: 28rpx;
border-radius: 20rpx;
}
.list {
background-color: #fff;
border-radius: 20rpx;
padding: 10rpx 30rpx;
margin-bottom: 20rpx;
width: 100%;
.item3 {
padding: 20rpx 0;
.l {
line-height: 60rpx;
height: 60rpx;
font-size: 28rpx;
font-weight: bold;
color: #333333;
}
.r {
margin-top: 20rpx;
image {
width: 160rpx;
height: 160rpx;
}
}
}
.item2 {
.l {
padding: 20rpx 0;
font-size: 28rpx;
font-weight: bold;
color: #333333;
}
.r {
flex-wrap: wrap;
.i {
height: 50rpx;
line-height: 50rpx;
text-align: center;
padding: 0 20rpx;
border-radius: 8rpx;
margin: 15rpx 10rpx 0 0;
color: #666;
border: 2rpx solid #eee;
font-size: 24rpx;
}
.on {
border: 2rpx solid $color;
color: $color;
background-color: #EEF7FF;
}
}
}
.item {
padding: 20rpx 0;
border-bottom: 1rpx solid #eee;
&:last-child {
border-bottom: 0;
}
.l {
font-size: 28rpx;
font-weight: bold;
color: #333333;
line-height: 60rpx;
height: 60rpx;
width: 300rpx;
text {
color: #c33;
margin-left: 6rpx;
}
}
.r {
flex: 1;
width: 1rpx;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: right;
input {
flex: 1;
height: 100%;
font-size: 28rpx;
color: #333333;
}
image {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
overflow: hidden;
}
.i {
margin-left: 20rpx;
image {
width: 35rpx;
height: 35rpx;
}
text {
font-size: 24rpx;
color: #666;
margin-left: 10rpx;
}
.on {
color: $color;
}
}
text {
font-size: 24rpx;
color: #666;
margin-left: 10rpx;
}
}
}
}
}
</style>