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.

200 lines
5.8 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <template>
  2. <div class="full_continer">
  3. <div class="banner">
  4. <p>购买流程:&nbsp;&nbsp;&nbsp;1.选择模块 2.确认订单 3.支付 4.完成</p>
  5. </div>
  6. <div class="flux_continer">
  7. <orderSkeleton v-if="menuLoading" />
  8. <div class="content" v-else>
  9. <div class="top_desc">
  10. <h2>购买订单</h2>
  11. <p>团队名: 擎勤科技</p>
  12. </div>
  13. <div class="version">
  14. <h2>选择版本</h2>
  15. <div class="version_item">
  16. <div @click="selectVersion(item)" class="oItem" v-for="(item, index) in version" :key="index">
  17. <img :src='item.img'>
  18. <div class="desc">
  19. <p>{{item.name}}</p>
  20. <p>{{item.desc}}</p>
  21. </div>
  22. <i v-if="item.isChecked" class="select el-icon-success"></i>
  23. </div>
  24. </div>
  25. </div>
  26. <div class="version_all">
  27. <flag-ship ref="flagship" v-if="currentSelectVersion == '旗舰版'"></flag-ship>
  28. <enterprise ref="enterprise" :menus="menus" v-if="currentSelectVersion == '企业版'"></enterprise>
  29. </div>
  30. <el-button :loading="submitLoading" @click="submitOrder" size="larget" class="submit" type="primary">
  31. {{currentSelectVersion == '企业版' ? '提交订单' : '提交信息'}}
  32. </el-button>
  33. </div>
  34. </div>
  35. </div>
  36. </template>
  37. <script>
  38. //图标
  39. import EnterpriseVersionIcon from '@/assets/image/module/mo_enterprise.png'
  40. import FlagShipIcon from '@/assets/image/module/mo_flagship.png'
  41. //组件
  42. import FlagShip from './flagShip'
  43. import Enterprise from './enterprise'
  44. import orderSkeleton from './components/orderSkeleton'
  45. import {getAllMenuModule, getBuyMenuModule} from '@/api/mdp/sys/modules'
  46. import {modulesOfIcon} from "@/components/ModulesMenu/modulesOfIcon";
  47. import {createFlagShipOrder} from '@/api/mdp/sys/order';
  48. export default {
  49. components: {FlagShip, Enterprise, orderSkeleton},
  50. data() {
  51. return {
  52. version: [
  53. {
  54. name: '企业版',
  55. desc: '(10人起购)',
  56. isChecked: true,
  57. img: EnterpriseVersionIcon
  58. },
  59. {
  60. name: '旗舰版',
  61. desc: '(50人起购)',
  62. isChecked: false,
  63. img: FlagShipIcon
  64. }
  65. ],
  66. currentSelectVersion: '企业版',
  67. menuLoading: false,
  68. menus: null,
  69. submitLoading: false,
  70. }
  71. },
  72. methods: {
  73. selectVersion(item) {
  74. this.currentSelectVersion = item.name;
  75. this.version.forEach(element => {
  76. element.isChecked = false;
  77. if(item.name == element.name) {
  78. element.isChecked = true;
  79. }
  80. });
  81. },
  82. submitOrder() {
  83. //验证参数
  84. if(this.currentSelectVersion == "企业版") {
  85. let data = this.$refs.enterprise.getForm();
  86. //验证手机号是否填写
  87. if(data.phone == "" || data.phone == null || data.phone == undefined) {
  88. this.$message({
  89. message: '请输入手机号',
  90. type: 'warning'
  91. });
  92. return;
  93. }
  94. //验证是否同意服务协议
  95. if(!data.checked) {
  96. this.$message({
  97. message: '请先同意服务协议',
  98. type: 'warning'
  99. });
  100. return;
  101. }
  102. //保存购买模块信息到本地
  103. if(data.data.length <= 0) {
  104. this.$message({
  105. message: '请选择要购买的模块',
  106. type: 'warning'
  107. });
  108. return
  109. }
  110. window.localStorage.setItem("BUY_MODULES", undefined)
  111. window.localStorage.setItem("BUY_MODULES", JSON.stringify(data))
  112. this.$router.push('/my/order/create')
  113. }else {
  114. let flagData = this.$refs.flagship.getForm();
  115. flagData.then((res) => {
  116. //创建订单
  117. res.needs = JSON.stringify(res.needs);
  118. this.submitLoading = true;
  119. createFlagShipOrder(res).then(res => {
  120. if(res.data.tips.isOk){
  121. this.$message.success("信息已提交,稍后我们将会联系您");
  122. this.$refs.flagship.clearForm();
  123. }else{
  124. this.$message.error(res.data.tips.msg);
  125. }
  126. }).catch(err => {
  127. this.$message.error(err.msg);
  128. }).finally(() => {
  129. this.submitLoading = false;
  130. })
  131. }).catch(err => {
  132. })
  133. }
  134. },
  135. //获取所有模块
  136. getAllModules() {
  137. this.menuLoading = true
  138. getAllMenuModule({}).then(res => {
  139. let tempData = res.data.data;
  140. getBuyMenuModule({}).then(res2 => {
  141. let branchModules = res2.data.data;
  142. tempData.forEach(k => {
  143. branchModules.forEach(element => {
  144. k.isChecked = false;
  145. k.num = 10;
  146. if(k.id == element.moduleId) {
  147. k.isBuy = true;
  148. }
  149. });
  150. modulesOfIcon.forEach(element => {
  151. if(k.id == element.id) {
  152. k.logoUrl = element.logoUrl;
  153. }
  154. });
  155. })
  156. let xmMenus = tempData.filter(res => {return res.mcate == '2'})
  157. let oaMunus = tempData.filter(res => {return res.mcate == '1'})
  158. let mallMenus = tempData.filter(res => {return res.mcate == '3'})
  159. this.menus = {
  160. "xmgl": xmMenus,
  161. "oa" : oaMunus,
  162. "mall": mallMenus
  163. }
  164. })
  165. }).finally(() => this.menuLoading = false)
  166. }
  167. },
  168. created() {
  169. this.getAllModules();
  170. },
  171. }
  172. </script>
  173. <style lang="scss" scoped>
  174. @import './index.scss';
  175. </style>