miao33: 从 main 同步 single_uniapp22miao,dart-sass 兼容修复,DEPLOY.md 更新

- 从 main 获取 single_uniapp22miao 子项目
- dart-sass: /deep/ -> ::v-deep,calc 运算符加空格
- DEPLOY.md 采用 shccd159 版本(4 子项目架构说明)

Made-with: Cursor
This commit is contained in:
apple
2026-03-16 11:16:42 +08:00
parent 9c29721dc4
commit 079076a70e
356 changed files with 569762 additions and 129 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,139 @@
/* eslint-disable */
var provinceData = [{
"label": "北京市",
"value": "11"
},
{
"label": "天津市",
"value": "12"
},
{
"label": "河北省",
"value": "13"
},
{
"label": "山西省",
"value": "14"
},
{
"label": "内蒙古自治区",
"value": "15"
},
{
"label": "辽宁省",
"value": "21"
},
{
"label": "吉林省",
"value": "22"
},
{
"label": "黑龙江省",
"value": "23"
},
{
"label": "上海市",
"value": "31"
},
{
"label": "江苏省",
"value": "32"
},
{
"label": "浙江省",
"value": "33"
},
{
"label": "安徽省",
"value": "34"
},
{
"label": "福建省",
"value": "35"
},
{
"label": "江西省",
"value": "36"
},
{
"label": "山东省",
"value": "37"
},
{
"label": "河南省",
"value": "41"
},
{
"label": "湖北省",
"value": "42"
},
{
"label": "湖南省",
"value": "43"
},
{
"label": "广东省",
"value": "44"
},
{
"label": "广西壮族自治区",
"value": "45"
},
{
"label": "海南省",
"value": "46"
},
{
"label": "重庆市",
"value": "50"
},
{
"label": "四川省",
"value": "51"
},
{
"label": "贵州省",
"value": "52"
},
{
"label": "云南省",
"value": "53"
},
{
"label": "西藏自治区",
"value": "54"
},
{
"label": "陕西省",
"value": "61"
},
{
"label": "甘肃省",
"value": "62"
},
{
"label": "青海省",
"value": "63"
},
{
"label": "宁夏回族自治区",
"value": "64"
},
{
"label": "新疆维吾尔自治区",
"value": "65"
},
{
"label": "台湾",
"value": "66"
},
{
"label": "香港",
"value": "67"
},
{
"label": "澳门",
"value": "68"
}
]
export default provinceData;

View File

