forked from TALL/check-work
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
224 lines
5.9 KiB
224 lines
5.9 KiB
<!--
|
|
Copyright (c) 2020.
|
|
author: song
|
|
email: 15235360226@163.com
|
|
-->
|
|
|
|
<template>
|
|
<div class="inner">
|
|
<bread-crumb :arr="arr" class="pb-5 mb-5" />
|
|
<div class="white pa-5 mb-5 d-flex flex-nowrap align-center justify-space-between">
|
|
<div>
|
|
<span class="font-16 textColor">联系人:</span>
|
|
<a-input style="width:auto" v-model="name" />
|
|
</div>
|
|
<div>
|
|
<span class="font-16 textColor">联系电话:</span>
|
|
<a-input @change="onChange" style="width:auto" v-model="phone" />
|
|
</div>
|
|
<div>
|
|
<span class="font-16 textColor">公司名称:</span>
|
|
<a-input style="width:200px" v-model="company" />
|
|
</div>
|
|
</div>
|
|
<div class="cart-box" v-if="cart.lists && cart.lists.length>0">
|
|
<div
|
|
:key="list.id"
|
|
class="d-flex flex-column pa-5 white div-box mb-8"
|
|
v-for="list in cart.lists"
|
|
>
|
|
<p class="font-bold-20 title-color">{{ list.title }}</p>
|
|
<div
|
|
:key="index"
|
|
class="d-flex flex-nowrap flex-row mb-8"
|
|
v-for="(item, index) in list.list"
|
|
>
|
|
<img :src="item.src" class="cart-pic mr-8" />
|
|
<div class="flex-1 flex-column">
|
|
<p class="font-bold-20 title-color">{{ item.title }}</p>
|
|
<p class="font-14 textColor">{{ item.content }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex flex-row-reverse pb-10">
|
|
<a-button @click="handleSubmit" type="primary">提交</a-button>
|
|
<cart-model
|
|
:phone="phone"
|
|
:show-model="showModel"
|
|
@handleCancel="handleCancel"
|
|
@submitCart="submitCart"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapState, mapMutations, mapActions } from 'vuex';
|
|
import BreadCrumb from 'components/BreadCrumb/BreadCrumb.vue';
|
|
import CartModel from './CartModel.vue';
|
|
import { searchCar, carAndBuy } from 'config/api';
|
|
|
|
export default {
|
|
name: 'Cart',
|
|
components: { BreadCrumb, CartModel },
|
|
data() {
|
|
return {
|
|
arr: [{ name: '购物车', url: '' }],
|
|
name: '',
|
|
phone: '',
|
|
company: '',
|
|
cart: {
|
|
// id: 1,
|
|
// lists: [
|
|
// {
|
|
// id: 1,
|
|
// title: '服务',
|
|
// list: [
|
|
// {
|
|
// src: 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2059927486,2456161292&fm=26&gp=0.jpg',
|
|
// title: '检验检测服务',
|
|
// content: '用户填写的需求描述',
|
|
// },
|
|
// {
|
|
// src: 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2059927486,2456161292&fm=26&gp=0.jpg',
|
|
// title: '检验检测服务',
|
|
// content: '用户填写的需求描述',
|
|
// },
|
|
// ],
|
|
// },
|
|
// {
|
|
// id: 2,
|
|
// title: '设备',
|
|
// list: [
|
|
// {
|
|
// src: 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2059927486,2456161292&fm=26&gp=0.jpg',
|
|
// title: '检验检测服务',
|
|
// content: '用户填写的需求描述',
|
|
// },
|
|
// {
|
|
// src: 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2059927486,2456161292&fm=26&gp=0.jpg',
|
|
// title: '检验检测服务',
|
|
// content: '用户填写的需求描述',
|
|
// },
|
|
// ],
|
|
// },
|
|
// ],
|
|
},
|
|
showModel: false,
|
|
phoneRules: [
|
|
{ required: true, pattern: new RegExp(/^[1][3,4,5,6,7,8,9][0-9]{9}$/), whitespace: true, message: '请输入正确的手机号' },
|
|
],
|
|
};
|
|
},
|
|
|
|
computed: mapState('home', ['userSer']),
|
|
|
|
async created() {
|
|
await this.getData();
|
|
await this.getUserSer();
|
|
if (this.userSer) {
|
|
if (this.userSer.name) {
|
|
this.name = this.userSer.name;
|
|
}
|
|
if (this.userSer.phone) {
|
|
this.phone = this.userSer.phone;
|
|
}
|
|
if (this.userSer.companyName) {
|
|
this.company = this.userSer.companyName;
|
|
}
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
...mapMutations('home', []),
|
|
...mapActions('home', ['getUserSer']),
|
|
|
|
// 获取购物车列表
|
|
async getData() {
|
|
try {
|
|
const params = { param: { pageNum: 1, pageSize: 10 } };
|
|
const res = await searchCar(params);
|
|
const { data, msg, code } = res.data;
|
|
if (code === 200) {
|
|
this.cart = data;
|
|
}
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
},
|
|
|
|
// 电话变化
|
|
onChange(e) {
|
|
this.phone = e.target.value;
|
|
},
|
|
|
|
handleSubmit() {
|
|
if (this.userSer.phone !== this.phone) {
|
|
this.openModel();
|
|
} else {
|
|
this.submitCart();
|
|
}
|
|
},
|
|
|
|
// 提交
|
|
async submitCart(tel) {
|
|
try {
|
|
if (tel) {
|
|
this.phone = tel;
|
|
}
|
|
const { name, phone, company, cart } = this;
|
|
const ids = [];
|
|
ids.push(cart.id);
|
|
const params = {
|
|
param: {
|
|
contactName: company,
|
|
contactPhone: phone,
|
|
companyName: name,
|
|
ids,
|
|
},
|
|
};
|
|
const res = await carAndBuy(params);
|
|
const { data, msg, code } = res.data;
|
|
if (code === 200) {
|
|
this.$message.success('提交成功');
|
|
this.confirmLoading = false;
|
|
} else {
|
|
throw msg;
|
|
this.confirmLoading = false;
|
|
}
|
|
} catch (error) {
|
|
this.$message.error(error);
|
|
this.confirmLoading = false;
|
|
}
|
|
},
|
|
|
|
// 打开弹窗
|
|
openModel() {
|
|
this.showModel = true;
|
|
},
|
|
|
|
// 关闭弹窗
|
|
handleCancel() {
|
|
this.showModel = false;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="stylus">
|
|
.inner {
|
|
margin: 40px auto;
|
|
}
|
|
|
|
.cart-box {
|
|
.div-box {
|
|
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
|
|
}
|
|
|
|
.cart-pic {
|
|
width: 233px;
|
|
height: 128px;
|
|
}
|
|
}
|
|
</style>
|
|
|