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.
201 lines
5.8 KiB
201 lines
5.8 KiB
<template>
|
|
<div class="full_continer">
|
|
<div class="banner">
|
|
<p>购买流程: 1.选择模块 》2.确认订单 》 3.支付 》 4.完成</p>
|
|
</div>
|
|
|
|
<div class="flux_continer">
|
|
|
|
<orderSkeleton v-if="menuLoading" />
|
|
|
|
<div class="content" v-else>
|
|
<div class="top_desc">
|
|
<h2>购买订单</h2>
|
|
<p>团队名: 擎勤科技</p>
|
|
</div>
|
|
|
|
<div class="version">
|
|
<h2>选择版本</h2>
|
|
<div class="version_item">
|
|
<div @click="selectVersion(item)" class="oItem" v-for="(item, index) in version" :key="index">
|
|
<img :src='item.img'>
|
|
<div class="desc">
|
|
<p>{{item.name}}</p>
|
|
<p>{{item.desc}}</p>
|
|
</div>
|
|
<i v-if="item.isChecked" class="select el-icon-success"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="version_all">
|
|
<flag-ship ref="flagship" v-if="currentSelectVersion == '旗舰版'"></flag-ship>
|
|
<enterprise ref="enterprise" :menus="menus" v-if="currentSelectVersion == '企业版'"></enterprise>
|
|
</div>
|
|
|
|
<el-button :loading="submitLoading" @click="submitOrder" size="larget" class="submit" type="primary">
|
|
{{currentSelectVersion == '企业版' ? '提交订单' : '提交信息'}}
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
//图标
|
|
import EnterpriseVersionIcon from '@/assets/image/module/mo_enterprise.png'
|
|
import FlagShipIcon from '@/assets/image/module/mo_flagship.png'
|
|
//组件
|
|
import FlagShip from './flagShip'
|
|
import Enterprise from './enterprise'
|
|
import orderSkeleton from './components/orderSkeleton'
|
|
import {getAllMenuModule, getBuyMenuModule} from '@/api/mdp/sys/modules'
|
|
import {modulesOfIcon} from "@/components/ModulesMenu/modulesOfIcon";
|
|
import {createFlagShipOrder} from '@/api/mdp/sys/order';
|
|
|
|
export default {
|
|
components: {FlagShip, Enterprise, orderSkeleton},
|
|
data() {
|
|
return {
|
|
version: [
|
|
{
|
|
name: '企业版',
|
|
desc: '(10人起购)',
|
|
isChecked: true,
|
|
img: EnterpriseVersionIcon
|
|
},
|
|
{
|
|
name: '旗舰版',
|
|
desc: '(50人起购)',
|
|
isChecked: false,
|
|
img: FlagShipIcon
|
|
}
|
|
],
|
|
currentSelectVersion: '企业版',
|
|
menuLoading: false,
|
|
menus: null,
|
|
submitLoading: false,
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
selectVersion(item) {
|
|
this.currentSelectVersion = item.name;
|
|
this.version.forEach(element => {
|
|
element.isChecked = false;
|
|
if(item.name == element.name) {
|
|
element.isChecked = true;
|
|
}
|
|
});
|
|
},
|
|
|
|
submitOrder() {
|
|
//验证参数
|
|
if(this.currentSelectVersion == "企业版") {
|
|
let data = this.$refs.enterprise.getForm();
|
|
//验证手机号是否填写
|
|
if(data.phone == "" || data.phone == null || data.phone == undefined) {
|
|
this.$message({
|
|
message: '请输入手机号',
|
|
type: 'warning'
|
|
});
|
|
return;
|
|
}
|
|
|
|
//验证是否同意服务协议
|
|
if(!data.checked) {
|
|
this.$message({
|
|
message: '请先同意服务协议',
|
|
type: 'warning'
|
|
});
|
|
return;
|
|
}
|
|
|
|
//保存购买模块信息到本地
|
|
if(data.data.length <= 0) {
|
|
this.$message({
|
|
message: '请选择要购买的模块',
|
|
type: 'warning'
|
|
});
|
|
return
|
|
}
|
|
|
|
window.localStorage.setItem("BUY_MODULES", undefined)
|
|
window.localStorage.setItem("BUY_MODULES", JSON.stringify(data))
|
|
this.$router.push('/my/order/create')
|
|
}else {
|
|
let flagData = this.$refs.flagship.getForm();
|
|
flagData.then((res) => {
|
|
//创建订单
|
|
res.needs = JSON.stringify(res.needs);
|
|
this.submitLoading = true;
|
|
createFlagShipOrder(res).then(res => {
|
|
if(res.data.tips.isOk){
|
|
this.$message.success("信息已提交,稍后我们将会联系您");
|
|
this.$refs.flagship.clearForm();
|
|
}else{
|
|
this.$message.error(res.data.tips.msg);
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error(err.msg);
|
|
}).finally(() => {
|
|
this.submitLoading = false;
|
|
})
|
|
}).catch(err => {
|
|
|
|
})
|
|
|
|
}
|
|
},
|
|
|
|
//获取所有模块
|
|
getAllModules() {
|
|
this.menuLoading = true
|
|
getAllMenuModule({}).then(res => {
|
|
let tempData = res.data.data;
|
|
getBuyMenuModule({}).then(res2 => {
|
|
let branchModules = res2.data.data;
|
|
tempData.forEach(k => {
|
|
branchModules.forEach(element => {
|
|
k.isChecked = false;
|
|
k.num = 10;
|
|
if(k.id == element.moduleId) {
|
|
k.isBuy = true;
|
|
}
|
|
});
|
|
modulesOfIcon.forEach(element => {
|
|
if(k.id == element.id) {
|
|
k.logoUrl = element.logoUrl;
|
|
}
|
|
});
|
|
})
|
|
let xmMenus = tempData.filter(res => {return res.mcate == '2'})
|
|
let oaMunus = tempData.filter(res => {return res.mcate == '1'})
|
|
let mallMenus = tempData.filter(res => {return res.mcate == '3'})
|
|
this.menus = {
|
|
"xmgl": xmMenus,
|
|
"oa" : oaMunus,
|
|
"mall": mallMenus
|
|
}
|
|
})
|
|
}).finally(() => this.menuLoading = false)
|
|
}
|
|
|
|
},
|
|
|
|
created() {
|
|
this.getAllModules();
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import './index.scss';
|
|
</style>
|