From f6f2ce9e9509a6931c5818e64d030141db173f7c Mon Sep 17 00:00:00 2001
From: li tong bao <2903733959@qq.com>
Date: Thu, 23 Jun 2022 16:56:25 +0800
Subject: [PATCH] =?UTF-8?q?--=E4=BC=81=E4=B8=9A=E8=AE=A4=E8=AF=8150%?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/certification.ts | 34 +++
src/common/constant.js | 4 +-
.../FromListCertification/index.scss | 10 +-
.../FromListCertification/index.tsx | 9 +-
.../components/SelectEnterpriseType.scss | 22 ++
.../components/SelectEnterpriseType.tsx | 56 +++++
src/pages/certification/index.scss | 15 +-
src/pages/certification/index.tsx | 206 +++++++++++-------
src/pages/userEdit/components/ModifyModal.tsx | 22 +-
9 files changed, 281 insertions(+), 97 deletions(-)
create mode 100644 src/api/certification.ts
create mode 100644 src/pages/certification/components/SelectEnterpriseType.scss
create mode 100644 src/pages/certification/components/SelectEnterpriseType.tsx
diff --git a/src/api/certification.ts b/src/api/certification.ts
new file mode 100644
index 0000000..02e6d60
--- /dev/null
+++ b/src/api/certification.ts
@@ -0,0 +1,34 @@
+import { useRequest } from "@/use/useHttp"
+
+/**
+ * 企业认证信息获取
+ * @returns
+ */
+ export const certificationDetailApi = () => {
+ return useRequest({
+ url: `/v1/mall/company/authentication`,
+ method: "get",
+ })
+}
+
+/**
+ * 企业认证信息提交
+ * @returns
+ */
+ export const certificationSaveApi = () => {
+ return useRequest({
+ url: `/v1/mall/company/authentication`,
+ method: "put",
+ })
+}
+
+/**
+ * 企业认证类型枚举列表
+ * @returns
+ */
+ export const certificationTypeListApi = () => {
+ return useRequest({
+ url: `/v1/mall/enum/companyAuthenticationType`,
+ method: "get",
+ })
+}
\ No newline at end of file
diff --git a/src/common/constant.js b/src/common/constant.js
index 35b004c..2f4fa08 100644
--- a/src/common/constant.js
+++ b/src/common/constant.js
@@ -5,11 +5,11 @@
// export const BASE_URL = `http://192.168.0.89:40001/lymarket`
// export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞
// export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境
-// export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
+export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
// export const BASE_URL = `http://192.168.1.30:50001/lymarket` // 发
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境
-export const BASE_URL = `http://192.168.1.5:40001/lymarket` // 王霞
+// export const BASE_URL = `http://192.168.1.5:40001/lymarket` // 王霞
// export const BASE_URL = `http://192.168.1.224:50001/lymarket` // 添
// export const BASE_URL = `http://192.168.1.15:50001/lymarket` // 杰
diff --git a/src/components/FromListCertification/index.scss b/src/components/FromListCertification/index.scss
index fc0ed5a..b2e4f71 100644
--- a/src/components/FromListCertification/index.scss
+++ b/src/components/FromListCertification/index.scss
@@ -9,9 +9,9 @@
font-size: 28px;
font-weight: 400;
color: #000000;
- margin-top: 20px;
- width: 150px;
+ width: 200px;
border-right: 1px solid #F0F0F0;
+ display: flex;align-items: center;
}
.From-list-certification-label-required::before{
content: "*";
@@ -19,12 +19,12 @@
font-size: 28px;
}
.From-list-certification-right{
- width: 506px;
+ min-width: 100px;
+ flex: 1;
font-size: 26px;
font-weight: 400;
}
.From-list-certification-right-meet{
- width: 506px;
min-height: 45px;
border-radius: 20px;
box-sizing: border-box;
@@ -69,6 +69,8 @@
}
.From-list-certification-right-placeholder{
color: #ababab;
+ text-overflow: ellipsis;overflow: hidden;white-space: nowrap;
+ width: 100%;
}
.From-list-certification-right-enter .icon-a-moreback{
font-size: 28px;
diff --git a/src/components/FromListCertification/index.tsx b/src/components/FromListCertification/index.tsx
index 3017860..333fdc6 100644
--- a/src/components/FromListCertification/index.tsx
+++ b/src/components/FromListCertification/index.tsx
@@ -14,12 +14,13 @@ interface ListParams{
style?: object, //整行样式
labelStyle?: object, // label样式
contentStyle?: object,
- required?: boolean
+ required?: boolean,
+ showIcon?: boolean, // 是否显示右边的箭头,type=select
}
// 表单列表
const FromList = memo((props:ListParams)=>{
- const {type="input",value="",style={},labelStyle={},contentStyle={},required=false} = props;
+ const {type="input",value="",style={},labelStyle={},contentStyle={},required=false,showIcon=true} = props;
return (
@@ -44,7 +45,9 @@ const FromList = memo((props:ListParams)=>{
{props.placeholder}
}
-
+
+ {showIcon&&}
+
>
}
diff --git a/src/pages/certification/components/SelectEnterpriseType.scss b/src/pages/certification/components/SelectEnterpriseType.scss
new file mode 100644
index 0000000..f18cf81
--- /dev/null
+++ b/src/pages/certification/components/SelectEnterpriseType.scss
@@ -0,0 +1,22 @@
+.select-enterprise-type{
+ .select-enterprise-type-btn{
+ color: #ABABAB;
+ font-size: 28px;
+ padding: 20px;
+ display: flex;justify-content: space-between;
+ border-bottom: 1rpx solid #eaeaea;
+ }
+ .select-enterprise-type-content{
+ padding: 0 20px;
+ padding-bottom: 120px;
+ }
+ .select-enterprise-type-content view{
+ padding: 20px 0;
+ font-size: 28px;
+ display: flex;justify-content: space-between;
+ }
+ .select-enterprise-type-content view text:last-child{
+ color: #007AFF;
+ font-size: 35px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/certification/components/SelectEnterpriseType.tsx b/src/pages/certification/components/SelectEnterpriseType.tsx
new file mode 100644
index 0000000..acf9598
--- /dev/null
+++ b/src/pages/certification/components/SelectEnterpriseType.tsx
@@ -0,0 +1,56 @@
+import { Text, View } from "@tarojs/components"
+import Popup from "@/components/popup";
+import "./SelectEnterpriseType.scss"
+import { forwardRef, useEffect, useImperativeHandle, useState } from "react";
+import {certificationTypeListApi} from "@/api/certification"
+
+interface Params{
+ confirm?: (selected:any)=>void, // 确定
+}
+
+export default forwardRef((props: Params, ref)=>{
+ const [modalShow, setModalShow] = useState(false)
+ // 获取认证信息
+ const {fetchData, state} = certificationTypeListApi();
+ useEffect(()=>{
+ fetchData();
+ }, [])
+ const [selected, setSelected] = useState({});
+ // 确定
+ const handleSelect = (item)=>{
+ setSelected(item);
+ }
+ // 设置弹窗是否显示
+ const setShow = (ev)=>{
+ setModalShow(ev);
+ }
+ useImperativeHandle(ref,()=>({
+ setShow
+ }))
+ // 确定
+ const handleConfirm = ()=>{
+ props.confirm&&props.confirm(selected);
+ setModalShow(false);
+ }
+
+ return (
+
+ setModalShow(false)}>
+
+ setModalShow(false)}>取消
+ 确定
+
+
+ {
+ state.data?.list?.map((item,index)=>{
+ return handleSelect(item)} key={index}>
+ {item.name}
+ {item.id==(selected as any).id?:}
+
+ })
+ }
+
+
+
+ )
+})
diff --git a/src/pages/certification/index.scss b/src/pages/certification/index.scss
index 441d16b..a6c7bcf 100644
--- a/src/pages/certification/index.scss
+++ b/src/pages/certification/index.scss
@@ -16,6 +16,7 @@
margin-left: 30px;
padding-top: 40px;
color: #000000;
+ padding-bottom: 20px;
// border-top: 18px solid #F0F0F0;
}
.certification-upload{
@@ -38,6 +39,10 @@
.certification-upload-no{
display: flex;flex-direction: column;align-items: center;
}
+ .certification-upload image{
+ position: absolute;width: 100%;height: 100%;
+ object-fit: cover;border-radius: 30px;
+ }
.certification-upload-no-icon{
width: 104px;
height: 104px;
@@ -56,10 +61,11 @@
}
.certification-button{
position: absolute;bottom: -10px;left: -10px;right: -10px;
- background-color: #858A8F;
+ background-color: rgba(0,0,0,0.65);
display: flex;
height: 86px;
border-radius: 0 0 30px 30px;
+ z-index: 1;
}
.certification-button view{
flex: 1;
@@ -79,6 +85,7 @@
position: fixed;bottom: 0;left: 0;right: 0;
width: 100%;
display: flex;align-items: center;justify-content: center;
+ z-index: 2;
}
.certification-footer-button{
width: 696px;
@@ -90,12 +97,16 @@
box-sizing: border-box;
overflow: hidden;
}
- .certification-footer-button view{
+ .certification-footer-button view,.certification-footer-button navigator{
flex: 1;
display: flex;align-items: center;justify-content: center;
font-size: 32px;
font-weight: 400;
color: #007aff;
+ border: 0;border-radius: none;
+ }
+ .certification-footer-button navigator::after{
+ border: 0;border-radius: none;
}
.certification-footer-button view:last-child{
color: white;
diff --git a/src/pages/certification/index.tsx b/src/pages/certification/index.tsx
index 0d0767d..b468626 100644
--- a/src/pages/certification/index.tsx
+++ b/src/pages/certification/index.tsx
@@ -1,72 +1,73 @@
import FromListCertification from "@/components/FromListCertification"
-import { Button, Input, Text, Textarea, View } from "@tarojs/components"
+import { Button, Image, Input, NavigationBar, Navigator, Text, Textarea, View } from "@tarojs/components"
import Taro, { setNavigationBarTitle, useRouter } from "@tarojs/taro"
-import {weightAddApi, weightDetailApi,weightEditApi} from "@/api/weightList"
-import { useEffect, useState } from "react"
+import {certificationSaveApi, certificationDetailApi} from "@/api/certification"
+import { useEffect, useRef, useState } from "react"
import { alert, retrieval } from "@/common/common"
import "./index.scss"
+import useUploadCDNImg from "@/use/useUploadImage";
import Message from "@/components/Message"
+import { IMG_CND_Prefix } from "@/common/constant";
+import SelectEnterpriseType from "./components/SelectEnterpriseType"
export default ()=>{
- const {type,id} = useRouter().params;
useEffect(()=>{
- if(type=="add"){
- setNavigationBarTitle({title:"添加码单信息"})
- }else{
- initalFormData();
- setNavigationBarTitle({title:"修改码单信息"})
- }
+ initalFormData();
},[]);
- // 获取编辑码单信息
- const {fetchData: getFromData} = weightDetailApi()
+ // 获取认证信息
+ const {fetchData: getFromData} = certificationDetailApi()
const initalFormData = async ()=>{
- const detail = await getFromData({id});
+ const detail = await getFromData();
setFormData({
- title: detail.data.title,
- purchaser_name: detail.data.purchaser_name,
- phone: detail.data.phone,
- is_default: detail.data.is_default,
- id: detail.data.id,
- })
+ ...detail.data??{},
+ legal_person_identity_url: detail?.data?.legal_person_identity_url??[],
+ // business_license_url: "https://test.cdn.zzfzyc.com/mall/827082e888860dd9da10f0fbb0ac3cf023081456.png"
+ } as any)
}
// 保存
const [formData, setFormData] = useState({
- title: "",
- purchaser_name: "",
- phone: "",
- is_default: false,
- id: 0
- })
+ authentication_type: 0,
+ authentication_type_name: "",
+ business_license_url: "",
+ legal_person: "",
+ legal_person_identity: "",
+ legal_person_identity_url: [],
+ name: ""
+ });
const rules = {
- title: [{
- message: "请输入抬头"
+ authentication_type: [{
+ message: "请选择认证类型"
}],
- purchaser_name: [{
- message: "请输入客户名称"
+ name: [{
+ message: "请输入企业名称"
+ }],
+ business_license_url: [{
+ message: "请上传营业执照"
+ }],
+ legal_person: [{
+ message: "请输入法人名称"
+ }],
+ // legal_person_identity: [{
+ // message: "请输入正确法人身份证",
+ // regex: /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
+ // }],
+ legal_person_identity_url: [{
+ message: "请上传法人身份证",
+ validator: (value:any, rule:any)=>{
+ if(!value[0]||!value[1]){
+ return true;
+ }
+ return false;
+ }
}],
- phone: [{
- message: "请输入正确的电话号码", regex: /^1[3|5|6|9|2|8|7]\d{9}$/
- }]
}
- const {fetchData} = weightAddApi()
- const {fetchData: editFetch} = weightEditApi()
+ const {fetchData} = certificationSaveApi()
const handleSave = ()=>{
retrieval(formData, rules).then(async ()=>{
- const result = type=="add"?await fetchData({
- title: formData.title,
- purchaser_name: formData.purchaser_name,
- phone: formData.phone,
- is_default: formData.is_default,
- }):await editFetch({
- title: formData.title,
- purchaser_name: formData.purchaser_name,
- phone: formData.phone,
- is_default: formData.is_default,
- id: formData.id
- });
+ const result = await fetchData({...formData})
if(result.success){
- Taro.eventCenter.trigger("weightList:refresh");
+ // Taro.eventCenter.trigger("weightList:refresh");
Taro.navigateBack();
alert.success("保存成功");
}else{
@@ -83,51 +84,106 @@ export default ()=>{
retrieval(formData).then(()=>setHozon(true)).catch(()=>setHozon(false))
}
},[formData])
+ // 选择类型弹窗显示
+ const selectTypeRef= useRef(null)
+ const handleSelectTypeModalShow = ()=>{
+ (selectTypeRef.current as any).setShow(true)
+ }
+ // 选择类型确定
+ const handleSelectTypeConfirm = (item)=>{
+ setFormData({
+ ...formData,
+ authentication_type: item.id,
+ authentication_type_name: item.name
+ });
+ }
+ // 上传图片
+ const {getWxPhoto} = useUploadCDNImg();
+ const handleUploadImage = async (text: any)=>{
+ let result = await getWxPhoto('mall');
+ if(text=="business_license_url"){
+ formData.business_license_url = IMG_CND_Prefix+(result as any).url;
+ }else{
+ formData.legal_person_identity_url[text]=IMG_CND_Prefix+(result as any).url as never;
+ }
+ setFormData({...formData});
+ }
+ // 查看图片
+ const handleViewImage = (event,url)=>{
+ event.stopPropagation();
+ Taro.previewImage({
+ current: url,
+ urls: [url]
+ })
+ }
return (
-
+ {/* */}
企业认证
- setFormData({...formData,title:ev.detail.value})}
- value={formData["title"]} label="认证类型" placeholder="企业认证"/>
- setFormData({...formData,title:ev.detail.value})} value={formData["title"]} label="企业名称" placeholder="请输入营业执照上的企业名称" required/>
- setFormData({...formData,title:ev.detail.value})} value={formData["title"]} label="企业营业" placeholder="注册号、统一社会信用代码、组织机构代码" required/>
-
- {/* 营业执照正面
-
- 查看证件
- 重新上传
- */}
+
+
+ setFormData({...formData,name:ev.detail.value})} value={formData["name"]} label="企业名称" placeholder="请输入营业执照上的企业名称" required/>
+
+ handleUploadImage("business_license_url")} className="certification-upload">
+ {(formData as any)?.business_license_url?
+ <>
+ 营业执照正面
+
+ handleViewImage(e,(formData as any)?.business_license_url)}>查看证件
+ 重新上传
+
+
+ >:
+
- 上传营业执照下面
+ 上传营业执照正面
+ }
法人认证
- setFormData({...formData,title:ev.detail.value})} value={formData["title"]} label="法人代表" placeholder="填写法人名称" required/>
- setFormData({...formData,title:ev.detail.value})} value={formData["title"]} label="法人身份" placeholder="填写法人代表身份证号" required/>
-
- 身份证正面
-
- 查看证件
- 重新上传
-
+ setFormData({...formData,legal_person:ev.detail.value})} value={formData["legal_person"]} label="法人代表" placeholder="填写法人名称" required/>
+ setFormData({...formData,legal_person_identity:ev.detail.value})} value={formData["legal_person_identity"]} label="法人身份" placeholder="填写法人代表身份证号" required/>
+ handleUploadImage(0)} className="certification-upload">
+ {(formData as any)?.legal_person_identity_url[0]?
+ <>
+ 营业执照正面
+
+ handleViewImage(e,(formData as any)?.legal_person_identity_url[0])}>查看证件
+ 重新上传
+
+
+ >:
+
+ +
+ 上传身份证正面
+
+ }
-
- 身份证反面
-
- 查看证件
- 重新上传
-
+ handleUploadImage(1)} className="certification-upload">
+ {(formData as any)?.legal_person_identity_url[1]?
+ <>
+ 营业执照正面
+
+ handleViewImage(e,(formData as any)?.legal_person_identity_url[1])}>查看证件
+ 重新上传
+
+
+ >:
+
+ +
+ 上传身份证正面
+
+ }
- 取消
- 提交
+ 取消
+ 提交
diff --git a/src/pages/userEdit/components/ModifyModal.tsx b/src/pages/userEdit/components/ModifyModal.tsx
index 0e51ac1..22c9db5 100644
--- a/src/pages/userEdit/components/ModifyModal.tsx
+++ b/src/pages/userEdit/components/ModifyModal.tsx
@@ -33,17 +33,17 @@ export default memo(forwardRef((props:any,ref)=>{
useImperativeHandle(ref, ()=>({setModalShow}))
return (
setModalShow(false)} title={title} show={modalShow}>
-
-
-
- 请设置2-20个字符,可由中文、英文、数字组成
-
-
-
-
+
+
+
-
+ 请设置2-20个字符,可由中文、英文、数字组成
+
+
+
+
+
+
)
}))
\ No newline at end of file