index.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import { useMemo, useState } from "react";
  2. import { View } from "@tarojs/components";
  3. import PageCustom from "@/components/page-custom/index";
  4. import NavBarNormal from "@/components/NavBarNormal/index";
  5. import WemetaInput from "@/components/wemeta-input/index";
  6. import WemetaTextarea from "@/components/wemeta-textarea";
  7. import FormItem from '@/components/Form/FormItem'
  8. import PickerSingleColumn from "@/components/Picker/PickerSingleColumn";
  9. import IconArrowDownRounded from '@/components/icon/IconArrowDownRounded';
  10. import { saveMyContact } from '@/service/user'
  11. import BottomBar from "@/components/BottomBar";
  12. import { isSuccess } from "@/utils";
  13. import Taro from "@tarojs/taro";
  14. import ButtonMain from "@/components/buttons/ButtonMain";
  15. export default function Index() {
  16. // 当前选中的值
  17. const options = ['销售人员', '客服与售后支持', '市场与商务合作人员', '新员工 / 培训岗位', '管理者 / 内容运营者']
  18. // 是否显示选择器
  19. const [showPicker, setShowPicker] = useState(false)
  20. // 当前选中的值
  21. const [selected, setSelected] = useState(options[0])
  22. const handleChange = (value: string) => {
  23. setSelected(value)
  24. }
  25. const [value, setValue] = useState({
  26. entName: "",
  27. mobileOrWechat: "",
  28. name: "",
  29. position: selected,
  30. reqDetail: ""
  31. });
  32. const onChange = (key: string, v: string) => {
  33. value[key] = v;
  34. setValue({
  35. ...value,
  36. });
  37. };
  38. const handleSubmit = async () => {
  39. const result = await saveMyContact(value);
  40. if(isSuccess(result.status)){
  41. Taro.showToast({
  42. title: '提交成功'
  43. })
  44. setTimeout(()=> {
  45. Taro.navigateBack()
  46. }, 2000)
  47. }
  48. };
  49. const isDisable = useMemo(()=> !value.name || !value.mobileOrWechat || !value.entName || !selected, [value, selected])
  50. return (
  51. <PageCustom>
  52. <NavBarNormal
  53. scrollFadeIn
  54. backText="联系我们"
  55. ></NavBarNormal>
  56. <View className="flex flex-col items-center w-full gap-16 p-16 pb-140">
  57. <FormItem labelText="您的姓名" required>
  58. <WemetaInput
  59. value={value.name}
  60. onInput={(value: string) => onChange("name", value)}
  61. placeholder="请输入"
  62. />
  63. </FormItem>
  64. <FormItem labelText="联系方式" required>
  65. <WemetaInput
  66. value={value.mobileOrWechat}
  67. onInput={(value: string) => onChange("mobileOrWechat", value)}
  68. placeholder="请输入您的手机号/微信号"
  69. />
  70. </FormItem>
  71. <FormItem labelText="公司信息" required>
  72. <WemetaInput
  73. value={value.entName}
  74. onInput={(value: string) => onChange("entName", value)}
  75. placeholder="请输入公司名称"
  76. />
  77. </FormItem>
  78. <FormItem labelText="您的岗位" required>
  79. <PickerSingleColumn headerTitle="您的岗位" options={options} selected={selected} onChange={handleChange} showPicker={showPicker} setShowPicker={setShowPicker}>
  80. <View className="flex items-center gap-2 bg-white rounded-12 p-12 mb-16" onClick={() => setShowPicker(true)}>
  81. <View className="flex-1 text-14 leading-22 text-gray-45">{selected}</View>
  82. <View className="flex-center">
  83. <IconArrowDownRounded/>
  84. </View>
  85. </View>
  86. </PickerSingleColumn>
  87. </FormItem>
  88. <FormItem labelText="需求详情">
  89. <WemetaTextarea
  90. value={value.reqDetail}
  91. onInput={(value: string) => onChange("reqDetail", value)}
  92. placeholder="请输入"
  93. />
  94. </FormItem>
  95. </View>
  96. <BottomBar>
  97. <ButtonMain className="flex-1" disabled={isDisable} onClick={handleSubmit}>提 交</ButtonMain>
  98. </BottomBar>
  99. </PageCustom>
  100. );
  101. }