send_express_page.dart 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/services.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:city_pickers/city_pickers.dart';
  5. import 'package:flutter_picker/flutter_picker.dart';
  6. import 'dart:async';
  7. import 'send_express_page/order_detail_page.dart';
  8. import '../util/util.dart';
  9. import '../util/api.dart';
  10. import '../util/models.dart';
  11. import '../showAlert.dart';
  12. import '../send_Dialog.dart';
  13. import '../util/session.dart';
  14. import '../showLineModal.dart';
  15. import '../util/bluetooth_utils.dart';
  16. class SendExpressPage extends StatefulWidget {
  17. final Widget child;
  18. SendExpressPage({
  19. Key key,
  20. this.child
  21. }): super(key: key);
  22. _SendExpressPageState createState() => _SendExpressPageState();
  23. }
  24. class _SendExpressPageState extends State < SendExpressPage > with AutomaticKeepAliveClientMixin {
  25. ScrollController _scrollController = ScrollController();
  26. //组件自用字段-----------------------------
  27. GlobalKey _sendPhoneKey = GlobalKey();
  28. GlobalKey _getPhoneKey = GlobalKey();
  29. double tipWidth = 0;
  30. double tipHeight = 0;
  31. double tipPosX = 0;
  32. double tipPosY = 0;
  33. bool tipStatus = true;
  34. bool lineModalStatus = false;
  35. bool submitStatus = true;
  36. List < LikePhoneList > likePhoneList = [];
  37. var timer;
  38. bool sendPhoneOrGetPhoneTab = true; //区分电话提示层点击时填入发件信息或手机信息的标记
  39. TextEditingController sendCompanyPhoneController = TextEditingController();
  40. TextEditingController sendCompanyCodeController = TextEditingController();
  41. TextEditingController sendCompanyNameController = TextEditingController();
  42. TextEditingController receiptCompanyPhoneController = TextEditingController();
  43. TextEditingController receiptCompanyNameController = TextEditingController();
  44. TextEditingController sendCompanyAddressController = TextEditingController();
  45. TextEditingController receiptCompanyAddressController = TextEditingController();
  46. TextEditingController bankCardController = TextEditingController();
  47. TextEditingController bankNameController = TextEditingController();
  48. TextEditingController openBankNameController = TextEditingController();
  49. TextEditingController openBankPhoneController = TextEditingController();
  50. TextEditingController goodsController = TextEditingController();
  51. TextEditingController goodsQuantityController = TextEditingController();
  52. TextEditingController goodsFreightController = TextEditingController();
  53. TextEditingController goodsAgencyFundController = TextEditingController();
  54. TextEditingController goodsPriceProtectionController = TextEditingController();
  55. TextEditingController goodsWeightController = TextEditingController();
  56. TextEditingController memoController = TextEditingController();
  57. FocusNode bankCardFocusNode = FocusNode();
  58. List < dynamic > goodsCateGoryList = [];
  59. List < dynamic > goodsPackageList = [];
  60. //请求字段-------------------------
  61. String lineId = '-1';//收件公司匹配的线路id
  62. String sendCompanyId = '0'; //寄件公司Id
  63. String sendCompanyName = ''; //寄件公司名称 不能为空
  64. String sendCompanyPhone = ''; //寄件公司电话 不能为空
  65. String sendCompanyCode = ''; //寄件公司编码
  66. String sendCompanyProvinceName = ''; //寄件公司省名称 不能为空
  67. String sendCompanyProvinceCode = ''; //寄件公司省编码 不能为空
  68. String sendCompanyCityName = ''; //寄件公司市名称 不能为空
  69. String sendCompanyCityCode = ''; //寄件公司市编码 不能为空
  70. String sendCompanyAreaName = ''; //寄件公司区名称 不能为空
  71. String sendCompanyAreaCode = ''; //寄件公司区编码 不能为空
  72. String sendCompanyAddress = ''; //寄件公司详细地址,不能为空
  73. String receiptCompanyId = '0'; //收件公司id
  74. String receiptCompanyPhone = ''; //收件公司电话 不能为空
  75. String receiptCompanyName = ''; //收件公司名称 不能为空
  76. String receiptCompanyProvinceName = ''; //收件公司省名称 不能为空
  77. String receiptCompanyProvinceCode = ''; //收件公司省编码 不能为空
  78. String receiptCompanyCityName = ''; //收件公司市名称 不能为空
  79. String receiptCompanyCityCode = ''; //收件公市编码 不能为空
  80. String receiptCompanyAreaName = ''; //收件公区名称 不能为空
  81. String receiptCompanyAreaCode = ''; //收件公司区编码 不能为空
  82. String receiptCompanyAddress = ''; //收件公司地址详情 不能为空
  83. String goods = ''; //商品名称 不能为空
  84. int goodsQuantity = 1; //商品数量 不能为空
  85. int goodsPackingId; //商品包装ID
  86. int goodsCategoryId; //商品类别ID
  87. int goodsPaymentMethod = 2; //付款方式 1,现付 2 到付
  88. double goodsWeight = 0.0; //商品重量
  89. double goodsPriceProtection = 0.0; //商品保价
  90. double goodsAgencyFund = 0.0; //商品代收款
  91. double goodsFreight = 0.0; //商品运费 不能为空
  92. String memo = ''; //备注
  93. String bankCard = '';//银行卡号
  94. String bankName = '';//所属银行
  95. String openBankName = '';//开户人
  96. String openBankPhone = '';//开户电话
  97. List<CompanyOfLineList> lineList = [];
  98. String sendPCA = ' '; //Text组件内容必须有空格,否则报null
  99. String getPCA = ' ';
  100. String showTextGoodsCategory = ' ';
  101. String showTextGoodsPackage = ' ';
  102. String showTextPaymentMehod = '到付';
  103. BluetoothUtils bluetooth = BluetoothUtils();
  104. bool checkedCompanyInfo = false;//选择公司信息向sendCompanyPhoneController填充时不去模糊匹配
  105. @override
  106. void initState() {
  107. super.initState();
  108. goodsCategory().then((resp) {
  109. if (isNotError(context, resp) && this.mounted) {
  110. GoodsCategory goodsCategoryObj = GoodsCategory.fromJson(resp.data);
  111. setState(() {
  112. goodsCateGoryList = goodsCategoryObj.data;
  113. showTextGoodsCategory = goodsCateGoryList[0].name;
  114. goodsCategoryId = goodsCateGoryList[0].id;
  115. });
  116. }
  117. });
  118. goodsPackage().then((resp) {
  119. if (isNotError(context, resp) && this.mounted) {
  120. GoodsPackage goodsPackageObj = GoodsPackage.fromJson(resp.data);
  121. setState(() {
  122. goodsPackageList = goodsPackageObj.data;
  123. showTextGoodsPackage = goodsPackageList[0].name;
  124. goodsPackingId = goodsPackageList[0].id;
  125. });
  126. }
  127. });
  128. _scrollController.addListener(() {
  129. if (!tipStatus) {
  130. setState(() {
  131. tipStatus = true;
  132. });
  133. }
  134. //if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) {}
  135. });
  136. sendCompanyPhoneController.addListener(() {
  137. if(checkedCompanyInfo){
  138. return;
  139. }
  140. setState(() {
  141. sendCompanyPhone = sendCompanyPhoneController.text;
  142. });
  143. if (timer != null) {
  144. timer.cancel();
  145. }
  146. if (sendCompanyPhoneController.text.length < 6 || sendCompanyPhoneController.text.length > 11) {
  147. setState(() {
  148. tipStatus = true;
  149. });
  150. }
  151. timer = Timer(Duration(milliseconds: 250), () {
  152. if (sendCompanyPhoneController.text.length >= 6 && sendCompanyPhoneController.text.length <= 11) {
  153. likePhone(sendCompanyPhoneController.text).then((resp) {
  154. if (isNotError(context, resp) && this.mounted) {
  155. LikePhone likePhoneObj = LikePhone.fromJson(resp.data);
  156. likePhoneList = likePhoneObj.data;
  157. }
  158. if (likePhoneList.length > 0) {
  159. sendPhoneOrGetPhoneTab = true;
  160. RenderObject sendPhoneObj = _sendPhoneKey.currentContext.findRenderObject();
  161. setState(() {
  162. tipWidth = sendPhoneObj.paintBounds.size.width;
  163. tipHeight = sendPhoneObj.paintBounds.size.height;
  164. tipPosX = sendPhoneObj.getTransformTo(null).getTranslation().x;
  165. tipPosY = sendPhoneObj.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90);
  166. tipStatus = false;
  167. });
  168. } else {
  169. setState(() {
  170. tipStatus = true;
  171. });
  172. }
  173. });
  174. }
  175. });
  176. });
  177. receiptCompanyPhoneController.addListener(() {
  178. if(checkedCompanyInfo){
  179. return;
  180. }
  181. setState(() {
  182. receiptCompanyPhone = receiptCompanyPhoneController.text;
  183. });
  184. if (timer != null) {
  185. timer.cancel();
  186. }
  187. if (receiptCompanyPhoneController.text.length < 6 || receiptCompanyPhoneController.text.length > 11) {
  188. setState(() {
  189. tipStatus = true;
  190. });
  191. }
  192. timer = Timer(Duration(milliseconds: 250), () {
  193. if (receiptCompanyPhoneController.text.length >= 6 && receiptCompanyPhoneController.text.length <= 11) {
  194. likePhone(receiptCompanyPhoneController.text).then((resp) {
  195. if (isNotError(context, resp) && this.mounted) {
  196. LikePhone likePhoneObj = LikePhone.fromJson(resp.data);
  197. likePhoneList = likePhoneObj.data;
  198. }
  199. if (likePhoneList.length > 0) {
  200. sendPhoneOrGetPhoneTab = false;
  201. RenderObject getPhoneKey = _getPhoneKey.currentContext.findRenderObject();
  202. setState(() {
  203. tipWidth = getPhoneKey.paintBounds.size.width;
  204. tipHeight = getPhoneKey.paintBounds.size.height;
  205. tipPosX = getPhoneKey.getTransformTo(null).getTranslation().x;
  206. tipPosY = getPhoneKey.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90);
  207. tipStatus = false;
  208. });
  209. } else {
  210. setState(() {
  211. tipStatus = true;
  212. });
  213. }
  214. });
  215. }
  216. });
  217. });
  218. sendCompanyAddressController.addListener(() {
  219. setState(() {
  220. sendCompanyAddress = sendCompanyAddressController.text;
  221. });
  222. });
  223. receiptCompanyAddressController.addListener(() {
  224. setState(() {
  225. receiptCompanyAddress = receiptCompanyAddressController.text;
  226. });
  227. });
  228. bankCardFocusNode.addListener((){
  229. if(!bankCardFocusNode.hasFocus){
  230. if(bankCardController.text!=''){
  231. getBankName(bankCardController.text).then((resp){
  232. if(isNotError(context, resp) && this.mounted){
  233. BankNameObj obj = BankNameObj.fromJson(resp.data);
  234. setState(() {
  235. bankNameController.text = obj.data;
  236. });
  237. }
  238. });
  239. }
  240. }
  241. });
  242. }
  243. @override
  244. bool get wantKeepAlive => true;
  245. @override
  246. Widget build(BuildContext context) {
  247. return Container(
  248. child: Scaffold(
  249. appBar: AppBar(
  250. title: Text('发件', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(36)), ),
  251. centerTitle: true,
  252. backgroundColor: Color.fromRGBO(64, 98, 254, 1),
  253. ),
  254. body:
  255. Stack(
  256. children: < Widget > [
  257. Container(
  258. color: Color.fromRGBO(246, 246, 254, 1),
  259. padding: EdgeInsets.fromLTRB(0, ScreenUtil.getInstance().setHeight(20), 0, ScreenUtil.getInstance().setHeight(20)),
  260. child: ListView(
  261. controller: _scrollController,
  262. children: < Widget > [
  263. _sendInfo(context),
  264. _getInfo(context),
  265. _itemInfoWidget(),
  266. _bankInfo(context),
  267. _submitBtn()
  268. ],
  269. ),
  270. ),
  271. Positioned(
  272. top: tipPosY,
  273. left: tipPosX,
  274. child: Offstage(
  275. offstage: tipStatus,
  276. child: Container(
  277. width: tipWidth,
  278. height: ScreenUtil.getInstance().setHeight(450),
  279. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  280. decoration: BoxDecoration(
  281. color: Color.fromRGBO(244, 248, 251, 1),
  282. ),
  283. child: ListView.builder(
  284. itemCount: likePhoneList.length,
  285. itemBuilder: (BuildContext context, int index) {
  286. return _tipItem(likePhoneList[index]);
  287. },
  288. )
  289. ),
  290. )
  291. )
  292. ],
  293. ),
  294. resizeToAvoidBottomPadding: false //键盘弹出,页面不跟随向上滑动,防止出现溢出错误
  295. ),
  296. );
  297. }
  298. Widget _sendInfo(BuildContext context) {
  299. return Container(
  300. color: Colors.white,
  301. margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)),
  302. child: Column(
  303. children: < Widget > [
  304. _titleWidget('lib/images/icon_send.png', '发件信息'),
  305. _underLine(),
  306. _inputWiget('电话', 'sendPhone'),
  307. _contentWiget('企业编码', 'send', true),
  308. _contentWiget('企业名称', 'send', true),
  309. _cityWiget('城市/区域', context, 'send'),
  310. _lastContentWiget('详细地址', 'send')
  311. ],
  312. )
  313. );
  314. }
  315. Widget _getInfo(BuildContext context) {
  316. return Container(
  317. color: Colors.white,
  318. margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)),
  319. child: Column(
  320. children: < Widget > [
  321. _titleWidget('lib/images/icon_shoujian.png', '收件信息'),
  322. _underLine(),
  323. _inputWiget('电话', 'getPhone'),
  324. _contentWiget('企业名称', 'get', true),
  325. _cityWiget('城市/区域', context, 'get'),
  326. _lastContentWiget('详细地址', 'get')
  327. ],
  328. )
  329. );
  330. }
  331. Widget _itemInfoWidget() {
  332. return Container(
  333. child: Container(
  334. color: Colors.white,
  335. margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)),
  336. child: Column(
  337. crossAxisAlignment: CrossAxisAlignment.start,
  338. children: < Widget > [
  339. _titleWidget('lib/images/icon_huowu.png', "货物信息"),
  340. _underLine(),
  341. _itemContentWiget("货物名称", goodsController, true),
  342. _itemContentWiget("数量", goodsQuantityController),
  343. _itemContentWiget("运费", goodsFreightController),
  344. _itemContentWiget("代收", goodsAgencyFundController),
  345. _itemContentWiget("保价", goodsPriceProtectionController),
  346. _itemContentWiget("重量", goodsWeightController),
  347. _packageType('包装类型'),
  348. _packageType('货物类型'),
  349. _packageType('付款方式'),
  350. _descWidget()
  351. ],
  352. ),
  353. )
  354. );
  355. }
  356. Widget _bankInfo(BuildContext context) {
  357. return Container(
  358. color: Colors.white,
  359. margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)),
  360. child: Column(
  361. children: < Widget > [
  362. _titleWidget('lib/images/icon_bank.png', '银行信息'),
  363. _underLine(),
  364. _contentBankWiget('银行卡号', 'bank'),
  365. _contentBankWiget('银行名称', 'bank',true),
  366. _contentBankWiget('开户人', 'bank',true),
  367. _lastBankContentWiget('开户电话', 'bank'),
  368. ],
  369. )
  370. );
  371. }
  372. Widget _titleWidget(String iconUrl, String str) {
  373. return Container(
  374. height: ScreenUtil.getInstance().setHeight(90),
  375. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  376. child: Center(
  377. child: Row(
  378. mainAxisAlignment: MainAxisAlignment.start,
  379. children: < Widget > [
  380. Padding(
  381. padding: EdgeInsets.only(right: ScreenUtil.getInstance().setHeight(20)),
  382. child: Image.asset(
  383. iconUrl,
  384. width: ScreenUtil.getInstance().setWidth(40),
  385. height: ScreenUtil.getInstance().setHeight(40),
  386. )
  387. ),
  388. Text(str, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(32)), )
  389. ],
  390. ),
  391. ),
  392. );
  393. }
  394. Widget _underLine() {
  395. return Container(
  396. color: Color.fromRGBO(223, 223, 223, 1),
  397. height: ScreenUtil.getInstance().setHeight(1),
  398. );
  399. }
  400. Widget _inputWiget(String key, String tab) {
  401. return Padding(
  402. key: tab == 'sendPhone' ? _sendPhoneKey : _getPhoneKey,
  403. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  404. child: Column(
  405. children: < Widget > [
  406. SizedBox(
  407. height: ScreenUtil.getInstance().setHeight(89),
  408. child: Center(
  409. child: Row(
  410. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  411. children: < Widget > [
  412. Expanded(
  413. flex: 0,
  414. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  415. ),
  416. Expanded(
  417. child: Row(
  418. mainAxisAlignment: MainAxisAlignment.end,
  419. children: < Widget > [
  420. SizedBox(
  421. width: ScreenUtil.getInstance().setWidth(500),
  422. child: TextField(
  423. controller: tab == 'sendPhone' ? sendCompanyPhoneController : receiptCompanyPhoneController,
  424. keyboardType: TextInputType.number,
  425. textAlign: TextAlign.end,
  426. decoration: InputDecoration(
  427. border: InputBorder.none
  428. ),
  429. onEditingComplete: () {
  430. setState(() {
  431. FocusScope.of(context).requestFocus(FocusNode());
  432. tipStatus = true;
  433. });
  434. },
  435. onChanged: (value){
  436. checkedCompanyInfo = false;
  437. if(tab=='sendPhone'){
  438. sendCompanyCode = '';
  439. sendCompanyName = '';
  440. sendCompanyId ='0';
  441. sendCompanyCodeController.text = '';
  442. sendCompanyNameController.text = '';
  443. sendPCA = '';
  444. sendCompanyProvinceName = '';
  445. sendCompanyProvinceCode = '';
  446. sendCompanyCityName = '';
  447. sendCompanyCityCode = '';
  448. sendCompanyAreaName = '';
  449. sendCompanyAreaCode = '';
  450. bankCardController.text = '';
  451. bankNameController.text = '';
  452. openBankNameController.text = '';
  453. openBankPhoneController.text = '';
  454. sendCompanyAddressController.text = '';
  455. }else if(tab=='getPhone'){
  456. receiptCompanyName = '';
  457. receiptCompanyNameController.text = '';
  458. receiptCompanyId = '0';
  459. getPCA = '';
  460. receiptCompanyProvinceName = '';
  461. receiptCompanyProvinceCode = '';
  462. receiptCompanyCityName = '';
  463. receiptCompanyCityCode = '';
  464. receiptCompanyAreaName = '';
  465. receiptCompanyAreaCode = '';
  466. receiptCompanyAddressController.text = '';
  467. }
  468. },
  469. ),
  470. ),
  471. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  472. ],
  473. )
  474. )
  475. ],
  476. ),
  477. )
  478. ),
  479. Expanded(
  480. flex: 0,
  481. child: _underLine()
  482. )
  483. ],
  484. )
  485. );
  486. }
  487. Widget _contentWiget(String key, String type, [bool keyboardType = false]) { //false是数字键盘
  488. return Padding(
  489. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  490. child: Column(
  491. children: < Widget > [
  492. SizedBox(
  493. height: ScreenUtil.getInstance().setHeight(89),
  494. child: Center(
  495. child: Row(
  496. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  497. children: < Widget > [
  498. Expanded(
  499. flex: 0,
  500. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  501. ),
  502. Expanded(
  503. child: Row(
  504. mainAxisAlignment: MainAxisAlignment.end,
  505. children: < Widget > [
  506. SizedBox(
  507. width: ScreenUtil.getInstance().setWidth(500),
  508. child: TextField(
  509. controller: (key == '企业名称') ? (type == 'send' ? sendCompanyNameController : receiptCompanyNameController) : (key == '企业编码' ? sendCompanyCodeController : null),
  510. keyboardType: keyboardType ? TextInputType.text : TextInputType.number,
  511. textAlign: TextAlign.end,
  512. decoration: InputDecoration(
  513. border: InputBorder.none
  514. ),
  515. onChanged: (value) {
  516. if (type == 'send') {
  517. if (key == '企业编码') {
  518. setState(() {
  519. sendCompanyCode = value;
  520. });
  521. } else if (key == '企业名称') {
  522. setState(() {
  523. sendCompanyName = value;
  524. });
  525. }
  526. } else if (type == 'get') {
  527. if (key == '企业编码') {
  528. setState(() {
  529. sendCompanyCode = value;
  530. });
  531. } else if (key == '企业名称') {
  532. setState(() {
  533. receiptCompanyName = value;
  534. });
  535. }
  536. } else if(type=='goods') {
  537. if (key == '货物名称') {
  538. goods = value;
  539. } else if (key == '数量') {
  540. goodsQuantity = int.parse(value);
  541. } else if (key == '运费') {
  542. goodsFreight = double.parse(value);
  543. String temp = goodsFreight.toStringAsFixed(1);
  544. goodsFreight = double.parse(temp);
  545. } else if (key == '代收') {
  546. goodsAgencyFund = double.parse(value);
  547. String temp = goodsAgencyFund.toStringAsFixed(1);
  548. goodsAgencyFund = double.parse(temp);
  549. } else if (key == '保价') {
  550. goodsPriceProtection = double.parse(value);
  551. String temp = goodsPriceProtection.toStringAsFixed(1);
  552. goodsPriceProtection = double.parse(temp);
  553. } else if (key == '重量') {
  554. goodsWeight = double.parse(value);
  555. String temp = goodsWeight.toStringAsFixed(1);
  556. goodsWeight = double.parse(temp);
  557. }
  558. }
  559. },
  560. ),
  561. ),
  562. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  563. ],
  564. )
  565. )
  566. ],
  567. ),
  568. )
  569. ),
  570. Expanded(
  571. flex: 0,
  572. child: _underLine()
  573. )
  574. ],
  575. )
  576. );
  577. }
  578. Widget _itemContentWiget(String key,TextEditingController controller, [bool keyboardType = false]) { //false是数字键盘
  579. return Padding(
  580. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  581. child: Column(
  582. children: < Widget > [
  583. SizedBox(
  584. height: ScreenUtil.getInstance().setHeight(89),
  585. child: Center(
  586. child: Row(
  587. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  588. children: < Widget > [
  589. Expanded(
  590. flex: 0,
  591. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  592. ),
  593. Expanded(
  594. child: Row(
  595. mainAxisAlignment: MainAxisAlignment.end,
  596. children: < Widget > [
  597. SizedBox(
  598. width: ScreenUtil.getInstance().setWidth(500),
  599. child: TextField(
  600. controller: controller,
  601. keyboardType: keyboardType ? TextInputType.text : TextInputType.number,
  602. textAlign: TextAlign.end,
  603. decoration: InputDecoration(
  604. border: InputBorder.none
  605. ),
  606. onChanged: (value) {
  607. if (key == '货物名称') {
  608. goods = value;
  609. } else if (key == '数量') {
  610. goodsQuantity = int.parse(value);
  611. } else if (key == '运费') {
  612. goodsFreight = double.parse(value);
  613. String temp = goodsFreight.toStringAsFixed(1);
  614. goodsFreight = double.parse(temp);
  615. } else if (key == '代收') {
  616. goodsAgencyFund = double.parse(value);
  617. String temp = goodsAgencyFund.toStringAsFixed(1);
  618. goodsAgencyFund = double.parse(temp);
  619. } else if (key == '保价') {
  620. goodsPriceProtection = double.parse(value);
  621. String temp = goodsPriceProtection.toStringAsFixed(1);
  622. goodsPriceProtection = double.parse(temp);
  623. } else if (key == '重量') {
  624. goodsWeight = double.parse(value);
  625. String temp = goodsWeight.toStringAsFixed(1);
  626. goodsWeight = double.parse(temp);
  627. }
  628. },
  629. ),
  630. ),
  631. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  632. ],
  633. )
  634. )
  635. ],
  636. ),
  637. )
  638. ),
  639. Expanded(
  640. flex: 0,
  641. child: _underLine()
  642. )
  643. ],
  644. )
  645. );
  646. }
  647. Widget _contentBankWiget(String key, String type, [bool keyboardType = false]) { //false是数字键盘
  648. return Padding(
  649. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  650. child: Column(
  651. children: < Widget > [
  652. SizedBox(
  653. height: ScreenUtil.getInstance().setHeight(89),
  654. child: Center(
  655. child: Row(
  656. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  657. children: < Widget > [
  658. Expanded(
  659. flex: 0,
  660. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  661. ),
  662. Expanded(
  663. child: Row(
  664. mainAxisAlignment: MainAxisAlignment.end,
  665. children: < Widget > [
  666. SizedBox(
  667. width: ScreenUtil.getInstance().setWidth(500),
  668. child: TextField(
  669. focusNode: key == '银行卡号'?bankCardFocusNode:null,
  670. controller: key == '银行卡号'?bankCardController:key=='银行名称'?bankNameController:openBankNameController,
  671. keyboardType: keyboardType ? TextInputType.text : TextInputType.number,
  672. textAlign: TextAlign.end,
  673. decoration: InputDecoration(
  674. border: InputBorder.none
  675. ),
  676. ),
  677. ),
  678. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  679. ],
  680. )
  681. )
  682. ],
  683. ),
  684. )
  685. ),
  686. Expanded(
  687. flex: 0,
  688. child: _underLine()
  689. )
  690. ],
  691. )
  692. );
  693. }
  694. Widget _cityWiget(String key, BuildContext context, String type) {
  695. return
  696. GestureDetector(
  697. child: Padding(
  698. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  699. child: Column(
  700. children: < Widget > [
  701. SizedBox(
  702. height: ScreenUtil.getInstance().setHeight(89),
  703. child: Center(
  704. child: Row(
  705. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  706. children: < Widget > [
  707. Expanded(
  708. flex: 0,
  709. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  710. ),
  711. Expanded(
  712. child: Row(
  713. mainAxisAlignment: MainAxisAlignment.end,
  714. children: < Widget > [
  715. //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ),
  716. SizedBox(
  717. width: ScreenUtil.getInstance().setWidth(500),
  718. child: Text(type == 'send' ? sendPCA : getPCA, textAlign: TextAlign.end, overflow: TextOverflow.ellipsis, )
  719. ),
  720. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  721. ],
  722. )
  723. )
  724. ],
  725. ),
  726. )
  727. ),
  728. Expanded(
  729. flex: 0,
  730. child: _underLine()
  731. )
  732. ],
  733. )
  734. ),
  735. onTap: () {
  736. getCity(context).then((resp) {
  737. if (resp == null) {
  738. return;
  739. }
  740. print(resp.toString());
  741. setState(() {
  742. if (type == 'send') {
  743. sendPCA = resp.provinceName + ' ' + resp.cityName + ' ' + ' ' + resp.areaName;
  744. sendCompanyProvinceName = resp.provinceName;
  745. sendCompanyProvinceCode = resp.provinceId;
  746. sendCompanyCityName = resp.cityName;
  747. sendCompanyCityCode = resp.cityId;
  748. sendCompanyAreaName = resp.areaName;
  749. sendCompanyAreaCode = resp.areaId;
  750. } else {
  751. getPCA = resp.provinceName + ' ' + resp.cityName + ' ' + ' ' + resp.areaName;
  752. receiptCompanyProvinceName = resp.provinceName;
  753. receiptCompanyProvinceCode = resp.provinceId;
  754. receiptCompanyCityName = resp.cityName;
  755. receiptCompanyCityCode = resp.cityId;
  756. receiptCompanyAreaName = resp.areaName;
  757. receiptCompanyAreaCode = resp.areaId;
  758. }
  759. });
  760. //print(value);
  761. });
  762. },
  763. );
  764. }
  765. Widget _lastContentWiget(String key, String type) {
  766. return Padding(
  767. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  768. child: SizedBox(
  769. height: ScreenUtil.getInstance().setHeight(89),
  770. child: Center(
  771. child: Row(
  772. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  773. children: < Widget > [
  774. Expanded(
  775. flex: 0,
  776. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  777. ),
  778. Expanded(
  779. child: Row(
  780. mainAxisAlignment: MainAxisAlignment.end,
  781. children: < Widget > [
  782. //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ),
  783. SizedBox(
  784. width: ScreenUtil.getInstance().setWidth(500),
  785. child: TextField(
  786. controller: type == 'send' ? sendCompanyAddressController : receiptCompanyAddressController,
  787. textAlign: TextAlign.end,
  788. decoration: InputDecoration(
  789. border: InputBorder.none
  790. ),
  791. ),
  792. ),
  793. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  794. ],
  795. )
  796. )
  797. ],
  798. ),
  799. )
  800. )
  801. );
  802. }
  803. Widget _lastBankContentWiget(String key, String type) {
  804. return Padding(
  805. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  806. child: SizedBox(
  807. height: ScreenUtil.getInstance().setHeight(89),
  808. child: Center(
  809. child: Row(
  810. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  811. children: < Widget > [
  812. Expanded(
  813. flex: 0,
  814. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  815. ),
  816. Expanded(
  817. child: Row(
  818. mainAxisAlignment: MainAxisAlignment.end,
  819. children: < Widget > [
  820. //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ),
  821. SizedBox(
  822. width: ScreenUtil.getInstance().setWidth(500),
  823. child: TextField(
  824. controller: openBankPhoneController,
  825. textAlign: TextAlign.end,
  826. keyboardType: TextInputType.number,
  827. decoration: InputDecoration(
  828. border: InputBorder.none
  829. ),
  830. ),
  831. ),
  832. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  833. ],
  834. )
  835. )
  836. ],
  837. ),
  838. )
  839. )
  840. );
  841. }
  842. Widget _descWidget() {
  843. return
  844. Container(
  845. padding: EdgeInsets.all(ScreenUtil.getInstance().setWidth(30)),
  846. //child: Text(str, maxLines: 100, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  847. child: TextField(
  848. maxLines: 3,
  849. controller: memoController,
  850. decoration: InputDecoration(
  851. border: InputBorder.none,
  852. hintText: "请输入备注内容"
  853. ),
  854. onChanged: (value) {
  855. setState(() {
  856. memo = value;
  857. });
  858. },
  859. ),
  860. );
  861. }
  862. Widget _submitBtn() {
  863. return GestureDetector(
  864. child: Container(
  865. margin: EdgeInsets.fromLTRB(ScreenUtil.getInstance().setWidth(30), ScreenUtil.getInstance().setWidth(50), ScreenUtil.getInstance().setWidth(30), ScreenUtil.getInstance().setWidth(40)),
  866. height: ScreenUtil.getInstance().setHeight(88),
  867. decoration: BoxDecoration(
  868. borderRadius: BorderRadius.all(Radius.circular(4)),
  869. color: Color.fromRGBO(37, 102, 242, 1),
  870. ),
  871. child: Center(
  872. child: Row(
  873. mainAxisAlignment: MainAxisAlignment.center,
  874. children: < Widget > [
  875. Offstage(
  876. offstage: submitStatus,
  877. child: SizedBox(
  878. width: ScreenUtil.getInstance().setWidth(45),
  879. height: ScreenUtil.getInstance().setHeight(45),
  880. child: Image.asset('lib/images/loading.gif'),
  881. ),
  882. ),
  883. Text("提交", style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(32), color: Colors.white), ),
  884. ],
  885. )
  886. ),
  887. ),
  888. onTap: () {
  889. if (!submitStatus) {
  890. return;
  891. }
  892. String errStr = '';
  893. print('sendCompanyId---${sendCompanyId}');
  894. print('sendCompanyName---${sendCompanyName}');
  895. print('sendCompanyPhone---${sendCompanyPhone}');
  896. print('sendCompanyCode---${sendCompanyCode}');
  897. print('sendCompanyProvinceName---${sendCompanyProvinceName}');
  898. print('sendCompanyProvinceCode---${sendCompanyProvinceCode}');
  899. print('sendCompanyCityName---${sendCompanyCityName}');
  900. print('sendCompanyCityCode---${sendCompanyCityCode}');
  901. print('sendCompanyAreaName---${sendCompanyAreaName}');
  902. print('sendCompanyAreaCode---${sendCompanyAreaCode}');
  903. print('sendCompanyAddress---${sendCompanyAddress}');
  904. print('receiptCompanyId---${receiptCompanyId}');
  905. print('receiptCompanyPhone---${receiptCompanyPhone}');
  906. print('receiptCompanyName---${receiptCompanyName}');
  907. print('receiptCompanyProvinceName---${receiptCompanyProvinceName}');
  908. print('receiptCompanyProvinceCode---${receiptCompanyProvinceCode}');
  909. print('receiptCompanyCityName---${receiptCompanyCityName}');
  910. print('receiptCompanyCityCode---${receiptCompanyCityCode}');
  911. print('receiptCompanyAreaName---${receiptCompanyAreaName}');
  912. print('receiptCompanyAreaCode---${receiptCompanyAreaCode}');
  913. print('receiptCompanyAddress---${receiptCompanyAddress}');
  914. print('goods---${goods}');
  915. print('goodsQuantity---${goodsQuantity}');
  916. print('goodsPackingId---${goodsPackingId}');
  917. print('goodsCategoryId---${goodsCategoryId}');
  918. print('goodsPaymentMethod---${goodsPaymentMethod}');
  919. print('goodsWeight---${goodsWeight}');
  920. print('goodsPriceProtection---${goodsPriceProtection}');
  921. print('goodsAgencyFund---${goodsAgencyFund}');
  922. print('goodsFreight---${goodsFreight}');
  923. print('memo---${memo}');
  924. if (sendCompanyPhone == '') {
  925. errStr = '请填写发件电话';
  926. }
  927. if (sendCompanyName == '') {
  928. errStr = '请填写发件企业名称';
  929. }
  930. if (sendCompanyProvinceName == '') {
  931. errStr = '请填写发件城市/区域';
  932. }
  933. if (sendCompanyAddress == '') {
  934. errStr = '请填写发件详细地址';
  935. }
  936. if (receiptCompanyPhone == '') {
  937. errStr = '请填写收件电话';
  938. }
  939. if (receiptCompanyName == '') {
  940. errStr = '请填写收件企业名称';
  941. }
  942. if (receiptCompanyProvinceName == '') {
  943. errStr = '请填写收件城市/区域';
  944. }
  945. if (receiptCompanyAddress == '') {
  946. errStr = '请填写收件详细地址';
  947. }
  948. // if (goods == '') {
  949. // errStr = '请填写货物名称';
  950. // }
  951. if (goodsQuantity == 0) {
  952. errStr = '请填写货物数量';
  953. }
  954. if (int.tryParse(goodsQuantity.toString()) == null) {
  955. errStr = '货物数量格式错误';
  956. }
  957. if (goodsFreight == 0.0) {
  958. errStr = '请填写运费';
  959. }
  960. if (sendCompanyPhone == '' || receiptCompanyPhone == '' ) {
  961. errStr = '请输入正确的电话';
  962. }
  963. if (goodsAgencyFund>0) {//如果有代收
  964. if(bankNameController.text=='' || bankCardController.text=='' || openBankNameController.text=='' || openBankPhoneController.text==''){
  965. errStr = "请补全银行卡信息";
  966. }
  967. }
  968. if (errStr != '') {
  969. showError(errStr);
  970. return;
  971. }
  972. if(lineList.length>1){
  973. showLineModal(lineList);
  974. return;
  975. }
  976. submitOrder();
  977. },
  978. );
  979. }
  980. submitOrder(){
  981. setState(() {
  982. submitStatus = false;
  983. });
  984. getKey('stationId').then((value) {
  985. createOrder(
  986. lineId,//收件线路Id
  987. value,//当前用户选择的站点id
  988. sendCompanyId, //寄件公司Id
  989. sendCompanyName, //寄件公司名称 不能为空
  990. sendCompanyPhone, //寄件公司电话 不能为空
  991. sendCompanyCode ?? '', //寄件公司编码
  992. sendCompanyProvinceName, //寄件公司省名称 不能为空
  993. sendCompanyProvinceCode, //寄件公司省编码 不能为空
  994. sendCompanyCityName, //寄件公司市名称 不能为空
  995. sendCompanyCityCode, //寄件公司市编码 不能为空
  996. sendCompanyAreaName, //寄件公司区名称 不能为空
  997. sendCompanyAreaCode, //寄件公司区编码 不能为空
  998. sendCompanyAddress, //寄件公司详细地址,不能为空
  999. receiptCompanyId, //收件公司id
  1000. receiptCompanyPhone, //收件公司电话 不能为空
  1001. receiptCompanyName, //收件公司名称 不能为空
  1002. receiptCompanyProvinceName, //收件公司省名称 不能为空
  1003. receiptCompanyProvinceCode, //收件公司省编码 不能为空
  1004. receiptCompanyCityName, //收件公司市名称 不能为空
  1005. receiptCompanyCityCode, //收件公市编码 不能为空
  1006. receiptCompanyAreaName, //收件公区名称 不能为空
  1007. receiptCompanyAreaCode, //收件公司区编码 不能为空
  1008. receiptCompanyAddress, //收件公司地址详情 不能为空
  1009. goods, //商品名称 不能为空
  1010. goodsQuantity, //商品数量 不能为空
  1011. goodsPackingId, //商品包装ID
  1012. goodsCategoryId, //商品类别ID
  1013. goodsPaymentMethod, //付款方式 1,现付 2 到付
  1014. goodsWeight, //商品重量
  1015. goodsPriceProtection * 100, //商品保价,已分为单位
  1016. goodsAgencyFund * 100, //商品代收款,已分为单位
  1017. goodsFreight * 100, //商品运费 不能为空 ,已分为单位
  1018. memo, //备注
  1019. bankCardController.text,
  1020. bankNameController.text,
  1021. openBankNameController.text,
  1022. openBankPhoneController.text
  1023. ).then((resp) {
  1024. if (isNotError(context, resp) && this.mounted) {
  1025. setState(() {
  1026. submitStatus = true;
  1027. });
  1028. OrderDetailData data = OrderDetailObj.fromJson(resp.data).data;
  1029. showDialog < Null > (
  1030. context: context, //BuildContext对象
  1031. barrierDismissible: false,
  1032. builder: (BuildContext context) {
  1033. //打印
  1034. getKey('printType').then((printType){
  1035. getKey('stationName').then((stationName){
  1036. getKey('nickName').then((nickName){
  1037. getKey('companyName').then((companyName){
  1038. getKey('companyCustomerPhone').then((companyCustomerPhone){
  1039. double goodsYs = data.goodsPaymentMethod==2?(data.goodsFreight/100)+(data.goodsAgencyFund/100):data.goodsAgencyFund/100;
  1040. String nowDate = fromatDate( DateTime.now().millisecondsSinceEpoch);//打印时间
  1041. String createTime = fromatDate(data.createTime);
  1042. double goodsAgencyFunds = data.goodsAgencyFund/100;
  1043. double goodsDFreight = data.goodsPaymentMethod==2?data.goodsFreight/100:0;
  1044. double goodsXFreight = data.goodsPaymentMethod==1?data.goodsFreight/100:0;
  1045. String receiptAddress = data.receiptCompanyAddress.length>10?data.receiptCompanyAddress.substring(0,10):data.receiptCompanyAddress;
  1046. Map<String, String> pum = {
  1047. "[logisticsNo]": "${data.orderNo ?? ''}",
  1048. "[createTime]": "$createTime",
  1049. "[sendStationName]": "$stationName",
  1050. "[dealerCode]": "${data.sendCompanyCode ?? ''}",
  1051. "[dealerName]": "${data.sendCompanyName}",
  1052. "[dealerTel]": "${data.sendCompanyPhone ?? ''}",
  1053. "[repairName]": "${data.receiptCompanyName ?? ''}",
  1054. "[repairTel]": "${data.receiptCompanyPhone ?? ''}",
  1055. "[endStationName]": "${data.receiptStationName ?? ''}",
  1056. "[goodsLineCode]": "${data.lineCode ?? ''}",
  1057. "[goodsLine]": "${data.lineName ?? ''}",
  1058. "[repairAddress]": "${receiptAddress?? ''}",
  1059. "[goodsQuantity]": "${data.goodsQuantity ?? ''}",
  1060. "[goodsInsurance]": "${data.goodsInsurance ?? ''}",
  1061. "[goodsFlatCost]": "${data.goodsFlatCost ?? ''}",
  1062. // 到付 现付 金额
  1063. "[goodsDFreight]": "$goodsDFreight",
  1064. "[goodsXFreight]": "$goodsXFreight",
  1065. "[goodsAgencyFund]": "$goodsAgencyFunds",
  1066. "[goodsYs]": "$goodsYs",
  1067. "[dealerBankAccount]": "${data.sendCompanyBankCard ?? ''}",
  1068. "[goodsRemark]": "${data.memo ?? ''}",
  1069. "[realName]": "${nickName?? ''}",
  1070. "[currentTime]": "$nowDate",
  1071. "[currentGoodNumber]": "1/1",
  1072. "[companyCustomerPhone]":"$companyCustomerPhone",
  1073. "[companyName]":"$companyName"
  1074. };
  1075. bluetooth.printOrder(pum, int.parse(printType)).then((value){
  1076. if(value==null){
  1077. showDialog <Null> (
  1078. context: context,
  1079. barrierDismissible: false,
  1080. builder: (BuildContext context) {
  1081. return MyAlertDialog(text: '未连接打印机',childCallback:(val){});
  1082. }
  1083. );
  1084. }
  1085. });
  1086. });
  1087. });
  1088. });
  1089. });
  1090. });
  1091. return SendDialog( //调用对话框
  1092. orderNo: data.orderNo,
  1093. childCallback: (val) {
  1094. if (!val) {
  1095. //跳转
  1096. Navigator.push(context, MaterialPageRoute(builder: (context) {
  1097. return OrderDetail(orderNo: data.orderNo, );
  1098. }));
  1099. }else{
  1100. setState(() {
  1101. //----------------清除信息--------------------
  1102. lineId = '-1';
  1103. sendCompanyCode = '';
  1104. sendCompanyName = '';
  1105. sendCompanyId ='0';
  1106. sendCompanyPhoneController.text= '';
  1107. sendCompanyCodeController.text = '';
  1108. sendCompanyNameController.text = '';
  1109. sendPCA = '';
  1110. sendCompanyProvinceName = '';
  1111. sendCompanyProvinceCode = '';
  1112. sendCompanyCityName = '';
  1113. sendCompanyCityCode = '';
  1114. sendCompanyAreaName = '';
  1115. sendCompanyAreaCode = '';
  1116. bankCardController.text = '';
  1117. bankNameController.text = '';
  1118. openBankNameController.text = '';
  1119. openBankPhoneController.text = '';
  1120. sendCompanyAddressController.text = '';
  1121. receiptCompanyName = '';
  1122. receiptCompanyPhoneController.text= '';
  1123. receiptCompanyNameController.text = '';
  1124. receiptCompanyId = '0';
  1125. getPCA = '';
  1126. receiptCompanyProvinceName = '';
  1127. receiptCompanyProvinceCode = '';
  1128. receiptCompanyCityName = '';
  1129. receiptCompanyCityCode = '';
  1130. receiptCompanyAreaName = '';
  1131. receiptCompanyAreaCode = '';
  1132. receiptCompanyAddressController.text = '';
  1133. goods = ''; //商品名称 不能为空
  1134. goodsQuantity = 1; //商品数量 不能为空
  1135. goodsPaymentMethod = 2; //付款方式 1,现付 2 到付
  1136. goodsWeight = 0.0; //商品重量
  1137. goodsPriceProtection = 0.0; //商品保价
  1138. goodsAgencyFund = 0.0; //商品代收款
  1139. goodsFreight = 0.0; //商品运费 不能为空
  1140. memo = ''; //备注
  1141. goodsController.text = '';
  1142. goodsQuantityController.text = '';
  1143. goodsFreightController.text = '';
  1144. goodsAgencyFundController.text = '';
  1145. goodsPriceProtectionController.text = '';
  1146. goodsWeightController.text = '';
  1147. memoController.text = '';
  1148. //---------------------------------------------
  1149. });
  1150. }
  1151. },
  1152. );
  1153. });
  1154. } else {
  1155. setState(() {
  1156. submitStatus = true;
  1157. });
  1158. }
  1159. });
  1160. });
  1161. }
  1162. showError(String str) {
  1163. showDialog < Null > (
  1164. context: context, //BuildContext对象
  1165. barrierDismissible: false,
  1166. builder: (BuildContext context) {
  1167. return MyAlertDialog( //调用对话框
  1168. text: str, childCallback: (val) {},
  1169. );
  1170. });
  1171. }
  1172. showLineModal(List<CompanyOfLineList> list){
  1173. showDialog < Null > (
  1174. context: context, //BuildContext对象
  1175. barrierDismissible: false,
  1176. builder: (BuildContext context) {
  1177. return ShowLineModal(
  1178. lineList: list, childCallback: (val) {
  1179. lineId = val;
  1180. submitOrder();
  1181. },
  1182. );
  1183. });
  1184. }
  1185. Future getCity(context) async {
  1186. Result result = await CityPickers.showCityPicker(
  1187. context: context,
  1188. );
  1189. return result;
  1190. }
  1191. Widget _tipItem(LikePhoneList obj) {
  1192. return Container(
  1193. child: Column(
  1194. children: < Widget > [
  1195. InkWell(
  1196. child: Container(
  1197. height: ScreenUtil.getInstance().setHeight(89),
  1198. child: Center(
  1199. child: Row(
  1200. mainAxisAlignment: MainAxisAlignment.start,
  1201. children: < Widget > [
  1202. Padding(
  1203. padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(50)),
  1204. child: Text(obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone, style: TextStyle(
  1205. fontSize: ScreenUtil.getInstance().setSp(28),
  1206. color: Color.fromRGBO(74, 74, 74, 1)
  1207. ), )
  1208. ),
  1209. SizedBox(
  1210. width: ScreenUtil.getInstance().setWidth(185),
  1211. child: Text(obj.areaCode,
  1212. textAlign: TextAlign.left,
  1213. style: TextStyle(
  1214. fontSize: ScreenUtil.getInstance().setSp(28),
  1215. color: Color.fromRGBO(155, 155, 155, 1)
  1216. ), ),
  1217. ),
  1218. Text(obj.companyName,
  1219. textAlign: TextAlign.left,
  1220. overflow: TextOverflow.ellipsis,
  1221. style: TextStyle(
  1222. fontSize: ScreenUtil.getInstance().setSp(28),
  1223. color: Color.fromRGBO(155, 155, 155, 1)
  1224. ),
  1225. )
  1226. ],
  1227. ),
  1228. ),
  1229. ),
  1230. onTap: () {
  1231. checkedCompanyInfo = true;
  1232. if (sendPhoneOrGetPhoneTab) {
  1233. sendCompanyPhone = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone;
  1234. sendCompanyCode = obj.companyCode;
  1235. sendCompanyName = obj.companyName;
  1236. sendCompanyId = obj.id.toString();
  1237. sendCompanyPhoneController.text = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone;
  1238. sendCompanyCodeController.text = obj.companyCode;
  1239. sendCompanyNameController.text = obj.companyName;
  1240. sendPCA = obj.provinceName + ' ' + obj.cityName + ' ' + ' ' + obj.areaName;
  1241. sendCompanyProvinceName = obj.provinceName;
  1242. sendCompanyProvinceCode = obj.provinceCode;
  1243. sendCompanyCityName = obj.cityName;
  1244. sendCompanyCityCode = obj.cityCode;
  1245. sendCompanyAreaName = obj.areaName;
  1246. sendCompanyAreaCode = obj.areaCode;
  1247. sendCompanyAddressController.text = obj.address;
  1248. bankCardController.text = obj.bankCard;
  1249. bankNameController.text = obj.bankName;
  1250. openBankNameController.text = obj.openBankName;
  1251. openBankPhoneController.text = obj.openBankPhone;
  1252. } else {
  1253. receiptCompanyPhone = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone;
  1254. receiptCompanyName = obj.companyName;
  1255. receiptCompanyPhoneController.text = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone;
  1256. receiptCompanyNameController.text = obj.companyName;
  1257. receiptCompanyId = obj.id.toString();
  1258. getLineOfCompanyId(receiptCompanyId).then((resp){
  1259. if(isNotError(context, resp) && this.mounted){
  1260. CompanyOfLine obj = CompanyOfLine.fromJson(resp.data);
  1261. setState(() {
  1262. lineList = obj.data;
  1263. });
  1264. }
  1265. });
  1266. getPCA = obj.provinceName + ' ' + obj.cityName + ' ' + ' ' + obj.areaName;
  1267. receiptCompanyProvinceName = obj.provinceName;
  1268. receiptCompanyProvinceCode = obj.provinceCode;
  1269. receiptCompanyCityName = obj.cityName;
  1270. receiptCompanyCityCode = obj.cityCode;
  1271. receiptCompanyAreaName = obj.areaName;
  1272. receiptCompanyAreaCode = obj.areaCode;
  1273. receiptCompanyAddressController.text = obj.address;
  1274. }
  1275. setState(() {
  1276. FocusScope.of(context).requestFocus(FocusNode());
  1277. tipStatus = true;
  1278. });
  1279. },
  1280. ),
  1281. _underLine()
  1282. ],
  1283. ),
  1284. );
  1285. }
  1286. Widget _packageType(String key) {
  1287. return Padding(
  1288. padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)),
  1289. child: Column(
  1290. children: < Widget > [
  1291. InkWell(
  1292. child: SizedBox(
  1293. height: ScreenUtil.getInstance().setHeight(89),
  1294. child: Center(
  1295. child: Row(
  1296. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  1297. children: < Widget > [
  1298. Expanded(
  1299. flex: 0,
  1300. child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ),
  1301. ),
  1302. Expanded(
  1303. child: Row(
  1304. mainAxisAlignment: MainAxisAlignment.end,
  1305. children: < Widget > [
  1306. //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ),
  1307. SizedBox(
  1308. width: ScreenUtil.getInstance().setWidth(500),
  1309. child: Text(key == '包装类型' ? showTextGoodsPackage : key == '货物类型' ? showTextGoodsCategory : showTextPaymentMehod, textAlign: TextAlign.end, )
  1310. ),
  1311. Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), )
  1312. ],
  1313. )
  1314. )
  1315. ],
  1316. ),
  1317. )
  1318. ),
  1319. onTap: () {
  1320. showPickerModal(context, key);
  1321. },
  1322. ),
  1323. Expanded(
  1324. flex: 0,
  1325. child: _underLine()
  1326. )
  1327. ],
  1328. )
  1329. );
  1330. }
  1331. showPickerModal(BuildContext context, String type) {
  1332. List < dynamic > data = [];
  1333. if (type == '包装类型') {
  1334. for (int i = 0; i < goodsPackageList.length; i++) {
  1335. data.add(goodsPackageList[i].name);
  1336. }
  1337. } else if (type == '货物类型') {
  1338. for (int i = 0; i < goodsCateGoryList.length; i++) {
  1339. data.add(goodsCateGoryList[i].name);
  1340. }
  1341. } else if (type == '付款方式') {
  1342. data = ['现付', '到付'];
  1343. }
  1344. new Picker(
  1345. adapter: PickerDataAdapter < String > (pickerdata: data),
  1346. height: ScreenUtil.getInstance().setHeight(450),
  1347. confirmText: '确定',
  1348. confirmTextStyle: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(64, 98, 254, 1)),
  1349. cancelText: '取消',
  1350. cancelTextStyle: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(153, 153, 153, 1)),
  1351. headercolor: Color.fromRGBO(245, 245, 245, 1),
  1352. itemExtent: ScreenUtil.getInstance().setHeight(80),
  1353. textStyle: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(42, 42, 42, 1)),
  1354. changeToFirst: true,
  1355. hideHeader: false,
  1356. onConfirm: (Picker picker, List value) {
  1357. if (type == '包装类型') {
  1358. setState(() {
  1359. showTextGoodsPackage = goodsPackageList[value[0]].name;
  1360. goodsPackingId = goodsPackageList[value[0]].id;
  1361. });
  1362. } else if (type == '货物类型') {
  1363. setState(() {
  1364. showTextGoodsCategory = goodsCateGoryList[value[0]].name;
  1365. goodsCategoryId = goodsCateGoryList[value[0]].id;
  1366. });
  1367. } else if (type == '付款方式') {
  1368. setState(() {
  1369. showTextPaymentMehod = data[value[0]];
  1370. });
  1371. if (showTextPaymentMehod == '现付') {
  1372. goodsPaymentMethod = 1;
  1373. } else {
  1374. goodsPaymentMethod = 2;
  1375. }
  1376. }
  1377. }
  1378. ).showModal(this.context); //_scaffoldKey.currentState);
  1379. }
  1380. }