diff --git a/src/components/knockGold/index.jsx b/src/components/knockGold/index.jsx index 5db7aeda..98cd7d12 100644 --- a/src/components/knockGold/index.jsx +++ b/src/components/knockGold/index.jsx @@ -58,7 +58,7 @@ const week = [ { key: 'Thu', text: '周四' }, { key: 'Fri', text: '周五' }, { key: 'Sat', text: '周六' }, - { key: 'Sun', text: '周天' } + { key: 'Sun', text: '周日' } ] //预警百分比 const earlyPerList = ['70', '50', '30', '20'] @@ -97,9 +97,9 @@ export default class addKnockGold extends Component { timer_type: '1', //领取时间段类型 effect_date_type: '', //生效日期类型 effect_date: '', //生效日期 - ruleDate: [[]], //规则日期 irregularDate: [[]], //不规则日期 irregularTime: [[]], //不规则时间 + ruleDate: [[]], //规则日期 ruleWeek: [] //规则周 }, TimeDiffer: '', @@ -155,6 +155,17 @@ export default class addKnockGold extends Component { if (this.props?.data?.id ? true : false) return return ( <> + {index !== 0 ? ( +

{ + const model = valueKey + model.splice(index, 1) + this.setState({ [key]: model }) + }}> + 删除 +

+ ) : null} {index === valueKey.length - 1 ? (

) : null} - {index !== 0 ? ( -

{ - const model = valueKey - model.splice(index, 1) - this.setState({ [key]: model }) - }}> - 删除 -

- ) : null} ) } @@ -1151,43 +1151,48 @@ export default class addKnockGold extends Component { }}> 领取后 -
- { + this.onHandleChange(value, 'effect_date_type') + }} + value={this.state.model.effect_date_type} + className='select-basic' + disabled={this.props?.data?.id ? true : false} + width='195px' + popupWidth='195px' + disableSearch + /> +
+ 有效期 + { + this.onHandleChange(value, 'effect_date') + }} + onClearItem={() => { + this.onHandleChange('', 'effect_date') + }} + disabled={this.props?.data?.id ? true : false} + value={this.state.model.effect_date} + placeholder={'请输入'} + labelWidth={'0px'} + maxLength={3} + height={'36px'} + unit='天' + countShow={false} + width={'172px'} + alignment={'left'} + /> + + ) : null} -
+
固定时间 - { - this.onHandleChange(value, 'fixed_time') - }} - disabledDate={this.onDisabledRange2} - disabledTime={this.onDisabledTime1} - /> + {this.state.model.usable_time === 'fiexd' ? ( + { + this.onHandleChange(value, 'fixed_time') + }} + disabledDate={this.onDisabledRange2} + disabledTime={this.onDisabledTime1} + /> + ) : null}
有效期内,规则日期可用 - this.onHandleChange(va, 'ruleWeek')} - style={{ marginLeft: '25px' }}> - {week.map((week) => ( - - {week.text} - - ))} - - {this.state.model.ruleDate.map((item, index) => ( -
- { - const model = this.state.model.ruleDate - model[index] = value - this.onHandleChange(model, 'ruleDate') - }} - width={205} - disabledTime={this.onDisabledRange} - /> - {this.addOrMoveFunction( - index, - 'ruleDate', - this.state.model.ruleDate, - false, - '最多设置3个时段' - )} -
- ))} -

- 请按照24小时制输入可用时段,最多设置3个时段 -

+ {this.state.model.usable_time === 'week' ? ( + <> + this.onHandleChange(va, 'ruleWeek')} + style={{ marginLeft: '25px', marginTop: '20px' }}> + {week.map((week) => ( + + {week.text} + + ))} + + {this.state.model.ruleDate.map((item, index) => ( +
+ { + const model = this.state.model.ruleDate + model[index] = value + this.onHandleChange(model, 'ruleDate') + }} + width={205} + disabledTime={this.onDisabledRange} + /> + {this.addOrMoveFunction( + index, + 'ruleDate', + this.state.model.ruleDate, + false, + '最多设置3个时段' + )} +
+ ))} +

+ 请按照24小时制输入可用时段,最多设置3个时段 +

+ + ) : null}
-
+
有效期内,不规则日期可用 -

- 可在有效期内任意选择时间天数,以及可用时段。 - 因当前微信支持问题,如选择不规则时间,微信卡包内当前仅会展示有效期,建议 - 将具体可用日期以及时间段填写在使用说明内。 -

