|
|
@@ -79,8 +79,8 @@
|
|
|
</span>
|
|
|
</div>
|
|
|
<div class="button" ng-controller="GoodsPickUpCtrl">
|
|
|
- <button class="btn btn-default btn-primary" ng-click="addToCart(commodity, false, fragment.num, fragment.currency)">加入购物车</button>
|
|
|
- <button class="btn btn-default btn-now" ng-click="addToCart(commodity, true, fragment.num, fragment.currency)">立即购买</button>
|
|
|
+ <button class="btn btn-default btn-primary" @click="buyNow(false, commodity)">加入购物车</button>
|
|
|
+ <button class="btn btn-default btn-now" @click="buyNow(true, commodity)">立即购买</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="price-block">
|
|
|
@@ -114,7 +114,6 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-
|
|
|
function initFragment (commodity) {
|
|
|
if (!commodity) {
|
|
|
return {}
|
|
|
@@ -137,7 +136,8 @@ function initFragment (commodity) {
|
|
|
}
|
|
|
return fragment
|
|
|
}
|
|
|
-
|
|
|
+import axios from '~/plugins/axios'
|
|
|
+import {Message} from 'element-ui'
|
|
|
function getFragment (commodity, fragment) {
|
|
|
// 判断是否小于第一分段的起订量
|
|
|
if (commodity.prices[0].start > fragment.num) {
|
|
|
@@ -220,6 +220,108 @@ export default {
|
|
|
this.fragment.num = this.commodity.reserve
|
|
|
}
|
|
|
getFragment(this.commodity, this.fragment)
|
|
|
+ },
|
|
|
+ buyNow: function (isBuy, item) {
|
|
|
+ if (item) {
|
|
|
+ // this.$emit('buyAction', [{uuid: item.uuid, batchCode: item.batchCode, number: item.minBuyQty}])
|
|
|
+ if (isBuy) {
|
|
|
+ // this.$store.dispatch('user/getBuyInfo', [{uuid: item.uuid, batchCode: item.batchCode, number: item.minBuyQty}])
|
|
|
+ axios.post('trade/order/buyNow', [{uuid: item.uuid, batchCode: item.batchCode, number: this.fragment.num}])
|
|
|
+ .then(response => {
|
|
|
+ window.location.href = 'user#/order/pay/' + this.enidfilter(response.data.orderid)
|
|
|
+ }, err => {
|
|
|
+ console.log(err)
|
|
|
+ this.$http.get('/login/page').then(response => {
|
|
|
+ if (response.data) {
|
|
|
+ this.$router.push('/auth/login')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ // this.$store.dispatch('user/addCar', {uuid: item.uuid, batchCode: item.batchCode, number: item.minBuyQty})
|
|
|
+ axios.post('trade/cart/add', {uuid: item.uuid, batchCode: item.batchCode, number: this.fragment.num})
|
|
|
+ .then(response => {
|
|
|
+ console.log(response.data)
|
|
|
+ if (response.data.success) {
|
|
|
+ Message({
|
|
|
+ message: '添加购物车成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ Message.error(response.data.message)
|
|
|
+ // console.log(response.data.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // window.location.href = 'user#/order/pay/' + this.enidfilter(this.buy_info.orderid)
|
|
|
+ },
|
|
|
+ enidfilter: function (str) {
|
|
|
+ if (str) {
|
|
|
+ let encryptStr = '' // 最终返回的加密后的字符串
|
|
|
+ // 产生三位随机数
|
|
|
+ let num = ''
|
|
|
+ for (let i = 0; i < 3; i++) {
|
|
|
+ num += Math.floor(Math.random() * 10)
|
|
|
+ }
|
|
|
+ encryptStr += num // 产生3位随机数
|
|
|
+
|
|
|
+ // 16位加密
|
|
|
+ let tempspit = ''
|
|
|
+ let strspit = str.toString().toLowerCase()
|
|
|
+ if (strspit.match(/^[-+]?\d*$/) === null) { // 非整数字符,对每一个字符都转换成16进制,然后拼接
|
|
|
+ /**
|
|
|
+ * Unicode汉字、英文字母、数字的unicode范围
|
|
|
+ *汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
|
|
|
+ *数字:[0x30,0x39](或十进制[48, 57])
|
|
|
+ *小写字母:[0x61,0x7a](或十进制[97, 122])
|
|
|
+ *大写字母:[0x41,0x5a](或十进制[65, 90]
|
|
|
+ * 'a'的Unicode编码:'a',charCodeAt()的值是97
|
|
|
+ * '码'的Unicode编码:'\u7801', new String('码').charCodeAt()的值是30721,30721的16进制表示是7801
|
|
|
+ */
|
|
|
+ let s = strspit.split('')
|
|
|
+ for (let i = 0; i < s.length; i++) {
|
|
|
+ s[i] = s[i].charCodeAt() // 先转换成Unicode编码
|
|
|
+ s[i] = s[i].toString(16)
|
|
|
+ // 因为在服务器是每两位当做一个字符进行解析的,所以这里每个字符的Unicode编码范围必须在0——255之间。数字和大小写满足该要求,特殊字符则不一定,如果后续有特殊字符的要求,需要重写编码器和解码器
|
|
|
+ if (s[i].length === 1) {
|
|
|
+ s[i] = '0' + s[i]
|
|
|
+ }
|
|
|
+ tempspit = tempspit + s[i]
|
|
|
+ }
|
|
|
+ tempspit = tempspit + '{' + 1 // 1代表字符
|
|
|
+ } else { // 数字直接转换成16进制
|
|
|
+ strspit = parseInt(strspit)
|
|
|
+ .toString(16)
|
|
|
+ tempspit = strspit + '{' + 0 // 0代表纯数字
|
|
|
+ }
|
|
|
+
|
|
|
+ let temp = tempspit.split('{') // 对要加密的字符转换成16进制
|
|
|
+ let numLength = temp[0].length // 转换后的字符长度
|
|
|
+ numLength = numLength.toString(16) // 字符长度换算成16进制
|
|
|
+ if (numLength.length === 1) { // 如果是1,补一个0
|
|
|
+ numLength = '0' + numLength
|
|
|
+ } else if (numLength.length > 3) { // 转换后的16进制字符长度如果大于2位数,则返回,不支持
|
|
|
+ return ''
|
|
|
+ }
|
|
|
+ encryptStr += numLength
|
|
|
+ if (temp[1] === '0') {
|
|
|
+ encryptStr += 0
|
|
|
+ } else if (temp[1] === '1') {
|
|
|
+ encryptStr += 1
|
|
|
+ }
|
|
|
+ encryptStr += temp[0]
|
|
|
+ if (encryptStr.length < 20) { // 如果小于20位,补上随机数
|
|
|
+ // 产生三位随机数
|
|
|
+ let numtwo = ''
|
|
|
+ for (let i = 0; i < 20 - encryptStr.length; i++) {
|
|
|
+ numtwo += Math.floor(Math.random() * 10)
|
|
|
+ }
|
|
|
+ let ran = numtwo // 产生3位随机数
|
|
|
+ encryptStr += ran
|
|
|
+ }
|
|
|
+ return encryptStr
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|