Bläddra i källkod

批量发布验收修改

yangc 8 år sedan
förälder
incheckning
d3b08ef078

+ 17 - 59
components/applyPurchase/BatchPublish.vue

@@ -182,53 +182,7 @@
   </div>
 </template>
 <script>
-  let getRealLen = function (str) {
-    let len = 0
-    for (let i = 0; i < str.length; i++) {
-      if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
-        len += 2
-      } else {
-        len++
-      }
-    }
-    return len
-  }
-  let cutOutString = function (str, length) {
-    for (let i = 1; i <= str.length; i++) {
-      if (getRealLen(str.substr(0, i)) > length) {
-        str = str.substr(0, i - 1)
-        break
-      }
-    }
-    return str
-  }
-  let formatDate = function (date, fmt) {
-    if (!date) {
-      return null
-    }
-    if (typeof date === 'string') {
-      date = new Date(Date.parse(date.replace(/-/g, '/')))
-    }
-    let o = {
-      'M+': date.getMonth() + 1, // 月份
-      'd+': date.getDate(), // 日
-      'h+': 23, // 小时
-      'm+': 59, // 分
-      's+': 59, // 秒
-      'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
-      'S': date.getMilliseconds() // 毫秒
-    }
-    if (/(y+)/.test(fmt)) {
-      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
-    }
-    for (let k in o) {
-      if (new RegExp('(' + k + ')').test(fmt)) {
-        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
-      }
-    }
-    return fmt
-  }
-  import { enidfilter } from '~utils/baseUtils'
+  import { enidfilter, getRealLen, cutOutString, formatDate } from '~utils/baseUtils'
   import Page from '~components/common/page/pageComponent.vue'
   export default {
     data () {
@@ -639,12 +593,14 @@
         if ((/[^\x00-\xff]/g).test(this.modifyObj.brand)) {
           let chineseIndex = -1
           for (let i = 0; i < this.modifyObj.brand.length; i++) {
-            if ((/[^\x00-\xff]/g).test(this.modifyObj.brand.charAt(i))) {
+            if ((/[^\x00-\xff]/g).test(this.modifyObj.brand.charAt(i)) && !(/[\u4e00-\u9fa5]/).test(this.modifyObj.brand.charAt(i))) {
               chineseIndex = i
               break
             }
           }
-          this.modifyObj.brand = cutOutString(this.modifyObj.brand, chineseIndex)
+          if (chineseIndex > -1) {
+            this.modifyObj.brand = this.modifyObj.brand.substring(0, chineseIndex)
+          }
         } else if (this.modifyObj.brand && getRealLen(this.modifyObj.brand) > 50) {
           this.modifyObj.brand = cutOutString(this.modifyObj.brand, 50)
         } else {
@@ -1053,8 +1009,8 @@
             > ul {
               line-height: normal;
               position: absolute;
-              top: 49px;
-              left: 40px;
+              top: 48px;
+              left: 12px;
               background: #fff;
               border: 1px solid #b5b5b5;
               z-index: 1;
@@ -1077,8 +1033,7 @@
                 }
               }
               &.brand-similar-list {
-                left: 34px;
-                width: 94px;
+                left: 7px;
               }
             }
             > div {
@@ -1100,10 +1055,10 @@
                 border-radius: 2px;
                 & + ul {
                   width: 145px;
-                  top: 49px;
-                  left: 18px;
+                  top: 48px;
+                  left: 12px;
                   &.brand-word-list {
-                    left: 13px;
+                    left: 7px;
                   }
                 }
               }
@@ -1175,15 +1130,15 @@
                             margin: 0 auto;
                             span {
                               width: 17px;
-                              height: 26px;
+                              height: 27px;
                               background: #4290f7;
-                              line-height: 26px;
+                              line-height: 27px;
                               color: #fff;
                               display: inline-block;
                               font-size: 16px;
                               vertical-align: middle;
                               position: absolute;
-                              top: 11px;
+                              top: 12px;
                               cursor: pointer;
                               &.not-allowed {
                                 cursor: not-allowed;
@@ -1197,6 +1152,9 @@
                               width: 80px;
                               height: 26px;
                               text-align: center;
+                              line-height: normal;
+                              vertical-align: middle;
+                              outline: none;
                             }
                           }
                         }

+ 1 - 43
components/applyPurchase/PublishApply.vue

@@ -143,49 +143,7 @@
   </div>
 </template>
 <script>
-  let getRealLen = function (str) {
-    let len = 0
-    for (let i = 0; i < str.length; i++) {
-      if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
-        len += 2
-      } else {
-        len++
-      }
-    }
-    return len
-  }
-  let cutOutString = function (str, length) {
-    for (let i = 1; i <= str.length; i++) {
-      if (getRealLen(str.substr(0, i)) > length) {
-        str = str.substr(0, i - 1)
-        break
-      }
-    }
-    return str
-  }
-  let formatDate = function (date, fmt) {
-    if (typeof date === 'string') {
-      date = new Date(Date.parse(date.replace(/-/g, '/')))
-    }
-    let o = {
-      'M+': date.getMonth() + 1, // 月份
-      'd+': date.getDate(), // 日
-      'h+': 23, // 小时
-      'm+': 59, // 分
-      's+': 59, // 秒
-      'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
-      'S': date.getMilliseconds() // 毫秒
-    }
-    if (/(y+)/.test(fmt)) {
-      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
-    }
-    for (let k in o) {
-      if (new RegExp('(' + k + ')').test(fmt)) {
-        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
-      }
-    }
-    return fmt
-  }
+  import { getRealLen, cutOutString, formatDate } from '~utils/baseUtils'
   export default {
     data () {
       return {

+ 3 - 73
components/common/buyOrCar/buyComponent.vue

@@ -6,6 +6,7 @@
 </template>
 
 <script>
+  import { enidfilter } from '~utils/baseUtils'
   export default {
     props: ['item', 'disabledFlag'],
     methods: {
@@ -30,19 +31,17 @@
                 minPackQty: this.item.minPackQty
               }])
                 .then(response => {
-          //        window.location.href = '/user#/order/pay/' + this.enidfilter(response.data.orderid)
                   if (response.data.success) {
                     if (response.data.message) {
                       this.$message({
                         message: response.data.message,
                         type: 'success'
                       })
-                      let _self = this
                       window.setTimeout(function () {
-                        window.location.href = '/user#/order/pay/' + _self.enidfilter(response.data.data.orderid)
+                        window.location.href = '/user#/order/pay/' + enidfilter(response.data.data.orderid)
                       }, 1000)
                     } else {
-                      window.location.href = '/user#/order/pay/' + this.enidfilter(response.data.data.orderid)
+                      window.location.href = '/user#/order/pay/' + enidfilter(response.data.data.orderid)
                     }
                   } else {
                     if (response.data.data && response.data.data.unvailable === 1) {
@@ -58,7 +57,6 @@
                   }
                 })
             } else {
-              // this.$store.dispatch('user/addCar', {uuid: item.uuid, batchCode: item.batchCode, number: item.minBuyQty})
               this.$http.post('trade/cart/add', {
                 uuid: this.item.uuid,
                 batchCode: this.item.batchCode,
@@ -94,74 +92,6 @@
             }
           }
         }
-        // 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编码:'&#97;',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
-        }
       }
     }
   }

