当前位置: 首页 > news >正文

华为网站搭建网页设计一般多少钱

华为网站搭建,网页设计一般多少钱,网站开发及流行框架,网站的第二域名怎么用这是在vue2项目中使用到的#xff0c;偶尔同一个方法2和3在写法上会有些区别改动#xff0c;不然就报错 import { downFile, postDownFile} from /utils/request import { MessageBox } from element-ui;/*** 输入框判空* param {*} str * returns */ export function getTe…这是在vue2项目中使用到的偶尔同一个方法2和3在写法上会有些区别改动不然就报错 import { downFile, postDownFile} from /utils/request import { MessageBox } from element-ui;/*** 输入框判空* param {*} str * returns */ export function getText(str) {return str.replace(/nbsp;/gi, ) // 将所有 空格 replace .replace(/[^br/]/g, ) // 将所有 换行符 replace } export function isNull(str) {if (str ) return truevar regu ^[ ]$var re new RegExp(regu)return re.test(str) }/*** 判断是否为中文* param {*} str * returns */ export function rulesCN(str) {let reg/^[\u4E00-\u9FA5]$/if(reg.test(str)) {// 中文return true}else {return false} }/*** 判断是否为英文* param {*} str * returns */ export function rulesEN(str) {let reg/[^a-zA-Z]/gif(!reg.test(str)) {// 英文return true}else {return false} }/*** 去掉空格* param {*} str * returns */ export function removeTrim(str) {str str.replaceAll( , )return str }/*** 去掉中文和括号* param {*} strValue * returns */ export function removeChinese(strValue) { if(strValue! null strValue ! ){ var reg /[\u4e00-\u9fa5]/g; return strValue.replace(reg, ).replace(/\|/g,) } else return ; }/*** 判空* param {*} val * returns */ export const isEmpty (val) {if(val || val {} || val [] || val null || val undefined) {return false}else {return true} }/*** 当前zoom* returns */ export const zoom () {let zoom document.getElementsByTagName(body)[0].style.zoomreturn zoom }/*** 设置菜单高亮* param {class类名} className * param {菜单路由} path */ export function MenuHighlight(className, path) {let menuItem document.getElementsByClassName(className)[0].childNodesfor(let i 0; i menuItem.length; i) {if(path.indexOf(menuItem[i].dataset.path) -1) {menuItem[i].setAttribute(class, el-menu-item is-active)}else {menuItem[i].setAttribute(class, el-menu-item)}} }/*** 下载文件* param {接口地址} url * param {入参} parameter * param {文件名} fileName * returns */ export function downloadFile(url, parameter, fileName) {return downFile(url, parameter).then((data) {if (!data || data.size 0) { // 如果接口没有返回数据就提示下载失败this.$message.warning(存在异常数据文件导出失败)return }// window.navigator.msSaveBlob是显示保存按钮if (typeof window.navigator.msSaveBlob ! undefined) {window.navigator.msSaveBlob(new Blob([data]), fileName)return } else {let url window.URL.createObjectURL(new Blob([data]))let link document.createElement(a)link.style.display nonelink.href urllink.setAttribute(download, fileName)document.body.appendChild(link)link.click()document.body.removeChild(link) // 下载完成移除元素window.URL.revokeObjectURL(url) // 释放掉blob对象return}}).catch(err {this.$message.error(存在异常数据文件导出失败)}) }/*** 将树形结构数据转换为级联要求的字段* param tree* param map* returns*/ export const converTree (tree, map {label: name,value: id,children: children }) {const result [];tree.forEach((item) {let value item[ map.value ];let label item[ map.label ];let children item[ map.children ];if (children) {children converTree(children, map);}result.push({ value, label, children });})return result }/*** 将后台数据转换为树形结构* param pid* param arr* returns*/ export const getTrees (pid, arr) {return arr.filter((item) item.parentId pid).map((item) {// item.children getTrees(item.id, arr)let newArr getTrees(item.id, arr)if(Array.isArray(newArr ) newArr.length0){item.children newArr}return item}) }/*** 判断是否文本溢出* param e 事件对象* returns*/ export const isBeyond (e) {const ev window.event || e;const textRange (el) {const textContent elconst targetW textContent.getBoundingClientRect().widthconst range document.createRange()range.setStart(textContent, 0)range.setEnd(textContent, textContent.childNodes.length)const rangeWidth range.getBoundingClientRect().widthreturn rangeWidth targetW}return !textRange(ev.target) }/**** param {*} form_key* param {*} form_data*/ export const mapKey (form_key, form_data ) {let form_bk {}Object.keys(form_key).forEach(key {form_bk[key] form_data[key]})return form_bk }// 确认删除提示框 export const confirmDel (callback) {MessageBox.confirm(是否确认删除?,提示,{confirmButtonText: 确认,cancelButtonText: 取消,type: warning,}).then(() {callback()}) }/*** 高亮表格搜索列* param {表格列} tableColumns* param {搜索参数} params* returns*/ export const handleHighLight (tableColumns,params) {// 去除其他列的高亮tableColumns.forEach(item {if (item.className?.includes(is-active)) {let arr item.className.split( )item.className arr[0]}})// 高亮当前搜索列if (params.value ! ) {tableColumns.forEach(item {if (item.className params.field) {item.className params.field is-active}})} }/*** 删除数组中指定对象* param {数组} arr* param {对象中匹配的key} key* returns*/ export const removeObjWithArr (arr,key) {arr.forEach((item,index,array){if(item.key key){array.splice(index,1)}}) }/*** 判断数据中是否存在某个对象* param {数组} arr* param {对象中的key} key* param {跟key比对的值} val* returns*/ export const findItem (arr,key,val) {for(let i 0; i arr.length; i) {if(arr[i][key] val) {return i}}return -1 }/*** 比对下拉数据* param {*} list * param {*} type * returns */ export const compare (list, type) {let cnName list?.forEach((i) {if(i.type type) {cnName i.name}})return cnName }/*** 多维数组去重* param {*} list * param {*} type * returns */ export const handleUnique (arr) {// 因对象特别分出数组中的对象单独去重let objArr arr.filter((item) {return Object.prototype.toString.call(item) [object Object];});let otherTypeArr arr.filter((item) {return Object.prototype.toString.call(item) ! [object Object];});// 数组及简单类型处理let obj {};otherTypeArr otherTypeArr.filter((item, index) {let newItem item JSON.stringify(item);return obj.hasOwnProperty(newItem) ? false : (obj[newItem] true);});// 对象类型处理if (objArr.length ! 0) {// 将数组对象转成数组字符串var objToStrArr [];var keyArr [];var key ;var currentObj {};var currentStr ;objArr.forEach(item {// 对象属性排序keyArr [];for (key in item) {keyArr.push(key);}keyArr.sort(); // 降序currentObj {};keyArr.forEach(ele {currentObj[ele] item[ele];})currentStr JSON.stringify(currentObj);// 去除空格及\t空白字符currentStr currentStr.replace(/(\s|[\\t])/g, );objToStrArr.push(currentStr);})objToStrArr.sort();var tmepArr [];// 数组去重objToStrArr.forEach((item, i) {if (item ! tmepArr[tmepArr.length - 1]) {tmepArr.push(item);}})var resultArr [];// 新数组字符串转成数组对象tmepArr.forEach((item) {resultArr.push(JSON.parse(item));})objArr resultArr;}return [...otherTypeArr, ...objArr]; }这是在vue3项目中用到的 import router from /router/indexexport function pick(obj, arr) {return arr.reduce((iter, val) (val in obj (iter[val] obj[val]), iter),{}); }/*** 节流* param {function} fn* param {number} delay* returns {function}*/export function throttle(fn, delay) {let flag true;return function () {// 等上次执行结束if (!flag) return;flag false;fn();setTimeout(() {flag true;}, delay);}; }/*** 判空* param val * returns */ export function isEmpty(val: any) {if(val || val {} || val {} || val [] || val [] || val null || val undefined) {return true}else {return false} }/*** 过滤对象中多余属性后赋值* param formKey 被赋值数据* param row 赋值数据*/ export function filterKey(formKey: Object, row: Object ) {Object.keys(formKey).forEach((key: string) {formKey[key] row[key]}) }/*** 获取assets静态资源 适用于处理多个链接的资源文件* param url 文件名* returns */ export const getAssetsFile (url: string) {return new URL(~/assets/images/${url}, import.meta.url).href }/*** 判断是否文本溢出* param e 事件对象* returns*/ export const isBeyond (e: any) {const ev window.event || e;const textRange (el: any) {const textContent el;const targetW textContent.getBoundingClientRect().width;const range document.createRange();range.setStart(textContent, 0);range.setEnd(textContent, textContent.childNodes.length);const rangeWidth range.getBoundingClientRect().width;return rangeWidth targetW;};return !textRange(ev.target); };/*** 防抖函数* param func * param delay * returns */ export const debounce (func, delay) {let timer;return function() {clearTimeout(timer);timer setTimeout(func, delay);}; }/*** 节流函数* param func * param delay * returns */ export const Throttle (func, delay) {let timer;let lastExecTime 0;return function(...args) {const context this;const currentTime Date.now();if (currentTime - lastExecTime delay) {lastExecTime currentTime;func.apply(context, args);} else {clearTimeout(timer);timer setTimeout(() {lastExecTime currentTime;func.apply(context, args);}, delay - (currentTime - lastExecTime));}}; }/*** 将后端返回的数据转换成echarts pie图需要的数据格式* param dataList * param nameField * param valueField * param paramsField * returns */ export const reconfigPie (dataList, nameField, valueField, paramsField undefined) {const result dataList?.map((item) ({ name: item[nameField], value: item[valueField],params: item[paramsField] item[paramsField],})); return result; }/*** 将后端返回的数据转换成echarts bar图需要的数据格式* param dataList * param timeField * param yField * param nameField * param countField * returns */ export const reconfigBar (dataList, timeField, yField, nameField, countField) {let format {dtX: [],valY: [],legend: [],}dataList.map((item) {format.dtX.push(item[timeField]);for (let k of item[yField]) {let isExist format.valY.find((j) j.name k[nameField]);if (isExist) {isExist.data.push(k[countField]);} else {format.valY.push({name: k[nameField],data: [k[countField]],});}}});format.legend format.valY?.map(item {return item.name})return format }/*** params路由传参刷新就消失将数据保存在sessionstorage中* param resultField * param sessionField * returns */ export const saveSessionParams (resultField, sessionField,) {const route router.currentRoute.valuelet paramsVal JSON.parse(sessionStorage.getItem(sessionField));if(!isEmpty(paramsVal)) {resultField paramsVal}else {resultField route.paramsroute.params sessionStorage.setItem(sessionField,JSON.stringify(route.params));}return resultField }export const saveSessionParams1 (resultField, sessionField) {const route router.currentRoute.value;const paramsVal JSON.parse(sessionStorage.getItem(sessionField));if (Object.keys(route.params).length 0) { // 路由有传参resultField route.paramssessionStorage.setItem(sessionField, JSON.stringify(route.params));} else { // 路由没有传参if (paramsVal) {resultField paramsVal}}return resultField }
http://www.zqtcl.cn/news/488211/

