piaotou_edit.dart 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:liftmanager/common/common.dart';
  4. import 'package:liftmanager/internal/account/account_router.dart';
  5. import 'package:liftmanager/internal/account/model/user_info_entity.dart';
  6. import 'package:liftmanager/internal/account/provider/user_provider.dart';
  7. import 'package:liftmanager/internal/wode/wode_router.dart';
  8. import 'package:liftmanager/net/api_service.dart';
  9. import 'package:liftmanager/routers/fluro_navigator.dart';
  10. import 'package:liftmanager/utils/image_utils.dart';
  11. import 'package:liftmanager/widgets/app_bar.dart';
  12. import 'package:liftmanager/widgets/click_item.dart';
  13. import 'package:liftmanager/widgets/load_image.dart';
  14. import 'package:liftmanager/widgets/my_button.dart';
  15. import 'package:provider/provider.dart';
  16. import 'package:liftmanager/widgets/bbs_content.dart';
  17. import 'package:liftmanager/internal/bbs/bbs_router.dart';
  18. import 'package:flutter_screenutil/flutter_screenutil.dart';
  19. import 'package:liftmanager/res/resources.dart';
  20. import 'package:liftmanager/widgets/text_field_item.dart';
  21. import 'package:liftmanager/utils/toast.dart';
  22. import 'dart:math';
  23. import 'package:liftmanager/utils/fast_notification.dart';
  24. import 'package:flustars/flustars.dart' as flustars;
  25. import 'dart:convert';
  26. import 'package:liftmanager/utils/theme_utils.dart';
  27. class PiaotouEdit extends StatefulWidget {
  28. PiaotouEdit(this.type,this.id);
  29. final String type;
  30. final String id;
  31. @override
  32. State<StatefulWidget> createState() {
  33. return PiaotouEditState();
  34. }
  35. }
  36. class PiaotouEditState extends State<PiaotouEdit> {
  37. int indexNow = 2;
  38. String checkFalse = "tab_first/check_false";
  39. String checkTrue = "tab_first/check_true";
  40. String centerTitle;
  41. bool _hasData = false;
  42. final FocusNode blankNode = FocusNode();
  43. TextEditingController _nameController = new TextEditingController();
  44. TextEditingController _enterpriseNumberController = new TextEditingController();
  45. TextEditingController _gmfDzController = new TextEditingController();
  46. TextEditingController _gmfDhController = new TextEditingController();
  47. TextEditingController _gmfYhController = new TextEditingController();
  48. TextEditingController _gmfZhController = new TextEditingController();
  49. var piaoObj;
  50. @override
  51. void initState() {
  52. if(widget.type=="add"){
  53. centerTitle="添加发票抬头";
  54. }else if (widget.type=="edit"){
  55. centerTitle="编辑发票抬头";
  56. getTouDetail();
  57. }
  58. piaoObj = {
  59. "type":2,
  60. "name":"",
  61. "enterpriseNumber":"",
  62. "gmfDz":"",
  63. "gmfDh":"",
  64. "gmfYh":"",
  65. "gmfZh":"",
  66. "isDefault":0,
  67. "userId":int.parse(flustars.SpUtil.getString(Constant.userId))
  68. };
  69. super.initState();
  70. }
  71. Future getTouDetail() async {
  72. await NewApiService().getTouDetail(int.parse(widget.id),
  73. onSuccess: (res) {
  74. if (res != null) {
  75. _hasData = true;
  76. piaoObj["type"] = res.type;
  77. indexNow = piaoObj["type"];
  78. _nameController.text = res.name??"";
  79. _enterpriseNumberController.text = res.enterpriseNumber??"";
  80. _gmfDzController.text = res.gmfDz??"";
  81. _gmfDhController.text = res.gmfDh??"";
  82. _gmfYhController.text = res.gmfYh??"";
  83. _gmfZhController.text = res.gmfZh??"";
  84. piaoObj["isDefault"] = res.isDefault;
  85. // LogUtil.d(JsonEncoder(detailObj));
  86. // LogUtil.d(JsonEncoder().convert(detailObj));
  87. print(9999);
  88. setState(() {});
  89. }
  90. }, onError: (code, msg) {
  91. toasts(msg);
  92. });
  93. }
  94. Future getTouDelete() async {
  95. await NewApiService().getTouDelete(int.parse(widget.id),
  96. onSuccess: (res) {
  97. toasts("删除成功");
  98. String initThisString = randomInt(1111,9999).toString() + DateTime.now().millisecondsSinceEpoch.toString();
  99. FastNotification.push("initThis",initThisString);
  100. Navigator.of(context)..pop()..pop();
  101. }, onError: (code, msg) {
  102. toasts(msg);
  103. });
  104. }
  105. randomInt(int min, int max) {
  106. return new Random().nextInt(max) % (max - min + 1) + min;
  107. }
  108. @override
  109. Widget build(BuildContext context) {
  110. double width = MediaQuery.of(context).size.width;
  111. double height = MediaQuery.of(context).size.height;
  112. return Scaffold(
  113. resizeToAvoidBottomPadding: false,
  114. appBar: MyAppBar(
  115. centerTitle: centerTitle,
  116. actions:<Widget>[
  117. widget.type=="edit"?FlatButton(
  118. child: Text("删除"),
  119. textColor: Colours.dark_text,
  120. highlightColor: Colors.transparent,
  121. onPressed: (){
  122. showAlert(
  123. context,
  124. "提示",
  125. "确定要删除吗?",
  126. "确定",
  127. () {
  128. Navigator.pop(context);
  129. showLoading(context, "正在删除...");
  130. getTouDelete();
  131. },
  132. txt2: "取消",
  133. onPre2: () {
  134. NavigatorUtils.goBack(context);
  135. });
  136. },
  137. ):Container(child:null)
  138. ],
  139. ),
  140. body: GestureDetector(
  141. onTap: (){
  142. // 点击空白页面关闭键盘
  143. FocusScope.of(context).requestFocus(blankNode);
  144. },
  145. child: Stack(
  146. children: <Widget>[
  147. Container(
  148. // padding: EdgeInsets.only(top:70),
  149. child:ListView(
  150. children:<Widget>[
  151. Container(
  152. decoration: BoxDecoration(
  153. border: Border(
  154. bottom: BorderSide(width: 1, color:Color(0xfff5f5f5)),
  155. ),
  156. ),
  157. margin: EdgeInsets.only(left:ScreenUtil().setWidth(15),right:ScreenUtil().setWidth(15)),
  158. height:ScreenUtil().setWidth(60),
  159. child:Row(
  160. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  161. children:<Widget>[
  162. Text(
  163. "发票类型",
  164. style: TextStyle(
  165. // color:Color(0xff000000),
  166. // fontSize:ScreenUtil().setSp(14)
  167. ),
  168. textAlign:TextAlign.start,
  169. ),
  170. Row(
  171. children: <Widget>[
  172. GestureDetector(
  173. child: Container(
  174. // padding: EdgeInsets.only(top:10,left:5,right:5,bottom:10),
  175. child:Row(
  176. children:<Widget>[
  177. LoadAssetImage(
  178. // image: AssetImage(i['img']),
  179. indexNow == 2?checkTrue:checkFalse,
  180. width: ScreenUtil().setWidth(20),
  181. height:ScreenUtil().setWidth(20),
  182. // alignment: Alignment.centerLeft,
  183. ),
  184. Container(
  185. width:5,
  186. child:null
  187. ),
  188. Text(
  189. "企业单位",
  190. style: TextStyle(
  191. // color:Color(0xff000000),
  192. // fontSize:ScreenUtil().setSp(14)
  193. ),
  194. textAlign:TextAlign.start,
  195. ),
  196. ]
  197. )
  198. ),
  199. onTap: (){
  200. setState(() {
  201. indexNow = 2;
  202. _enterpriseNumberController.text = "";
  203. _gmfDzController.text = "";
  204. _gmfDhController.text = "";
  205. _gmfYhController.text = "";
  206. _gmfZhController.text = "";
  207. });
  208. print(indexNow);
  209. },
  210. ),
  211. Container(
  212. width:15,
  213. child:null
  214. ),
  215. GestureDetector(
  216. child: Container(
  217. // padding: EdgeInsets.only(top:10,left:5,right:5,bottom:10),
  218. child:Row(
  219. children:<Widget>[
  220. LoadAssetImage(
  221. // image: AssetImage(i['img']),
  222. indexNow == 1?checkTrue:checkFalse,
  223. width: ScreenUtil().setWidth(20),
  224. height:ScreenUtil().setWidth(20),
  225. // alignment: Alignment.centerLeft,
  226. ),
  227. Container(
  228. width:5,
  229. child:null
  230. ),
  231. Text(
  232. "个人",
  233. style: TextStyle(
  234. // color:Colors.black,
  235. // fontSize:ScreenUtil().setSp(14)
  236. ),
  237. textAlign:TextAlign.start,
  238. ),
  239. ]
  240. )
  241. ),
  242. onTap: (){
  243. setState(() {
  244. indexNow = 1;
  245. _enterpriseNumberController.text = "";
  246. _gmfDzController.text = "";
  247. _gmfDhController.text = "";
  248. _gmfYhController.text = "";
  249. _gmfZhController.text = "";
  250. });
  251. print(indexNow);
  252. },
  253. ),
  254. ],
  255. ),
  256. ]
  257. )
  258. ),
  259. TextFieldItem(
  260. title: "发票抬头",
  261. isMust: true,
  262. content: "",
  263. controller: _nameController,
  264. hintText: "请输入发票抬头",
  265. onChanged: (res) {
  266. },
  267. ),
  268. indexNow==2?TextFieldItem(
  269. title: "企业税号",
  270. isMust: true,
  271. content: '',
  272. controller: _enterpriseNumberController,
  273. hintText: "请输入企业税号",
  274. keyboardType:TextInputType.number,
  275. onChanged: (res) {
  276. },
  277. ):Container(child:null),
  278. indexNow==2?TextFieldItem(
  279. title: "注册地址",
  280. isMust: true,
  281. content: '',
  282. controller: _gmfDzController,
  283. hintText: "请输入注册地址",
  284. onChanged: (res) {
  285. },
  286. ):Container(child:null),
  287. indexNow==2?TextFieldItem(
  288. title: "注册电话",
  289. isMust: true,
  290. content: '',
  291. controller: _gmfDhController,
  292. hintText: "请输入注册电话",
  293. keyboardType:TextInputType.phone,
  294. onChanged: (res) {
  295. },
  296. ):Container(child:null),
  297. indexNow==2?TextFieldItem(
  298. title: "开户银行",
  299. isMust: true,
  300. content: '',
  301. controller: _gmfYhController,
  302. hintText: "请输入开户银行",
  303. onChanged: (res) {
  304. },
  305. ):Container(child:null),
  306. indexNow==2?TextFieldItem(
  307. title: "银行账号",
  308. isMust: true,
  309. content: '',
  310. controller: _gmfZhController,
  311. hintText: "银行账号",
  312. keyboardType:TextInputType.number,
  313. onChanged: (res) {
  314. },
  315. ):Container(child:null),
  316. Container(
  317. decoration: BoxDecoration(
  318. border: Border(
  319. bottom: BorderSide(width: 1, color:Color(0xfff5f5f5)),
  320. ),
  321. ),
  322. margin: EdgeInsets.only(left:ScreenUtil().setWidth(15),right:ScreenUtil().setWidth(15)),
  323. height:ScreenUtil().setWidth(60),
  324. child:Row(
  325. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  326. children:<Widget>[
  327. Text(
  328. "是否默认",
  329. style: TextStyle(
  330. // color:Color(0xff000000),
  331. // fontSize:ScreenUtil().setSp(14)
  332. ),
  333. textAlign:TextAlign.start,
  334. ),
  335. Row(
  336. children: <Widget>[
  337. GestureDetector(
  338. child: Container(
  339. // padding: EdgeInsets.only(top:10,left:5,right:5,bottom:10),
  340. child:Row(
  341. children:<Widget>[
  342. LoadAssetImage(
  343. // image: AssetImage(i['img']),
  344. piaoObj["isDefault"] == 0?checkTrue:checkFalse,
  345. width: ScreenUtil().setWidth(20),
  346. height:ScreenUtil().setWidth(20),
  347. // alignment: Alignment.centerLeft,
  348. ),
  349. Container(
  350. width:5,
  351. child:null
  352. ),
  353. Text(
  354. "否",
  355. style: TextStyle(
  356. // color:Color(0xff000000),
  357. // fontSize:ScreenUtil().setSp(14)
  358. ),
  359. textAlign:TextAlign.start,
  360. ),
  361. ]
  362. )
  363. ),
  364. onTap: (){
  365. setState(() {
  366. piaoObj["isDefault"] = 0;
  367. });
  368. print( piaoObj["isDefault"]);
  369. },
  370. ),
  371. Container(
  372. width:15,
  373. child:null
  374. ),
  375. GestureDetector(
  376. child: Container(
  377. // padding: EdgeInsets.only(top:10,left:5,right:5,bottom:10),
  378. child:Row(
  379. children:<Widget>[
  380. LoadAssetImage(
  381. // image: AssetImage(i['img']),
  382. piaoObj["isDefault"] == 1?checkTrue:checkFalse,
  383. width: ScreenUtil().setWidth(20),
  384. height:ScreenUtil().setWidth(20),
  385. // alignment: Alignment.centerLeft,
  386. ),
  387. Container(
  388. width:5,
  389. child:null
  390. ),
  391. Text(
  392. "是",
  393. style: TextStyle(
  394. // color:Colors.black,
  395. // fontSize:ScreenUtil().setSp(14)
  396. ),
  397. textAlign:TextAlign.start,
  398. ),
  399. ]
  400. )
  401. ),
  402. onTap: (){
  403. setState(() {
  404. piaoObj["isDefault"] = 1;
  405. });
  406. print( piaoObj["isDefault"]);
  407. },
  408. ),
  409. ],
  410. ),
  411. ]
  412. )
  413. ),
  414. ]
  415. )
  416. ),
  417. Positioned(
  418. bottom:0,
  419. left:0,
  420. child:Container(
  421. width: width,
  422. padding: EdgeInsets.only(top:ScreenUtil().setWidth(15),bottom:ScreenUtil().setWidth(15),left:ScreenUtil().setWidth(25),right:ScreenUtil().setWidth(25)),
  423. color:ThemeUtils.getDialogTextFieldColor(context),
  424. child: Container(
  425. height:ScreenUtil().setWidth(ScreenUtil().setWidth(44)),
  426. decoration: BoxDecoration(
  427. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(22)),
  428. gradient: const LinearGradient(
  429. colors: [Color(0xFF00D9FF), Color(0xFF0287FF)]),
  430. ),
  431. child: FlatButton(
  432. // padding: EdgeInsets.all(15.0),
  433. child: Text("保存"),
  434. textColor: Colors.white,
  435. // textColor: Colors.white,
  436. onPressed: () {
  437. piaoObj["type"] = indexNow;
  438. RegExp exp = RegExp(r'^1[34578]\d{9}$');
  439. piaoObj["name"] = _nameController.text??"";
  440. piaoObj["enterpriseNumber"] = _enterpriseNumberController.text??"";
  441. piaoObj["gmfDz"] = _gmfDzController.text??"";
  442. piaoObj["gmfDh"] = _gmfDhController.text??"";
  443. piaoObj["gmfYh"] = _gmfYhController.text??"";
  444. piaoObj["gmfZh"] = _gmfZhController.text??"";
  445. if(piaoObj["name"] == null || piaoObj["name"].trim()==""){
  446. toasts("请输入发票抬头");
  447. return;
  448. }
  449. if(indexNow==2 && (piaoObj["enterpriseNumber"] == null || piaoObj["enterpriseNumber"].trim()=="")){
  450. toasts("请输入企业税号");
  451. return;
  452. }
  453. if(indexNow==2 && (piaoObj["gmfDz"] == null || piaoObj["gmfDz"].trim()=="")){
  454. toasts("请输入注册地址");
  455. return;
  456. }
  457. if(indexNow==2 && (piaoObj["gmfDh"] == null || piaoObj["gmfDh"].trim()=="")){
  458. toasts("请输入注册电话");
  459. return;
  460. }
  461. if(indexNow==2 && (piaoObj["gmfYh"] == null || piaoObj["gmfYh"].trim()=="")){
  462. toasts("请输入开户银行");
  463. return;
  464. }
  465. if(indexNow==2 && (piaoObj["gmfZh"] == null || piaoObj["gmfZh"].trim()=="")){
  466. toasts("请输入银行账号");
  467. return;
  468. }
  469. if(indexNow==2 && !exp.hasMatch(piaoObj["gmfDh"])){
  470. toasts("请输入正确的手机号");
  471. return;
  472. }
  473. // addPiaoTouListPage
  474. // Navigator.pop(context);
  475. FocusScope.of(context).requestFocus(FocusNode());
  476. showLoading(context, "正在保存...");
  477. if(widget.type=="add"){
  478. NewApiService().addPiaoTouListPage(piaoObj,
  479. onSuccess: (res) {
  480. dismissLoading(context);
  481. toasts("保存成功");
  482. String initThisString = randomInt(1111,9999).toString() + DateTime.now().millisecondsSinceEpoch.toString();
  483. FastNotification.push("initThis",initThisString);
  484. Navigator.pop(context);
  485. print(9999);
  486. }, onError: (code, msg) {
  487. dismissLoading(context);
  488. toasts(msg);
  489. });
  490. }else if (widget.type=="edit"){
  491. Map edit = {
  492. "id":widget.id
  493. };
  494. edit.addAll(piaoObj);
  495. print(edit);
  496. print(868686);
  497. NewApiService().editPiaoTouListPage(edit,
  498. onSuccess: (res) {
  499. dismissLoading(context);
  500. toasts("保存成功");
  501. String initThisString = randomInt(1111,9999).toString() + DateTime.now().millisecondsSinceEpoch.toString();
  502. FastNotification.push("initThis",initThisString);
  503. Navigator.pop(context);
  504. print(9999);
  505. }, onError: (code, msg) {
  506. dismissLoading(context);
  507. toasts(msg);
  508. });
  509. }
  510. },
  511. ),
  512. ),
  513. )
  514. )
  515. ]
  516. ),
  517. ),
  518. );
  519. }
  520. }