|
@@ -5,11 +5,14 @@ import dayjs from "dayjs";
|
|
|
import "./index.less";
|
|
|
import ImagePicker from "../../components/common/imagePicker";
|
|
|
import InquiryModal from "../../components/common/inquiryModal";
|
|
|
-import { AtButton, AtInput } from "taro-ui";
|
|
|
+import AccountModal from "../../components/common/accountModal";
|
|
|
+import { AtButton, AtInput, AtModal, AtModalHeader, AtModalContent, AtRadio, AtModalAction } from "taro-ui";
|
|
|
import {
|
|
|
getPridDetail,
|
|
|
getAccountList,
|
|
|
- detailsDelete
|
|
|
+ selectList,
|
|
|
+ detailsDelete,
|
|
|
+ subAccount,
|
|
|
} from "../../utils/servers/servers";
|
|
|
import {
|
|
|
getNumHourse,
|
|
@@ -17,6 +20,8 @@ import {
|
|
|
getTypeName,
|
|
|
getVehicleName,
|
|
|
commonAdd,
|
|
|
+ getNewOptions,
|
|
|
+ removeNull,
|
|
|
} from "../../utils/tools";
|
|
|
import "taro-ui/dist/style/components/form.scss";
|
|
|
import "taro-ui/dist/style/components/button.scss";
|
|
@@ -35,26 +40,57 @@ class Drafts extends Component {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.state = {
|
|
|
+ imgs: [],
|
|
|
data: {},
|
|
|
visible: "",
|
|
|
list: [],
|
|
|
total: 0,
|
|
|
+ accountvisible: "",
|
|
|
+ bankData: {},
|
|
|
+ upaccount: false,
|
|
|
+ accountsList: [],
|
|
|
};
|
|
|
+ this.onChange = this.onChange.bind(this);
|
|
|
this.getNumHourse = this.getNumHourse.bind(this);
|
|
|
}
|
|
|
|
|
|
componentDidMount() {
|
|
|
- this.$instance.router.params &&
|
|
|
- this.$instance.router.params.id && (
|
|
|
+ this.$instance.router.params && this.$instance.router.params.id &&
|
|
|
+ (
|
|
|
this.getDetail(),
|
|
|
- this.getAccountList()
|
|
|
+ this.getAccountList(),
|
|
|
+ this.state.data.type != 2 && this.getMyList()
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+ onChange(value, type) {
|
|
|
+ let arr = this.state.imgs.concat([]);
|
|
|
+ if (type === "add") {
|
|
|
+ arr.push(value);
|
|
|
+ } else if (type === "remove") {
|
|
|
+ arr.splice(value, 1);
|
|
|
+ }
|
|
|
+ this.setState({
|
|
|
+ imgs: arr,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
onInputChange(title, value) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ onAccountClose() {
|
|
|
+ this.setState({
|
|
|
+ accountvisible: "",
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ onAccountOk() {
|
|
|
+ this.setState({
|
|
|
+ accountvisible: "",
|
|
|
+ }, () => { this.getMyList() })
|
|
|
+ }
|
|
|
+
|
|
|
// 费用弹窗
|
|
|
onClose() {
|
|
|
this.setState({
|
|
@@ -63,6 +99,50 @@ class Drafts extends Component {
|
|
|
this.getAccountList()
|
|
|
}
|
|
|
|
|
|
+ // 报销账户列表
|
|
|
+ getMyList(sta) {
|
|
|
+ let data1 = { status: 1 }
|
|
|
+ let data2 = {
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 99,
|
|
|
+ }
|
|
|
+ selectList(sta ? data2 : data1).then(v => {
|
|
|
+ if (v.error.length === 0) {
|
|
|
+ let list = v.data.list || []
|
|
|
+ if (list?.length > 0) {
|
|
|
+ if (sta) {
|
|
|
+ this.setState({
|
|
|
+ accountsList: list
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.setState({
|
|
|
+ bankData: list[0],
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Taro.showToast({ title: v.error[0].message, icon: 'none' })
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ Taro.showToast({
|
|
|
+ title: '系统错误,请稍后再试',
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ selectOn() {
|
|
|
+ let list = this.state.accountsList
|
|
|
+ for (var i = 0; i < list.length; i++) {
|
|
|
+ if (list[i].id == this.state.aid) {
|
|
|
+ this.setState({
|
|
|
+ upaccount: false,
|
|
|
+ bankData: list[i]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 报销单详情
|
|
|
getDetail() {
|
|
|
getPridDetail({
|
|
@@ -134,6 +214,15 @@ class Drafts extends Component {
|
|
|
|
|
|
|
|
|
onSubmit() {
|
|
|
+ const { data, bankData } = this.state
|
|
|
+ if (!data.userNames) {
|
|
|
+ Taro.showToast({ title: "请填写公出客户名称", icon: "none" });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!data.districtName) {
|
|
|
+ Taro.showToast({ title: "请填写公出地点", icon: "none" });
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (!this.state.rangeStartMinuteVal) {
|
|
|
Taro.showToast({ title: "请选择公出时间", icon: "none" });
|
|
|
return;
|
|
@@ -142,37 +231,49 @@ class Drafts extends Component {
|
|
|
Taro.showToast({ title: "请选择公出时间", icon: "none" });
|
|
|
return;
|
|
|
}
|
|
|
- if ("") {
|
|
|
- Taro.showToast({ title: "请选择公出地点", icon: "none" });
|
|
|
- return;
|
|
|
- }
|
|
|
this.setState({
|
|
|
loading: true,
|
|
|
});
|
|
|
let datas = {
|
|
|
- uids: this.props.enterpriseInfor.id,
|
|
|
- releaseStarts: this.state.rangeStartMinuteVal,
|
|
|
- releaseEnds: this.state.rangeEndMinuteVal,
|
|
|
+ id: this.$instance.router.params.id,
|
|
|
+ status: 1, // 提交审核
|
|
|
+ type: data.type,
|
|
|
+ typeOther: data.typeOther,
|
|
|
+ userNames: data.userNames,
|
|
|
+ districtName: data.districtName,
|
|
|
+ releaseStart: this.state.rangeStartMinuteVal,
|
|
|
+ releaseEnd: this.state.rangeEndMinuteVal,
|
|
|
+ duration: this.state.totalDuration,
|
|
|
+ orderNo: data.orderNo,
|
|
|
+ applyDep: data.applyDep,
|
|
|
+ payDep: data.payDep,
|
|
|
+ attachmentUrl: this.state.imgs.length === 0 ? "" : this.state.imgs.join(","),
|
|
|
+ eaaid: bankData.id,
|
|
|
};
|
|
|
- // addPublicRelease(datas)
|
|
|
- // .then((v) => {
|
|
|
- // this.setState({
|
|
|
- // loading: false,
|
|
|
- // })
|
|
|
- // if (v.error.length === 0) {
|
|
|
-
|
|
|
- // } else {
|
|
|
- // Taro.showToast({
|
|
|
- // title: v.error[0].message,
|
|
|
- // icon: "none",
|
|
|
- // });
|
|
|
- // }
|
|
|
- // })
|
|
|
- // .catch(() => {
|
|
|
- // this.setState({
|
|
|
- // loading: false,
|
|
|
- // });
|
|
|
- // });
|
|
|
+ console.log("-----", datas)
|
|
|
+ // return
|
|
|
+ subAccount(removeNull(datas))
|
|
|
+ .then((v) => {
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ })
|
|
|
+ if (v.error.length === 0) {
|
|
|
+ Taro.showToast({
|
|
|
+ title: "提交成功!",
|
|
|
+ icon: "none",
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ Taro.showToast({
|
|
|
+ title: v.error[0].message,
|
|
|
+ icon: "none",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.setState({
|
|
|
+ loading: false,
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
|
|
@@ -229,7 +330,7 @@ class Drafts extends Component {
|
|
|
|
|
|
|
|
|
render() {
|
|
|
- const { data, list, total } = this.state
|
|
|
+ const { data, list, total, bankData, } = this.state
|
|
|
return (
|
|
|
<View className="subform">
|
|
|
<View className="title">{[data.typeOther, "差旅费报销", "餐费报销", "第三方付款", "申请预借支"][data.type]}</View>
|
|
@@ -417,42 +518,6 @@ class Drafts extends Component {
|
|
|
}}
|
|
|
>删除</View>
|
|
|
</View>)}
|
|
|
- {/* <View className="unobstructedList">
|
|
|
- {
|
|
|
- [0].map((item, index) =>
|
|
|
- <View className="unItem" key={index}>
|
|
|
- <View className="close">删除</View>
|
|
|
- <View className="edit">编辑</View>
|
|
|
- <View className="formItem">
|
|
|
- <View className="formName">交通工具:</View>
|
|
|
- <View className="formValue"></View>
|
|
|
- </View>
|
|
|
- <View className="formItem">
|
|
|
- <View className="formName">时间:</View>
|
|
|
- <View className="formValue"></View>
|
|
|
- </View>
|
|
|
- <View className="formItem">
|
|
|
- <View className="formName">地点:</View>
|
|
|
- <View className="formValue"></View>
|
|
|
- </View>
|
|
|
- <View className="formItem">
|
|
|
- <View className="formName">金额:</View>
|
|
|
- <View className="formValue"></View>
|
|
|
- </View>
|
|
|
- </View>
|
|
|
- )
|
|
|
- }
|
|
|
- </View>
|
|
|
- <View className="inputFormItem">
|
|
|
- <AtInput
|
|
|
- name='qt'
|
|
|
- title='其他:'
|
|
|
- type='number'
|
|
|
- placeholder='请输入金额(元)'
|
|
|
- value={this.state.qt}
|
|
|
- onChange={e => { console.log("---", e) }}
|
|
|
- />
|
|
|
- </View> */}
|
|
|
<View className="formItem" style={{ paddingTop: "10px" }}>
|
|
|
<View className="formName">总金额:</View>
|
|
|
<View className="formValue"><Text style={{ color: "red" }}>{total}</Text>(元)</View>
|
|
@@ -478,22 +543,41 @@ class Drafts extends Component {
|
|
|
<View className="formTitle" style={{ marginTop: "20px" }}>
|
|
|
报销收款账户
|
|
|
</View>
|
|
|
- <View className="unobstructedList">
|
|
|
- <View className="unItem" >
|
|
|
- <View className="edit">修改</View>
|
|
|
- <View className="formItem">
|
|
|
- <View className="formName">收款人:曹津</View>
|
|
|
- </View>
|
|
|
- <View className="formItem">
|
|
|
- <View className="formName">收款账户:4005201205500020</View>
|
|
|
- </View>
|
|
|
- </View>
|
|
|
- </View>
|
|
|
+ {data.type != 2 &&
|
|
|
+ <View className="unobstructedList">
|
|
|
+ {(!bankData.id)
|
|
|
+ ? <View className="noAccout" onClick={() => { this.setState({ accountvisible: true }) }}>
|
|
|
+ 暂未有收款账户
|
|
|
+ <View className="nbt">去添加 ></View>
|
|
|
+ </View>
|
|
|
+ : <View className="unItem" >
|
|
|
+ <View className="edit"
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({
|
|
|
+ upaccount: true,
|
|
|
+ aid: bankData.id,
|
|
|
+ }, () => {
|
|
|
+ this.getMyList(true)
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >修改</View>
|
|
|
+ <View className="formItem">
|
|
|
+ <View className="formName">收款人:{bankData.name}</View>
|
|
|
+ </View>
|
|
|
+ <View className="formItem">
|
|
|
+ <View className="formName">收款银行:{bankData.bank}</View>
|
|
|
+ </View>
|
|
|
+ <View className="formItem">
|
|
|
+ <View className="formName">收款账户:{bankData.accounts}</View>
|
|
|
+ </View>
|
|
|
+ </View>}
|
|
|
+ </View>}
|
|
|
<View className="bottom">
|
|
|
<AtButton
|
|
|
type="primary"
|
|
|
circle
|
|
|
onClick={() => {
|
|
|
+ this.onSubmit()
|
|
|
}}
|
|
|
>
|
|
|
提交申请
|
|
@@ -523,6 +607,29 @@ class Drafts extends Component {
|
|
|
});
|
|
|
}}
|
|
|
/>
|
|
|
+ {/* 收款账户添加 */}
|
|
|
+ {this.state.accountvisible != "" &&
|
|
|
+ <AccountModal
|
|
|
+ isSub={true}
|
|
|
+ visible={this.state.accountvisible}
|
|
|
+ onClose={this.onAccountClose.bind(this)}
|
|
|
+ onOk={this.onAccountOk.bind(this)}
|
|
|
+ />}
|
|
|
+ {/* 收款账户列表 */}
|
|
|
+ <AtModal isOpened={this.state.upaccount}>
|
|
|
+ <AtModalHeader>请选择收款账户</AtModalHeader>
|
|
|
+ <AtModalContent>
|
|
|
+ <AtRadio
|
|
|
+ options={getNewOptions(this.state.accountsList)}
|
|
|
+ value={this.state.aid}
|
|
|
+ onClick={e => { this.setState({ aid: e }) }}
|
|
|
+ />
|
|
|
+ </AtModalContent>
|
|
|
+ <AtModalAction>
|
|
|
+ <Button type='secondary' onClick={() => { this.setState({ upaccount: false, accountsList: [] }) }}>取消</Button>
|
|
|
+ <Button type='primary' onClick={() => { this.selectOn() }}>确定</Button>
|
|
|
+ </AtModalAction>
|
|
|
+ </AtModal>
|
|
|
</View>
|
|
|
);
|
|
|
}
|