@@ -0,0 +1,680 @@
const forMatNum=(num)=>{
return num<10?'0'+num:num+'';
}
const initPicker={
//日期
date:{
init(start,end,mode="date",step,value,flag,disabled,hasSecond){
let aToday=new Date();
let tYear,tMonth,tDay,tHours,tMinutes,tSeconds,defaultVal=[];
let initstartDate=new Date(start.toString());
let endDate=new Date(end.toString());
if(start>end){
initstartDate=new Date(end.toString());
endDate=new Date(start.toString());
};
let startYear=initstartDate.getFullYear();
let startMonth=initstartDate.getMonth()+1;
let endYear=endDate.getFullYear();
let years=[],months=[],days=[],hours=[],minutes=[],seconds=[],areas=[],returnArr=[],dvalDate=[];
switch(mode){
case "half":
dvalDate=flag?[...value.split(" ")[0].split("-"),...value.split(" ")[1].split(":")]:[...value.split(" ")[0].split("-"),value.split(" ")[1]];
break;
case "date":
case "yearMonth":
dvalDate=value.split("-");
break;
case "dateTime":
dvalDate=[...value.split(" ")[0].split("-"),...value.split(" ")[1].split(":")];
break;
case "time":
dvalDate=value.split(":");
break;
}
let curMonth=flag?dvalDate[1]*1:(dvalDate[1]+1);
let dYear=aToday.getFullYear();
let dMonth=aToday.getMonth()+1;
let dDate=aToday.getDate();
let totalDays=new Date(startYear,curMonth,0).getDate();
let dvalObj={};
switch(mode){
case "half":
case "date":
case "yearMonth":
let curYear=dvalDate[0];
let curMonth=dvalDate[1];
if(disabled){
for(let s=startYear;s<=dYear;s++){
years.push(s+'');
};
if(curYear==dYear){
for(let m=1;m<=dMonth;m++){
months.push(forMatNum(m));
};
}else{
for(let m=1;m<=12;m++){
months.push(forMatNum(m));
};
}
if(curMonth==dMonth){
for(let d=1;d<=dDate;d++){
days.push(forMatNum(d));
}
}else{
for(let d=1;d<=totalDays;d++){
days.push(forMatNum(d));
}
}
}else{
for(let s=startYear;s<=endYear;s++){
years.push(s+'');
};
for(let m=1;m<=12;m++){
months.push(forMatNum(m));
};
for(let d=1;d<=totalDays;d++){
days.push(forMatNum(d));
}
};
break;
default:
for(let s=startYear;s<=endYear;s++){
years.push(s+'');
};
for(let m=1;m<=12;m++){
months.push(forMatNum(m));
};
for(let d=1;d<=totalDays;d++){
days.push(forMatNum(d));
}
break;
}
for(let h=0;h<24;h++){
hours.push(forMatNum(h));
}
for(let m=0;m<60;m+=step*1){
minutes.push(forMatNum(m));
}
for(let s=0;s<60;s++){
seconds.push(forMatNum(s));
}
if(flag){
returnArr=[
years.indexOf(dvalDate[0]),
months.indexOf(dvalDate[1]),
days.indexOf(dvalDate[2]),
hours.indexOf(dvalDate[3]),
minutes.indexOf(dvalDate[4])==-1?0:minutes.indexOf(dvalDate[4]),
seconds.indexOf(dvalDate[5])
]
}
switch(mode){
case "date":
if(flag){
defaultVal=[returnArr[0],returnArr[1],returnArr[2]];
return {years,months,days,defaultVal}
}else{
defaultVal=[
years.indexOf(dvalDate[0])==-1?0:years.indexOf(dvalDate[0]),
months.indexOf(dvalDate[1])==-1?0:months.indexOf(dvalDate[1]),
days.indexOf(dvalDate[2])==-1?0:days.indexOf(dvalDate[2])
];
return {years,months,days,defaultVal}
}
break;
case "half":
areas=[{
label:"上午",
value:0
},{
label:"下午",
value:1
}];
if(flag){
defaultVal=[returnArr[0],returnArr[1],returnArr[2],returnArr[3]];
return {years,months,days,areas,defaultVal}
}else{
let idx=0;
areas.map((v,k)=>{
if(v.label==dvalDate[3]){
idx=v.value;
}
})
defaultVal=[
years.indexOf(dvalDate[0])==-1?0:years.indexOf(dvalDate[0]),
months.indexOf(dvalDate[1])==-1?0:months.indexOf(dvalDate[1]),
days.indexOf(dvalDate[2])==-1?0:days.indexOf(dvalDate[2]),
idx
];
return {years,months,days,areas,defaultVal}
}
break;
case "yearMonth":
if(flag){
defaultVal=[returnArr[0],returnArr[1]];
return {years,months,defaultVal}
}else{
defaultVal=[
years.indexOf(dvalDate[0])==-1?0:years.indexOf(dvalDate[0]),
months.indexOf(dvalDate[1])==-1?0:months.indexOf(dvalDate[1])
];
return {years,months,defaultVal}
}
break;
case "dateTime":
if(flag){
defaultVal=returnArr;
}else{
if(hasSecond){
defaultVal=[
years.indexOf(dvalDate[0])==-1?0:years.indexOf(dvalDate[0]),
months.indexOf(dvalDate[1])==-1?0:months.indexOf(dvalDate[1]),
days.indexOf(dvalDate[2])==-1?0:days.indexOf(dvalDate[2]),
hours.indexOf(dvalDate[3])==-1?0:hours.indexOf(dvalDate[3]),
minutes.indexOf(dvalDate[4])==-1?0:minutes.indexOf(dvalDate[4]),
seconds.indexOf(dvalDate[5])==-1?0:seconds.indexOf(dvalDate[5])
];
}else{
defaultVal=[
years.indexOf(dvalDate[0])==-1?0:years.indexOf(dvalDate[0]),
months.indexOf(dvalDate[1])==-1?0:months.indexOf(dvalDate[1]),
days.indexOf(dvalDate[2])==-1?0:days.indexOf(dvalDate[2]),
hours.indexOf(dvalDate[3])==-1?0:hours.indexOf(dvalDate[3]),
minutes.indexOf(dvalDate[4])==-1?0:minutes.indexOf(dvalDate[4])
];
}
}
if(hasSecond){
return {years,months,days,hours,minutes,seconds,defaultVal}
}else{
return {years,months,days,hours,minutes,defaultVal}
}
break;
case "time":
if(flag){
defaultVal=[returnArr[3],returnArr[4],returnArr[5]];
}else{
if(hasSecond){
defaultVal=[
hours.indexOf(dvalDate[0])==-1?0:hours.indexOf(dvalDate[0]),
minutes.indexOf(dvalDate[1])==-1?0:minutes.indexOf(dvalDate[1]),
seconds.indexOf(dvalDate[2])==-1?0:seconds.indexOf(dvalDate[2])
];
}else{
defaultVal=[
hours.indexOf(dvalDate[0])==-1?0:hours.indexOf(dvalDate[0]),
minutes.indexOf(dvalDate[1])==-1?0:minutes.indexOf(dvalDate[1])
];
}
}
return {hours,minutes,seconds,defaultVal}
break;
}
},
initMonths:(year,disabled)=>{
let aDate=new Date();
let dYear=aDate.getFullYear();
let dMonth=aDate.getMonth()+1;
let dDate=aDate.getDate();
let flag=dYear==year?true:false;
let months=[];
if(disabled){
if(flag){
for(let m=1;m<=dMonth;m++){
months.push(forMatNum(m));
};
}else{
for(let m=1;m<=12;m++){
months.push(forMatNum(m));
};
}
}else{
for(let m=1;m<=12;m++){
months.push(forMatNum(m));
};
};
return months;
},
initDays:(year,month,disabled)=>{
let aDate=new Date();
let dYear=aDate.getFullYear();
let dMonth=aDate.getMonth()+1;
let dDate=aDate.getDate();
let flag=(dYear==year&&dMonth==month)?true:false;
let totalDays=new Date(year,month,0).getDate();
let dates=[];
if(flag&&disabled){
for(let d=1;d<=dDate;d++){
dates.push(forMatNum(d));
};
}else{
for(let d=1;d<=totalDays;d++){
dates.push(forMatNum(d));
};
};
return dates;
},
},
//短期日期上下午
limitHour:{
init(dayStep=7,dVal){
let startDate=new Date();
let date=[],areas=[],hours=[];
let hour=new Date().getHours();
let weeks=["周日","周一","周二","周三","周四","周五","周六"];
let arrs=[];
let defaultVal=[];
let d=0,a=0,h=0;
for(let i=0;i<dayStep;i++){
let year,month,day,weekday;
year=startDate.getFullYear();
month=forMatNum(startDate.getMonth()+1);
day=forMatNum(startDate.getDate());
weekday=weeks[startDate.getDay()];
let label="";
switch(i){
case 0:
label="今天";
break;
case 1:
label="明天"
break;
case 2:
label="后天"
break;
default:
label=month+"月"+day+"日"+" "+weekday;
break;
}
date.push({
label:label,
value:year+"-"+month+"-"+day,
today:i==0?true:false
})
startDate.setDate(startDate.getDate()+1);
}
if(hour>12){
areas=[{
label:"下午",
value:1
}]
}else{
areas=[{
label:"上午",
value:0
},{
label:"下午",
value:1
}]
};
for(let k=hour>12?hour-12:hour;k<=12;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(hour>12?k+12:k)
})
};
date.map((v,k)=>{
if(v.label==dVal[0]){
d=k
}
})
if(d!=0){
areas=this.initAreas(date[d]);
hours=this.initHours(date[d],areas[a]);
}
areas.map((v,k)=>{
if(v.label==dVal[1]){
a=k
}
})
hours.map((v,k)=>{
if(v.label==dVal[2]){
h=k
}
});
defaultVal=[d,a,h]
return {date,areas,hours,defaultVal};
},
initAreas(date){
let areas=[];
let hour=new Date().getHours();
if(date.today){
if(hour>12){
areas=[{
label:"下午",
value:1
}]
}else{
areas=[{
label:"上午",
value:0
},{
label:"下午",
value:1
}]
};
}else{
areas=[{
label:"上午",
value:0
},{
label:"下午",
value:1
}]
}
return areas;
},
initHours(dateCol,hourCol){
let hours=[];
let hour=new Date().getHours();
if(dateCol.today){
if(hourCol.value==1&&hour<=12){
for(let k=1;k<=12;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(hourCol.value==1?k+12:k)
})
};
}else{
for(let k=hour>12?hour-12:hour;k<=12;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(hourCol.value==1?k+12:k)
})
};
}
}else{
for(let k=1;k<=12;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(hourCol.value==1?k+12:k)
})
};
};
return hours
}
},
//短期日期时间初始化
limit:{
init(dayStep=7,startHour=8,endHour=20,minuteStep=1,afterStep=30,dVal){
let startDate=new Date();
let bsDate=new Date(new Date().getTime()+afterStep*60*1000);
let date=[],hours=[],minutes=[];
let hour=bsDate.getHours();
let minute=Math.floor(bsDate.getMinutes()/minuteStep)*minuteStep;
let weeks=["周日","周一","周二","周三","周四","周五","周六"];
let d=0,h=0,m=0;
let defaultVal=[];
for(let i=0;i<dayStep;i++){
let year,month,day,weekday;
year=startDate.getFullYear();
month=forMatNum(startDate.getMonth()+1);
day=forMatNum(startDate.getDate());
weekday=weeks[startDate.getDay()];
let label="";
switch(i){
case 0:
label="今天";
break;
case 1:
label="明天"
break;
case 2:
label="后天"
break;
default:
label=month+"月"+day+"日"+" "+weekday;
break;
}
date.push({
label:label,
value:year+"-"+month+"-"+day,
flag:i==0?true:false
})
startDate.setDate(startDate.getDate()+1);
}
if(hour<startHour){
hour=startHour;
};
if(hour>endHour){
hour=endHour;
};
for(let k=hour*1;k<=endHour*1;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(k),
flag:k==hour?true:false
})
};
for(let j=minute;j<60;j+=minuteStep*1){
minutes.push({
label:forMatNum(j),
value:forMatNum(j)
});
}
date.map((v,k)=>{
if(v.label==dVal[0]){
d=k
}
})
if(d!=0){
hours=this.initHours(startHour=8,endHour=20,minuteStep=1,afterStep=30,date[d].value);
}
hours.map((v,k)=>{
if(v.label==dVal[1]){
h=k
}
})
minutes.map((v,k)=>{
if(v.label==dVal[2]){
m=k
}
})
defaultVal=[d,h,m];
return {date,hours,minutes,defaultVal};
},
initHours(startHour=8,endHour=20,minuteStep=1,afterStep=30,date){
let hours=[];
let arr=date.split("-");
let aDate=new Date();
let dYear=aDate.getFullYear();
let dMonth=aDate.getMonth()+1;
let dDate=aDate.getDate();
let bsDate=new Date(new Date().getTime()+afterStep*60*1000);
let hour=bsDate.getHours();
let flag=(dYear==arr[0]&&dMonth==arr[1]&&dDate==arr[2])?true:false;
if(hour>endHour){
hour=endHour;
};
if(flag){
for(let k=hour*1;k<=endHour*1;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(k),
flag:k==hour?true:false
})
};
}else{
for(let k=startHour*1;k<=endHour*1;k++){
hours.push({
label:forMatNum(k),
value:forMatNum(k),
flag:false
})
}
};
return hours;
},
initMinutes(startHour=8,endHour=20,minuteStep=1,afterStep=30,date,hour){
let minutes=[];
let bsDate=new Date(new Date().getTime()+afterStep*60*1000);
let arr=date.split("-");
let aDate=new Date();
let dYear=aDate.getFullYear();
let dMonth=aDate.getMonth()+1;
let dDate=aDate.getDate();
let dHour=bsDate.getHours();;
let minute=Math.floor(bsDate.getMinutes()/minuteStep)*minuteStep;
let flag=(dYear==arr[0]&&dMonth==arr[1]&&dDate==arr[2])?true:false;
if(flag){
if(hour==dHour){
for(let j=minute;j<60;j+=minuteStep*1){
minutes.push({
label:forMatNum(j),
value:forMatNum(j)
});
}
}else{
for(let j=0;j<60;j+=minuteStep*1){
minutes.push({
label:forMatNum(j),
value:forMatNum(j)
})
}
}
}else{
for(let j=0;j<60;j+=minuteStep*1){
minutes.push({
label:forMatNum(j),
value:forMatNum(j)
})
}
}
return minutes;
}
},
//选择区间初始化
range:{
init(start,end,value,flag){
let aToday=new Date();
let tYear,tMonth,tDay,tHours,tMinutes,tSeconds,defaultVal=[];
let initstartDate=new Date(start.toString());
let endDate=new Date(end.toString());
if(start>end){
initstartDate=new Date(end.toString());
endDate=new Date(start.toString());
};
let startYear=initstartDate.getFullYear();
let startMonth=initstartDate.getMonth()+1;
let endYear=endDate.getFullYear();
let fyears=[],fmonths=[],fdays=[],tyears=[],tmonths=[],tdays=[],returnArr=[],startDVal=[],endDVal=[];
startDVal=value[0].split("-");
endDVal=value[1].split("-");
let curMonth=flag?startDVal[1]*1:(startDVal[1]+1);
let totalDays=new Date(startYear,curMonth,0).getDate();
for(let s=startYear;s<=endYear;s++){
fyears.push(s+'');
};
for(let m=1;m<=12;m++){
fmonths.push(forMatNum(m));
};
for(let d=1;d<=totalDays;d++){
fdays.push(forMatNum(d));
};
for(let s=startDVal[0];s<=endYear;s++){
tyears.push(s+'');
};
if(endDVal[0]>startDVal[0]){
for(let m=1;m<=12;m++){
tmonths.push(forMatNum(m));
};
for(let d=1;d<=totalDays;d++){
tdays.push(forMatNum(d));
};
}else{
for(let m=startDVal[1];m<=12;m++){
tmonths.push(forMatNum(m));
};
for(let d=startDVal[2];d<=totalDays;d++){
tdays.push(forMatNum(d));
};
};
defaultVal=[
fyears.indexOf(startDVal[0])==-1?0:fyears.indexOf(startDVal[0]),
fmonths.indexOf(startDVal[1])==-1?0:fmonths.indexOf(startDVal[1]),
fdays.indexOf(startDVal[2])==-1?0:fdays.indexOf(startDVal[2]),
0,
tyears.indexOf(endDVal[0])==-1?0:tyears.indexOf(endDVal[0]),
tmonths.indexOf(endDVal[1])==-1?0:tmonths.indexOf(endDVal[1]),
tdays.indexOf(endDVal[2])==-1?0:tdays.indexOf(endDVal[2])
];
return {
fyears,
fmonths,
fdays,
tyears,
tmonths,
tdays,
defaultVal
}
},
initStartDays(year,month){
let totalDays=new Date(year,month,0).getDate();
let dates=[];
for(let d=1;d<=totalDays;d++){
dates.push(forMatNum(d));
};
return dates;
},
initEndYears(curYear,startYear,endYear){
let years=[];
for(let y=curYear;y<=endYear;y++){
years.push(forMatNum(y));
};
return years;
},
initEndMonths(curMonth){
let months=[];
for(let m=curMonth*1;m<=12;m++){
months.push(forMatNum(m));
};
return months;
},
initEndDays(curYear,curMonth,curDate,tYear,tMonth){
let totalDays=new Date(curYear,curMonth,0).getDate();
let days=[];
for(let d=curDate*1;d<=totalDays;d++){
days.push(forMatNum(d));
};
return days;
},
initToMonths(curYear,curMonth,curDate,tYear){
let aDate=new Date(curYear,curMonth,curDate).getTime();
let bDate=new Date(tYear,curMonth,curDate).getTime();
let months=[];
if(bDate-aDate>0){
for(let m=1;m<=12;m++){
months.push(forMatNum(m));
};
}else{
for(let m=curMonth*1;m<=12;m++){
months.push(forMatNum(m));
};
}
return months;
},
initToDays(curYear,curMonth,curDate,tYear,tMonth){
let aDate=new Date(curYear,curMonth,curDate).getTime();
let bDate=new Date(tYear,tMonth,curDate).getTime();
let totalDays=new Date(tYear,tMonth,0).getDate();
let days=[];
if(bDate-aDate>0){
for(let d=1;d<=totalDays;d++){
days.push(forMatNum(d));
};
}else{
for(let d=curDate*1;d<=totalDays;d++){
days.push(forMatNum(d));
};
}
return days;
}
}
}
export default initPicker

File diff suppressed because it is too large Load Diff