+ 1 - 20
components/mobile/share/store/StoreHeader.vue

@@ -12,26 +12,7 @@
   </div>
 </template>
 <script>
-  let getRealLen = function (str) {
-    let len = 0
-    for (let i = 0; i < str.length; i++) {
-      if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
-        len += 2
-      } else {
-        len++
-      }
-    }
-    return len
-  }
-  let cutOutString = function (str, len) {
-    for (let i = 1; i <= str.length; i++) {
-      if (getRealLen(str.substr(0, i)) > len) {
-        str = str.substr(0, i - 1)
-        break
-      }
-    }
-    return str
-  }
+  import { getRealLen, cutOutString } from '~utils/baseUtils'
   export default {
     computed: {
       storeInfo () {

+ 3 - 73
components/store/CommodityInfo.vue

@@ -167,7 +167,7 @@
       }
     }
   }
-
+  import { enidfilter } from '~utils/baseUtils'
   export default {
     name: 'commodity-info',
     data () {
@@ -380,19 +380,17 @@
                 minPackQty: item.minPackQty
               }])
                 .then(response => {
-                  //        window.location.href = '/user#/order/pay/' + this.enidfilter(response.data.orderid)
                   if (response.data.success) {
                     if (response.data.message) {
                       this.$message({
                         message: response.data.message,
                         type: 'success'
                       })
-                      let _self = this
                       window.setTimeout(function () {
-                        window.location.href = '/user#/order/pay/' + _self.enidfilter(response.data.data.orderid)
+                        window.location.href = '/user#/order/pay/' + enidfilter(response.data.data.orderid)
                       }, 1000)
                     } else {
-                      window.location.href = '/user#/order/pay/' + this.enidfilter(response.data.data.orderid)
+                      window.location.href = '/user#/order/pay/' + enidfilter(response.data.data.orderid)
                     }
                   } else {
                     if (response.data.data && response.data.data.unvailable === 1) {
@@ -442,74 +440,6 @@
             }
           }
         }
-        // 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编码:'&#97;',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
-        }
       },
       toAttach: function (url) {
         if (this.user.logged) {

+ 3 - 71
components/store/RecommendProduct.vue

@@ -34,6 +34,7 @@
 </template>
 <script>
   import Buy from '~components/common/buyOrCar/buyComponent.vue'
+  import { enidfilter } from '~utils/baseUtils'
   export default {
     name: 'recommend-product',
     components: {
@@ -97,19 +98,17 @@
                 minPackQty: item.minPackQty ? item.minPackQty : item.minBuyQty
               }])
                 .then(response => {
-                  //        window.location.href = '/user#/order/pay/' + this.enidfilter(response.data.orderid)
                   if (response.data.success) {
                     if (response.data.message) {
                       this.$message({
                         message: response.data.message,
                         type: 'success'
                       })
-                      let _self = this
                       window.setTimeout(function () {
-                        window.location.href = '/user#/order/pay/' + _self.enidfilter(response.data.data.orderid)
+                        window.location.href = '/user#/order/pay/' + enidfilter(response.data.data.orderid)
                       }, 1000)
                     } else {
-                      window.location.href = '/user#/order/pay/' + this.enidfilter(response.data.data.orderid)
+                      window.location.href = '/user#/order/pay/' + enidfilter(response.data.data.orderid)
                     }
                   } else {
                     if (response.data.data && response.data.data.unvailable === 1) {
@@ -159,73 +158,6 @@
             }
           }
         }
-      },
-      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编码:'&#97;',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
-        }
       }
     }
   }

