Commit 4403468a5d8b314b192d5527ee315e8ecc7cefd4

Authored by wdn127929
1 parent a13b8e25

新建3.1

@@ -19,6 +19,7 @@ class User { @@ -19,6 +19,7 @@ class User {
19 String noon; //午市时间段 19 String noon; //午市时间段
20 String night; //晚市时间段 20 String night; //晚市时间段
21 String userphone; //角色电话 21 String userphone; //角色电话
  22 + String token; //token
22 23
23 User( 24 User(
24 this.openid, 25 this.openid,
@@ -35,7 +36,8 @@ class User { @@ -35,7 +36,8 @@ class User {
35 this.morning, 36 this.morning,
36 this.noon, 37 this.noon,
37 this.night, 38 this.night,
38 - this.userphone); 39 + this.userphone,
  40 + this.token);
39 41
40 factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); 42 factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
41 43
@@ -43,6 +45,6 @@ class User { @@ -43,6 +45,6 @@ class User {
43 45
44 @override 46 @override
45 String toString() { 47 String toString() {
46 - return 'User{openid: $openid, account: $account, role_name: $role_name, sellerid: $sellerid, sellercode: $sellercode, sellername: $sellername, sellerphone: $sellerphone, sellerAddr: $sellerAddr, scatter: $scatter, room: $room, cassette: $cassette, morning: $morning, noon: $noon, night: $night ,userphone:$userphone}'; 48 + return 'User{openid: $openid, account: $account, role_name: $role_name, sellerid: $sellerid, sellercode: $sellercode, sellername: $sellername, sellerphone: $sellerphone, sellerAddr: $sellerAddr, scatter: $scatter, room: $room, cassette: $cassette, morning: $morning, noon: $noon, night: $night ,userphone:$userphone},token:$token}';
47 } 49 }
48 } 50 }
@@ -22,7 +22,8 @@ User _$UserFromJson(Map<String, dynamic> json) { @@ -22,7 +22,8 @@ User _$UserFromJson(Map<String, dynamic> json) {
22 json['morning'] as String, 22 json['morning'] as String,
23 json['noon'] as String, 23 json['noon'] as String,
24 json['night'] as String, 24 json['night'] as String,
25 - json['userphone'] as String); 25 + json['userphone'] as String,
  26 + json['token'] as String);
26 } 27 }
27 28
28 Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{ 29 Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
@@ -40,5 +41,6 @@ Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{ @@ -40,5 +41,6 @@ Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
40 'morning': instance.morning, 41 'morning': instance.morning,
41 'noon': instance.noon, 42 'noon': instance.noon,
42 'night': instance.night, 43 'night': instance.night,
43 - 'userphone': instance.userphone 44 + 'userphone': instance.userphone,
  45 + 'token': instance.token
44 }; 46 };
@@ -164,5 +164,9 @@ class HttpUrl { @@ -164,5 +164,9 @@ class HttpUrl {
164 "?service=App.Seller.EditAuthUser"; // 编辑店员 164 "?service=App.Seller.EditAuthUser"; // 编辑店员
165 static const String bind_phone_seller_user = 165 static const String bind_phone_seller_user =
166 "?service=App.Seller.BindPhoneSellerUser"; // 账号表-员工绑定手机号 166 "?service=App.Seller.BindPhoneSellerUser"; // 账号表-员工绑定手机号
  167 + static const String get_password =
  168 + "?service=App.Seller.GetPassword"; // 商户端查看密码
  169 + static const String update_password =
  170 + "?service=App.Seller.UpdatePassword"; // 员工密码修改
167 171
168 } 172 }
@@ -6,6 +6,7 @@ import 'package:one_key/models/personnel_manage_model.dart'; @@ -6,6 +6,7 @@ import 'package:one_key/models/personnel_manage_model.dart';
6 import 'package:one_key/provider/personnel_provider.dart'; 6 import 'package:one_key/provider/personnel_provider.dart';
7 import 'package:one_key/provider/user_model.dart'; 7 import 'package:one_key/provider/user_model.dart';
8 import 'package:one_key/res/colors.dart'; 8 import 'package:one_key/res/colors.dart';
  9 +import 'package:one_key/route/navigator_util.dart';
9 import 'package:one_key/utils/dialog_util.dart'; 10 import 'package:one_key/utils/dialog_util.dart';
10 import 'package:one_key/utils/event_bus.dart'; 11 import 'package:one_key/utils/event_bus.dart';
11 import 'package:one_key/utils/utils.dart'; 12 import 'package:one_key/utils/utils.dart';
@@ -192,7 +193,10 @@ class _PersonnelDetailPageState extends State<PersonnelDetailPage> { @@ -192,7 +193,10 @@ class _PersonnelDetailPageState extends State<PersonnelDetailPage> {
192 } else if (element == '绑定微信') { 193 } else if (element == '绑定微信') {
193 DialogUtil.openAlertDialogImage( 194 DialogUtil.openAlertDialogImage(
194 context, '请员工使用微信扫一扫添加店员', dcAdduserCode, 660); 195 context, '请员工使用微信扫一扫添加店员', dcAdduserCode, 660);
195 - } else if (element == '查看密码') {} 196 + } else if (element == '查看密码') {
  197 + NavigatorUtil.goPersonnelPasswordPage(context,
  198 + account: widget.model.account, idstr: widget.model.id);
  199 + }
196 }, 200 },
197 ), 201 ),
198 ); 202 );
@@ -117,49 +117,67 @@ class _PersonnelManagePageState extends State<PersonnelManagePage> { @@ -117,49 +117,67 @@ class _PersonnelManagePageState extends State<PersonnelManagePage> {
117 117
118 return Column( 118 return Column(
119 children: [ 119 children: [
120 - Padding(  
121 - padding: EdgeInsets.symmetric(  
122 - horizontal: ScreenUtil().setWidth(40),  
123 - vertical: ScreenUtil().setWidth(40)),  
124 - child: Row(  
125 - mainAxisAlignment: MainAxisAlignment.spaceBetween,  
126 - children: [  
127 - Text(  
128 - title == '管理员'  
129 - ? '${title}'  
130 - : '${title} (${data.length}人)',  
131 - style: TextStyle(  
132 - fontSize: ScreenUtil().setWidth(28),  
133 - color: MyColours.color_333333),  
134 - ),  
135 - title == '管理员'  
136 - ? SizedBox()  
137 - : Provider.of<UserModel>(context,  
138 - listen: false)  
139 - .user  
140 - .role_name ==  
141 - '管理员' ||  
142 - (Provider.of<UserModel>(context, 120 + InkWell(
  121 + onTap: () {
  122 + if ((Provider.of<UserModel>(context, listen: false)
  123 + .user
  124 + .role_name ==
  125 + '管理员' ||
  126 + (Provider.of<UserModel>(context,
  127 + listen: false)
  128 + .user
  129 + .role_name ==
  130 + '店长' &&
  131 + title != '店长')) &&
  132 + title != '管理员') {
  133 + _addSellerClerk(roleId);
  134 + }
  135 + },
  136 + child: Padding(
  137 + padding: EdgeInsets.symmetric(
  138 + horizontal: ScreenUtil().setWidth(40),
  139 + vertical: ScreenUtil().setWidth(40)),
  140 + child: Row(
  141 + mainAxisAlignment:
  142 + MainAxisAlignment.spaceBetween,
  143 + children: [
  144 + Text(
  145 + title == '管理员'
  146 + ? '${title}'
  147 + : '${title} (${data.length}人)',
  148 + style: TextStyle(
  149 + fontSize: ScreenUtil().setWidth(28),
  150 + color: MyColours.color_333333),
  151 + ),
  152 + title == '管理员'
  153 + ? SizedBox()
  154 + : Provider.of<UserModel>(context,
143 listen: false) 155 listen: false)
144 .user 156 .user
145 .role_name == 157 .role_name ==
146 - '店长' &&  
147 - title != '店长')  
148 - ? InkWell(  
149 - onTap: () {  
150 - _addSellerClerk(roleId);  
151 - },  
152 - child: Text(  
153 - '添加',  
154 - style: TextStyle(  
155 - fontSize:  
156 - ScreenUtil().setWidth(30),  
157 - color: MyColours.color_199095),  
158 - ),  
159 - )  
160 - : SizedBox()  
161 - ],  
162 - )), 158 + '管理员' ||
  159 + (Provider.of<UserModel>(context,
  160 + listen: false)
  161 + .user
  162 + .role_name ==
  163 + '店长' &&
  164 + title != '店长')
  165 + ? InkWell(
  166 + onTap: () {
  167 + _addSellerClerk(roleId);
  168 + },
  169 + child: Text(
  170 + '添加',
  171 + style: TextStyle(
  172 + fontSize: ScreenUtil()
  173 + .setWidth(30),
  174 + color:
  175 + MyColours.color_199095),
  176 + ),
  177 + )
  178 + : SizedBox()
  179 + ],
  180 + ))),
163 MyDivider( 181 MyDivider(
164 double.infinity, 182 double.infinity,
165 ScreenUtil().setWidth(2), 183 ScreenUtil().setWidth(2),
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_screenutil/flutter_screenutil.dart';
  3 +import 'package:one_key/provider/personnel_provider.dart';
  4 +import 'package:one_key/res/colors.dart';
  5 +import 'package:one_key/utils/event_bus.dart';
  6 +import 'package:one_key/utils/utils.dart';
  7 +import 'package:one_key/widgets/MyDivider.dart';
  8 +import 'package:one_key/widgets/h_empty_view.dart';
  9 +import 'package:one_key/widgets/round_button.dart';
  10 +import 'package:one_key/widgets/system_app_bar.dart';
  11 +import 'package:one_key/widgets/v_empty_view.dart';
  12 +import 'package:provider/provider.dart';
  13 +
  14 +class PersonnelPasswordEditPage extends StatefulWidget {
  15 + final String idstr;
  16 + PersonnelPasswordEditPage({Key key, this.idstr}) : super(key: key);
  17 +
  18 + @override
  19 + _PersonnelPasswordEditPageState createState() =>
  20 + _PersonnelPasswordEditPageState();
  21 +}
  22 +
  23 +class _PersonnelPasswordEditPageState extends State<PersonnelPasswordEditPage> {
  24 + bool show = false;
  25 + TextEditingController _pwdController = TextEditingController();
  26 + TextEditingController _pwdControllerConfirm = TextEditingController();
  27 + FocusNode _pwdFocusNode = FocusNode();
  28 + FocusNode _pwdFocusNodeConfirm = FocusNode();
  29 + bool warning = false;
  30 + PersonnelProvider personnelProvider;
  31 + @override
  32 + void initState() {
  33 + super.initState();
  34 + }
  35 +
  36 + // 修改密码
  37 + _updatePassword({bool showLoading = true}) async {
  38 + Map<String, String> params = {
  39 + "kid": widget.idstr,
  40 + 'password': _pwdControllerConfirm.text,
  41 + 'keys': 'xiaotao666'
  42 + };
  43 +
  44 + bool sucess = await personnelProvider.updatePassword(context, params,
  45 + showLoading: showLoading);
  46 + if (sucess) {
  47 + EventBus().emit('personnel_show_page');
  48 + Navigator.pop(context);
  49 + }
  50 + }
  51 +
  52 + @override
  53 + Widget build(BuildContext context) {
  54 + personnelProvider = Provider.of<PersonnelProvider>(context, listen: true);
  55 + return Scaffold(
  56 + backgroundColor: MyColours.color_ffffff,
  57 + appBar: SystemAppBar(
  58 + '修改密码',
  59 + onTap: () {
  60 + Navigator.pop(context);
  61 + },
  62 + ),
  63 + body: Padding(
  64 + padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(20)),
  65 + child: Column(
  66 + crossAxisAlignment: CrossAxisAlignment.center,
  67 + children: [
  68 + Container(
  69 + padding: EdgeInsets.symmetric(
  70 + horizontal: ScreenUtil().setWidth(40),
  71 + ),
  72 + height: ScreenUtil().setHeight(84),
  73 + // width: ScreenUtil().setWidth(611),
  74 + alignment: Alignment.center,
  75 + child: Row(
  76 + crossAxisAlignment: CrossAxisAlignment.center,
  77 + children: <Widget>[
  78 + Text(
  79 + "修改密码",
  80 + style: TextStyle(
  81 + color: MyColours.color_353535,
  82 + fontSize: ScreenUtil().setSp(30)),
  83 + ),
  84 + HEmptyView(20),
  85 + Expanded(
  86 + child: Container(
  87 + height: ScreenUtil().setHeight(84),
  88 + padding: EdgeInsets.only(
  89 + left: ScreenUtil().setWidth(20),
  90 + right: ScreenUtil().setWidth(20),
  91 + top: ScreenUtil().setWidth(8)),
  92 + child: TextField(
  93 + controller: _pwdController,
  94 + focusNode: _pwdFocusNode,
  95 + // autofocus: _sellerCodeController.text.isNotEmpty &&
  96 + // _accountController.text.isNotEmpty &&
  97 + // _pwdController.text.isEmpty,
  98 + style: TextStyle(
  99 + color: MyColours.color_353535,
  100 + fontSize: ScreenUtil().setSp(28)),
  101 + decoration: InputDecoration(
  102 + hintText: "请输入密码",
  103 + hintStyle: TextStyle(
  104 + color: MyColours.color_c1c1c1,
  105 + fontSize: ScreenUtil().setSp(28)),
  106 + border: OutlineInputBorder(
  107 + borderSide: BorderSide.none),
  108 + contentPadding: EdgeInsets.zero,
  109 + ),
  110 + onChanged: (value) {
  111 + if (!Utils.passwordRegExp(value)) {
  112 + setState(() {
  113 + warning = true;
  114 + });
  115 + } else {
  116 + setState(() {
  117 + warning = false;
  118 + });
  119 + }
  120 + },
  121 + obscureText: true,
  122 + keyboardType: TextInputType.text,
  123 + )),
  124 + ),
  125 + ],
  126 + )),
  127 + MyDivider(
  128 + double.infinity,
  129 + ScreenUtil().setWidth(2),
  130 + color: MyColours.color_E0E0E0,
  131 + ),
  132 + Container(
  133 + padding: EdgeInsets.symmetric(
  134 + horizontal: ScreenUtil().setWidth(40),
  135 + ),
  136 + height: ScreenUtil().setHeight(84),
  137 + // width: ScreenUtil().setWidth(611),
  138 + alignment: Alignment.center,
  139 + child: Row(
  140 + crossAxisAlignment: CrossAxisAlignment.center,
  141 + children: <Widget>[
  142 + Text(
  143 + "确认密码",
  144 + style: TextStyle(
  145 + color: MyColours.color_353535,
  146 + fontSize: ScreenUtil().setSp(30)),
  147 + ),
  148 + HEmptyView(20),
  149 + Expanded(
  150 + child: Container(
  151 + height: ScreenUtil().setHeight(84),
  152 + padding: EdgeInsets.only(
  153 + left: ScreenUtil().setWidth(20),
  154 + right: ScreenUtil().setWidth(20),
  155 + top: ScreenUtil().setWidth(8)),
  156 + child: TextField(
  157 + controller: _pwdControllerConfirm,
  158 + focusNode: _pwdFocusNodeConfirm,
  159 + // autofocus: _sellerCodeController.text.isNotEmpty &&
  160 + // _accountController.text.isNotEmpty &&
  161 + // _pwdController.text.isEmpty,
  162 + style: TextStyle(
  163 + color: MyColours.color_353535,
  164 + fontSize: ScreenUtil().setSp(28)),
  165 + decoration: InputDecoration(
  166 + hintText: "请确认密码",
  167 + hintStyle: TextStyle(
  168 + color: MyColours.color_c1c1c1,
  169 + fontSize: ScreenUtil().setSp(28)),
  170 + border: OutlineInputBorder(
  171 + borderSide: BorderSide.none),
  172 + contentPadding: EdgeInsets.zero,
  173 + ),
  174 + onChanged: (value) {},
  175 + obscureText: true,
  176 + keyboardType: TextInputType.text,
  177 + )),
  178 + ),
  179 + ],
  180 + )),
  181 + MyDivider(
  182 + double.infinity,
  183 + ScreenUtil().setWidth(2),
  184 + color: MyColours.color_E0E0E0,
  185 + ),
  186 + VEmptyView(40),
  187 + Text(
  188 + '密码只能由数字和字母组成,最少6位,最多18位',
  189 + style: TextStyle(
  190 + fontSize: ScreenUtil().setSp(28),
  191 + color: warning
  192 + ? MyColours.color_E14553
  193 + : MyColours.color_333333),
  194 + ),
  195 + VEmptyView(60),
  196 + Padding(
  197 + padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
  198 + ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
  199 + child: RoundButton(
  200 + onPressed: () {
  201 + if (warning) {
  202 + Utils.showToast('密码只能由数字和字母组成,最少6位,最多18位');
  203 + return;
  204 + }
  205 +
  206 + if (_pwdController.text != _pwdControllerConfirm.text) {
  207 + Utils.showToast('两次密码输入不一致!');
  208 + return;
  209 + }
  210 + if (_pwdController.text.trim().length == 0) {
  211 + Utils.showToast('请输入密码');
  212 + return;
  213 + }
  214 + FocusScope.of(context)
  215 + .requestFocus(FocusNode()); //点击空白处隐藏键盘
  216 + _updatePassword();
  217 + },
  218 + text: '确认修改',
  219 + fontSize: 34,
  220 + isBold: false,
  221 + height: ScreenUtil().setWidth(80),
  222 + width: double.infinity,
  223 + radius: ScreenUtil().setWidth(10),
  224 + ))
  225 + ],
  226 + ),
  227 + ));
  228 + }
  229 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_screenutil/flutter_screenutil.dart';
  3 +import 'package:one_key/provider/personnel_provider.dart';
  4 +import 'package:one_key/provider/user_model.dart';
  5 +import 'package:one_key/res/colors.dart';
  6 +import 'package:one_key/route/navigator_util.dart';
  7 +import 'package:one_key/utils/event_bus.dart';
  8 +import 'package:one_key/utils/utils.dart';
  9 +import 'package:one_key/widgets/h_empty_view.dart';
  10 +import 'package:one_key/widgets/system_app_bar.dart';
  11 +import 'package:one_key/widgets/v_empty_view.dart';
  12 +import 'package:provider/provider.dart';
  13 +
  14 +class PersonnelPasswordPage extends StatefulWidget {
  15 + final String idstr;
  16 + final String account;
  17 + PersonnelPasswordPage({Key key, this.idstr, this.account}) : super(key: key);
  18 +
  19 + @override
  20 + _PersonnelPasswordPageState createState() => _PersonnelPasswordPageState();
  21 +}
  22 +
  23 +class _PersonnelPasswordPageState extends State<PersonnelPasswordPage> {
  24 + bool show = false;
  25 + PersonnelProvider personnelProvider;
  26 +
  27 + @override
  28 + void initState() {
  29 + super.initState();
  30 + WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  31 + _getPassword(showLoading: false);
  32 + });
  33 +
  34 + EventBus().on('personnel_show_page', (arg) {
  35 + _getPassword(showLoading: false);
  36 + });
  37 + }
  38 +
  39 + @override
  40 + void dispose() {
  41 + // TODO: implement dispose
  42 + super.dispose();
  43 + EventBus().off('personnel_show_page');
  44 + }
  45 +
  46 + // 商户端查看密码
  47 + _getPassword({bool showLoading = true}) async {
  48 + Map<String, String> params = {
  49 + "sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  50 + 'account': widget.account,
  51 + 'key': 'xiaotao666'
  52 + };
  53 +
  54 + await personnelProvider.getPassword(context, params,
  55 + showLoading: showLoading);
  56 + }
  57 +
  58 + _stringHide(String str) {
  59 + String temp = '';
  60 + int lenght = str.length - 2;
  61 + for (int i = 0; i < lenght; i++) {
  62 + temp += '*';
  63 + }
  64 + return str.substring(0, 1) + temp + str.substring(str.length - 1);
  65 + }
  66 +
  67 + @override
  68 + Widget build(BuildContext context) {
  69 + UserModel model = Provider.of<UserModel>(context, listen: false);
  70 + personnelProvider = Provider.of<PersonnelProvider>(context, listen: true);
  71 + return Scaffold(
  72 + appBar: SystemAppBar(
  73 + '查看密码',
  74 + onTap: () {
  75 + Navigator.pop(context);
  76 + },
  77 + ),
  78 + body: Padding(
  79 + padding: EdgeInsets.all(ScreenUtil().setWidth(40)),
  80 + child: Column(
  81 + crossAxisAlignment: CrossAxisAlignment.center,
  82 + children: [
  83 + InkWell(
  84 + onTap: () {
  85 + setState(() {
  86 + show = !show;
  87 + });
  88 + },
  89 + child: Padding(
  90 + padding: EdgeInsets.only(
  91 + top: ScreenUtil().setWidth(40),
  92 + bottom: ScreenUtil().setWidth(20)),
  93 + child: Row(
  94 + mainAxisAlignment: MainAxisAlignment.center,
  95 + children: [
  96 + Text(
  97 + show
  98 + ? personnelProvider.password
  99 + : personnelProvider.password == ''
  100 + ? ''
  101 + : _stringHide(personnelProvider.password),
  102 + maxLines: 5,
  103 + style: TextStyle(
  104 + fontSize: ScreenUtil().setSp(38),
  105 + color: MyColours.color_333333)),
  106 + HEmptyView(20),
  107 + Image.asset(
  108 + Utils.getImgPath(show ? 'no_see' : 'can_see'),
  109 + width: ScreenUtil().setWidth(50),
  110 + )
  111 + ],
  112 + )),
  113 + ),
  114 + InkWell(
  115 + onTap: () {
  116 + NavigatorUtil.goPersonnelPasswordEditPage(context,
  117 + idstr: widget.idstr);
  118 + },
  119 + child: Padding(
  120 + padding: EdgeInsets.only(
  121 + top: ScreenUtil().setWidth(20),
  122 + bottom: ScreenUtil().setWidth(40)),
  123 + child: Row(
  124 + mainAxisAlignment: MainAxisAlignment.center,
  125 + children: [
  126 + Text(
  127 + '忘记密码?',
  128 + style: TextStyle(
  129 + fontSize: ScreenUtil().setSp(30),
  130 + color: MyColours.color_666666),
  131 + ),
  132 + Text('去重置',
  133 + style: TextStyle(
  134 + fontSize: ScreenUtil().setSp(30),
  135 + color: MyColours.color_199095))
  136 + ],
  137 + )))
  138 + ],
  139 + ),
  140 + ));
  141 + }
  142 +}
@@ -15,6 +15,7 @@ import 'package:provider/provider.dart'; @@ -15,6 +15,7 @@ import 'package:provider/provider.dart';
15 */ 15 */
16 class PersonnelProvider extends ChangeNotifier { 16 class PersonnelProvider extends ChangeNotifier {
17 PersonnelManageModelData dataMap; 17 PersonnelManageModelData dataMap;
  18 + String password = '';
18 19
19 /// 获取店员列表 20 /// 获取店员列表
20 getAuthUserLists(BuildContext context, Map<String, String> params, 21 getAuthUserLists(BuildContext context, Map<String, String> params,
@@ -117,7 +118,8 @@ class PersonnelProvider extends ChangeNotifier { @@ -117,7 +118,8 @@ class PersonnelProvider extends ChangeNotifier {
117 } 118 }
118 return false; 119 return false;
119 } 120 }
120 - ///根据商家ID获取商家信息 121 +
  122 + ///根据商家ID获取商家信息
121 Future<GetSellerInfoSunModel> getSellerById(BuildContext context) async { 123 Future<GetSellerInfoSunModel> getSellerById(BuildContext context) async {
122 UserModel userModel = Provider.of<UserModel>(context, listen: false); 124 UserModel userModel = Provider.of<UserModel>(context, listen: false);
123 Map<String, String> params = { 125 Map<String, String> params = {
@@ -164,4 +166,40 @@ class PersonnelProvider extends ChangeNotifier { @@ -164,4 +166,40 @@ class PersonnelProvider extends ChangeNotifier {
164 } 166 }
165 return false; 167 return false;
166 } 168 }
  169 +
  170 + /// 设置商家接单人
  171 + getPassword(BuildContext context, Map<String, String> params,
  172 + {showLoading = false}) async {
  173 + BaseResp<dynamic> baseResp = await DioUtil()
  174 + .request<dynamic>(context, Method.get, HttpUrl.get_password,
  175 + data: params, showLoading: showLoading)
  176 + .catchError((error) {
  177 + print(error.toString());
  178 + });
  179 + if (baseResp != null && baseResp.code == Constant.status_success) {
  180 + password = baseResp.data;
  181 + notifyListeners();
  182 + } else {
  183 + Utils.showToast(baseResp.msg ?? "");
  184 + }
  185 + }
  186 +
  187 + /// 员工密码修改
  188 + Future<bool> updatePassword(BuildContext context, Map<String, String> params,
  189 + {showLoading = false}) async {
  190 + BaseResp<dynamic> baseResp = await DioUtil()
  191 + .request<dynamic>(context, Method.get, HttpUrl.update_password,
  192 + data: params, showLoading: showLoading)
  193 + .catchError((error) {
  194 + print(error.toString());
  195 + });
  196 + if (baseResp != null && baseResp.code == Constant.status_success) {
  197 + if (baseResp.data == 1) {
  198 + return true;
  199 + }
  200 + } else {
  201 + Utils.showToast(baseResp.msg ?? "");
  202 + }
  203 + return false;
  204 + }
167 } 205 }
@@ -70,7 +70,8 @@ class UserModel with ChangeNotifier { @@ -70,7 +70,8 @@ class UserModel with ChangeNotifier {
70 "morning": "", 70 "morning": "",
71 "noon": "", 71 "noon": "",
72 "night": "", 72 "night": "",
73 - 'userphone':user['phone'] 73 + 'userphone': user['phone'],
  74 + 'token': baseResp.data[0]["token"]['token']
74 }; 75 };
75 await saveUserInfo(User.fromJson(userMap)); 76 await saveUserInfo(User.fromJson(userMap));
76 return getSellerInfo( 77 return getSellerInfo(
@@ -102,7 +103,7 @@ class UserModel with ChangeNotifier { @@ -102,7 +103,7 @@ class UserModel with ChangeNotifier {
102 user['morning'] = daily['morning']; 103 user['morning'] = daily['morning'];
103 user['noon'] = daily['noon']; 104 user['noon'] = daily['noon'];
104 user['night'] = daily['night']; 105 user['night'] = daily['night'];
105 - 106 +
106 await saveUserInfo(User.fromJson(user)); 107 await saveUserInfo(User.fromJson(user));
107 App.sp.setBool("isLogin", true); 108 App.sp.setBool("isLogin", true);
108 App.sp.setString("is_call_tel", seller['is_call_tel'].toString()); 109 App.sp.setString("is_call_tel", seller['is_call_tel'].toString());
@@ -432,12 +432,28 @@ class NavigatorUtil { @@ -432,12 +432,28 @@ class NavigatorUtil {
432 432
433 /// 员工管理页面 433 /// 员工管理页面
434 static Future<dynamic> goPersonnelDetailPage(BuildContext context, 434 static Future<dynamic> goPersonnelDetailPage(BuildContext context,
435 - {replace = false,  
436 - bool isNew = true,  
437 - PersonnelManageSunModel model,  
438 - String position}) { 435 + {replace = false, PersonnelManageSunModel model, String position}) {
439 return _navigateTo(context, 436 return _navigateTo(context,
440 "${Routes.personnel_detail_page}?model=${FluroConvertUtils.object2string(model)}&position=${Uri.encodeComponent(position)}", 437 "${Routes.personnel_detail_page}?model=${FluroConvertUtils.object2string(model)}&position=${Uri.encodeComponent(position)}",
441 replace: replace); 438 replace: replace);
442 } 439 }
  440 +
  441 + /// 密码展示页
  442 + static Future<dynamic> goPersonnelPasswordPage(BuildContext context,
  443 + {replace = false, String idstr, String account}) {
  444 + return _navigateTo(context,
  445 + "${Routes.personnel_password_page}?account=$account&idstr=${idstr}",
  446 + replace: replace);
  447 + }
  448 +
  449 + /// 密码修改页
  450 + static Future<dynamic> goPersonnelPasswordEditPage(
  451 + BuildContext context, {
  452 + replace = false,
  453 + String idstr,
  454 + }) {
  455 + return _navigateTo(
  456 + context, "${Routes.personnel_password_edit_page}?idstr=${idstr}",
  457 + replace: replace);
  458 + }
443 } 459 }
@@ -36,8 +36,10 @@ import 'package:one_key/pages/detail/handle_online_page.dart'; @@ -36,8 +36,10 @@ import 'package:one_key/pages/detail/handle_online_page.dart';
36 import 'package:one_key/pages/detail/notebook_detail_page.dart'; 36 import 'package:one_key/pages/detail/notebook_detail_page.dart';
37 import 'package:one_key/pages/login/web_page.dart'; 37 import 'package:one_key/pages/login/web_page.dart';
38 import 'package:one_key/pages/message/message_order_menu.dart'; 38 import 'package:one_key/pages/message/message_order_menu.dart';
39 -import 'package:one_key/pages/my/%20%20personnel_type/personnel_detail_page.dart';  
40 -import 'package:one_key/pages/my/%20%20personnel_type/personnel_manage_page.dart'; 39 +import 'package:one_key/pages/my/personnel_type/personnel_detail_page.dart';
  40 +import 'package:one_key/pages/my/personnel_type/personnel_manage_page.dart';
  41 +import 'package:one_key/pages/my/personnel_type/personnel_password_edit_page.dart';
  42 +import 'package:one_key/pages/my/personnel_type/personnel_password_show_page.dart';
41 import 'package:one_key/pages/my/base_info.dart'; 43 import 'package:one_key/pages/my/base_info.dart';
42 import 'package:one_key/pages/my/book_time_set.dart'; 44 import 'package:one_key/pages/my/book_time_set.dart';
43 import 'package:one_key/pages/my/contant_page.dart'; 45 import 'package:one_key/pages/my/contant_page.dart';
@@ -682,3 +684,26 @@ var personnelDetailPageHandle = new Handler( @@ -682,3 +684,26 @@ var personnelDetailPageHandle = new Handler(
682 create: (_) => PersonnelProvider(), 684 create: (_) => PersonnelProvider(),
683 child: PersonnelDetailPage(model: data, position: position)); 685 child: PersonnelDetailPage(model: data, position: position));
684 }); 686 });
  687 +
  688 +///密码展示页面
  689 +var personnelPasswordPageHandle = new Handler(
  690 + handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
  691 + String account = params["account"].first;
  692 + String idstr = params["idstr"].first;
  693 +
  694 + return ChangeNotifierProvider<PersonnelProvider>(
  695 + create: (_) => PersonnelProvider(),
  696 + child: PersonnelPasswordPage(
  697 + account: account,
  698 + idstr: idstr,
  699 + ));
  700 +});
  701 +
  702 +///密码修改页面
  703 +var personnelPasswordEditPageHandle = new Handler(
  704 + handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
  705 + String idstr = params["idstr"].first;
  706 + return ChangeNotifierProvider<PersonnelProvider>(
  707 + create: (_) => PersonnelProvider(),
  708 + child: PersonnelPasswordEditPage(idstr: idstr));
  709 +});
@@ -60,7 +60,9 @@ class Routes { @@ -60,7 +60,9 @@ class Routes {
60 static String menu_add_dishes_page = "/menu_add_dishes_page"; //添加菜品页面 60 static String menu_add_dishes_page = "/menu_add_dishes_page"; //添加菜品页面
61 static String personnel_manage_page = "/personnel_manage_page"; //店员管理页面 61 static String personnel_manage_page = "/personnel_manage_page"; //店员管理页面
62 static String personnel_detail_page = "/personnel_detail_page"; //店员详情页面 62 static String personnel_detail_page = "/personnel_detail_page"; //店员详情页面
63 - 63 + static String personnel_password_page = "/personnel_password_page"; //密码展示页
  64 + static String personnel_password_edit_page =
  65 + "/personnel_password_edit_page"; //密码修改页
64 66
65 static void configureRoutes(FluroRouter router) { 67 static void configureRoutes(FluroRouter router) {
66 router.notFoundHandler = new Handler( 68 router.notFoundHandler = new Handler(
@@ -127,9 +129,10 @@ class Routes { @@ -127,9 +129,10 @@ class Routes {
127 router.define(menu_category_page, handler: menuCategoryPageHandle); 129 router.define(menu_category_page, handler: menuCategoryPageHandle);
128 router.define(menu_add_dishes_page, handler: menuAddDishesPageHandle); 130 router.define(menu_add_dishes_page, handler: menuAddDishesPageHandle);
129 router.define(personnel_manage_page, handler: personnelManagePageHandle); 131 router.define(personnel_manage_page, handler: personnelManagePageHandle);
130 - router.define(personnel_detail_page, handler: personnelDetailPageHandle);  
131 -  
132 -  
133 - 132 + router.define(personnel_detail_page, handler: personnelDetailPageHandle);
  133 + router.define(personnel_password_page,
  134 + handler: personnelPasswordPageHandle);
  135 + router.define(personnel_password_edit_page,
  136 + handler: personnelPasswordEditPageHandle);
134 } 137 }
135 } 138 }
@@ -78,6 +78,12 @@ class Utils { @@ -78,6 +78,12 @@ class Utils {
78 return exp.hasMatch(phone); 78 return exp.hasMatch(phone);
79 } 79 }
80 80
  81 + ///密码格式验证
  82 + static bool passwordRegExp(String password) {
  83 + RegExp exp = RegExp(r'^[a-z0-9]{6,18}$');
  84 + return exp.hasMatch(password);
  85 + }
  86 +
81 ///生成随机验证码 87 ///生成随机验证码
82 static randomBit(int len) { 88 static randomBit(int len) {
83 String scopeF = '123456789'; //首位 89 String scopeF = '123456789'; //首位