vip.jsx 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. import React, { Component } from "react";
  2. import { AutoComplete, Button, Form, Input, message, Modal, Select, Spin, Tag, Radio } from "antd";
  3. import $ from "jquery";
  4. import ImgList from "../../common/imgList";
  5. import { splitUrl } from "../../tools";
  6. import { vipYear } from "../../dataDic";
  7. const FormItem = Form.Item;
  8. const Option = Select.Option;
  9. const RadioGroup = Radio.Group;
  10. const formItemLayout = {
  11. labelCol: { span: 8 },
  12. wrapperCol: { span: 14 },
  13. };
  14. const PicturesWall = React.createClass({
  15. getInitialState() {
  16. return {
  17. previewVisible: false,
  18. previewImage: "",
  19. fileList: this.props.pictureUrl,
  20. };
  21. },
  22. getDefaultProps() {
  23. return {
  24. changeClick: this.modifyChange,
  25. };
  26. },
  27. handleCancel() {
  28. this.setState({ previewVisible: false });
  29. },
  30. handlePreview(file) {
  31. this.setState({
  32. previewImage: file.url || file.thumbUrl,
  33. previewVisible: true,
  34. });
  35. },
  36. handleChange(info) {
  37. let fileList = info.fileList;
  38. this.setState({ fileList });
  39. this.props.fileList(fileList);
  40. },
  41. componentWillReceiveProps(nextProps) {
  42. this.state.fileList = nextProps.pictureUrl;
  43. },
  44. render() {
  45. const { fileList } = this.state;
  46. return (
  47. <div style={{ display: "inline-block" }}>
  48. <ImgList
  49. domId={this.props.domId}
  50. uploadConfig={{
  51. action: globalConfig.context + "/api/admin/orderProject/uploadMemberFile",
  52. data: { sign: "order_invoice_file" },
  53. multiple: true,
  54. listType: "picture-card",
  55. }}
  56. onChange={(infor) => {
  57. this.handleChange(infor);
  58. }}
  59. fileList={fileList}
  60. />
  61. </div>
  62. );
  63. },
  64. });
  65. class ProjectOperationVip extends Component {
  66. constructor(props) {
  67. super(props);
  68. this.state = {
  69. commodityName: undefined,
  70. commodityQuantity: 1,
  71. patentType: 0,
  72. officialCost: '',
  73. costReduction: '',
  74. commodityPrice: '',
  75. main: '',
  76. taskComment: '',
  77. declarationBatch: '',
  78. ifCertificationFee: '',
  79. displayFees: "none",
  80. customerArr: [],
  81. patentTypeList: [],
  82. loading: false,
  83. patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0, //收否为专利转让 0 否 1 是
  84. orgCodeUrl: [],
  85. serviceLife: [],
  86. histYear: [], //已派年份
  87. isEdit: false,//是否可编辑
  88. contractTerm: [],//合同期
  89. addyear: undefined,//
  90. isGive: undefined,//是否赠送
  91. }
  92. this.onSubmit = this.onSubmit.bind(this);
  93. this.httpChange = this.httpChange.bind(this);
  94. this.selectAuto = this.selectAuto.bind(this);
  95. this.setValue = this.setValue.bind(this);
  96. this.getOrgCodeUrl = this.getOrgCodeUrl.bind(this);
  97. }
  98. componentDidMount() {
  99. this.setValue();
  100. }
  101. setValue() {
  102. const { dataInfor, newData } = this.props;
  103. console.log("------", newData)
  104. if (!!newData && newData.length > 0) {
  105. let list = []
  106. for (var i = 0; i < newData.length; i++) {
  107. if (newData[i].cSort == 6) {
  108. list.push({
  109. commodityId: newData[i].commodityId,
  110. commodityName: newData[i].commodityName,
  111. })
  112. }
  113. }
  114. console.log("list==", list)
  115. this.setState({
  116. customerArr: list
  117. })
  118. }
  119. // if (!(dataInfor && Object.keys(dataInfor).length > 0)) {
  120. // } else {
  121. // this.setState({
  122. // fid: dataInfor.id,
  123. // commodityId: dataInfor.commodityId, //项目ID
  124. // commodityName: dataInfor.commodityName, //项目名称
  125. // commodityQuantity: dataInfor.commodityQuantity, // 数量
  126. // memberType: dataInfor.memberType.toString(),// 付款情况
  127. // taskComment: dataInfor.taskComment, // 备注
  128. // orgCodeUrl: dataInfor.pictureUrl ? splitUrl(dataInfor.pictureUrl, ",", globalConfig.avatarHost + "/upload") : [],// 附件
  129. // yearSum: dataInfor.yearSum,//会员总服务年限
  130. // serviceLife: JSON.parse(dataInfor.serviceLife) || [],//会员服务年限
  131. // serviceYear: dataInfor.serviceYear,//本次派单
  132. // contractTerm: JSON.parse(dataInfor.contractTerm),//合同期
  133. // taskComment: dataInfor.taskComment,//项目说明
  134. // });
  135. // }
  136. }
  137. //
  138. getOrgCodeUrl(e) {
  139. this.setState({ orgCodeUrl: e });
  140. }
  141. // 新建会员项目
  142. onSubmit() {
  143. let pictureUrl = [];
  144. if (this.state.orgCodeUrl.length) {
  145. let picArr = [];
  146. this.state.orgCodeUrl.map(function (item) {
  147. if (
  148. item.response &&
  149. item.response.data &&
  150. item.response.data.length
  151. ) {
  152. picArr.push(item.response.data);
  153. }
  154. });
  155. pictureUrl = picArr.join(",");
  156. }
  157. if (this.state.commodityId === undefined || !this.state.commodityId) {
  158. message.warning("服务名称不匹配!");
  159. return
  160. }
  161. let reg = /^([0]|[1-9][0-9]*)$/;
  162. if (
  163. !this.state.commodityQuantity ||
  164. !reg.test(this.state.commodityQuantity)
  165. ) {
  166. message.warning("请输入正确商品数量!");
  167. return
  168. }
  169. if (this.state.memberType === undefined) {
  170. message.warning("请选择付款情况!");
  171. return
  172. }
  173. if (this.state.yearSum === undefined) {
  174. message.warning("请选择会员总服务年限!");
  175. return
  176. }
  177. if (this.state.serviceLife.length === 0) {
  178. message.warning("请添加会员服务年限!");
  179. return
  180. }
  181. if (this.state.serviceLife.length != this.state.yearSum) {
  182. message.warning("会员服务年限与总年限不符合!");
  183. return
  184. }
  185. if (this.state.serviceYear === undefined) {
  186. message.warning("请选择本次派单年份!");
  187. return
  188. }
  189. if (this.state.contractTerm.length === 0) {
  190. message.warning("请添加合同期!");
  191. return
  192. }
  193. if (this.state.memberType == "1" || this.state.memberType == "2") {
  194. if (typeof pictureUrl !== "string") {
  195. message.warning("请上传附件!");
  196. return
  197. }
  198. }
  199. this.setState({
  200. loading: true,
  201. });
  202. let infor = {
  203. orderNo: this.props.orderNo, //订单编号
  204. commodityId: this.state.commodityId, //项目编号
  205. commodityName: this.state.commodityName, //项目名称
  206. commodityQuantity: this.state.commodityQuantity, //商品数量
  207. commodityPrice: 0, //签单总价
  208. taskComment: this.state.taskComment, //服务说明
  209. memberType: this.state.memberType,//会员付款状态
  210. yearSum: this.state.yearSum,//会员总服务年限
  211. serviceLife: JSON.stringify(this.state.serviceLife),//会员服务年限
  212. serviceYear: this.state.serviceYear,//本次派单
  213. contractTerm: JSON.stringify(this.state.contractTerm),//合同期
  214. pictureUrl: pictureUrl.length ? pictureUrl : "",//附件
  215. }
  216. $.ajax({
  217. method: "POST",
  218. dataType: "json",
  219. crossDomain: false,
  220. url: globalConfig.context + "/api/admin/orderProject/addMemberProject",
  221. data: infor,
  222. }).done(
  223. function (data) {
  224. this.setState({
  225. loading: false,
  226. });
  227. if (!data.error.length) {
  228. Modal.success({
  229. title: '保存成功!',
  230. content: (
  231. <div>
  232. 已提出会员项目申请!请在
  233. <span style={{ color: "red" }}>“订单管理-我的会员项目“</span>
  234. 跟进查看会员项目的审核状态,审核通过,即表示添加会员项目完成!!!
  235. </div>),
  236. });
  237. this.props.onCancel();
  238. } else {
  239. message.warning(data.error[0].message);
  240. }
  241. }.bind(this)
  242. );
  243. }
  244. //
  245. httpChange(e) {
  246. this.setState({
  247. commodityName: e,
  248. });
  249. if (e.length >= 1) {
  250. this.supervisor(e);
  251. }
  252. }
  253. //加载(自动补全)
  254. supervisor(e) {
  255. //服务名称自动补全
  256. let api = "/api/admin/order/getBusinessProjectByName";
  257. $.ajax({
  258. method: "get",
  259. dataType: "json",
  260. crossDomain: false,
  261. url: globalConfig.context + api,
  262. data: {
  263. businessName: e,
  264. cname: "高新会员服务",
  265. },
  266. success: function (data) {
  267. let thedata = data.data;
  268. if (!thedata) {
  269. if (data.error && data.error.length) {
  270. message.warning(data.error[0].message);
  271. }
  272. thedata = {};
  273. }
  274. this.setState({
  275. customerArr: thedata,
  276. });
  277. }.bind(this),
  278. }).always(
  279. function () {
  280. }.bind(this)
  281. );
  282. }
  283. //上级主管输入框失去焦点是判断客户是否存在
  284. selectAuto(value) {
  285. const { customerArr } = this.state;
  286. const { newData } = this.props
  287. const newdataSources = JSON.stringify(customerArr) == "{}" ? [] : customerArr;
  288. let cid = newdataSources.find((item) => item.commodityName == value).commodityId
  289. this.setState({
  290. commodityName: value,
  291. commodityId: cid,
  292. histYear: [],
  293. });
  294. if (newData && newData.length > 0) {
  295. let llist = []
  296. for (var i = 0; i < newData.length; i++) {
  297. if (newData[i].commodityId == cid) {
  298. llist.push(newData[i].serviceYear)
  299. }
  300. }
  301. this.setState({
  302. histYear: llist
  303. })
  304. for (var j = newData.length - 1; j >= 0; j--) {
  305. if (newData[j].commodityId == cid) {
  306. this.setState({
  307. memberType: !newData[j].memberType ? undefined : newData[j].memberType.toString(), // 付款情况
  308. yearSum: newData[j].yearSum.toString(), // 会员总服务年限
  309. serviceLife: !newData[j].serviceLife ? [] : JSON.parse(newData[j].serviceLife), // 会员服务年限
  310. contractTerm: !newData[j].contractTerm ? [] : JSON.parse(newData[j].contractTerm), // 合同期
  311. taskComment: newData[j].taskComment, // 项目说明
  312. isEdit: true, // 不可编辑
  313. })
  314. return
  315. } else {
  316. this.setState({
  317. yearSum: undefined,
  318. serviceLife: [],
  319. contractTerm: [],
  320. taskComment: undefined,
  321. isEdit: false, // 可编辑
  322. })
  323. }
  324. }
  325. }
  326. }
  327. handleClose(removedTag) {
  328. let serviceLife = this.state.serviceLife.filter(tag => { return tag !== removedTag });
  329. this.setState({ serviceLife, serviceYear: undefined });
  330. }
  331. render() {
  332. let options = this.state.customerArr.map((group, index) => (
  333. <Select.Option key={index} value={group.commodityName}>
  334. {group.commodityName}
  335. </Select.Option>
  336. ));
  337. let contList = vipYear.map(its => (
  338. <Option key={its}>{its}</Option>
  339. ));
  340. const { readOnly } = this.props;
  341. const { histYear, isEdit } = this.state
  342. return (
  343. <Modal
  344. maskClosable={false}
  345. visible={this.props.visible}
  346. onOk={this.props.onCancel}
  347. onCancel={this.props.onCancel}
  348. width="900px"
  349. title={readOnly ? "会员详情" : !this.state.fid ? "添加会员项目" : "编辑会员项目"}
  350. footer=""
  351. className="admin-desc-content"
  352. >
  353. <Form
  354. layout="horizontal"
  355. >
  356. <Spin spinning={this.state.loading}>
  357. <div className="clearfix">
  358. <FormItem
  359. className="half-item"
  360. {...formItemLayout}
  361. label="服务名称"
  362. >
  363. {readOnly ? this.state.commodityName :
  364. // <AutoComplete
  365. // className="certain-category-search"
  366. // dropdownClassName="certain-category-search-dropdown"
  367. // dropdownMatchSelectWidth={false}
  368. // style={{ width: "200px" }}
  369. // dataSource={options}
  370. // placeholder="输入服务名称"
  371. // value={this.state.commodityName}
  372. // onChange={this.httpChange}
  373. // filterOption={true}
  374. // onSelect={this.selectAuto}
  375. // >
  376. // <Input />
  377. // </AutoComplete>
  378. <Select
  379. style={{ width: '200px' }}
  380. placeholder="输入服务名称"
  381. value={this.state.commodityName}
  382. onChange={this.selectAuto}
  383. >
  384. {options}
  385. </Select>
  386. }
  387. {!readOnly && <span className="mandatory">*</span>}
  388. </FormItem>
  389. <FormItem
  390. className="half-item"
  391. {...formItemLayout}
  392. label="服务数量"
  393. >
  394. {readOnly ? this.state.commodityQuantity :
  395. <Input
  396. placeholder="请输入服务数量"
  397. value={this.state.commodityQuantity}
  398. style={{ width: "200px" }}
  399. disabled={true}
  400. onChange={(e) => {
  401. this.setState({ commodityQuantity: e.target.value });
  402. }}
  403. ref="commodityQuantity"
  404. />}
  405. {!readOnly && <span className="mandatory">*</span>}
  406. <div
  407. style={{
  408. color: "red",
  409. position: "relative",
  410. left: "0"
  411. }}
  412. >注:会员项目单次限制,只能派一年</div>
  413. </FormItem>
  414. <FormItem
  415. className="half-item"
  416. {...formItemLayout}
  417. label="付款情况"
  418. >
  419. {readOnly ?
  420. [
  421. { value: "0", key: "已付会员节点全款" },
  422. { value: "1", key: "已付部分期款,需特批" },
  423. { value: "2", key: "未付款,需特批" }][this.state.memberType] :
  424. <Select
  425. placeholder="选择付款情况"
  426. style={{ width: "200px" }}
  427. value={this.state.memberType}
  428. onChange={(e) => {
  429. this.setState({ memberType: e });
  430. }}
  431. >
  432. {[
  433. { value: "0", key: "已付会员节点全款" },
  434. { value: "1", key: "已付部分期款,需特批" },
  435. { value: "2", key: "未付款,需特批" }].map(function (item) {
  436. return (
  437. <Select.Option key={item.value}>
  438. {item.key}
  439. </Select.Option>
  440. );
  441. })}
  442. </Select>}
  443. {!readOnly && <span className="mandatory">*</span>}
  444. </FormItem>
  445. <FormItem
  446. className="half-item"
  447. {...formItemLayout}
  448. label="会员总服务年限"
  449. >
  450. {readOnly ?
  451. !this.state.yearSum ? "" :
  452. [
  453. { value: "0", key: "" },
  454. { value: "1", key: "一年" },
  455. { value: "2", key: "二年" },
  456. { value: "3", key: "三年" },
  457. { value: "4", key: "四年" },
  458. { value: "5", key: "五年" },
  459. ][this.state.yearSum]["key"] :
  460. <Select
  461. placeholder="请选择会员总服务年限"
  462. disabled={isEdit}
  463. style={{ width: "200px" }}
  464. value={this.state.yearSum}
  465. onChange={(e) => {
  466. this.setState({
  467. yearSum: e,
  468. serviceLife: [],
  469. serviceYear: undefined,
  470. });
  471. }}
  472. >
  473. {[
  474. { value: "1", key: "一年" },
  475. { value: "2", key: "二年" },
  476. { value: "3", key: "三年" },
  477. { value: "4", key: "四年" },
  478. { value: "5", key: "五年" },
  479. ].map(function (item) {
  480. return (
  481. <Select.Option key={item.value}>
  482. {item.key}
  483. </Select.Option>
  484. );
  485. })}
  486. </Select>}
  487. {!readOnly && <span className="mandatory">*</span>}
  488. </FormItem>
  489. <FormItem
  490. className="half-item"
  491. {...formItemLayout}
  492. label="会员服务年限"
  493. >
  494. <div>
  495. {
  496. this.state.serviceLife.map((tag) =>
  497. <Tag closable={!isEdit} key={tag} afterClose={() => this.handleClose(tag)}>
  498. {tag}
  499. </Tag>
  500. )
  501. }
  502. {
  503. !isEdit && (this.state.serviceLife.length < this.state.yearSum) &&
  504. <Button
  505. size="small"
  506. type="primary"
  507. onClick={() => {
  508. this.setState({
  509. addYears: true,
  510. addyear: undefined,
  511. isGive: undefined,
  512. })
  513. }}>
  514. + 添加服务年限
  515. </Button>
  516. }
  517. </div>
  518. {/* {
  519. readOnly ?
  520. this.state.serviceLife.toString() :
  521. <Select
  522. disabled={isEdit}
  523. mode="multiple"
  524. style={{ width: '200px' }}
  525. placeholder="请选择服务年限"
  526. value={this.state.serviceLife}
  527. onChange={(e) => {
  528. this.setState({
  529. serviceLife: e,
  530. serviceYear: undefined,
  531. })
  532. }}
  533. >
  534. {contList}
  535. </Select>
  536. } */}
  537. {/* {!readOnly && <span className="mandatory">*</span>} */}
  538. </FormItem>
  539. <FormItem
  540. className="half-item"
  541. {...formItemLayout}
  542. label="本次派单"
  543. >
  544. {readOnly ?
  545. this.state.serviceYear :
  546. <Select
  547. placeholder="请选择本次派单年份"
  548. style={{ width: "200px" }}
  549. value={this.state.serviceYear}
  550. onChange={(e) => {
  551. this.setState({ serviceYear: e });
  552. }}
  553. >
  554. {this.state.serviceLife.length > 0 && this.state.serviceLife.map(function (item) {
  555. return (
  556. <Select.Option key={item} disabled={histYear.includes(item)}>
  557. {item}
  558. </Select.Option>
  559. );
  560. })}
  561. </Select>}
  562. {!readOnly && <span className="mandatory">*</span>}
  563. </FormItem>
  564. <FormItem
  565. className="half-item"
  566. {...formItemLayout}
  567. label="合同期"
  568. >
  569. {
  570. readOnly ?
  571. this.state.contractTerm.toString() :
  572. <Select
  573. mode="multiple"
  574. style={{ width: '200px' }}
  575. placeholder="请选择合同期"
  576. disabled={isEdit}
  577. value={this.state.contractTerm}
  578. onChange={e => {
  579. this.setState({
  580. contractTerm: e,
  581. })
  582. }}
  583. >
  584. {contList}
  585. </Select>
  586. }
  587. {!readOnly && <span className="mandatory">*</span>}
  588. </FormItem>
  589. {
  590. (this.state.memberType == "1" || this.state.memberType == "2") &&
  591. <div className="clearfix">
  592. <FormItem
  593. labelCol={{ span: 4 }}
  594. wrapperCol={{ span: 16 }}
  595. label="上传附件"
  596. >
  597. <PicturesWall
  598. domId={'vip'}
  599. fileList={this.getOrgCodeUrl}
  600. pictureUrl={this.state.orgCodeUrl}
  601. />
  602. {!readOnly && <span className="mandatory">*</span>}
  603. </FormItem>
  604. <div style={{ color: "red", marginLeft: 144, marginBottom: 15 }}>
  605. 特批需上传附件图,请上传客户同意我方继续服务并安排给我司付款的聊天记录截图,
  606. <p>若没有客户同意继续服务及会安排付款的截图,特派流程将无法走下去,以免造成派单耽搁</p>
  607. </div>
  608. </div>
  609. }
  610. <div className="clearfix">
  611. <FormItem
  612. labelCol={{ span: 4 }}
  613. wrapperCol={{ span: 16 }}
  614. label="项目说明"
  615. >
  616. {readOnly ? this.state.taskComment :
  617. <Input
  618. type="textarea"
  619. placeholder=""
  620. autosize={{ minRows: 4 }}
  621. value={this.state.taskComment}
  622. onChange={(e) => {
  623. this.setState({ taskComment: e.target.value });
  624. }}
  625. />}
  626. </FormItem>
  627. {/* <div style={{ color: "red", marginLeft: 144 }}>
  628. 请详细说明项目服务时间,总服务时间及付款情况,如:<span style={{ color: "#333" }}>派2022年会员服务,总会员服务三年,客户付款情况说明</span>
  629. <p>未付款时,需进行特批审核,请详细说明预计付款时间等详细情况</p>
  630. </div> */}
  631. </div>
  632. {readOnly ? null : <FormItem
  633. wrapperCol={{ span: 12, offset: 4 }}
  634. className="half-middle"
  635. >
  636. <Button
  637. className="submitSave"
  638. type="primary"
  639. onClick={() => {
  640. if (!this.state.fid) {
  641. this.onSubmit()
  642. } else {
  643. // this.onChange()
  644. }
  645. }}
  646. >
  647. 保存
  648. </Button>
  649. <Button
  650. className="submitSave"
  651. type="ghost"
  652. onClick={this.props.onCancel}
  653. >
  654. 取消
  655. </Button>
  656. </FormItem>}
  657. </div>
  658. </Spin>
  659. </Form>
  660. {
  661. this.state.addYears &&
  662. <Modal
  663. title="添加服务年限"
  664. visible={this.state.addYears}
  665. okText="添加"
  666. onOk={() => {
  667. if (!this.state.addyear) {
  668. message.warn("请选择年份!")
  669. return
  670. }
  671. if (this.state.isGive == undefined) {
  672. message.warn("请选择是否赠送!")
  673. return
  674. }
  675. let slist = this.state.serviceLife
  676. if (this.state.isGive == 0) {
  677. slist.push(this.state.addyear)
  678. } else if (this.state.isGive == 1) {
  679. let newYear = this.state.addyear + "(赠送)"
  680. slist.push(newYear)
  681. }
  682. this.setState({
  683. serviceLife: slist,
  684. addYears: false
  685. })
  686. }}
  687. onCancel={() => {
  688. this.setState({
  689. addYears: false
  690. })
  691. }}
  692. >
  693. <Select
  694. style={{ width: '200px', marginRight: 50 }}
  695. placeholder="请选择年份"
  696. onChange={e => {
  697. this.setState({
  698. addyear: e,
  699. })
  700. }}
  701. >
  702. {
  703. vipYear.map(its => (
  704. <Option
  705. key={its}
  706. disabled={this.state.serviceLife.toString().includes(its)}
  707. >{its}</Option>
  708. ))
  709. }
  710. </Select>
  711. <RadioGroup
  712. onChange={e => {
  713. this.setState({
  714. isGive: e.target.value
  715. })
  716. }}
  717. value={this.state.isGive}
  718. >
  719. <Radio value={0}>非赠送</Radio>
  720. <Radio value={1}>赠送</Radio>
  721. </RadioGroup>
  722. </Modal>
  723. }
  724. </Modal>
  725. )
  726. }
  727. }
  728. export default ProjectOperationVip;