no message

cyl/master-apply
jscyl13849007907 2 months ago
parent d674a37a5c
commit 782de156ff

File diff suppressed because it is too large Load Diff

@ -1,3 +1,7 @@
## 1.0.9342026-01-20
迭代
## 1.0.9332026-01-20
职位详情
## 1.0.9322026-01-20
迭代
## 1.0.9312026-01-20

File diff suppressed because it is too large Load Diff

@ -135,6 +135,939 @@ let data = {
const checkCode = checkCodeList[sum % 11];
return checkCode === idCard[17].toUpperCase();
},
sceneToJson(sceneStr) {
let json = {};
let array = sceneStr.split(",");
array.forEach((item) => {
let arr = item.split("=");
let key = arr[0];
let value = arr[1];
json[key] = value;
});
return json;
},
handleConfirm(
options
) {
// console.log(options);
uni.showModal({
title: options.title || '',
content: options.content || '',
showCancel: options.showCancel === false ? false : true,
confirmText: options.confirmText || "确定",
confirmColor: options.confirmColor || "#576b95",
cancelColor: options.cancelColor || "#000",
cancelText: options.cancelText || "取消",
success(res) {
options.success(res);
}
});
},
/**
* 如果不是是null '' 'null' 'undefined'
* @param item
* @returns
*/
isNotEmptyCheck(value) {
return !this.isEmptyCheck(value);
},
/**
* 如果是null '' 'null' 'undefined'
* @param item
* @returns
*/
isEmptyCheck(value) {
if (value == null || value === "" || value == "null" || typeof value == "undefined") {
return true;
}
return false;
},
getDistanceName(distance) {
let str = "";
if (this.isNotEmptyCheck(distance)) {
if (distance > 1000) {
var dis = distance / 1000;
dis = dis.toFixed(1);
str = dis + "km";
} else {
str = distance + "m";
}
}
return str;
},
getPointTime(str = '', type = 'default') {
let that = this;
let year, month, date, hours, minute, second;
let time;
if (type == "pointDate") {
// 近N天
time = new Date(new Date(new Date().getTime() - (str - 1) * 24 * 60 * 60 * 1000))
type = "YY--MM--DD"
} else if (type == "yesterday") {
// 昨日
time = new Date(new Date(new Date()).setDate(new Date(new Date()).getDate() - 1))
type = "YY--MM--DD"
} else if (type == "thisweek") {
// 本周 实际是上周日到当前周的周六。周日的截止时间需特殊处理
if (str == 'first') {
let currentDate = new Date();
let currentDay = currentDate.getDay();
let daysToSunday = currentDay === 0 ? 7 : currentDay;
let lastSunday = new Date(currentDate.getTime() - daysToSunday * 24 * 60 * 60 * 1000);
let lastSundayYear = lastSunday.getFullYear();
let lastSundayMonth = lastSunday.getMonth() + 1; // 注意月份是从 0 开始的,需要加 1
let lastSundayDate = lastSunday.getDate();
let formattedDate = lastSundayYear + '-' + String(lastSundayMonth).padStart(2, '0') + '-' + String(
lastSundayDate).padStart(2, '0');
time = formattedDate;
type = "first-week"
} else if (str == 'last') {
const today = new Date();
if (today.getDay() === 0) {
// 周日
time = new Date()
} else {
// 周一~周六
time = new Date()
}
type = "YY--MM--DD"
}
} else if (type == "lastweek") {
// 上周 上上周日到上周六。周日需特殊处理
const isSun = new Date();
if (isSun.getDay() === 0) {
// 周日。实际开始时间为上周日到这周六
if (str == 'first') {
let currentDate = new Date();
let currentDay = currentDate.getDay();
let daysToSunday = currentDay === 0 ? 7 : currentDay;
let lastSunday = new Date(currentDate.getTime() - daysToSunday * 24 * 60 * 60 * 1000);
let lastSundayYear = lastSunday.getFullYear();
let lastSundayMonth = lastSunday.getMonth() + 1; // 注意月份是从 0 开始的,需要加 1
let lastSundayDate = lastSunday.getDate();
let formattedDate = lastSundayYear + '-' + String(lastSundayMonth).padStart(2, '0') + '-' + String(
lastSundayDate).padStart(2, '0');
time = formattedDate;
type = "first-week"
} else if (str == 'last') {
const today = new Date();
const dayOfWeek = today.getDay();
const diff = 6 - dayOfWeek; // 6 表示周六
const targetSaturday = new Date(today.getFullYear(), today.getMonth(), today.getDate() + diff);
const year = targetSaturday.getFullYear();
const month = targetSaturday.getMonth() + 1; // 月份从 0 开始,需加 1
const date = targetSaturday.getDate();
const formattedDate = `${year}-${month < 10 ? '0' + month : month}-${date < 10 ? '0' + date : date}`;
time = formattedDate;
type = "end-week"
}
} else {
// 周一~周六
if (str == 'first') {
function getPreviousSundayDate() {
const today = new Date();
const dayOfWeek = today.getDay();
const daysSinceLastSunday = (dayOfWeek + 6) % 7 + 8;
const previousSunday = new Date(today);
previousSunday.setDate(today.getDate() - daysSinceLastSunday);
return previousSunday;
}
time = new Date(getPreviousSundayDate());
type = "YY--MM--DD"
} else if (str == 'last') {
function getPreviousSaturdayDate() {
const today = new Date();
const dayOfWeek = today.getDay();
const daysSinceLastSaturday = (dayOfWeek + 6) % 7 + 2;
const previousSaturday = new Date(today);
previousSaturday.setDate(today.getDate() - daysSinceLastSaturday);
return previousSaturday;
}
time = new Date(getPreviousSaturdayDate());
type = "YY--MM--DD"
}
}
} else if (type == "thismonth") {
// 本月 当前月份一号到当天
time = new Date(new Date().getFullYear(), new Date().getMonth(), 1)
type = "YY--MM--DD"
} else if (type == "lastmonth") {
// 上月 上月的第一天到最后一天
if (str == 'first') {
time = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1);
} else if (str == 'last') {
time = new Date(new Date().getFullYear(), new Date().getMonth() - 1 + 1, 0);
}
type = "YY--MM--DD"
} else if (type == "first-week") {} else {
// 时间戳
time = str ? new Date(str) : new Date(new Date().getTime());
}
if (time && typeof time == 'object') {
year = time.getFullYear()
month = (time.getMonth() + 1).toString().padStart(2, '0')
date = (time.getDate()).toString().padStart(2, '0')
hours = (time.getHours()).toString().padStart(2, '0')
minute = (time.getMinutes()).toString().padStart(2, '0')
second = (time.getSeconds()).toString().padStart(2, '0')
}
let result;
if (!str) {
return '-'
}
switch (type) {
case 'default': // 2023-10-31 09:00:00
result = year + '-' + month + '-' + date + ' ' + hours + ':' + minute + ':' + second;
break;
case 'small': // 2023-10-31 09:00:00
result = year + month + date + hours + minute + second;
break;
case 'YY--MM--DD HH:MM': // 2023-10-31 09:00
result = year + '-' + month + '-' + date + ' ' + hours + ':' + minute;
break;
case 'MM--DD HH:MM': // 2023-10-31 09:00
result = month + '-' + date + ' ' + hours + ':' + minute;
break;
case 'YY--MM--DD': // 2023-10-31
result = year + '-' + month + '-' + date;
break;
case 'HH:MM:SS': // 09:00:00
result = hours + ':' + minute + ':' + second;
break;
case 'first-week': // 09:00:00
result = time;
break;
case 'end-week': // 09:00:00
result = time;
break;
default:
break;
}
return result;
},
disposeJobListData(jobList) {
let that = this;
if (jobList !== undefined) {
if (Array.isArray(jobList)) {
jobList.forEach((item) => {
item["workType"] = that.getWorkTypeById(item.workTypeMulti);
if (that.isNotEmptyCheck(item.distance)) {
item["distanceKm"] = that.getDistanceName(item.distance);
}
if (that.isNotEmptyCheck(item.jobDesp)) {
item["jobDesp"] = item["jobDesp"].replaceAll("*****", "");
}
//年龄
// // console.log(jobList);
var ageStr = "";
if (that.isNotEmptyCheck(item.minAge) && that.isNotEmptyCheck(item.maxAge)) {
ageStr = item.minAge + "-" + item.maxAge + "岁";
} else if (that.isNotEmptyCheck(item.minAge)) {
ageStr = item.minAge + "岁以上";
} else if (that.isNotEmptyCheck(item.maxAge)) {
ageStr = item.maxAge + "岁以下";
}
item["age"] = ageStr;
item.updateTime = that.getPointTime(item.updateTime, 'YY--MM--DD HH:MM');
// 更新时间距离现在的差距
let differenceTime = new Date().getTime() - new Date(item.updateTime || new Date()).getTime();
var D = Math.floor(differenceTime / (24 * 60 * 60 * 1000));
var leave1 = differenceTime % (24 * 3600 * 1000);
var H = Math.floor(leave1 / (3600 * 1000));
var leave2 = leave1 % (3600 * 1000);
var M = Math.floor(leave2 / (60 * 1000));
var leave3 = leave2 % (60 * 1000);
var S = Math.floor(leave3 / 1000);
item.diffTime = null;
if (D > 0) {
item.diffTime = D + "天前";
} else if (H > 0) {
item.diffTime = H + "小时前";
} else if (M > 0) {
item.diffTime = M + "分钟前";
} else {
item.diffTime = S + "秒前";
}
if (item.returnFeeType) {
if (item.returnFeeType === 0) {
item.servetype = `${item.returnFee || "--"}元/小时`;
} else if (item.returnFeeType === 1) {
item.servetype = `${item.returnFee || "--"}元/日`;
} else if (item.returnFeeType === 2) {
item.servetype = `${item.returnFee || "--"}元/月`;
} else if (item.returnFeeType === 3) {
item.servetype = `${item.returnFee || "--"}元/次`;
} else if (item.returnFeeType === 4) {
item.servetype = `${item.returnFee || "--"}元/件`;
} else if (item.returnFeeType === 5) {
item.servetype = `工人收入${item.returnFee || "--"}%`;
} else if (item.returnFeeType === 6) {
item.servetype = `${item.returnFee || "--"}`;
} else if (item.returnFeeType === 7) {
item.servetype = `费用待定`;
}
} else {
item.servetype = `${item.returnFee || "--"}元/小时`;
}
//地址深圳丨龙岗区丨
var districtStr = "";
if (that.isNotEmptyCheck(item.district)) {
var districtArr = item.district.split(",");
var districtArr1 = [];
districtArr.forEach((item1, index) => {
// // console.log('item1',item1)
if (item1.length != 0 && index < 2) {
item1 = item1 + "丨";
districtArr1.push(item1);
}
});
if (districtArr.length < 3) {
districtStr = districtArr1[districtArr1.length - 1];
} else {
districtStr = districtArr1.join("");
}
if (item.district.indexOf("undefined") > -1) {
districtStr = "-丨";
}
}
item["district"] = districtStr;
//职位特色
item["jobRequestLabelNames"] = that.getjobRequestLabelNamesArray(item.jobRequestLabelNames);
// 特色标签
const jobRequestLabelNames = [];
if (that.isNotEmptyCheck(item.jobRequestLabelNames) && Array.isArray(item.jobRequestLabelNames)) {
item.jobRequestLabelNames.forEach((item, index) => {
if (index <= 2) {
jobRequestLabelNames.push(item);
} else {
return;
}
});
item.jobRequestLabelNames = jobRequestLabelNames;
}
// 年龄限制
if (Boolean(item.minAgeWoman) === true && Boolean(item.minAgeMan) === false) {
item.gender = "女丨";
} else if (Boolean(item.minAgeWoman) === false && Boolean(item.minAgeMan) === true) {
item.gender = "男丨";
} else {
item.gender = "男女不限丨";
}
});
} else {
jobList["workType"] = that.getWorkTypeById(jobList.workTypeMulti);
if (that.isNotEmptyCheck(jobList.distance)) {
jobList["distanceKm"] = that.getDistanceName(jobList.distance);
}
if (that.isNotEmptyCheck(jobList.jobDesp)) {
jobList["jobDesp"] = jobList["jobDesp"].replaceAll("*****", "");
}
// 性别限制
if (Boolean(jobList.minAgeWoman) === true && Boolean(jobList.minAgeMan) === false) {
jobList.genderAge = "女" + '丨' + jobList.minAgeWoman + "-" + jobList.maxAgeWoman + "岁";
} else if (Boolean(jobList.minAgeWoman) === false && Boolean(jobList.minAgeMan) === true) {
jobList.genderAge = "男" + '丨' + jobList.minAgeMan + "-" + jobList.maxAgeMan + "岁";
} else if ((jobList.minAgeWoman != jobList.minAgeMan) || (jobList.maxAgeWoman != jobList.maxAgeMan)) {
jobList.genderAge = "男" + jobList.minAgeMan + "-" + jobList.maxAgeMan + "岁" + "丨" + "女" + jobList
.minAgeWoman + "-" + jobList.maxAgeWoman + "岁"
} else {
jobList.genderAge = "男女不限" + '丨' + jobList.minAge + "-" + jobList.maxAge + "岁";
}
//年龄
var ageStr = "";
if (that.isNotEmptyCheck(jobList.minAge) && that.isNotEmptyCheck(jobList.maxAge)) {
ageStr = jobList.minAge + "-" + jobList.maxAge + "岁";
} else if (that.isNotEmptyCheck(jobList.minAge)) {
ageStr = jobList.minAge + "岁以上";
} else if (that.isNotEmptyCheck(jobList.maxAge)) {
ageStr = jobList.maxAge + "岁以下";
}
jobList["age"] = ageStr;
if (jobList.returnFeeType) {
if (jobList.returnFeeType === 0) {
jobList.servetype = `${jobList.returnFee || "--"}元/小时`;
} else if (jobList.returnFeeType === 1) {
jobList.servetype = `${jobList.returnFee || "--"}元/日`;
} else if (jobList.returnFeeType === 2) {
jobList.servetype = `${jobList.returnFee || "--"}元/月`;
} else if (jobList.returnFeeType === 3) {
jobList.servetype = `${jobList.returnFee || "--"}元/次`;
} else if (jobList.returnFeeType === 4) {
jobList.servetype = `${jobList.returnFee || "--"}元/件`;
} else if (jobList.returnFeeType === 5) {
jobList.servetype = `工人收入${jobList.returnFee || "--"}%`;
} else if (jobList.returnFeeType === 6) {
jobList.servetype = `${jobList.returnFee || "--"}`;
} else if (jobList.returnFeeType === 7) {
jobList.servetype = `费用待定`;
}
} else {
jobList.servetype = `${jobList.returnFee || "--"}元/小时`;
}
//地址深圳丨龙岗区丨
var districtStr = "";
if (that.isNotEmptyCheck(jobList.district) || that.isNotEmptyCheck(jobList.storeDistrict)) {
var districtArr
districtArr = that.isNotEmptyCheck(jobList.district) ? jobList.district.split(",") : jobList.storeDistrict
.split(",")
// // console.log(districtArr);
var districtArr1 = [];
// // console.log(districtArr);
districtArr.forEach((item1, index) => {
if (item1.length != 0 && index < 2) {
item1 = item1 + "丨";
districtArr1.push(item1);
}
});
// // console.log(districtArr1);
if (districtArr.length > 3) {
districtStr = districtArr1[districtArr1.length - 1];
} else {
districtStr = districtArr1.join("");
}
// // console.log(districtStr);
// // console.log(jobList.district);
if (jobList.district == undefined && jobList.storeDistrict == undefined) {
districtStr = "-丨";
}
}
// // console.log(districtStr);
jobList["district"] = districtStr;
//职位特色
jobList["jobRequestLabelNames"] = that.getjobRequestLabelNamesArray(jobList.jobRequestLabelNames);
const jobRequestLabelNames1 = [];
if (that.isNotEmptyCheck(jobList.jobRequestLabelNames) && Array.isArray(jobList.jobRequestLabelNames)) {
jobList.jobRequestLabelNames.forEach((item, index) => {
// if (index <= 4) {
jobRequestLabelNames1.push(item);
// } else {
// return;
// }
});
jobList.jobRequestLabelNames = jobRequestLabelNames1;
}
}
}
return jobList;
},
getjobRequestLabelNamesArray(jobRequestLabelNames) {
if (this.isNotEmptyCheck(jobRequestLabelNames)) {
return jobRequestLabelNames.split(", ");
}
return [];
},
/**
* 根据工种类型ID获取名称
*/
getWorkTypeById(id) {
let str = "";
let array = this.workTypeArray();
array.forEach((item) => {
if (item.id == id) {
str = item.name;
}
});
return str;
},
/**
* 工种类型
*/
workTypeArray() {
let workTypeArray = [{
id: 0,
name: "全职",
value: "0",
text: "全职",
checked: false,
},
{
id: 1,
name: "兼职",
value: "1",
text: "兼职",
checked: false,
},
{
id: 2,
name: "寒暑假工",
value: "2",
text: "寒暑假工",
checked: false,
},
{
id: 3,
name: "实习生",
value: "3",
text: "实习生",
checked: false,
},
{
id: 4,
name: "零工",
value: "4",
text: "零工",
checked: false,
},
];
return workTypeArray;
},
getGenderByMinAge(res) {
// // console.log("==================", res);
let str = "";
if (res.minAgeMan && res.minAgeWoman) {
str = "男女不限";
} else if (res.minAgeMan && !res.minAgeWoman) {
str = "仅限男性";
} else if (!res.minAgeMan && res.minAgeWoman) {
str = "仅限女性";
}
return str;
},
toGetAddressv3($list) {
if ($list && $list.length > 0) {
$list.forEach(item => {
let storeDistrict = item.storeAddr || item.storeDistrict;
item["district"] = this.setJobInfoPositionv3(storeDistrict);
});
return $list;
} else {
return [];
}
},
setJobInfoPositionv3(str) {
str = str.replace(//g, '');
var reg = /.+?(省|市|自治区|自治州|县|区)/g; // 省市区的正则
let matches = str.match(reg);
let result = '';
function getStr(str) {
if (matches[0].includes('省') || matches[0].includes('自治区') || matches[0].includes('自治州')) {
if (matches[1].includes('市') && matches[2].includes('市')) {
result = `${matches[0]}${matches[2]}`;
} else {
if (matches[2].includes('县')) {
result = `${matches[0]}${matches[2]}`;
} else {
result = `${matches[0]}${matches[1]}`;
}
}
} else if (matches[1].includes('市')) {
result = `${matches[0]}${matches[2]}`;
} else {
result = `${matches[1]}${matches[2]}`;
}
}
if (matches && matches.length > 0) {
switch (matches.length) {
case 1:
result = matches[0];
break;
case 2:
if (matches[0].includes('省') || matches[0].includes('自治区') || matches[0].includes('自治州')) {
result = `${matches[0]}${matches[1]}`;
} else {
result = `${matches[0]}${matches[1]}`;
}
break;
case 3:
getStr()
break;
case 4:
getStr()
break;
case 5:
getStr()
break;
default:
result = str;
break;
}
} else {
result = str;
}
return result;
},
getSalaryClassifyValueHtml(salaryClassify, salaryClassifyValue, salaryClassifyValue1) {
var salary = this.moneyToFixed(salaryClassifyValue);
var salary1 = this.moneyToFixed(salaryClassifyValue1);
if (salaryClassify == 0) {
return `<span style='font-size:18px'>${salary}<span style='font-size:14px'>元/小时</span></span>`;
} else if (salaryClassify == 1) {
return `<span style='font-size:18px'>${salary}<span style='font-size:14px'>元/天</span></span>`;
} else if (salaryClassify == 2) {
return `<span style='font-size:18px'><span style='font-size:14px'>补</span>${salary}<span style='font-size:14px'>元</span></span>`;
} else if (salaryClassify == 3) {
return `<span style='font-size:18px'><span style='font-size:14px'>返</span>${salary}<span style='font-size:14px'>元</span></span>`;
} else if (salaryClassify == 4) {
return `<span style='font-size:18px'>计件</span>`;
} else if (salaryClassify == 5) {
return `<span style='font-size:14px'>保底</span>${salary}<span style='font-size:14px'>元</span>`;
} else if (salaryClassify == 6) {
return `<span style='font-size:18px'>面议</span>`;
} else if (salaryClassify == 7) {
// return salary + '-' + salary1 + `<span style='font-size:14px'>元/月</span>`;
return `<span style='font-size:18px'>月薪</span>`;
} else {
return "-";
}
},
/* 同步 */
moneyToFixed(money, fixed = 2, multiplicator = 100) {
if (money != 0 && money != null && money != "" && money != undefined) {
return this.cutZero(new Number(money / multiplicator).toFixed(fixed));
} else {
return "0";
}
},
/* 同步 */
cutZero(old) {
//拷贝一份 返回去掉零的新串
let newstr = old;
//循环变量 小数部分长度
var leng = old.length - old.indexOf(".") - 1;
//判断是否有效数
if (old.indexOf(".") > -1) {
//循环小数部分
for (var i = leng; i > 0; i--) {
//如果newstr末尾有0
if (newstr.lastIndexOf("0") > -1 && newstr.substr(newstr.length - 1, 1) == 0) {
var k = newstr.lastIndexOf("0");
//如果小数点后只有一个0 去掉小数点
if (newstr.charAt(k - 1) == ".") {
return newstr.substring(0, k - 1);
} else {
//否则 去掉一个0
newstr = newstr.substring(0, k);
}
} else {
//如果末尾没有0
return newstr;
}
}
}
return old;
},
setDeadLine(time, type) {
if (type) {
// 交付助手的倒计时
let differenceTime = new Date().getTime() - new Date(time).getTime()
let absTime = Math.abs(differenceTime)
var D = Math.floor(absTime / (24 * 60 * 60 * 1000));
var leave1 = absTime % (24 * 3600 * 1000);
var H = Math.floor(leave1 / (3600 * 1000));
var leave2 = leave1 % (3600 * 1000);
var M = Math.floor(leave2 / (60 * 1000));
var leave3 = leave2 % (60 * 1000);
var S = Math.floor(leave3 / 1000);
// 时间正负的判断标识
let symbol = true
if (differenceTime < 0) {
symbol = false
}
if (type == 'jiaofu') {
if (D > 0) {
return D + (symbol ? "天前" : '天后');
} else if (H > 0) {
return H + (symbol ? "小时前" : '小时后');
} else if (M > 0) {
return M + (symbol ? "分钟前" : '分钟后');
} else {
// return S + (symbol ? "秒前" : '秒后');
return '刚刚';
}
} else if (type == '在职') {
// 处理在职中的时间显示
if (D > 0) {
return type + D + '天'
} else if (H > 0) {
return type + H + '小时'
} else if (M > 0) {
return type + M + '分钟'
} else {
return type + S + '秒'
}
}
} else {
let differenceTime = new Date(time).getTime() - new Date().getTime()
let absTime = Math.abs(differenceTime)
let D = Math.floor(absTime / (24 * 60 * 60 * 1000))
let leave1 = absTime % (24 * 3600 * 1000)
let H = Math.floor(leave1 / (3600 * 1000)) > 9 ? Math.floor(leave1 / (3600 * 1000)) : '0' + Math.floor(leave1 /
(3600 * 1000))
let leave2 = leave1 % (3600 * 1000)
let M = Math.floor(leave2 / (60 * 1000)) > 9 ? Math.floor(leave2 / (60 * 1000)) : '0' + Math.floor(leave2 / (
60 * 1000))
let leave3 = leave2 % (60 * 1000)
let S = Math.floor(leave3 / 1000) > 9 ? Math.floor(leave3 / 1000) : '0' + Math.floor(leave3 / 1000)
// 倒计时到期的判断
let symbol = ''
// if (differenceTime < 0) {
// symbol = '-'
// }
if (D > 0) {
return symbol + D + '天'
} else if (H > 0) {
return symbol + H + ':' + M + ':' + S
} else if (M > 0) {
return symbol + M + ':' + S
} else {
return symbol + S + '秒'
// return '刚刚'
}
}
},
/**
* canvas绘图 start
*/
/**
* 文字绘制
*/
fillTextLineBreak(ctx, text, x, y, lw, lh, color = "#333", font = "32", weight = "500", align = "left") {
var i = 0;
var n = 0;
var r = -1;
// var initHeight = 0;
ctx.font = weight + " " + font + "px Arial"; //字体大小
ctx.fillStyle = color; //字体颜色
// ctx.textBaseline = align;
// ctx.textAlign = align;
while (i < text.length) {
while (ctx.measureText(text.substring(n, i)).width < lw && i < text.length) {
i++;
}
r++;
ctx.fillText(text.substring(n, i), x, y + lh * r);
n = i;
}
},
// 计算总体宽度
calculateTotalWidth(ctx, segments) {
let totalWidth = 0;
segments.forEach((segment) => {
// console.log('segment', segment);
if (segment) {
ctx.font = `${segment.fontWeight} ${segment.fontSize}px Arial`;
totalWidth += ((ctx.measureText(segment.content).width) + (segment.space || 0));
}
});
return totalWidth;
},
// 绘制单行居中的拼接文本
drawCenteredText(ctx, x, y, textSegments) {
// 计算总宽度
const totalWidth = this.calculateTotalWidth(ctx, textSegments);
// console.log('totalWidth', totalWidth, textSegments);
// 计算起始X坐标居中位置
const centerX = x;
const startX = (centerX - totalWidth) / 2;
const centerY = y;
// 绘制拼接文本
let currentX = startX;
textSegments.forEach((segment) => {
if (segment) {
ctx.font = `${segment.fontWeight} ${segment.fontSize}px Arial`;
ctx.fillStyle = segment.color;
// 文本基线设为中间,使垂直方向也居中
// ctx.textBaseline = "middle";
// 绘制当前文本片段
ctx.fillText(segment.content, currentX, centerY);
// 更新X坐标为下一段文本做准备, 文本长度为1的时候使用字体大小
currentX += ((ctx.measureText(segment.content).width) + (segment.space || 0));
}
});
},
/**
* 背景图绘制
*/
roundRect(ctx, img, bg_x, bg_y, bg_w, bg_h, bg_r) {
// 开始绘制
ctx.save();
ctx.beginPath();
ctx.arc(bg_x + bg_r, bg_y + bg_r, bg_r, Math.PI, Math.PI * 1.5);
ctx.arc(bg_x + bg_w - bg_r, bg_y + bg_r, bg_r, Math.PI * 1.5, Math.PI * 2);
ctx.arc(bg_x + bg_w - bg_r, bg_y + bg_h - bg_r, bg_r, 0, Math.PI * 0.5);
ctx.arc(bg_x + bg_r, bg_y + bg_h - bg_r, bg_r, Math.PI * 0.5, Math.PI);
ctx.clip();
ctx.drawImage(img, bg_x, bg_y, bg_w, bg_h);
// 恢复之前保存的绘图上下文
ctx.restore();
},
roundRect_yuan(ctx, x, y, size, color) {
// 开始绘制
ctx.save(); // 保存
ctx.beginPath(); // 开始绘制
// ctx.arc(100, 75, 50, 0, 2 * Math.PI)
ctx.arc(size / 2 + x, size / 2 + y, size / 2, 0, Math.PI * 2, false);
ctx.fillStyle = color;
ctx.strokeStyle = color;
ctx.fill();
ctx.clip();
// 恢复之前保存的绘图上下文
ctx.restore();
},
roundRect1(ctx, x, y, w, h, r, color) {
//绘制圆角矩形(无填充色))
ctx.save();
ctx.fillStyle = color;
ctx.strokeStyle = color;
ctx.lineJoin = "round"; //交点设置成圆角
ctx.lineWidth = r;
ctx.strokeRect(x + r / 2, y + r / 2, w - r, h - r);
ctx.fillRect(x + r, y + r, w - r * 2, h - r * 2);
ctx.stroke();
ctx.closePath();
},
// 绘制折线
setZigzag(ctx) {
// 定义折线的点坐标 (形成90度角)
const points = [{
x: 100,
y: 100
}, // 起点
{
x: 200,
y: 100
}, // 转折点
{
x: 200,
y: 200
} // 终点
];
let cornerRadius = -10
// 设置线条样式
ctx.lineWidth = lineWidth;
ctx.strokeStyle = strokeColor;
ctx.lineCap = 'round';
// 开始绘制路径
ctx.beginPath();
// 从第一个点开始
ctx.moveTo(points[0].x, points[0].y);
// 遍历所有点,处理转折点
for (let i = 1; i < points.length - 1; i++) {
const prev = points[i - 1];
const curr = points[i];
const next = points[i + 1];
// 计算进入和离开转折点的方向向量
const inVector = {
x: curr.x - prev.x,
y: curr.y - prev.y
};
const outVector = {
x: next.x - curr.x,
y: next.y - curr.y
};
// 归一化向量
const inLength = Math.sqrt(inVector.x ** 2 + inVector.y ** 2);
const outLength = Math.sqrt(outVector.x ** 2 + outVector.y ** 2);
const normalizedIn = {
x: inVector.x / inLength,
y: inVector.y / inLength,
};
const normalizedOut = {
x: outVector.x / outLength,
y: outVector.y / outLength,
};
// 计算拐角的起点和终点距离转折点cornerRadius的位置
const start = {
x: curr.x - normalizedIn.x * cornerRadius,
y: curr.y - normalizedIn.y * cornerRadius,
};
const end = {
x: curr.x + normalizedOut.x * cornerRadius,
y: curr.y + normalizedOut.y * cornerRadius,
};
// 绘制到拐角起点
ctx.lineTo(start.x, start.y);
// 计算切线方向,绘制贝塞尔曲线作为圆角
const control1 = {
x: start.x + normalizedOut.x * cornerRadius,
y: start.y + normalizedOut.y * cornerRadius,
};
const control2 = {
x: end.x - normalizedIn.x * cornerRadius,
y: end.y - normalizedIn.y * cornerRadius,
};
ctx.bezierCurveTo(control1.x, control1.y, control2.x, control2.y, end.x, end.y);
}
// 绘制到最后一个点
ctx.lineTo(points[points.length - 1].x, points[points.length - 1].y);
// 描边路径
ctx.stroke();
},
/**
* canvas绘图 end
*/
policyNumToHanZi(i, type = 'other') {
let pickerStr;
if (i <= 9) {
switch (i) {
case 1:
pickerStr = type == 'add' ? '一条政策' : "政策一";
break;
case 2:
pickerStr = type == 'add' ? '二条政策' : "政策二";
break;
case 3:
pickerStr = type == 'add' ? '三条政策' : "政策三";
break;
case 4:
pickerStr = type == 'add' ? '四条政策' : "政策四";
break;
case 5:
pickerStr = type == 'add' ? '五条政策' : "政策五";
break;
case 6:
pickerStr = type == 'add' ? '六条政策' : "政策六";
break;
case 7:
pickerStr = type == 'add' ? '七条政策' : "政策七";
break;
case 8:
pickerStr = type == 'add' ? '八条政策' : "政策八";
break;
case 9:
pickerStr = type == 'add' ? '九条政策' : "政策九";
break;
case 10:
pickerStr = type == 'add' ? '十条政策' : "政策十";
break;
default:
pickerStr = type == 'add' ? (i + 1) + '条政策' : "政策" + (i + 1);
break;
}
}
return pickerStr
},
}
export default data;

