You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
10 KiB
353 lines
10 KiB
import 'package:flutter/cupertino.dart';
|
|
import 'package:new_recook/models/user/invoice_title_list_model.dart';
|
|
import 'package:new_recook/utils/headers.dart';
|
|
import 'package:new_recook/utils/text_utils.dart';
|
|
import 'package:new_recook/widget/button/recook_check_box.dart';
|
|
import 'package:new_recook/widget/recook_scaffold.dart';
|
|
|
|
class InvoiceAddTitlePage extends StatefulWidget {
|
|
final InvoiceTitleListModel? model;
|
|
|
|
InvoiceAddTitlePage({Key? key, this.model}) : super(key: key);
|
|
|
|
@override
|
|
_InvoiceAddTitlePageState createState() => _InvoiceAddTitlePageState();
|
|
}
|
|
|
|
class _InvoiceAddTitlePageState extends State<InvoiceAddTitlePage> {
|
|
bool _isCompany = true;
|
|
bool defaultValue = false;
|
|
|
|
TextEditingController _cName = TextEditingController();
|
|
TextEditingController _pName = TextEditingController();
|
|
TextEditingController _taxNum = TextEditingController();
|
|
TextEditingController _address = TextEditingController();
|
|
TextEditingController _phone = TextEditingController();
|
|
TextEditingController _bankNum = TextEditingController();
|
|
TextEditingController _bankName = TextEditingController();
|
|
|
|
InvoiceTitleListModel? model;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
if (widget.model != null) {
|
|
model = widget.model;
|
|
_isCompany = (model!.type == 1);
|
|
_cName.text = _isCompany ? model!.name! : "";
|
|
_pName.text = _isCompany ? "" : model!.name!;
|
|
_taxNum.text = model!.taxnum!;
|
|
_address.text = model!.address!;
|
|
_phone.text = model!.phone!;
|
|
_bankNum.text = model!.bank!;
|
|
defaultValue = model!.defaultValue == 1;
|
|
_bankName.text = '宁波银行';
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return RecookScaffold(
|
|
title: '常用发票抬头',
|
|
body: ListView(
|
|
padding: EdgeInsets.symmetric(vertical: 16.w),
|
|
children: [
|
|
_titleWidget('抬头类型', Row(
|
|
children: [
|
|
GestureDetector(
|
|
onTap: () {
|
|
setState(() {
|
|
_isCompany = true;
|
|
});
|
|
},
|
|
child: Row(
|
|
children: [
|
|
RecookCheckBox(state: _isCompany),
|
|
16.wb,
|
|
Text(
|
|
'企业单位',
|
|
style: TextStyle(
|
|
fontSize: 14 * 2.sp,
|
|
color: Color(0xFF666666),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
48.wb,
|
|
GestureDetector(
|
|
onTap: () {
|
|
setState(() {
|
|
_isCompany = false;
|
|
});
|
|
},
|
|
child: Row(
|
|
children: [
|
|
RecookCheckBox(state: !_isCompany),
|
|
16.wb,
|
|
Text(
|
|
'个人/非企业单位',
|
|
style: TextStyle(
|
|
fontSize: 14 * 2.sp,
|
|
color: Color(0xFF666666),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
)),
|
|
_isCompany ? _buildCompany() : _buildPersonal(),
|
|
20.hb,
|
|
Material(
|
|
color: Colors.white,
|
|
child: ListTile(
|
|
contentPadding: EdgeInsets.symmetric(horizontal: 32.w),
|
|
title: Text(
|
|
'设备默认抬头',
|
|
style: TextStyle(
|
|
color: Color(0xFF333333),
|
|
fontSize: 32.sp,
|
|
),
|
|
),
|
|
subtitle: Text(
|
|
'每次开票会默认填写该抬头信息',
|
|
style: TextStyle(
|
|
color: Color(0xFF333333),
|
|
fontSize: 24.sp,
|
|
),
|
|
),
|
|
trailing: CupertinoSwitch(
|
|
value: defaultValue,
|
|
activeColor: Color(0xffd5101a),
|
|
onChanged: (value) {
|
|
setState(() {
|
|
defaultValue = value;
|
|
});
|
|
},
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
bottomNavi: Container(
|
|
child: Container(
|
|
padding: EdgeInsets.symmetric(
|
|
horizontal: 32.w,
|
|
vertical: 24.w
|
|
),
|
|
child: SafeArea(
|
|
bottom: true,
|
|
top: false,
|
|
child: GestureDetector(
|
|
onTap: _parseCheck()
|
|
? () {
|
|
if (widget.model != null) {
|
|
|
|
}
|
|
|
|
}
|
|
: null,
|
|
child: Container(
|
|
alignment: Alignment.center,
|
|
height: 80.w,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(40.w),
|
|
color: Color(0xFFDB1E1E),
|
|
),
|
|
|
|
child: Text('保存',style: TextStyle(fontSize: 32.sp,color: Colors.white),),
|
|
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
_buildCompany() {
|
|
return Column(
|
|
children: [
|
|
_titleWidget(
|
|
'发票抬头',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
controller: _cName,
|
|
onChanged: (_) => setState(() {}),
|
|
decoration: InputDecoration(
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
hintText: '填写需要开具发票的企业名称',
|
|
hintStyle: TextStyle(
|
|
fontSize: 28.sp,
|
|
color: Color(0xFF999999),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
_BuildDivider(),
|
|
_titleWidget(
|
|
'公司税号',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
controller: _taxNum,
|
|
onChanged: (_) => setState(() {}),
|
|
decoration: InputDecoration(
|
|
hintText: '请填写纳税人识别号',
|
|
hintStyle: TextStyle(
|
|
color: Color(0xFF999999),
|
|
fontSize: 28.sp,
|
|
),
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
),
|
|
),
|
|
),
|
|
_BuildDivider(),
|
|
_titleWidget(
|
|
'企业地址',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
onChanged: (_) => setState(() {}),
|
|
controller: _address,
|
|
decoration: InputDecoration(
|
|
hintText: '请填写公司注册地址',
|
|
hintStyle: TextStyle(
|
|
color: Color(0xFF999999),
|
|
fontSize: 28.sp,
|
|
),
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
),
|
|
),
|
|
),
|
|
_BuildDivider(),
|
|
_titleWidget(
|
|
'企业电话',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
controller: _phone,
|
|
onChanged: (_) => setState(() {}),
|
|
decoration: InputDecoration(
|
|
hintText: '请填写公司注册电话',
|
|
hintStyle: TextStyle(
|
|
color: Color(0xFF999999),
|
|
fontSize: 28.sp,
|
|
),
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
),
|
|
),
|
|
),
|
|
_titleWidget(
|
|
'开户银行',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
controller: _bankName,
|
|
onChanged: (_) => setState(() {}),
|
|
decoration: InputDecoration(
|
|
hintText: '请填写银行名称',
|
|
hintStyle: TextStyle(
|
|
color: Color(0xFF999999),
|
|
fontSize: 28.sp,
|
|
),
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
),
|
|
),
|
|
),
|
|
_BuildDivider(),
|
|
_titleWidget(
|
|
'银行账号',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
controller: _bankNum,
|
|
onChanged: (_) => setState(() {}),
|
|
decoration: InputDecoration(
|
|
hintText: '请填写银行帐号',
|
|
hintStyle: TextStyle(
|
|
color: Color(0xFF999999),
|
|
fontSize: 28.sp,
|
|
),
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
);
|
|
}
|
|
|
|
//前端验证
|
|
bool _parseCheck() {
|
|
return _isCompany
|
|
? (TextUtils.isNotEmpty(_cName.text) &&
|
|
TextUtils.isNotEmpty(_taxNum.text))
|
|
: (TextUtils.isNotEmpty(_pName.text));
|
|
}
|
|
|
|
_buildPersonal() {
|
|
return _titleWidget(
|
|
'发票抬头',
|
|
TextField(
|
|
style: TextStyle(color: Color(0xFF333333)),
|
|
controller: _pName,
|
|
onChanged: (text) => setState(() {}),
|
|
decoration: InputDecoration(
|
|
hintText: '填写发票抬头',
|
|
hintStyle: TextStyle(
|
|
color: Color(0xFF999999),
|
|
fontSize: 28.sp,
|
|
),
|
|
isDense: true,
|
|
contentPadding: EdgeInsets.zero,
|
|
border: InputBorder.none,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
_BuildDivider() {
|
|
return Divider(
|
|
height: 1.w,
|
|
thickness: 1.w,
|
|
color: Color(0xFFEEEEEE),
|
|
);
|
|
}
|
|
|
|
_titleWidget(
|
|
String title,
|
|
Widget mid, {
|
|
Widget? suffix,
|
|
}) {
|
|
return Container(
|
|
color: Colors.white,
|
|
child: Row(
|
|
children: [
|
|
Text(
|
|
title,
|
|
style: TextStyle(
|
|
color: Color(0xFF333333),
|
|
fontSize: 16 * 2.sp,
|
|
),
|
|
),
|
|
32.wb,
|
|
Expanded(child: mid),
|
|
suffix ?? SizedBox(),
|
|
],
|
|
),
|
|
padding: EdgeInsets.symmetric(
|
|
horizontal: 32.w,
|
|
vertical: 24.w,
|
|
),
|
|
);
|
|
}
|
|
}
|