- {this.state.model.irregularDate.map((time, index) => ( -
- { - const model = this.state.model.irregularDate - model[index] = value - this.onHandleChange(model, 'irregularDate') - }} - disabledDate={this.onDisabledRange2} - disabledTime={this.onDisabledTime1} - /> - {this.addOrMoveFunction( - index, - 'irregularDate', - this.state.model.irregularDate, - true - )} -
- ))} - - {this.state.model.irregularTime.map((time, index) => ( -
- { - const model = this.state.model.irregularTime - model[index] = value - this.onHandleChange(model, 'irregularTime') - }} - width={205} - disabledTime={this.onDisabledRange} - /> - {this.addOrMoveFunction( - index, - 'irregularTime', - this.state.model.irregularTime, - true - )} -
- ))} + {this.state.model.usable_time === 'irregular' ? ( + <> +

+ 可在有效期内任意选择时间天数,以及可用时段。 + 因当前微信支持问题,如选择不规则时间,微信卡包内当前仅会展示有效期,建议 + 将具体可用日期以及时间段填写在使用说明内。 +

+ {this.state.model.irregularDate.map((time, index) => ( +
+ { + const model = this.state.model.irregularDate + model[index] = value + this.onHandleChange(model, 'irregularDate') + }} + disabledDate={this.onDisabledRange2} + disabledTime={this.onDisabledTime1} + /> + {this.addOrMoveFunction( + index, + 'irregularDate', + this.state.model.irregularDate, + true + )} +
+ ))} + {this.state.model.irregularTime.map((time, index) => ( +
+ { + const model = this.state.model.irregularTime + model[index] = value + this.onHandleChange(model, 'irregularTime') + }} + width={205} + disabledTime={this.onDisabledRange} + /> + {this.addOrMoveFunction( + index, + 'irregularTime', + this.state.model.irregularTime, + false, + '最多设置3个时段' + )} +
+ ))} + + ) : null}
diff --git a/src/components/knockGold/index.less b/src/components/knockGold/index.less index 26abfaa7..c6baa80a 100644 --- a/src/components/knockGold/index.less +++ b/src/components/knockGold/index.less @@ -19,6 +19,27 @@ min-width: 375px !important; width: auto !important; + .available_time { + text-align: left; + margin-bottom: 8px; + + h3 { + font-size: 15px; + color: #171717; + padding-bottom: 5px; + box-sizing: border-box; + + } + + .timeList { + li { + margin: 3px 0; + font-size: 12px; + color: #a8a8a8; + } + } + } + .couponShow { @@ -192,6 +213,7 @@ .boxTime { display: flex; align-items: center; + min-height: 36px; .zent-radio-group { margin-right: 20px; @@ -218,12 +240,6 @@ .column { flex-direction: column; align-items: flex-start; - - .column_label { - margin-bottom: 20px; - } - - } .zent-datepicker-trigger { diff --git a/src/components/knockGold/mobileCmponent.jsx b/src/components/knockGold/mobileCmponent.jsx index 3db76966..4885049b 100644 --- a/src/components/knockGold/mobileCmponent.jsx +++ b/src/components/knockGold/mobileCmponent.jsx @@ -2,14 +2,21 @@ * @Author: Wind * @Date: 2022-06-06 14:53:58 * @LastEditors: Wind - * @LastEditTime: 2022-07-12 10:54:07 + * @LastEditTime: 2022-08-12 17:41:52 * @Description: * @FilePath: \frontend\src\components\knockGold\mobileCmponent.jsx */ import { Placeholder } from 'zent' +import { useEffect, useState } from 'react' import './index.less' +import { sortWeeks } from '@/utils' const widths = [24, 100, 100, 100, 80, 24, 100, 100, 100, 80, 100, 100, 100, 80] export default ({ data }) => { + const [newWeek, setNewWeek] = useState([]) + useEffect(() => { + setNewWeek(sortWeeks(data.ruleWeek)) + }, [data.ruleWeek]) + return (
@@ -47,6 +54,22 @@ export default ({ data }) => {

- {data.batch_goods_name ? data.batch_goods_name : 'xxx'}兑换说明 -

+ + {data.usable_time === 'week' ? ( +
+

可用时间

+
    + {newWeek?.map((item) => ( +
  • + {`${item}: + ${data.ruleDate.map((item1) => { + if (item1[1]) return `${item1[0]}~${item1[1]}` + })}`} +
  • + ))} +
+
+ ) : null} {data.instruction ? ( <>
diff --git a/src/utils.js b/src/utils.js index 69a8189e..9dc9a94d 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,82 +1,166 @@ /* 去重 */ export function deWeightThree(data, key) { - let map = new Map(); + let map = new Map() for (let item of data) { if (!map.has(item[key])) { - map.set(item[key], item); + map.set(item[key], item) } } - return [...map.values()]; + return [...map.values()] } /* uuid生成器 */ export function uuid(len, radix) { var chars = - "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); + '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') var uuid = [], - i; - radix = radix || chars.length; + i + radix = radix || chars.length if (len) { // Compact form - for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]; + for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)] } else { // rfc4122, version 4 form - var r; + var r // rfc4122 requires these characters - uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; - uuid[14] = "4"; + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' + uuid[14] = '4' // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { - r = 0 | (Math.random() * 16); - uuid[i] = chars[i == 19 ? (r & 0x3) | 0x8 : r]; + r = 0 | (Math.random() * 16) + uuid[i] = chars[i == 19 ? (r & 0x3) | 0x8 : r] } } } - return uuid.join(""); + return uuid.join('') } //计算两个时间差 返回天 export function timeDiff(begin_time, end_time) { //年月日时分秒转换为时间戳 - let beginTime = new Date(begin_time).getTime() / 1000; - let endTime = new Date(end_time).getTime() / 1000; - var starttime = ""; - var endtime = ""; + let beginTime = new Date(begin_time).getTime() / 1000 + let endTime = new Date(end_time).getTime() / 1000 + var starttime = '' + var endtime = '' if (beginTime < endTime) { - starttime = beginTime; - endtime = endTime; + starttime = beginTime + endtime = endTime } else { - starttime = endTime; - endtime = beginTime; + starttime = endTime + endtime = beginTime } //计算天数 - var timediff = endtime - starttime; - var days = parseInt(timediff / 86400); + var timediff = endtime - starttime + var days = parseInt(timediff / 86400) //计算小时数 - var remain = timediff % 86400; - var hours = parseInt(remain / 3600); + var remain = timediff % 86400 + var hours = parseInt(remain / 3600) //计算分钟数 - var remain = remain % 3600; - var mins = parseInt(remain / 60); - var res = Number(days + 1); - return res; + var remain = remain % 3600 + var mins = parseInt(remain / 60) + var res = Number(days + 1) + return res } export function getNowTime() { - var now = new Date(); - var year = now.getFullYear(); + var now = new Date() + var year = now.getFullYear() var month = - now.getMonth() + 1 <= 9 ? "0" + (now.getMonth() + 1) : now.getMonth() + 1; - var day = now.getDate() <= 9 ? "0" + now.getDate() : now.getDate(); - var tt = now.getHours() <= 9 ? "0" + now.getHours() : now.getHours(); - var mm = now.getMinutes() <= 9 ? "0" + now.getMinutes() : now.getMinutes(); - var ss = now.getSeconds() <= 9 ? "0" + now.getSeconds() : now.getSeconds(); - let datelist = [year, month, day, tt, mm, ss]; - return datelist.join(""); + now.getMonth() + 1 <= 9 ? '0' + (now.getMonth() + 1) : now.getMonth() + 1 + var day = now.getDate() <= 9 ? '0' + now.getDate() : now.getDate() + var tt = now.getHours() <= 9 ? '0' + now.getHours() : now.getHours() + var mm = now.getMinutes() <= 9 ? '0' + now.getMinutes() : now.getMinutes() + var ss = now.getSeconds() <= 9 ? '0' + now.getSeconds() : now.getSeconds() + let datelist = [year, month, day, tt, mm, ss] + return datelist.join('') +} + +/* 周天排序 */ +export function sortWeeks(weeks) { + var _weeks = [] //创建临时排序的数组 + for (var i = 0; i < weeks.length; i++) { + if (weeks[i] == '周一') { + var _week = {} + _week['id'] = 1 + _week['name'] = '周一' + _weeks.push(_week) + } + if (weeks[i] == '周二') { + var _week = {} + _week['id'] = 2 + _week['name'] = '周二' + _weeks.push(_week) + } + if (weeks[i] == '周三') { + var _week = {} + _week['id'] = 3 + _week['name'] = '周三' + _weeks.push(_week) + } + if (weeks[i] == '周四') { + var _week = {} + _week['id'] = 4 + _week['name'] = '周四' + _weeks.push(_week) + } + if (weeks[i] == '周五') { + var _week = {} + _week['id'] = 5 + _week['name'] = '周五' + _weeks.push(_week) + } + if (weeks[i] == '周六') { + var _week = {} + _week['id'] = 6 + _week['name'] = '周六' + _weeks.push(_week) + } + if (weeks[i] == '周日') { + var _week = {} + _week['id'] = 7 + _week['name'] = '周日' + _weeks.push(_week) + } + } + _weeks.sort(function (a, b) { + return a.id - b.id + }) + //将weeks清空并将排序好的值赋给weeks + const weeksData = [] + if (isContinuityNum(_weeks.map((item) => item.id)) && _weeks.length > 1) { + weeksData.push(`${_weeks[0].name} 至 ${_weeks[_weeks.length - 1].name}`) + } else { + for (var i = 0; i < _weeks.length; i++) { + weeksData.push(_weeks[i].name) + } + } + + return weeksData +} + +//判断一串数字是否是连续的 +function isContinuityNum(num) { + let array = [] + if (num instanceof Array) { + array = [...num] + } else { + array = Array.from(num.toString()) //转换为数组 + } + + var i = array[0] + var isContinuation = true + for (var e in array) { + if (array[e] != i) { + isContinuation = false + break + } + i++ + } + return isContinuation }