vip.jsx 25 KB

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