2022-07-06 20:29:48 +08:00

151 lines
5.4 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Address from "@/components/address"
import FromList from "@/components/FromList"
import { Button, Input, Text, Textarea, View } from "@tarojs/components"
import Taro, { getCurrentPages, useRouter } from "@tarojs/taro"
import { useEffect, useState } from "react"
import { alert, retrieval } from "@/common/common";
import { companyDetailApi, companyUpdateApi } from "@/api/company"
import "./index.scss"
import useLogin from "@/use/useLogin"
export default ()=>{
useLogin()
const [showSiteModal, setShowSiteModal] = useState(false);
const handleSelectSite = ()=>{
setShowSiteModal(true);
}
// 获取公司信息
const {fetchData: getFromData} = companyDetailApi();
const getData = async ()=>{
const result = await getFromData();
console.log(result.data,"===");
setFormData({
...result.data,
});
}
useEffect(()=>{
getData();
},[])
// 保存
const [formData, setFormData] = useState({
address_detail: "",
city_id: 0,
company_id: 0,
company_long_name: "",
company_name: "",
company_type: [
0
],
director: "",
district_id: 0,
phone: "",
province_id: 0,
site:"",
siteArray: []
})
const rules = {
company_name: [{
message: "请输入公司名称"
}],
company_long_name: [{
message: "请输入公司全称"
}],
director: [{
message: "请输入联系人"
}],
phone: [{
message: "请输入正确的电话号码", regex: /^1[3|5|6|9|2|8|7]\d{9}$/
}],
district_id: [{
message: "请选择地址"
}],
address_detail: [{
message: "请输入详细地址"
}],
}
const {fetchData: saveFetch} = companyUpdateApi();
const handleSave = ()=>{
retrieval(formData, rules).then(async ()=>{
const result = await saveFetch({
address_detail: formData.address_detail,
city_id: formData.city_id,
company_id: formData.company_id,
company_long_name: formData.company_long_name,
company_name: formData.company_name,
company_type: formData.company_type,
director: formData.director,
district_id: formData.district_id,
phone: formData.phone,
province_id: formData.province_id
});
if(result.success){
Taro.eventCenter.trigger('company:detail')
Taro.navigateBack();
alert.success("保存成功");
}else{
alert.error(result.msg);
}
}).catch(message=>{
alert.none(message)
})
Taro.navigateBack();
}
// 单选
const radioData = ['布行','二批','制衣厂'];
const [radioActive, setRadioActive] = useState(0);
const handleActiveRadio = (index:number)=>{
setRadioActive(index);
}
// 设置选择地址
const handleSetSite = (ev:any)=>{
if(ev.length>=3){
setFormData({
...formData,
siteArray: ev,
site: ev.map(item=>item.name+" "),
province_id: ev[0]?.id,
city_id: ev[1]?.id,
district_id: ev[ev.length-1]?.id,
})
}else{
alert.error("请选择完整地址");
}
}
// 监听表单完善
const [hozon, setHozon] = useState(false);
useEffect(()=>{
if(retrieval){
retrieval(formData).then(()=>setHozon(true)).catch(()=>setHozon(false))
}
},[formData])
return (
<View className="company">
<FromList onInput={(ev:any)=>setFormData({...formData,company_name:ev.detail.value})} value={formData["company_name"]} label="公司名称" placeholder="请输入公司名称"/>
<FromList onInput={(ev:any)=>setFormData({...formData,company_long_name:ev.detail.value})} value={formData["company_long_name"]} label="公司全称" placeholder="请输入公司全称"/>
<FromList value={formData["company_type"]} label="公司类型">
<View className="form-radio">
{
radioData.map((item,index)=>{
return <View onClick={()=>handleActiveRadio(index)} className={radioActive==index?'form-radio-active':''} key={index}>{item}</View>
})
}
</View>
</FromList>
<FromList onInput={(ev:any)=>setFormData({...formData,director:ev.detail.value})} value={formData["director"]} label="联系人" placeholder="请输入联系人"/>
<FromList onInput={(ev:any)=>setFormData({...formData,phone:ev.detail.value})} value={formData["phone"]} label="联系方式" placeholder="请输入联系方式"/>
<FromList value={formData["site"]} onClick={handleSelectSite} label="收货地址" type="select" placeholder="请选择/省/市/区"/>
<FromList onInput={(ev:any)=>setFormData({...formData,address_detail:ev.detail.value})} value={formData["address_detail"]} label="详细地址" type="textarea" placeholder="请输入详细地址(街道、门牌号等)"/>
<Button style={{"background": hozon?'#007aff':''}} hoverClass="none" className="save-button" onClick={handleSave}></Button>
{/* <Address addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/> */}
<Address addressOnSelect={handleSetSite} defaultValue={[ {name: "广东省", id: 193, level: 2}, {name: "佛山市", id: 202, level:3}, {name: "高明区", id: 204, level:4}]} addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/>
</View>
)
}