相关文章:

  • 申请网站空间就是申请域名建设机械网站咨询
  • 做美食网站有哪些网站怎么做自响应
  • 衡水网站建设维护宝安官网网站建设比较好的
  • 网站建设的审批重庆建设工程信息网30系统
  • 泉州软件开发培训机构怎么做网站内部链接的优化
  • 网站定位是什么中国it外包公司排名
  • 洛阳微信平台网站建设网站成功案例分析
  • 网站建设在淘宝怎么分类深圳软件开发招聘信息
  • .net如何做网站个人网站的制作
  • 网站优化排名推广站长统计官方网站
  • 长沙wap网站建设wordpress 用户 函数
  • 淮安做网站的公司有哪些公司目前上海有几个区
  • 怎么做自动跳转网站建站之星 discuz
  • 网站建设开发合同范本页面设计有哪几种风格
  • 重庆做网站重庆做网站做公司网站建设价格
  • 住房建设部官方网站公示公告国内卖到国外的电商平台
  • 安徽省建设厅网站巅川建设有限公司宁波城乡建设网站
  • 做财务还是网站运营wordpress主题 微博
  • 为什么要用CGI做网站网站建设 自学 电子版 pdf下载
  • 建设网站的规则营销型网站建设jm3q
  • 深圳建网站价格防水堵漏公司做网站效果怎样
  • 网站建设东莞老铁博客外国炫酷网站网址
  • 笔杆子写作网站牡丹江信息网0453免费发布信息
  • 网站建设介绍推广用语解释seo网站推广
  • 加盟企业网站建设目的速卖通下载app
  • 阳江北京网站建设网页设计与网站建设pdf
  • 做考试平台的网站网站之前没备案
  • 网站维护要多久时间北京网站优化哪家好
  • 单页推广网站模版网站建设一个购买链接
  • 湖南门户网站设计公司免费自媒体网站