mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2026-01-06 04:58:10 +00:00
2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{A as e,B as t,C as r,i as n,j as i,w as s,F as o,x as a}from"./index-faf5e276.js";import{_ as u}from"./_plugin-vue_export-helper.1b428a4d.js";const l={props:{label:{type:String,default:e.formItem.label},prop:{type:String,default:e.formItem.prop},borderBottom:{type:[String,Boolean],default:e.formItem.borderBottom},labelWidth:{type:[String,Number],default:e.formItem.labelWidth},rightIcon:{type:String,default:e.formItem.rightIcon},leftIcon:{type:String,default:e.formItem.leftIcon},required:{type:Boolean,default:e.formItem.required},leftIconStyle:{type:[String,Object],default:e.formItem.leftIconStyle}}},f={props:{model:{type:Object,default:e.form.model},rules:{type:[Object,Function,Array],default:e.form.rules},errorType:{type:String,default:e.form.errorType},borderBottom:{type:Boolean,default:e.form.borderBottom},labelPosition:{type:String,default:e.form.labelPosition},labelWidth:{type:[String,Number],default:e.form.labelWidth},labelAlign:{type:String,default:e.form.labelAlign},labelStyle:{type:Object,default:e.form.labelStyle}}},d=/%[sdj%]/g;let c=function(){};function p(e){if(!e||!e.length)return null;const t={};return e.forEach((e=>{const{field:r}=e;t[r]=t[r]||[],t[r].push(e)})),t}function h(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];let n=1;const i=t[0],s=t.length;if("function"==typeof i)return i.apply(null,t.slice(1));if("string"==typeof i){let e=String(i).replace(d,(e=>{if("%%"===e)return"%";if(n>=s)return e;switch(e){case"%s":return String(t[n++]);case"%d":return Number(t[n++]);case"%j":try{return JSON.stringify(t[n++])}catch(r){return"[Circular]"}break;default:return e}}));for(let r=t[n];n<s;r=t[++n])e+=` ${r}`;return e}return i}function y(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function m(e,t,r){let n=0;const i=e.length;!function s(o){if(o&&o.length)return void r(o);const a=n;n+=1,a<i?t(e[a],s):r([])}([])}function g(e,t,r,n){if(t.first){const t=new Promise(((t,i)=>{const s=function(e){const t=[];return Object.keys(e).forEach((r=>{t.push.apply(t,e[r])})),t}(e);m(s,r,(function(e){return n(e),e.length?i({errors:e,fields:p(e)}):t()}))}));return t.catch((e=>e)),t}let i=t.firstFields||[];!0===i&&(i=Object.keys(e));const s=Object.keys(e),o=s.length;let a=0;const u=[],l=new Promise(((t,l)=>{const f=function(e){if(u.push.apply(u,e),a++,a===o)return n(u),u.length?l({errors:u,fields:p(u)}):t()};s.length||(n(u),t()),s.forEach((t=>{const n=e[t];-1!==i.indexOf(t)?m(n,r,f):function(e,t,r){const n=[];let i=0;const s=e.length;function o(e){n.push.apply(n,e),i++,i===s&&r(n)}e.forEach((e=>{t(e,o)}))}(n,r,f)}))}));return l.catch((e=>e)),l}function b(e){return function(t){return t&&t.message?(t.field=t.field||e.fullField,t):{message:"function"==typeof t?t():t,field:t.field||e.fullField}}}function q(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e}function v(e,t,r,n,i,s){!e.required||r.hasOwnProperty(e.field)&&!y(t,s||e.type)||n.push(h(i.messages.required,e.fullField))}"undefined"!=typeof process&&process.env;const w={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i};var x={integer:function(e){return/^(-)?\d+$/.test(e)},float:function(e){return/^(-)?\d+(\.\d+)?$/.test(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(t){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof+e},object:function(e){return"object"==typeof e&&!x.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(w.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(w.url)},hex:function(e){return"string"==typeof e&&!!e.match(w.hex)}};const O="enum";const F={required:v,whitespace:function(e,t,r,n,i){(/^\s+$/.test(t)||""===t)&&n.push(h(i.messages.whitespace,e.fullField))},type:function(e,t,r,n,i){if(e.required&&void 0===t)return void v(e,t,r,n,i);const s=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(s)>-1?x[s](t)||n.push(h(i.messages.types[s],e.fullField,e.type)):s&&typeof t!==e.type&&n.push(h(i.messages.types[s],e.fullField,e.type))},range:function(e,t,r,n,i){const s="number"==typeof e.len,o="number"==typeof e.min,a="number"==typeof e.max,u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;let l=t,f=null;const d="number"==typeof t,c="string"==typeof t,p=Array.isArray(t);if(d?f="number":c?f="string":p&&(f="array"),!f)return!1;p&&(l=t.length),c&&(l=t.replace(u,"_").length),s?l!==e.len&&n.push(h(i.messages[f].len,e.fullField,e.len)):o&&!a&&l<e.min?n.push(h(i.messages[f].min,e.fullField,e.min)):a&&!o&&l>e.max?n.push(h(i.messages[f].max,e.fullField,e.max)):o&&a&&(l<e.min||l>e.max)&&n.push(h(i.messages[f].range,e.fullField,e.min,e.max))},enum:function(e,t,r,n,i){e[O]=Array.isArray(e[O])?e[O]:[],-1===e[O].indexOf(t)&&n.push(h(i.messages[O],e.fullField,e[O].join(", ")))},pattern:function(e,t,r,n,i){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||n.push(h(i.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(h(i.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};function P(e,t,r,n,i){const s=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t,s)&&!e.required)return r();F.required(e,t,n,o,i,s),y(t,s)||F.type(e,t,n,o,i)}r(o)}const j={string:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t,"string")&&!e.required)return r();F.required(e,t,n,s,i,"string"),y(t,"string")||(F.type(e,t,n,s,i),F.range(e,t,n,s,i),F.pattern(e,t,n,s,i),!0===e.whitespace&&F.whitespace(e,t,n,s,i))}r(s)},method:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&F.type(e,t,n,s,i)}r(s)},number:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&(F.type(e,t,n,s,i),F.range(e,t,n,s,i))}r(s)},boolean:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&F.type(e,t,n,s,i)}r(s)},regexp:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),y(t)||F.type(e,t,n,s,i)}r(s)},integer:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&(F.type(e,t,n,s,i),F.range(e,t,n,s,i))}r(s)},float:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&(F.type(e,t,n,s,i),F.range(e,t,n,s,i))}r(s)},array:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t,"array")&&!e.required)return r();F.required(e,t,n,s,i,"array"),y(t,"array")||(F.type(e,t,n,s,i),F.range(e,t,n,s,i))}r(s)},object:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&F.type(e,t,n,s,i)}r(s)},enum:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i),void 0!==t&&F.enum(e,t,n,s,i)}r(s)},pattern:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t,"string")&&!e.required)return r();F.required(e,t,n,s,i),y(t,"string")||F.pattern(e,t,n,s,i)}r(s)},date:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();if(F.required(e,t,n,s,i),!y(t)){let r;r="number"==typeof t?new Date(t):t,F.type(e,r,n,s,i),r&&F.range(e,r.getTime(),n,s,i)}}r(s)},url:P,hex:P,email:P,required:function(e,t,r,n,i){const s=[],o=Array.isArray(t)?"array":typeof t;F.required(e,t,n,s,i,o),r(s)},any:function(e,t,r,n,i){const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(y(t)&&!e.required)return r();F.required(e,t,n,s,i)}r(s)}};function A(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){const e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}const S=A();function $(e){this.rules=null,this._messages=S,this.define(e)}$.prototype={messages:function(e){return e&&(this._messages=q(A(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");let t,r;for(t in this.rules={},e)e.hasOwnProperty(t)&&(r=e[t],this.rules[t]=Array.isArray(r)?r:[r])},validate:function(e,t,r){const n=this;void 0===t&&(t={}),void 0===r&&(r=function(){});let i,s,o=e,a=t,u=r;if("function"==typeof a&&(u=a,a={}),!this.rules||0===Object.keys(this.rules).length)return u&&u(),Promise.resolve();if(a.messages){let e=this.messages();e===S&&(e=A()),q(e,a.messages),a.messages=e}else a.messages=this.messages();const l={};(a.keys||Object.keys(this.rules)).forEach((t=>{i=n.rules[t],s=o[t],i.forEach((r=>{let i=r;"function"==typeof i.transform&&(o===e&&(o={...o}),s=o[t]=i.transform(s)),i="function"==typeof i?{validator:i}:{...i},i.validator=n.getValidationMethod(i),i.field=t,i.fullField=i.fullField||t,i.type=n.getType(i),i.validator&&(l[t]=l[t]||[],l[t].push({rule:i,value:s,source:o,field:t}))}))}));const f={};return g(l,a,((e,t)=>{const{rule:r}=e;let n,i=!("object"!==r.type&&"array"!==r.type||"object"!=typeof r.fields&&"object"!=typeof r.defaultField);function s(e,t){return{...t,fullField:`${r.fullField}.${e}`}}function o(n){void 0===n&&(n=[]);let o=n;if(Array.isArray(o)||(o=[o]),!a.suppressWarning&&o.length&&$.warning("async-validator:",o),o.length&&r.message&&(o=[].concat(r.message)),o=o.map(b(r)),a.first&&o.length)return f[r.field]=1,t(o);if(i){if(r.required&&!e.value)return o=r.message?[].concat(r.message).map(b(r)):a.error?[a.error(r,h(a.messages.required,r.field))]:[],t(o);let n={};if(r.defaultField)for(const t in e.value)e.value.hasOwnProperty(t)&&(n[t]=r.defaultField);n={...n,...e.rule.fields};for(const e in n)if(n.hasOwnProperty(e)){const t=Array.isArray(n[e])?n[e]:[n[e]];n[e]=t.map(s.bind(null,e))}const i=new $(n);i.messages(a.messages),e.rule.options&&(e.rule.options.messages=a.messages,e.rule.options.error=a.error),i.validate(e.value,e.rule.options||a,(e=>{const r=[];o&&o.length&&r.push.apply(r,o),e&&e.length&&r.push.apply(r,e),t(r.length?r:null)}))}else t(o)}i=i&&(r.required||!r.required&&e.value),r.field=e.field,r.asyncValidator?n=r.asyncValidator(r,e.value,o,e.source,a):r.validator&&(n=r.validator(r,e.value,o,e.source,a),!0===n?o():!1===n?o(r.message||`${r.field} fails`):n instanceof Array?o(n):n instanceof Error&&o(n.message)),n&&n.then&&n.then((()=>o()),(e=>o(e)))}),(e=>{!function(e){let t,r=[],n={};function i(e){if(Array.isArray(e)){let t;r=(t=r).concat.apply(t,e)}else r.push(e)}for(t=0;t<e.length;t++)i(e[t]);r.length?n=p(r):(r=null,n=null),u(r,n)}(e)}))},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!j.hasOwnProperty(e.type))throw new Error(h("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;const t=Object.keys(e),r=t.indexOf("message");return-1!==r&&t.splice(r,1),1===t.length&&"required"===t[0]?j.required:j[this.getType(e)]||!1}},$.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");j[e]=t},$.warning=c,$.messages=S,$.warning=function(){};const E=u({name:"u-form",mixins:[t,r,f],provide(){return{uForm:this}},data:()=>({formRules:{},validator:{},originalModel:null}),watch:{rules:{immediate:!0,handler(e){this.setRules(e)}},propsChange(e){var t;(null==(t=this.children)?void 0:t.length)&&this.children.map((e=>{"function"==typeof e.updateParentData&&e.updateParentData()}))},model:{immediate:!0,handler(e){this.originalModel||(this.originalModel=uni.$u.deepClone(e))}}},computed:{propsChange(){return[this.errorType,this.borderBottom,this.labelPosition,this.labelWidth,this.labelAlign,this.labelStyle]}},created(){this.children=[]},methods:{setRules(e){0!==Object.keys(e).length&&(this.formRules=e,this.validator=new $(e))},resetFields(){this.resetModel()},resetModel(e){this.children.map((e=>{const t=null==e?void 0:e.prop,r=uni.$u.getProperty(this.originalModel,t);uni.$u.setProperty(this.model,t,r)}))},clearValidate(e){e=[].concat(e),this.children.map((t=>{(void 0===e[0]||e.includes(t.prop))&&(t.message=null)}))},async validateField(e,t,r=null){this.$nextTick((()=>{const n=[];e=[].concat(e),this.children.map((t=>{const i=[];if(e.includes(t.prop)){const e=uni.$u.getProperty(this.model,t.prop),s=t.prop.split("."),o=s[s.length-1],a=this.formRules[t.prop];if(!a)return;const u=[].concat(a);for(let l=0;l<u.length;l++){const s=u[l],a=[].concat(null==s?void 0:s.trigger);if(r&&!a.includes(r))continue;new $({[o]:s}).validate({[o]:e},((e,r)=>{var s;uni.$u.test.array(e)&&(n.push(...e),i.push(...e)),t.message=(null==(s=i[0])?void 0:s.message)?i[0].message:null}))}}})),"function"==typeof t&&t(n)}))},validate(e){return new Promise(((e,t)=>{this.$nextTick((()=>{const r=this.children.map((e=>e.prop));this.validateField(r,(r=>{r.length?("toast"===this.errorType&&uni.$u.toast(r[0].message),t(r)):e(!0)}))}))}))}}},[["render",function(e,t,r,u,l,f){const d=a;return n(),i(d,{class:"u-form"},{default:s((()=>[o(e.$slots,"default")])),_:3})}]]);export{E as _,f as a,l as p};
|