@ -0,0 +1,134 @@
function withData (param) {
return param < 10 ? "0" + param : "" + param;
}
function getLoopArray (start, end) {
var start = start || 0;
var end = end || 1;
var array = [];
for (var i = start; i <= end; i++) {
array.push(withData(i));
}
return array;
}
function getMonthDay (year, month) {
year = year.replace("年", "");
month = month.replace("月", "");
var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0),
array = null;
switch (month) {
case "01":
case "03":
case "05":
case "07":
case "08":
case "10":
case "12":
array = getLoopArray(1, 31);
break;
case "04":
case "06":
case "09":
case "11":
array = getLoopArray(1, 30);
break;
case "02":
array = flag ? getLoopArray(1, 29) : getLoopArray(1, 28);
break;
default:
array = "月份格式不正确,请重新输入!";
}
return array;
}
function getNewDateArry () {
//如果dateTimePicker的date不可能为空此处可以省略
// 当前时间的处理
var newDate = new Date();
var year = withData(newDate.getFullYear()),
mont = withData(newDate.getMonth() + 1),
date = withData(newDate.getDate()),
hour = withData(newDate.getHours()),
minu = withData(newDate.getMinutes()),
seco = withData(newDate.getSeconds());
return [year, mont, date, hour, minu];
}
function getcurrent (date) {
// wx.getSystemInfo({
// success: function (res) {
// console.log(res);
// if(res.platform == "devtools"){
// }
// }
// })
// date.replace(/\-/g,"/")
// console.log(date.replace(/\-/g,"/"))
var d = new Date(date.replace(/\-/g, "/"));
var year = withData(d.getFullYear()),
month = withData(d.getMonth() + 1),
dat = withData(d.getDate()),
hour = withData(d.getHours()),
minu = withData(d.getMinutes()),
seco = withData(d.getSeconds());
return [year, month, dat, hour, minu];
}
function dateTimePicker (startYear, endYear, date, isNoTime) {
var datearr = [];
// console.log(date);
// console.log("获取date 74 ");
// console.log(getcurrent(date));
if (date) {
datearr = getcurrent(date);
}
// console.log(datearr)
// 返回默认显示的数组和联动数组的声明
var dateTime = [],
dateTimeArray = [[], [], [], []];
var start = startYear || 2020;
var end = endYear || 2025;
// 默认开始显示数据
var defaultDate = date ? datearr : getNewDateArry();
// console.log("datearr")
// console.log(datearr)
// console.log(getNewDateArry());
// console.log(defaultDate)
// console.log("0999999");
// console.log(defaultDate[0], defaultDate[1])
// 处理联动列表数据
/*年月日 时分*/
dateTimeArray[0] = getLoopArray(start, end);
dateTimeArray[1] = getLoopArray(1, 12);
dateTimeArray[2] = getMonthDay(defaultDate[0], defaultDate[1]);
if (isNoTime != "noTime") {
dateTimeArray[3] = ["06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30"];
}
dateTimeArray.forEach((current, index) => {
// console.log(current);
// console.log(index);
// console.log(defaultDate[index]);
// console.log(current.indexOf(defaultDate[index]));
if (index != 3) {
dateTime.push(current.indexOf(defaultDate[index]));
} else {
if (defaultDate[3] != "") {
dateTime.push(dateTimeArray[3].indexOf(defaultDate[3] + ":" + defaultDate[4]));
} else {
dateTime.push(12);
}
}
});
return {
dateTimeArray: dateTimeArray,
dateTime: dateTime,
};
}
export default {
dateTimePicker: dateTimePicker,
getMonthDay: getMonthDay,
};

@ -1,7 +1,7 @@
{
"id": "rh-ui",
"displayName": "rh-ui",
"version": "1.0.932",
"version": "1.0.934",
"description": "公司内部UI框架",
"keywords": [
"ui框架"
@ -61,11 +61,11 @@
},
"nvue": "-",
"android": {
"extVersion": "1.0.932",
"extVersion": "1.0.934",
"minVersion": "19"
},
"ios": {
"extVersion": "1.0.932",
"extVersion": "1.0.934",
"minVersion": "12"
},
"harmony": "-"

Loading…
Cancel
Save