+ 1 - 0
pages/applyPurchase/_id.vue

@@ -6,6 +6,7 @@
 <script>
   import { BatchPublish } from '~components/applyPurchase'
   export default {
+    middleware: 'authenticated',
     components: {
       BatchPublish
     },

+ 55 - 0
utils/baseUtils.js

@@ -1,3 +1,16 @@
+let getRealLength = function (str) {
+  let len = 0
+  for (let i = 0; i < str.length; i++) {
+    if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
+      len += 2
+    } else {
+      len++
+    }
+  }
+  return len
+}
+
+// 订单号转换
 export const enidfilter = (str) => {
   if (str) {
     let encryptStr = '' // 最终返回的加密后的字符串
@@ -65,3 +78,45 @@ export const enidfilter = (str) => {
     return encryptStr
   }
 }
+
+// 获取字符串字符长度
+export const getRealLen = getRealLength
+
+// 根据字符长度剪切字符
+export const cutOutString = (str, length) => {
+  for (let i = 1; i <= str.length; i++) {
+    if (getRealLength(str.substr(0, i)) > length) {
+      str = str.substr(0, i - 1)
+      break
+    }
+  }
+  return str
+}
+
+// 格式化日期,返回字符串
+export const formatDate = (date, fmt) => {
+  if (!date) {
+    return null
+  }
+  if (typeof date === 'string') {
+    date = new Date(Date.parse(date.replace(/-/g, '/')))
+  }
+  let o = {
+    'M+': date.getMonth() + 1, // 月份
+    'd+': date.getDate(), // 日
+    'h+': 23, // 小时
+    'm+': 59, // 分
+    's+': 59, // 秒
+    'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
+    'S': date.getMilliseconds() // 毫秒
+  }
+  if (/(y+)/.test(fmt)) {
+    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
+  }
+  for (let k in o) {
+    if (new RegExp('(' + k + ')').test(fmt)) {
+      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
+    }
+  }
+  return fmt
+}