import request from '@/utils/request' // 传通讯服务器参数 export default { install (Vue) { // 用于生成传通讯服务器参数。 // 传入参数 // 1)type:11查询;12增删改,必须 // 2)name:存储过程名,必须 // 3)data:存储过程参数名和对应值,例如: // param[0] = ['设备类型编码', '3', 'string', '0'] // param[1] = ['output', '3', 'int', '1'],必须 // 数组里四个分别对应:存储过程参数名(必须);存储过程参数值(必须);参数类型(若是output必须);参数是否为output(0否1是) // 4)pageSize,pageList:分页使用,可选 // 旧通讯格式 Vue.prototype.CreateData1 = function (type, name, data, pageSize, pageList) { var paramStr = '' var paramarray = [] if (type === '7') { data.map(v => { pageSize.map(h => { const val = h.toString() if (!v[val]) { this.$set(v, val, '') } }) }) paramStr = data } else { if (data !== undefined) { for (let i = 0; i < data.length; i++) { paramarray.push({ name: data[i][0], value: data[i][1], type: data[i][2], output: data[i][3] }) } paramStr = JSON.stringify(paramarray) } } var obj = [] obj[0] = {} obj[0].type = type obj[0].name = name obj[0].param = paramStr obj[0].pageSize = pageSize obj[0].pageList = pageList var numn = JSON.stringify(obj[0]) return numn } // 新通讯格式 Vue.prototype.CreateData = (cmd, tbname, fieldshow, other) => { const Param = JSON.stringify({ cmd, tbname, fieldshow, ...other }) const data = { type: 3001, Param, Name: '', Pagination: '', UserID: '', HasReturn: false } return JSON.stringify(data) } // 新通讯11/12---< Vue.prototype.ExecDatabase = function (num) { return request({ url: '', method: 'post', data: num }) } // 设置字段宽度 Vue.prototype.setColumnWidth = function (str) { let columnWidth = 0 if (str === '日期') { columnWidth = 100 } else if (str === '工单号' || str === '产品名称') { columnWidth = 160 } else if (str === '规则型号' || str === '产品编号') { columnWidth = 150 } else if (str === '大数') { columnWidth = 110 } else if (str === '状态') { columnWidth = 100 } else if (str === '序号') { columnWidth = 60 } else if (str === '单位') { columnWidth = 60 } else if (str === '数量' || str === '库存') { columnWidth = 80 } else if (str === '单价') { columnWidth = 90 } else if (str === '金额') { columnWidth = 120 } else if (str === '状态' || str === '类型' || str === '选入' || str === '选出') { columnWidth = 80 } else if (str === '付款方式') { columnWidth = 100 } else if (str === '买方' || str === '买方名称') { columnWidth = 150 } else if (str === '外协厂家' || str === '调入仓库' || str === '调出仓库') { columnWidth = 150 } else if (str === '姓名') { columnWidth = 80 } else if (str === '日期时间') { columnWidth = 140 } else if (str === '工序') { columnWidth = 80 } else if (str === '物料名称' || str === '工件名称' || str === '零件名称') { columnWidth = 140 } else if (str === '图号或型号' || str === '规格' || str === '零件图号' || str === '图号' || str === '图号/型号') { columnWidth = 120 } else if (str === '物料编码' || str === '物料编号') { columnWidth = 120 } else if (str === '材料') { columnWidth = 80 } else if (str === '仓位' || str === '库位') { columnWidth = 90 } else if (str === '品名/规格/型号') { columnWidth = 140 } else if (str === '备注') { columnWidth = 120 } else if (str === '工序名称') { columnWidth = 150 } else if (str === '工序说明') { columnWidth = 300 } else if (str === '加工工时M' || str === '加工时长H' || str === '加工时长M') { columnWidth = 90 } else if (str === '加工设备') { columnWidth = 130 } else if (str === '产品详情' || str === '详情') { columnWidth = 340 } else if (str === '最低库存') { columnWidth = 110 } else if (str === '本次到货数' || str === '本次入库' || str === '补货数') { columnWidth = 100 } else { columnWidth = 110 } return columnWidth } } } export function getNowTime2() { const date = new Date() const month = zeroFill2(date.getMonth() + 1) const day = zeroFill(date.getDate()) const time = date.getFullYear() + '-' + month + '-' + day return time } function zeroFill2(i) { if (i >= 0 && i <= 9) { if (i === 0) { return '01' } else { return '0' + i } } else { return i } } export function getBeforeOrAfterTime(AddDayCount) { var dd = new Date() dd.setDate(dd.getDate() + AddDayCount)// 获取AddDayCount天后的日期 var y = dd.getFullYear() var m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1)// 获取当前月份的日期,不足10补0 var d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()// 获取当前几号,不足10补0 return y + '-' + m + '-' + d } // 数组去重s export function arrayUnique (arr) { arr.filter((element, index, arr) => { return arr.indexOf(element) === index }) } // 时间转时间戳 export function timeToStamp (time) { const date = new Date(time) return date.getTime() } // 数组的深度拷贝 export function arrDeepCopy (arr) { const newArr = [] for (const prop in arr) newArr[prop] = typeof arr[prop] === 'object' ? arrDeepCopy(arr[prop]) : arr[prop] return newArr } // 对象的深度拷贝 export function objDeepCopy (obj) { const newObj = {} for (const prop in obj) newObj[prop] = typeof obj[prop] === 'object' ? objDeepCopy(obj[prop]) : obj[prop] return newObj } function zeroFill (i) { if (i >= 0 && i <= 9) { return '0' + i } else { return i } } // 获取当前日期时间 export function getNowTime () { const date = new Date() const month = zeroFill(date.getMonth() + 1) const day = zeroFill(date.getDate()) const hour = zeroFill(date.getHours()) const minute = zeroFill(date.getMinutes()) const second = zeroFill(date.getSeconds()) const time = date.getFullYear() + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second return time } export function formatDate(date) { const month = zeroFill2(date.getMonth() + 1) const day = zeroFill(date.getDate()) const time = date.getFullYear() + '-' + month + '-' + day return time//时间戳转日期格式 } // 获取当前日期 export function getNowDate () { const date = new Date() const month = zeroFill(date.getMonth() + 1) const day = zeroFill(date.getDate()) const time = date.getFullYear() + '-' + month + '-' + day return time } // 获取当前时间 export function getNowDate1 () { const date = new Date() const hour = zeroFill(date.getHours()) const minute = zeroFill(date.getMinutes()) const second = zeroFill(date.getSeconds()) const time = hour + ':' + minute + ':' + second return time } // 每月1号 export function getTime1 () { const date = new Date() const month = zeroFill(date.getMonth() + 1) const time = date.getFullYear() + '-' + month + '-' + '01' return time } // 工时统计上个月26-本月25 export function getTime26 () { const date = new Date() const day = date.getDate() if (day > 25) { var month = zeroFill(date.getMonth() + 1) if (month === 0) { month = 12 const day = 26 const time = date.getFullYear() - 1 + '-' + month + '-' + day return time } else { const day = 26 const time = date.getFullYear() + '-' + month + '-' + day return time } } else { var month2 = zeroFill(date.getMonth() + 1) - 1 if (month2 === 0) { month2 = 12 const day = 26 const time = date.getFullYear() - 1 + '-' + month2 + '-' + day return time } else { const day = 26 const time = date.getFullYear() + '-' + month2 + '-' + day return time } } } export function getTime25 () { const date = new Date() const day = date.getDate() var time if (day > 25) { const month = zeroFill(date.getMonth() + 2) const day2 = 25 if (month === 13) { const month = 1 time = (date.getFullYear() + 1) + '-' + month + '-' + day2 } else { time = date.getFullYear() + '-' + month + '-' + day2 } return time } else { const month = zeroFill(date.getMonth() + 1) const day2 = 25 if (month === 13) { const month = 1 time = (date.getFullYear() + 1) + '-' + month + '-' + day2 } else { time = date.getFullYear() + '-' + month + '-' + day2 } return time } } // 判断类型 export function type (target) { const ret = typeof (target) const template = { '[object Array]': 'array', '[object Object]': 'object', '[object String]': 'string - object', '[object Number]': 'Number - object', '[object Boolean]': 'Boolean - object' } if (target === null) { return 'null' } if (ret === 'object') { const str = Object.prototype.toString.call(target) return template[str] } else { return ret } } export function SectionToChinese (section) { const chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'] const chnUnitChar = ['', '十', '百', '千'] let strIns = '' let chnStr = '' let unitPos = 0 let zero = true while (section > 0) { const v = section % 10 if (v === 0) { if (!zero) { zero = true chnStr = chnNumChar[v] + chnStr } } else { zero = false strIns = chnNumChar[v] strIns += chnUnitChar[unitPos] chnStr = strIns + chnStr } unitPos++ section = Math.floor(section / 10) } return chnStr } export function sleep (time) { return new Promise(resolve => { setTimeout(resolve, time) }) } export function groupBy (datas, keys) { const list = datas || [] const groups = [] const result = [] list.forEach(v => { const key = {} keys.forEach(k => { key[k] = v[k] }) let group = groups.find(v => { return v._key === JSON.stringify(key) }) if (!group) { group = { _key: JSON.stringify(key), key: key } groups.push(group) } group.data1 = group.data1 || 0 group.key.数量 = group.data1 += v.数量 group.data2 = group.data2 || '' group.key.机床图号_组号 = group.data2 += (v.机床图号 || '') + '-' + (v.组号 ? v.组号.split('组')[0] : '') + ';' }) groups.map(v => { result.push(v.key) }) return result } /** * Base64字符串转File文件 * @param {String} dataurl Base64字符串(字符串包含Data URI scheme,例如:data:image/png;base64, ) * @param {String} filename 文件名称 */ export function dataURLtoFile(dataurl, filename) { const arr = dataurl.split(',') const mime = arr[0].match(/:(.*?);/)[1] const bstr = atob(arr[1]) let n = bstr.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], filename, { type: mime }) } export function base64ImgtoFile(dataurl, filename = 'file', suffix) { // 将base64格式分割:['data:image/png;base64','XXXX'] // const arr = dataurl.split(',') // // .*? 表示匹配任意字符到下一个符合条件的字符 刚好匹配到: // // image/png // const mime = arr[0].match(/:(.*?);/)[1] // image/png // // [image,png] 获取图片类型后缀 // const suffix = mime.split('/')[1] // png const bstr = atob(dataurl) // atob() 方法用于解码使用 base-64 编码的字符串 let n = bstr.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], `${filename}.${suffix}`) } export function base64ToPdfUrl(content, type, fileName) { const bstr = atob(content) let n = bstr.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } // 确定解析格式,可能可以变成img,没有深入研究 const blob = new Blob([u8arr], { type: 'application/pdf;chartset=UTF-8' }) return window.URL.createObjectURL(blob) }