javashop/webroot/public/web/_nuxt/test.4d1c919b.js
wangchen147 2849ad591c 1.0.0
优化
* 平台端 站点端界面改版优化
* 插件支持多选批量升级
* 万能表单 日期组件、时间组件优化
* 万能表单完善语言包
* 微信开放平台管理端优化,增加小程序撤回审核、授权记录
* 插件支持多选批量升级
* 升级框架/插件时,增加是否备份、是否云编译等控制选项
* 操作日志增加清空功能
* 站点端`本地存储`调整为`默认存储`,若无配置,则使用管理端设置的默认存储方式及配置
* 后台提现列表样式优化
* 隐私协议弹框样式优化
* 待付款订单界面优化
* 商品列表 推广支持微信小程序二维码
* 商品分类列表 推广支持微信小程序二维码
* 优惠券列表 推广支持微信小程序二维码
* 重构限时折扣活动,支持添加N个商品,提供扩展性
* 限时折扣增加批量设置减钱、促销价
* 商品搜索页面增加 搜索关键字、排行榜
* 订单退款详情、优惠券领取记录、退款维权详情改为抽屉弹框样式

新增
* 增加升级记录
* 增加备份记录,支持手动备份、恢复等功能
* 增加主题风格,自定义配色功能
* 自定义链接支持扩展,增加万能表单选择
* 自定义页面增加弹窗广告设置
* 平台端增加清理缓存功能
* 增加定时清理计划任务日志数据
* 牛云短信功能
* 会员增加身份证、备注等信息
* 个人资料增加万能表单
* 后台会员列表增加全选所有页/全选当前页,方便批量操作
* 自定义页面增加弹窗广告设置
* 增加定时清理计划任务
* 站点增加初始化操作,用于清空整个站点数据
* 支持第三方云编译服务搭建
* 商品列表,商品分类展示限时折扣标识
* 价格展示逻辑调整,同时参与会员价、限时折扣,优先展示最低价
* 商品榜单列表增加会员价、限时折扣标识
* 商品收藏列表、足迹列表,显示会员价/限时折扣展示
* 同城配送功能新增预约时间设置,支持用户选择具体配送时段,提升配送体验。
* 自定义商品详情
* 增加商品排序设置
* 增加门店自提核销功能
* 优惠券列表增加发劵功能
* 商品列表、商品详情增加副标题展示
* 商品增加视频
* 后台增加`关闭售后`按钮
* 添加/编辑商品,支持选择多个参数模板
* 商品详情左上角返回增加悬浮菜单导航
* 商品品牌支持自定义样式设置
* 商品标签增加复制功能
* 增加商品搜索设置
* 增加商品编码唯一性设置
* 自定义链接增加选择商品、选择商品分类、选择优惠券、选择积分商品
* 满减送列表增加批量关闭、删除功能
* 后台商品列表增加批量操作(商品标签、商品服务、虚拟销量、商品分类、商品品牌、商品海报、是否赠品、配送设置、批量修改库存)
2025-08-28 17:03:19 +08:00

2 lines
15 KiB
JavaScript

