Showing
4 changed files
with
126 additions
and
21 deletions
| @@ -859,15 +859,22 @@ class _StoreBaseInfoPageState extends State<StoreBaseInfoPage> { | @@ -859,15 +859,22 @@ class _StoreBaseInfoPageState extends State<StoreBaseInfoPage> { | ||
| 859 | // if (data.length == 1) { | 859 | // if (data.length == 1) { |
| 860 | // return '30'; | 860 | // return '30'; |
| 861 | // } else { | 861 | // } else { |
| 862 | - if (value[1] == 0) { | 862 | + Map map = data[value[0]]; |
| 863 | + | ||
| 864 | + int minute = map.values.last[value[1]]; | ||
| 865 | + if (minute == 0) { | ||
| 863 | return '00'; | 866 | return '00'; |
| 864 | - } else if (value[1] == 1) { | ||
| 865 | - return '15'; | ||
| 866 | - } else if (value[1] == 2) { | ||
| 867 | - return '30'; | ||
| 868 | - } else { | ||
| 869 | - return '45'; | ||
| 870 | } | 867 | } |
| 868 | + return '${minute}'; | ||
| 869 | + // if (value[1] == 0) { | ||
| 870 | + // return '00'; | ||
| 871 | + // } else if (value[1] == 1) { | ||
| 872 | + // return '15'; | ||
| 873 | + // } else if (value[1] == 2) { | ||
| 874 | + // return '30'; | ||
| 875 | + // } else { | ||
| 876 | + // return '45'; | ||
| 877 | + // } | ||
| 871 | // } | 878 | // } |
| 872 | } | 879 | } |
| 873 | 880 |
| @@ -7248,6 +7248,73 @@ class DialogUtil { | @@ -7248,6 +7248,73 @@ class DialogUtil { | ||
| 7248 | }); | 7248 | }); |
| 7249 | } | 7249 | } |
| 7250 | 7250 | ||
| 7251 | + //显示选择可预定时段 | ||
| 7252 | + static Future<List<int>> showSelectCusmanTimerDialog( | ||
| 7253 | + BuildContext context, List<dynamic> data, ValueChanged valueChanged, | ||
| 7254 | + {List<int> selecteds, | ||
| 7255 | + Color cancelTextColor = const Color.fromRGBO(0, 0, 0, 0.6), | ||
| 7256 | + String title = '', | ||
| 7257 | + VoidCallback onCancel, | ||
| 7258 | + String cancelText = '取消'}) { | ||
| 7259 | + return Picker( | ||
| 7260 | + selecteds: selecteds, | ||
| 7261 | + adapter: PickerDataAdapter<String>(pickerData: data), | ||
| 7262 | + height: ScreenUtil().setWidth(480), | ||
| 7263 | + hideHeader: false, | ||
| 7264 | + headerDecoration: BoxDecoration( | ||
| 7265 | + color: MyColours.color_ffffff, | ||
| 7266 | + border: Border( | ||
| 7267 | + bottom: BorderSide( | ||
| 7268 | + width: ScreenUtil().setWidth(2), | ||
| 7269 | + color: MyColours.color_E7E7E7), | ||
| 7270 | + )), | ||
| 7271 | + title: Text( | ||
| 7272 | + title, | ||
| 7273 | + style: TextStyle( | ||
| 7274 | + fontWeight: FontWeight.bold, | ||
| 7275 | + color: MyColours.color_515151, | ||
| 7276 | + fontSize: ScreenUtil().setSp(32)), | ||
| 7277 | + ), | ||
| 7278 | + cancelText: cancelText, | ||
| 7279 | + cancelTextStyle: | ||
| 7280 | + TextStyle(color: cancelTextColor, fontSize: ScreenUtil().setSp(32)), | ||
| 7281 | + confirmText: "确定", | ||
| 7282 | + itemExtent: ScreenUtil().setWidth(80), | ||
| 7283 | + confirmTextStyle: TextStyle( | ||
| 7284 | + color: MyColours.color_438E93, fontSize: ScreenUtil().setSp(32)), | ||
| 7285 | + selectedTextStyle: TextStyle( | ||
| 7286 | + color: MyColours.color_000000, fontSize: ScreenUtil().setSp(32)), | ||
| 7287 | + textStyle: TextStyle( | ||
| 7288 | + color: Color.fromRGBO(0, 0, 0, 0.26), | ||
| 7289 | + fontSize: ScreenUtil().setSp(32)), | ||
| 7290 | + selectionOverlay: Container( | ||
| 7291 | + height: ScreenUtil().setWidth(80), | ||
| 7292 | + decoration: BoxDecoration( | ||
| 7293 | + border: Border( | ||
| 7294 | + bottom: BorderSide( | ||
| 7295 | + width: ScreenUtil().setWidth(2), | ||
| 7296 | + color: MyColours.color_E7E7E7), | ||
| 7297 | + top: BorderSide( | ||
| 7298 | + width: ScreenUtil().setWidth(2), | ||
| 7299 | + color: MyColours.color_E7E7E7))), | ||
| 7300 | + ), | ||
| 7301 | + onCancel: onCancel, | ||
| 7302 | + onConfirm: (Picker picker, List value) { | ||
| 7303 | + Map map = data[value[0]]; | ||
| 7304 | + List list = map.values.last; | ||
| 7305 | + if (list.length == 1) { | ||
| 7306 | + value[1] = 0; | ||
| 7307 | + } | ||
| 7308 | + print(value.toString()); | ||
| 7309 | + if (valueChanged != null) { | ||
| 7310 | + valueChanged(value); | ||
| 7311 | + } | ||
| 7312 | + }).showModal<List<int>>(context).then((value) { | ||
| 7313 | + LogUtil.v("value:${value.toString()}"); | ||
| 7314 | + return value; | ||
| 7315 | + }); | ||
| 7316 | + } | ||
| 7317 | + | ||
| 7251 | //显示选择客户经理弹框 | 7318 | //显示选择客户经理弹框 |
| 7252 | static Future<List<int>> showSelectCusmanDialog( | 7319 | static Future<List<int>> showSelectCusmanDialog( |
| 7253 | BuildContext context, List<dynamic> data, ValueChanged valueChanged, | 7320 | BuildContext context, List<dynamic> data, ValueChanged valueChanged, |
| @@ -2294,12 +2294,36 @@ class Utils { | @@ -2294,12 +2294,36 @@ class Utils { | ||
| 2294 | static getPickerData(String lastTime, List dateData) { | 2294 | static getPickerData(String lastTime, List dateData) { |
| 2295 | String hour = Utils.getHourFromhourAndMinute(lastTime); | 2295 | String hour = Utils.getHourFromhourAndMinute(lastTime); |
| 2296 | String minute = Utils.getMinuteFromhourAndMinute(lastTime); | 2296 | String minute = Utils.getMinuteFromhourAndMinute(lastTime); |
| 2297 | - if (minute == '45') { | ||
| 2298 | - hour = '${int.parse(hour) + 1}'; | ||
| 2299 | - } | ||
| 2300 | List tempList = List(); | 2297 | List tempList = List(); |
| 2298 | + // if (minute == '45') { | ||
| 2299 | + // hour = '${int.parse(hour) + 1}'; | ||
| 2300 | + // } | ||
| 2301 | + | ||
| 2301 | tempList.addAll(dateData); | 2302 | tempList.addAll(dateData); |
| 2302 | tempList.removeRange(0, int.parse(hour)); | 2303 | tempList.removeRange(0, int.parse(hour)); |
| 2304 | + | ||
| 2305 | + // if (minute != '45') { | ||
| 2306 | + Map<String, List<int>> map = tempList[0]; | ||
| 2307 | + Map mapNew = {}; | ||
| 2308 | + // map.map((key, value) { | ||
| 2309 | + | ||
| 2310 | + // mapNew[key] | ||
| 2311 | + // }); | ||
| 2312 | + | ||
| 2313 | + List<int> list = []; | ||
| 2314 | + map.forEach((key, value) { | ||
| 2315 | + value.forEach((element) { | ||
| 2316 | + if (int.parse(minute) <= element) { | ||
| 2317 | + list.add(element); | ||
| 2318 | + } | ||
| 2319 | + }); | ||
| 2320 | + mapNew[key] = list; | ||
| 2321 | + }); | ||
| 2322 | + tempList.removeAt(0); | ||
| 2323 | + tempList.insert(0, mapNew); | ||
| 2324 | + // } | ||
| 2325 | + | ||
| 2326 | + // tempList.replaceRange(0, 0, mapNew); | ||
| 2303 | if (tempList.length == 0) { | 2327 | if (tempList.length == 0) { |
| 2304 | tempList = [ | 2328 | tempList = [ |
| 2305 | { | 2329 | { |
| @@ -198,11 +198,11 @@ class SetTimeWidget { | @@ -198,11 +198,11 @@ class SetTimeWidget { | ||
| 198 | 198 | ||
| 199 | showTimeSelector( | 199 | showTimeSelector( |
| 200 | context, data, hourAndMinute, SetTimeCallback setTimeCallback) { | 200 | context, data, hourAndMinute, SetTimeCallback setTimeCallback) { |
| 201 | - DialogUtil.showSelectCusmanDialog(context, data, (value) { | 201 | + DialogUtil.showSelectCusmanTimerDialog(context, data, (value) { |
| 202 | setTimeCallback(value); | 202 | setTimeCallback(value); |
| 203 | }, selecteds: [ | 203 | }, selecteds: [ |
| 204 | _getFirSelected(hourAndMinute, data), | 204 | _getFirSelected(hourAndMinute, data), |
| 205 | - _getSecSelected(hourAndMinute) | 205 | + _getSecSelected(hourAndMinute, data) |
| 206 | ]).then((value) { | 206 | ]).then((value) { |
| 207 | print(value); | 207 | print(value); |
| 208 | }); | 208 | }); |
| @@ -222,15 +222,22 @@ class SetTimeWidget { | @@ -222,15 +222,22 @@ class SetTimeWidget { | ||
| 222 | } | 222 | } |
| 223 | 223 | ||
| 224 | // 第二列当前选中第几个 | 224 | // 第二列当前选中第几个 |
| 225 | - _getSecSelected(String hourAndMinute) { | 225 | + _getSecSelected(String hourAndMinute, List data) { |
| 226 | String minute = Utils.getMinuteFromhourAndMinute(hourAndMinute); | 226 | String minute = Utils.getMinuteFromhourAndMinute(hourAndMinute); |
| 227 | - if (minute == '00') { | ||
| 228 | - return 0; | ||
| 229 | - } else if (minute == '15') { | ||
| 230 | - return 1; | ||
| 231 | - } else if (minute == '30') { | ||
| 232 | - return 2; | ||
| 233 | - } | ||
| 234 | - return 3; | 227 | + |
| 228 | + int indexLeft = _getFirSelected(hourAndMinute, data); //第一列选中的index | ||
| 229 | + | ||
| 230 | + Map map = data[indexLeft]; | ||
| 231 | + List list = map.values.last; | ||
| 232 | + int item = int.parse(minute); | ||
| 233 | + return list.indexOf(item); | ||
| 234 | + // if (minute == '00') { | ||
| 235 | + // return 0; | ||
| 236 | + // } else if (minute == '15') { | ||
| 237 | + // return 1; | ||
| 238 | + // } else if (minute == '30') { | ||
| 239 | + // return 2; | ||
| 240 | + // } | ||
| 241 | + // return 3; | ||
| 235 | } | 242 | } |
| 236 | } | 243 | } |
-
Please register or login to post a comment