import{E as Je,__tla as Me}from"./el-button.847476a9.js";import{ao as X,H as he,V as se,ap as be,a2 as oe,f as U,aq as _e,ar as qe,as as We,at as ke,B as we,au as Ue,x as v,av as Ke,a0 as Qe,i as A,a3 as ie,aw as xe,R as ze,o as C,c as ue,m as u,w as m,l as w,C as x,u as a,E as ce,a8 as Ae,y as $,T as B,ax as et,k as j,M as ae,a9 as tt,O as at,ay as nt,az as lt,J as rt,aA as st,aB as ot,N as it,a7 as ut,aa as ct,r as ne,ab as dt,aC as ft,D as Ce,aD as H,aE as G,aF as pt,F as Ie,aG as vt,aH as mt,aI as gt,t as le,aJ as yt,a6 as ht,aK as bt,q as V,aL as _t,L as $e,p as de,aM as kt,__tla as wt}from"./entry.f22ed627.js";import{t as fe,__tla as xt}from"./throttle.4ba5927e.js";import{u as zt,g as At,E as Ct,__tla as It}from"./el-input.d74a83fd.js";import{E as $t,a as Nt,b as Ot,__tla as St}from"./el-overlay.b761d125.js";let pe,Ne,Oe,ve,Et=Promise.all([(()=>{try{return Me}catch{}})(),(()=>{try{return wt}catch{}})(),(()=>{try{return xt}catch{}})(),(()=>{try{return It}catch{}})(),(()=>{try{return St}catch{}})()]).then(async()=>{const Se=(e,n)=>{if(!X||!e||!n)return!1;const r=e.getBoundingClientRect();let o;return n instanceof Element?o=n.getBoundingClientRect():o={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},r.top<o.bottom&&r.bottom>o.top&&r.right>o.left&&r.left<o.right},Ee=he({urlList:{type:se(Array),default:()=>be([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:{type:Boolean,default:!1},teleported:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2}}),Te={close:()=>!0,switch:e=>oe(e)},Ze=["src"],Le=U({name:"ElImageViewer"}),je=U({...Le,props:Ee,emits:Te,setup(e,{expose:n,emit:r}){const o=e,I={CONTAIN:{name:"contain",icon:_e(qe)},ORIGINAL:{name:"original",icon:_e(We)}},{t:g}=ke(),s=we("image-viewer"),{nextZIndex:D}=Ue(),y=v(),c=v([]),h=Ke(),b=v(!0),_=v(o.initialIndex),k=Qe(I.CONTAIN),p=v({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),d=A(()=>{const{urlList:t}=o;return t.length<=1}),f=A(()=>_.value===0),N=A(()=>_.value===o.urlList.length-1),O=A(()=>o.urlList[_.value]),P=A(()=>{const{scale:t,deg:l,offsetX:i,offsetY:z,enableTransition:T}=p.value;let Z=i/t,L=z/t;switch(l%360){case 90:case-270:[Z,L]=[L,-Z];break;case 180:case-180:[Z,L]=[-Z,-L];break;case 270:case-90:[Z,L]=[-L,Z];break}const F={transform:`scale(${t}) rotate(${l}deg) translate(${Z}px, ${L}px)`,transition:T?"transform .3s":""};return k.value.name===I.CONTAIN.name&&(F.maxWidth=F.maxHeight="100%"),F}),J=A(()=>oe(o.zIndex)?o.zIndex:D());function R(){S(),r("close")}function Y(){const t=fe(i=>{switch(i.code){case H.esc:o.closeOnPressEscape&&R();break;case H.space:q();break;case H.left:ee();break;case H.up:E("zoomIn");break;case H.right:te();break;case H.down:E("zoomOut");break}}),l=fe(i=>{const z=i.deltaY||i.deltaX;E(z<0?"zoomIn":"zoomOut",{zoomRate:o.zoomRate,enableTransition:!1})});h.run(()=>{G(document,"keydown",t),G(document,"wheel",l)})}function S(){h.stop()}function re(){b.value=!1}function K(t){b.value=!1,t.target.alt=g("el.image.error")}function Q(t){if(b.value||t.button!==0||!y.value)return;p.value.enableTransition=!1;const{offsetX:l,offsetY:i}=p.value,z=t.pageX,T=t.pageY,Z=fe(F=>{p.value={...p.value,offsetX:l+F.pageX-z,offsetY:i+F.pageY-T}}),L=G(document,"mousemove",Z);G(document,"mouseup",()=>{L()}),t.preventDefault()}function M(){p.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function q(){if(b.value)return;const t=pt(I),l=Object.values(I),i=k.value.name,z=(l.findIndex(T=>T.name===i)+1)%t.length;k.value=I[t[z]],M()}function W(t){const l=o.urlList.length;_.value=(t+l)%l}function ee(){f.value&&!o.infinite||W(_.value-1)}function te(){N.value&&!o.infinite||W(_.value+1)}function E(t,l={}){if(b.value)return;const{zoomRate:i,rotateDeg:z,enableTransition:T}={zoomRate:o.zoomRate,rotateDeg:90,enableTransition:!0,...l};switch(t){case"zoomOut":p.value.scale>.2&&(p.value.scale=Number.parseFloat((p.value.scale/i).toFixed(3)));break;case"zoomIn":p.value.scale<7&&(p.value.scale=Number.parseFloat((p.value.scale*i).toFixed(3)));break;case"clockwise":p.value.deg+=z;break;case"anticlockwise":p.value.deg-=z;break}p.value.enableTransition=T}return ie(O,()=>{xe(()=>{const t=c.value[0];t!=null&&t.complete||(b.value=!0)})}),ie(_,t=>{M(),r("switch",t)}),ze(()=>{var t,l;Y(),(l=(t=y.value)==null?void 0:t.focus)==null||l.call(t)}),n({setActiveItem:W}),(t,l)=>(C(),ue(ft,{to:"body",disabled:!t.teleported},[u(dt,{name:"viewer-fade",appear:""},{default:m(()=>[w("div",{ref_key:"wrapper",ref:y,tabindex:-1,class:x(a(s).e("wrapper")),style:ce({zIndex:a(J)})},[w("div",{class:x(a(s).e("mask")),onClick:l[0]||(l[0]=Ae(i=>t.hideOnClickModal&&R(),["self"]))},null,2),$(" CLOSE "),w("span",{class:x([a(s).e("btn"),a(s).e("close")]),onClick:R},[u(a(B),null,{default:m(()=>[u(a(et))]),_:1})],2),$(" ARROW "),a(d)?$("v-if",!0):(C(),j(ae,{key:0},[w("span",{class:x([a(s).e("btn"),a(s).e("prev"),a(s).is("disabled",!t.infinite&&a(f))]),onClick:ee},[u(a(B),null,{default:m(()=>[u(a(tt))]),_:1})],2),w("span",{class:x([a(s).e("btn"),a(s).e("next"),a(s).is("disabled",!t.infinite&&a(N))]),onClick:te},[u(a(B),null,{default:m(()=>[u(a(at))]),_:1})],2)],64)),$(" ACTIONS "),w("div",{class:x([a(s).e("btn"),a(s).e("actions")])},[w("div",{class:x(a(s).e("actions__inner"))},[u(a(B),{onClick:l[1]||(l[1]=i=>E("zoomOut"))},{default:m(()=>[u(a(nt))]),_:1}),u(a(B),{onClick:l[2]||(l[2]=i=>E("zoomIn"))},{default:m(()=>[u(a(lt))]),_:1}),w("i",{class:x(a(s).e("actions__divider"))},null,2),u(a(B),{onClick:q},{default:m(()=>[(C(),ue(rt(a(k).icon)))]),_:1}),w("i",{class:x(a(s).e("actions__divider"))},null,2),u(a(B),{onClick:l[3]||(l[3]=i=>E("anticlockwise"))},{default:m(()=>[u(a(st))]),_:1}),u(a(B),{onClick:l[4]||(l[4]=i=>E("clockwise"))},{default:m(()=>[u(a(ot))]),_:1})],2)],2),$(" CANVAS "),w("div",{class:x(a(s).e("canvas"))},[(C(!0),j(ae,null,it(t.urlList,(i,z)=>ut((C(),j("img",{ref_for:!0,ref:T=>c.value[z]=T,key:i,src:i,style:ce(a(P)),class:x(a(s).e("img")),onLoad:re,onError:K,onMousedown:Q},null,46,Ze)),[[ct,z===_.value]])),128))],2),ne(t.$slots,"default")],6)]),_:3})],8,["disabled"]))}});var Re=Ce(je,[["__file","/home/runner/work/element-plus/element-plus/packages/components/image-viewer/src/image-viewer.vue"]]);const Be=Ie(Re),Ve=he({hideOnClickModal:{type:Boolean,default:!1},src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},loading:{type:String,values:["eager","lazy"]},lazy:{type:Boolean,default:!1},scrollContainer:{type:se([String,Object])},previewSrcList:{type:se(Array),default:()=>be([])},previewTeleported:{type:Boolean,default:!1},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2}}),De={load:e=>e instanceof Event,error:e=>e instanceof Event,switch:e=>oe(e),close:()=>!0,show:()=>!0},Pe=["src","loading"],Ye={key:0},Fe=U({name:"ElImage",inheritAttrs:!1}),Xe=U({...Fe,props:Ve,emits:De,setup(e,{emit:n}){const r=e;let o="";const{t:I}=ke(),g=we("image"),s=vt(),D=zt(),y=v(),c=v(!1),h=v(!0),b=v(!1),_=v(),k=v(),p=X&&"loading"in HTMLImageElement.prototype;let d,f;const N=A(()=>s.style),O=A(()=>{const{fit:t}=r;return X&&t?{objectFit:t}:{}}),P=A(()=>{const{previewSrcList:t}=r;return Array.isArray(t)&&t.length>0}),J=A(()=>{const{previewSrcList:t,initialIndex:l}=r;let i=l;return l>t.length-1&&(i=0),i}),R=A(()=>r.loading==="eager"?!1:!p&&r.loading==="lazy"||r.lazy),Y=()=>{X&&(h.value=!0,c.value=!1,y.value=r.src)};function S(t){h.value=!1,c.value=!1,n("load",t)}function re(t){h.value=!1,c.value=!0,n("error",t)}function K(){Se(_.value,k.value)&&(Y(),q())}const Q=mt(K,200);async function M(){var t;if(!X)return;await xe();const{scrollContainer:l}=r;yt(l)?k.value=l:ht(l)&&l!==""?k.value=(t=document.querySelector(l))!=null?t:void 0:_.value&&(k.value=At(_.value)),k.value&&(d=G(k,"scroll",Q),setTimeout(()=>K(),100))}function q(){!X||!k.value||!Q||(d==null||d(),k.value=void 0)}function W(t){if(t.ctrlKey&&(t.deltaY<0||t.deltaY>0))return t.preventDefault(),!1}function ee(){P.value&&(f=G("wheel",W,{passive:!1}),o=document.body.style.overflow,document.body.style.overflow="hidden",b.value=!0,n("show"))}function te(){f==null||f(),document.body.style.overflow=o,b.value=!1,n("close")}function E(t){n("switch",t)}return ie(()=>r.src,()=>{R.value?(h.value=!0,c.value=!1,q(),M()):Y()}),ze(()=>{R.value?M():Y()}),(t,l)=>(C(),j("div",{ref_key:"container",ref:_,class:x([a(g).b(),t.$attrs.class]),style:ce(a(N))},[y.value!==void 0&&!c.value?(C(),j("img",gt({key:0},a(D),{src:y.value,loading:t.loading,style:a(O),class:[a(g).e("inner"),a(P)&&a(g).e("preview"),h.value&&a(g).is("loading")],onClick:ee,onLoad:S,onError:re}),null,16,Pe)):$("v-if",!0),h.value||c.value?(C(),j("div",{key:1,class:x(a(g).e("wrapper"))},[h.value?ne(t.$slots,"placeholder",{key:0},()=>[w("div",{class:x(a(g).e("placeholder"))},null,2)]):c.value?ne(t.$slots,"error",{key:1},()=>[w("div",{class:x(a(g).e("error"))},le(a(I)("el.image.error")),3)]):$("v-if",!0)],2)):$("v-if",!0),a(P)?(C(),j(ae,{key:2},[b.value?(C(),ue(a(Be),{key:0,"z-index":t.zIndex,"initial-index":a(J),infinite:t.infinite,"zoom-rate":t.zoomRate,"url-list":t.previewSrcList,"hide-on-click-modal":t.hideOnClickModal,teleported:t.previewTeleported,"close-on-press-escape":t.closeOnPressEscape,onClose:te,onSwitch:E},{default:m(()=>[t.$slots.viewer?(C(),j("div",Ye,[ne(t.$slots,"viewer")])):$("v-if",!0)]),_:3},8,["z-index","initial-index","infinite","zoom-rate","url-list","hide-on-click-modal","teleported","close-on-press-escape"])):$("v-if",!0)],64)):$("v-if",!0)],6))}});var He=Ce(Xe,[["__file","/home/runner/work/element-plus/element-plus/packages/components/image/src/image.vue"]]);pe=Ie(He),ve=function(e){const n=v("");return{image:n,refresh:async()=>{try{await bt().then(r=>{r.code==1&&(e.captcha_key=r.data.captcha_key,e.captcha_code="",n.value=r.data.img.replace(/\r\n/g,""))})}catch{}}}};function Ge(){const e=v(!0),n=v(V("getSmsCode")),r=v(90);let o;const I=async D=>{if(!e.value)return;e.value=!1;let y=!1;return await _t(D).then(c=>{c.code==1?(g(),y=c.data.key):(s(),y=!1)}).catch(()=>{y=!1,s()}),y},g=()=>{o=setInterval(()=>{r.value>0?(r.value-=1,n.value=`${r.value}${V("smsCodeChangeText")}`):s()},1e3)},s=()=>{clearInterval(o),r.value=90,e.value=!0,n.value=V("getSmsCode")};return{send:I,text:n,canGetCode:e}}let me,ge,ye;me={class:"h-[30px]"},ge={class:"py-[5px] leading-none"},ye={class:"dialog-footer"},Ne=U({__name:"index",props:{mobile:String,type:{type:String,default:""},modelValue:{type:String,default:""}},emits:["update:modelValue","click"],setup(e,{expose:n,emit:r}){const o=e,I=A({get(){return o.modelValue},set(d){r("update:modelValue",d)}}),g=v(!1),s=$e({mobile:"",captcha_code:"",captcha_key:"",type:o.type}),D=$e({captcha_code:{required:!0,message:V("captchaPlaceholder"),trigger:["blur","change"]}}),y=v(null),c=v(!1),h=ve(s);h.refresh();const b=Ge(),_=()=>{s.mobile=o.mobile,b.canGetCode.value&&(c.value=!0)},k=async()=>{var d;await((d=y.value)==null?void 0:d.validate(async(f,N)=>{if(f){g.value=!0;const O=await b.send(s);O?(I.value=O,c.value=!1,g.value=!1):O===!1&&(h.refresh(),g.value=!1)}}))},p=()=>{r("click")};return n({send:_}),(d,f)=>{const N=Je,O=pe,P=Ct,J=$t,R=Nt,Y=Ot;return C(),j(ae,null,[w("div",me,[u(N,{type:"primary",link:"",disabled:!a(b).canGetCode.value,onClick:p},{default:m(()=>[de(le(a(b).text.value),1)]),_:1},8,["disabled"])]),u(Y,{modelValue:a(c),"onUpdate:modelValue":f[4]||(f[4]=S=>kt(c)?c.value=S:null),title:("t"in d?d.t:a(V))("captchaTitle"),width:"350px","append-to-body":!0,"align-center":!0},{footer:m(()=>[w("span",ye,[u(N,{onClick:f[3]||(f[3]=S=>c.value=!1)},{default:m(()=>[de(le(("t"in d?d.t:a(V))("cancel")),1)]),_:1}),u(N,{type:"primary",loading:a(g),onClick:k},{default:m(()=>[de(le(("t"in d?d.t:a(V))("confirm")),1)]),_:1},8,["loading"])])]),default:m(()=>[u(R,{model:a(s),ref_key:"formRef",ref:y,rules:a(D),onSubmit:f[2]||(f[2]=Ae(()=>{},["prevent"]))},{default:m(()=>[u(J,{prop:"captcha_code",style:{"margin-bottom":"0"}},{default:m(()=>[u(P,{modelValue:a(s).captcha_code,"onUpdate:modelValue":f[1]||(f[1]=S=>a(s).captcha_code=S),placeholder:("t"in d?d.t:a(V))("captchaPlaceholder")},{suffix:m(()=>[w("div",ge,[u(O,{src:a(h).image.value,class:"h-[30px] cursor-pointer",onClick:f[0]||(f[0]=S=>a(h).refresh())},null,8,["src"])])]),_:1},8,["modelValue","placeholder"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])],64)}}}),Oe={email(e){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(e)},mobile(e){return/^1[23456789]\d{9}$/.test(e)},url(e){return/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(e)},date(e){return e?(this.number(e)&&(e=+e),!/Invalid|NaN/.test(new Date(e).toString())):!1},dateISO(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},number(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)},string(e){return typeof e=="string"},digits(e){return/^\d+$/.test(e)},idCard(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},carNo(e){const n=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/,r=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;return e.length===7?r.test(e):e.length===8?n.test(e):!1},amount(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},chinese(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},letter(e){return/^[a-zA-Z]*$/.test(e)},enOrNum(e){return/^[0-9a-zA-Z]*$/g.test(e)},contains(e,n){return e.indexOf(n)>=0},range(e,n){return e>=n[0]&&e<=n[1]},rangeLength(e,n){return e.length>=n[0]&&e.length<=n[1]},landline(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},empty(e){switch(typeof e){case"undefined":return!0;case"string":if(e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length==0)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(e===0||isNaN(e))return!0;break;case"object":if(e===null||e.length===0)return!0;for(const n in e)return!1;return!0}return!1},jsonString(e){if(typeof e=="string")try{const n=JSON.parse(e);return!!(typeof n=="object"&&n)}catch{return!1}return!1},array(e){return typeof Array.isArray=="function"?Array.isArray(e):Object.prototype.toString.call(e)==="[object Array]"},object(e){return Object.prototype.toString.call(e)==="[object Object]"},code(e,n=6){return new RegExp(`^\\d{${n}}$`).test(e)},func(e){return typeof e=="function"},promise(e){return this.object(e)&&this.func(e.then)&&this.func(e.catch)},image(e){const n=e.split("?")[0];return/\.(jpeg|jpg|gif|png|svg|jfif|bmp|dpg)/i.test(n)},video(e){return/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i.test(e)},regExp(e){return e&&Object.prototype.toString.call(e)==="[object RegExp]"}}});export{pe as E,Ne as _,Et as __tla,Oe as t,ve as u};