myTask.jsx 83 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553
  1. import React from "react";
  2. import $ from "jquery";
  3. import moment from "moment";
  4. import Picture from "@/manageCenter/publicComponent/picture";
  5. import "@/manageCenter/financialManage/distribute/public.less";
  6. import {
  7. Button,
  8. Form,
  9. Input,
  10. Select,
  11. Spin,
  12. Table,
  13. message,
  14. DatePicker,
  15. Modal,
  16. Radio,
  17. Cascader,
  18. Popconfirm
  19. } from "antd";
  20. import Assign from "@/manageCenter/publicComponent/assign";
  21. import { areaSelect } from "@/NewDicProvinceList";
  22. import "./table.less";
  23. import {
  24. getProcessStatus,
  25. getApproval,
  26. getTaskStatus,
  27. getLiquidationStatus,
  28. getProjectStatus,
  29. splitUrl,
  30. getboutique,
  31. ShowModal
  32. } from "@/tools";
  33. import { taskStatus, projectStatus } from "@/dataDic.js";
  34. import ShowModalDiv from "@/showModal.jsx";
  35. const FormItem = Form.Item;
  36. const Task = React.createClass({
  37. loadData(pageNo) {
  38. this.state.data = [];
  39. this.setState({
  40. page: pageNo,
  41. loading: true
  42. });
  43. $.ajax({
  44. method: "get",
  45. dataType: "json",
  46. crossDomain: false,
  47. url: globalConfig.context + "/api/admin/orderProject/orderTaskList",
  48. data: {
  49. pageNo: pageNo || 1,
  50. pageSize: this.state.pagination.pageSize,
  51. specially: 0, //个人
  52. name: this.state.nameSearch, //客户名称
  53. depId: this.state.departmenttSearch, //订单部门
  54. orderNo: this.state.orderNoSearch, //订单编号
  55. taskId: this.state.taskNoSearch, //任务编号
  56. taskStatus: this.state.taskStatus, //任务状态
  57. adminName: this.state.adminName //任务受理人
  58. },
  59. success: function(data) {
  60. ShowModal(this);
  61. let theArr = [];
  62. if (!data.data || !data.data.list) {
  63. if (data.error && data.error.length) {
  64. message.warning(data.error[0].message);
  65. }
  66. } else {
  67. for (let i = 0; i < data.data.list.length; i++) {
  68. let thisdata = data.data.list[i];
  69. theArr.push({
  70. key: i,
  71. orderNo: thisdata.orderNo, //订单编号
  72. id: thisdata.id, //任务ID
  73. taskName: thisdata.taskName, //名称
  74. cname: thisdata.cname, //项目品类
  75. receiverName: thisdata.receiverName, //受理人
  76. projectStatus: thisdata.projectStatus, //项目状态
  77. taskStatus: thisdata.taskStatus, //任务状态
  78. taskDate: thisdata.taskDate, //分配时间
  79. userName:
  80. thisdata.taskName.substring(0, 5) === "软件著作权"
  81. ? thisdata.userName +
  82. "(" +
  83. thisdata.commodityQuantity.toString() +
  84. "/" +
  85. thisdata.alreadyNumber +
  86. ")"
  87. : thisdata.userName, //用户名
  88. depName: thisdata.depName, //部门名称
  89. commodityQuantity: thisdata.commodityQuantity //任务数量
  90. });
  91. }
  92. }
  93. this.state.pagination.current = data.data.pageNo;
  94. this.state.pagination.total = data.data.totalCount;
  95. if (data.data && data.data.list && !data.data.list.length) {
  96. this.state.pagination.current = 0;
  97. this.state.pagination.total = 0;
  98. }
  99. this.setState({
  100. dataSource: theArr,
  101. pagination: this.state.pagination
  102. });
  103. }.bind(this)
  104. }).always(
  105. function() {
  106. this.setState({
  107. loading: false
  108. });
  109. }.bind(this)
  110. );
  111. },
  112. getInitialState() {
  113. return {
  114. searchMore: true,
  115. assignVisible: false,
  116. releaseDate: [],
  117. // 判断是否是退回给咨询师经理
  118. flag: false,
  119. roleName: "",
  120. testFlag: true,
  121. boHuivisible: false,
  122. selectedRowKeys: [],
  123. departmentArr: [],
  124. selectedRows: [],
  125. attachmentUrl: [],
  126. contactList: [],
  127. paginations: false,
  128. loading: false,
  129. pagination: {
  130. defaultCurrent: 1,
  131. defaultPageSize: 10,
  132. showQuickJumper: true,
  133. pageSize: 10,
  134. onChange: function(page) {
  135. this.loadData(page);
  136. }.bind(this),
  137. showTotal: function(total) {
  138. return "共" + total + "条数据";
  139. }
  140. },
  141. columns: [
  142. {
  143. title: "任务编号",
  144. dataIndex: "id",
  145. key: "id"
  146. },
  147. {
  148. title: "任务名称",
  149. dataIndex: "taskName",
  150. key: "taskName",
  151. render: text => {
  152. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  153. }
  154. },
  155. {
  156. title: "订单编号",
  157. dataIndex: "orderNo",
  158. key: "orderNo"
  159. },
  160. {
  161. title: "业务类别",
  162. dataIndex: "cname",
  163. key: "cname"
  164. },
  165. {
  166. title: "客户名称",
  167. dataIndex: "userName",
  168. key: "userName",
  169. className: "userName"
  170. },
  171. {
  172. title: "任务状态",
  173. dataIndex: "taskStatus",
  174. key: "taskStatus",
  175. render: text => {
  176. return getTaskStatus(text);
  177. }
  178. },
  179. {
  180. title: "项目状态",
  181. dataIndex: "projectStatus",
  182. key: "projectStatus",
  183. render: text => {
  184. return getProjectStatus(text);
  185. }
  186. },
  187. {
  188. title: "分配时间",
  189. dataIndex: "taskDate",
  190. key: "taskDate"
  191. },
  192. {
  193. title: "订单部门",
  194. dataIndex: "depName",
  195. key: "depName"
  196. },
  197. {
  198. title: "操作",
  199. dataIndex: "caozuo",
  200. key: "caozuo",
  201. render: (text, record) => {
  202. return (
  203. <div>
  204. <Button
  205. type="primary"
  206. onClick={e => {
  207. e.stopPropagation(), this.evaluate(record, "咨询师");
  208. }}
  209. >
  210. 转交
  211. </Button>
  212. <Button
  213. type="primary"
  214. style={{ margin: "0 10px" }}
  215. onClick={e => {
  216. e.stopPropagation(), this.okCancel(record);
  217. }}
  218. >
  219. 添加工时
  220. </Button>
  221. <Button
  222. type="primary"
  223. onClick={e => {
  224. e.stopPropagation(), this.evaluate(record, "咨询师经理",true);
  225. }}
  226. >
  227. 回退
  228. </Button>
  229. </div>
  230. );
  231. }
  232. }
  233. ],
  234. dataSource: [],
  235. searchTime: [],
  236. columnsX: [
  237. {
  238. title: "业务项目名称",
  239. dataIndex: "commodityName",
  240. key: "commodityName"
  241. },
  242. {
  243. title: "项目类别",
  244. dataIndex: "cname",
  245. key: "cname"
  246. },
  247. {
  248. title: "项目数量",
  249. dataIndex: "commodityQuantity",
  250. key: "commodityQuantity"
  251. },
  252. {
  253. title: "金额(万元)",
  254. dataIndex: "commodityPrice",
  255. key: "commodityPrice"
  256. },
  257. {
  258. title: "负责人",
  259. dataIndex: "contacts",
  260. key: "contacts"
  261. },
  262. {
  263. title: "负责人电话",
  264. dataIndex: "contactsMobile",
  265. key: "contactsMobile"
  266. },
  267. {
  268. title: "主要项目",
  269. dataIndex: "main",
  270. key: "main",
  271. render: text => {
  272. return text ? "是" : "否";
  273. }
  274. },
  275. {
  276. title: "项目说明",
  277. dataIndex: "taskComment",
  278. key: "taskComment",
  279. render: text => {
  280. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  281. }
  282. }
  283. ],
  284. columnsA: [
  285. {
  286. title: "流程",
  287. dataIndex: "content",
  288. key: "content",
  289. align: "center"
  290. },
  291. {
  292. title: "操作人",
  293. dataIndex: "aName",
  294. key: "aName",
  295. align: "center"
  296. },
  297. {
  298. title: "时间",
  299. dataIndex: "createTimes",
  300. key: "createTimes",
  301. align: "center"
  302. }
  303. ],
  304. dataSourceX: [],
  305. dataSourceA: [],
  306. ContactsLists: [
  307. {
  308. title: "批次",
  309. dataIndex: "num",
  310. key: "num"
  311. },
  312. {
  313. title: "下证时间",
  314. dataIndex: "licenceTimes",
  315. key: "licenceTimes",
  316. render: (text, record) => {
  317. return (
  318. <div>
  319. <DatePicker
  320. style={{ marginTop: "5px" }}
  321. showTime
  322. format="YYYY-MM-DD"
  323. onOk={() => {}}
  324. value={
  325. record.licenceTimes ? moment(record.licenceTimes) : null
  326. }
  327. onChange={(data, dataString) => {
  328. record.licenceTimes = dataString;
  329. this.setState({ contactList: this.state.contactList });
  330. }}
  331. />
  332. </div>
  333. );
  334. }
  335. },
  336. {
  337. title: "下证数量",
  338. dataIndex: "alreadyNumber",
  339. key: "alreadyNumber",
  340. render: (text, record) => {
  341. return (
  342. <div>
  343. {
  344. <Input
  345. value={record.alreadyNumber}
  346. placeholder="请输入下证数量"
  347. key={record.id}
  348. required="required"
  349. onChange={e => {
  350. record.alreadyNumber = e.target.value;
  351. this.setState({ contactList: this.state.contactList });
  352. }}
  353. style={{ width: "120px" }}
  354. />
  355. }
  356. </div>
  357. );
  358. }
  359. },
  360. {
  361. title: "未下证数量",
  362. dataIndex: "notCount",
  363. key: "notCount"
  364. },
  365. {
  366. title: "操作",
  367. dataIndex: "dels",
  368. key: "dels",
  369. render: (text, record, index) => {
  370. return (
  371. <div>
  372. {
  373. <Popconfirm
  374. title="是否删除?"
  375. onConfirm={() => {
  376. this.confirmDelet(record);
  377. }}
  378. okText="删除"
  379. cancelText="不删除"
  380. >
  381. <Button
  382. style={{
  383. marginRight: "10px",
  384. color: "#ffffff",
  385. background: "#f00",
  386. border: "none"
  387. }}
  388. >
  389. 删除
  390. </Button>
  391. </Popconfirm>
  392. }
  393. {record.flag ? (
  394. ""
  395. ) : (
  396. <Button
  397. type="primary"
  398. onClick={e => {
  399. e.stopPropagation(), this.contactSave(record, index);
  400. }}
  401. >
  402. 保存
  403. </Button>
  404. )}
  405. </div>
  406. );
  407. }
  408. }
  409. ]
  410. };
  411. },
  412. /* 分派 */
  413. evaluate(record, nub, flag) {
  414. this.setState(
  415. {
  416. nub: nub,
  417. assignData: record,
  418. flag
  419. },
  420. () => {
  421. this.setState({
  422. assignVisible: true
  423. });
  424. }
  425. );
  426. },
  427. componentWillMount() {
  428. this.departmentList();
  429. this.loadData();
  430. },
  431. componentDidMount() {
  432. this.setColor();
  433. },
  434. setColor() {
  435. $(".userName span").after(
  436. "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)"
  437. );
  438. },
  439. tableRowClick(record) {
  440. this.state.RowData = record;
  441. if (record.taskName.substring(0, 5) === "软件著作权") {
  442. this.setState({
  443. speVisible: true,
  444. id: record.id,
  445. dataArr: record,
  446. commodityQuantity: record.commodityQuantity
  447. });
  448. } else {
  449. this.setState({
  450. visible: true
  451. });
  452. }
  453. this.xiangqing(record.id, record.taskName);
  454. this.xiangqings(record.orderNo);
  455. this.xiangmu(record.orderNo);
  456. this.loaduserss(record);
  457. },
  458. //点击修改任务详情
  459. tijiaoOk() {
  460. let attachmentUrls = [];
  461. if (this.state.attachmentUrl.length) {
  462. let picArr = [];
  463. this.state.attachmentUrl.map(function(item) {
  464. if (item.response && item.response.data && item.response.data.length) {
  465. picArr.push(item.response.data);
  466. }
  467. });
  468. attachmentUrls = picArr.join(",");
  469. }
  470. $.ajax({
  471. method: "POST",
  472. dataType: "json",
  473. crossDomain: false,
  474. url: globalConfig.context + "/api/admin/orderProject/updateOrderTask",
  475. data: {
  476. id: this.state.id, //任务编号
  477. orderNo: this.state.orderNo, //订单编号
  478. projectStatus: this.state.projectStatus, //项目状态
  479. taskStatus: this.state.taskStatus, //任务状态
  480. taskComment: this.state.taskComment, //说明
  481. startDate: this.state.startDate, //启动日期
  482. endDate: this.state.endDate, //结束日期
  483. acceptDate: this.state.acceptDate, //受理日期
  484. reviewDate: this.state.reviewDate, //评审日期
  485. publicityDate: this.state.publicityDate, //公示日期
  486. licenceDate: this.state.licenceDate, //发证日期
  487. attachmentUrl: attachmentUrls.length ? attachmentUrls : "", //附件
  488. contacts: this.state.contacts, //联系人
  489. contactMobile: this.state.contactMobile, //联系人电话
  490. legalPerson: this.state.legalPerson, //法人
  491. legalPersonTel: this.state.legalPersonTel, //法人电话
  492. certificateNumber: this.state.certificateNumber, //证书编号
  493. status: this.state.status, //状态
  494. formRetrieve: this.state.formRetrieve, //满意度表格
  495. taskRefund: this.state.taskRefund, //退单
  496. refundContent: this.state.refundContent, //退单信息
  497. retrieveContent: this.state.retrieveContent, //回收信息
  498. locationProvince: this.state.ProvinceCity[0],
  499. locationCity: this.state.ProvinceCity[1],
  500. locationArea: this.state.ProvinceCity[2],
  501. postalAddress: this.state.postalAddress, //详细地址
  502. arrivalMoney: this.state.arrivalMoney, //是否到款
  503. setUpAmount: this.state.setUpAmount, //立项金额
  504. declareUser: this.state.declareUser, //账号
  505. declarePwd: this.state.declarePwd, //密码
  506. outsourceName: this.state.outsourceName, //外包公司
  507. outsourcePrice: this.state.outsourcePrice //外包价格
  508. }
  509. }).done(
  510. function(data) {
  511. this.setState({
  512. loading: false
  513. });
  514. if (!data.error.length) {
  515. message.success("保存成功!");
  516. this.visitCancel();
  517. } else {
  518. message.warning(data.error[0].message);
  519. }
  520. }.bind(this)
  521. );
  522. },
  523. //点击修改任务详情
  524. tianjiaOk() {
  525. if (this.state.attachmentUrl.length) {
  526. let picArr = [];
  527. this.state.attachmentUrl.map(function(item) {
  528. if (item.response && item.response.data && item.response.data.length) {
  529. picArr.push(item.response.data);
  530. }
  531. });
  532. }
  533. $.ajax({
  534. method: "POST",
  535. dataType: "json",
  536. crossDomain: false,
  537. url: globalConfig.context + "/api/admin/orderProject/addTaskHours",
  538. data: {
  539. taskId: this.state.taskId, //任务编号
  540. hours: this.state.hours, //工时
  541. remarks: this.state.remarks, //说明
  542. taskDate: this.state.taskDate, //日期
  543. taskComment: this.state.taskComment //说明
  544. }
  545. }).done(
  546. function(data) {
  547. this.setState({
  548. loading: false
  549. });
  550. if (!data.error.length) {
  551. message.success("保存成功!");
  552. this.noCancel();
  553. } else {
  554. message.warning(data.error[0].message);
  555. }
  556. }.bind(this)
  557. );
  558. },
  559. //订单详情
  560. xiangqing(id) {
  561. $.ajax({
  562. method: "get",
  563. dataType: "json",
  564. crossDomain: false,
  565. url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
  566. data: {
  567. id: id
  568. },
  569. success: function(data) {
  570. let thisdata = data.data;
  571. if (data.error.length || data.data.list == "") {
  572. if (data.error && data.error.length) {
  573. message.warning(data.error[0].message);
  574. }
  575. } else {
  576. this.setState({
  577. id: thisdata.id, //ID
  578. orderNo: thisdata.orderNo, //订单编号
  579. userName: thisdata.userName, //客户名称
  580. taskName: thisdata.taskName, //任务名称
  581. cname: thisdata.cname, //项目品类
  582. contractNo: thisdata.contractNo, //合同编号
  583. projectStatus: thisdata.projectStatus.toString(), //项目状态
  584. taskStatus: thisdata.taskStatus.toString(), //任务状态
  585. taskDate: thisdata.taskDate, //分配时间
  586. taskComment: thisdata.taskComment, //说明
  587. attachmentUrl: thisdata.attachmentUrl
  588. ? splitUrl(
  589. thisdata.attachmentUrl,
  590. ",",
  591. globalConfig.avatarHost + "/upload"
  592. )
  593. : [], //图片地址
  594. salesmanName: thisdata.salesmanName, //订单负责人
  595. startDate: thisdata.startDate, //启动日期
  596. endDate: thisdata.endDate, //结束日期
  597. acceptDate: thisdata.acceptDate, //受理日期
  598. reviewDate: thisdata.reviewDate, //评审日期
  599. publicityDate: thisdata.publicityDate, //公示日期
  600. licenceDate: thisdata.licenceDate, //发证日期
  601. contacts: thisdata.contacts, //联系人
  602. contactMobile: thisdata.contactMobile, //联系人电话
  603. legalPerson: thisdata.legalPerson, //法人
  604. legalPersonTel: thisdata.legalPersonTel, //法人电话
  605. certificateNumber: thisdata.certificateNumber, //证书编号
  606. status: thisdata.status, //状态
  607. formRetrieve: thisdata.formRetrieve, //满意度表格
  608. taskRefund: thisdata.taskRefund, //退单
  609. refundContent: thisdata.refundContent, //退单信息
  610. retrieveContent: thisdata.retrieveContent, //回收信息
  611. arrivalMoney: thisdata.arrivalMoney, //是否到款
  612. setUpAmount: thisdata.setUpAmount, //立项金额
  613. declareUser: thisdata.declareUser, //账号
  614. declarePwd: thisdata.declarePwd, //密码
  615. outsourceName: thisdata.outsourceName, //外包公司
  616. outsourcePrice: thisdata.outsourcePrice //外包价格
  617. });
  618. }
  619. }.bind(this)
  620. }).always(
  621. function() {
  622. this.setState({
  623. loading: false
  624. });
  625. }.bind(this)
  626. );
  627. },
  628. //订单详情
  629. xiangqings(orderNos) {
  630. $.ajax({
  631. method: "get",
  632. dataType: "json",
  633. crossDomain: false,
  634. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  635. data: {
  636. orderNo: orderNos
  637. },
  638. success: function(data) {
  639. let thisdata = data.data;
  640. let ProvinceCityArr = [];
  641. let ProvinceS = thisdata.locationProvince; //省
  642. let citys = thisdata.locationCity; //市
  643. let Areas = thisdata.locationArea; //区
  644. ProvinceCityArr.push(ProvinceS, citys, Areas);
  645. if (data.error.length || data.data.list == "") {
  646. if (data.error && data.error.length) {
  647. message.warning(data.error[0].message);
  648. }
  649. } else {
  650. this.setState({
  651. processStatus: thisdata.processStatus, //流程状态
  652. liquidationStatus: thisdata.liquidationStatus, //结算状态
  653. approval: thisdata.approval, //特批状态
  654. orderRemarks: thisdata.orderRemarks, //订单留言
  655. salesmanName: thisdata.salesmanName, //营销员名称
  656. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  657. financeName: thisdata.financeName, //财务名称
  658. financeMobile: thisdata.financeMobile, //财务电话
  659. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  660. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  661. nowFinance: thisdata.nowFinance, //财务名称
  662. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  663. depName: thisdata.depName, //订单部门
  664. ProvinceCity: ProvinceCityArr[0] === null ? [] : ProvinceCityArr,
  665. postalAddress: thisdata.postalAddress //详细地址
  666. });
  667. }
  668. console.log(this.state.ProvinceCity);
  669. }.bind(this)
  670. }).always(
  671. function() {
  672. this.setState({
  673. loading: false
  674. });
  675. }.bind(this)
  676. );
  677. },
  678. //项目列表
  679. xiangmu(orderNos) {
  680. $.ajax({
  681. method: "get",
  682. dataType: "json",
  683. crossDomain: false,
  684. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  685. data: {
  686. orderNo: orderNos
  687. },
  688. success: function(data) {
  689. let theArr = [];
  690. if (data.error.length || data.data.list == "") {
  691. if (data.error && data.error.length) {
  692. message.warning(data.error[0].message);
  693. }
  694. } else {
  695. for (let i = 0; i < data.data.length; i++) {
  696. let thisdata = data.data[i];
  697. theArr.push({
  698. key: i,
  699. id: thisdata.id,
  700. orderNo: thisdata.orderNo, //订单编号
  701. commodityId: thisdata.commodityId, //项目ID
  702. commodityName: thisdata.commodityName, //项目名称
  703. cname: thisdata.cname, //项目类别
  704. commodityPrice: thisdata.commodityPrice, //项目价格
  705. commodityQuantity: thisdata.commodityQuantity, //项目数量
  706. main: thisdata.main, //是否为主要任务
  707. taskComment: thisdata.taskComment, //任务说明
  708. contacts: thisdata.contacts, //联系人
  709. contactsMobile: thisdata.contactsMobile, //联系人电话
  710. taskStatus: thisdata.taskStatus, //是否分配
  711. contractNo: thisdata.contractNo, //合同编号
  712. certificateNumber: thisdata.certificateNumber
  713. });
  714. }
  715. }
  716. this.setState({
  717. dataSourceX: theArr
  718. });
  719. }.bind(this)
  720. }).always(
  721. function() {
  722. this.setState({
  723. loading: false
  724. });
  725. }.bind(this)
  726. );
  727. },
  728. //导出
  729. exportExec() {
  730. let departmentName = "",
  731. depart = this.state.departmentArr || [];
  732. depart.map(item => {
  733. if (this.state.departmentId == item.id) {
  734. departmentName = item.name;
  735. return;
  736. }
  737. });
  738. let data = {
  739. departmentId: this.state.departmentId,
  740. departmentName: departmentName,
  741. salesName: this.state.orderRefundSearch, //订单负责人
  742. startTime: this.state.releaseDate[0],
  743. endTime: this.state.releaseDate[1],
  744. grantStatus: this.state.grantStatus
  745. };
  746. window.location.href =
  747. globalConfig.context +
  748. "/api/admin/orderProject/exportMyTaskList?" +
  749. $.param(data);
  750. },
  751. //关闭详情
  752. visitCancel() {
  753. this.setState({
  754. visible: false,
  755. speVisible: false
  756. });
  757. this.reset();
  758. },
  759. visitOk() {
  760. this.setState({
  761. visible: false,
  762. speVisible: false
  763. });
  764. this.reset();
  765. },
  766. closeDesc(e, s) {
  767. this.state.showDesc = e;
  768. if (s) {
  769. this.loadData(this.state.page);
  770. }
  771. },
  772. closeAssign(e, s) {
  773. this.state.roleName = "";
  774. this.state.assignVisible = e;
  775. if (s) {
  776. this.loadData(this.state.page);
  777. }
  778. },
  779. //添加工时
  780. okCancel(record) {
  781. this.setState({
  782. lookVisible: true,
  783. taskId: record.id
  784. });
  785. },
  786. //测试
  787. getOrgCodeUrl(e) {
  788. this.setState({ orgCodeUrl: e });
  789. },
  790. //查看下证信息
  791. loaduserss(record) {
  792. $.ajax({
  793. method: "get",
  794. dataType: "json",
  795. crossDomain: false,
  796. url: globalConfig.context + "/api/admin/orderProject/selectTaskProgress",
  797. data: {
  798. tid: record.id
  799. },
  800. success: function(data) {
  801. let theArr = [];
  802. let thisData = [];
  803. if (!thisData) {
  804. if (data.error && data.error.length) {
  805. message.warning(data.error[0].message);
  806. }
  807. thisData = {};
  808. } else {
  809. for (let i = 0; i < data.data.length; i++) {
  810. thisData = data.data[i];
  811. theArr.push({
  812. num: i + 1,
  813. key: i,
  814. id: thisData.id, //编号
  815. alreadyNumber: thisData.alreadyNumber, //下证数
  816. licenceTimes: thisData.licenceTimes, //下证时间
  817. notCount: thisData.notCount, //未下证数
  818. flag: true
  819. });
  820. }
  821. this.setState({
  822. contactList: theArr
  823. });
  824. }
  825. }.bind(this)
  826. }).always(
  827. function() {
  828. this.setState({
  829. loading: false
  830. });
  831. }.bind(this)
  832. );
  833. },
  834. //下证信息保存
  835. contactSave(record) {
  836. if (!record.licenceTimes) {
  837. message.warning("下证日期不能为空");
  838. return;
  839. }
  840. if (!record.alreadyNumber) {
  841. message.warning("下证数量不能为空");
  842. return;
  843. }
  844. this.setState({
  845. loading: true
  846. });
  847. $.ajax({
  848. url: globalConfig.context + "/api/admin/orderProject/createTaskProgress",
  849. method: "post",
  850. data: {
  851. taskId: this.state.id,
  852. licenceTimes: record.licenceTimes,
  853. alreadyNumber: record.alreadyNumber
  854. }
  855. }).done(
  856. function(data) {
  857. this.setState({
  858. loading: false
  859. });
  860. if (!data.error.length) {
  861. message.success("保存成功!");
  862. record.flag = true;
  863. this.loaduserss(this.state.dataArr);
  864. } else {
  865. message.warning(data.error[0].message);
  866. }
  867. }.bind(this)
  868. );
  869. },
  870. //下证信息删除
  871. contactDele(record) {
  872. this.setState({
  873. loading: true
  874. });
  875. $.ajax({
  876. url: globalConfig.context + "/api/admin/orderProject/delectTaskProgress",
  877. method: "post",
  878. data: {
  879. id: record.id
  880. }
  881. }).done(
  882. function(data) {
  883. this.setState({
  884. loading: false
  885. });
  886. if (!data.error.length) {
  887. this.loaduserss(this.state.dataArr);
  888. } else {
  889. message.warning(data.error[0].message);
  890. }
  891. }.bind(this)
  892. );
  893. },
  894. //点击新增下证信息
  895. addcontact() {
  896. this.state.contactList.push({
  897. num: this.state.contactList.length + 1,
  898. key: this.state.contactList.length,
  899. licenceTimes: "",
  900. alreadyNumber: "",
  901. notCount: "",
  902. dels: "",
  903. flag: false,
  904. aflag: false
  905. });
  906. this.setState({
  907. contactList: this.state.contactList
  908. });
  909. },
  910. //删除下证信息
  911. confirmDelet(record) {
  912. this.state.contactList.splice(record.key, 1);
  913. this.setState({
  914. contactList: this.state.contactList
  915. });
  916. if (record.id) {
  917. this.contactDele(record);
  918. }
  919. },
  920. caozuorizhi() {
  921. this.setState({
  922. visibleA: true
  923. });
  924. $.ajax({
  925. method: "get",
  926. dataType: "json",
  927. crossDomain: false,
  928. url: globalConfig.context + "/api/admin/orderProject/TaskLogList",
  929. data: {
  930. id: this.state.id
  931. },
  932. success: function(data) {
  933. let theArr = [];
  934. if (data.error.length || data.data.list == "") {
  935. if (data.error && data.error.length) {
  936. message.warning(data.error[0].message);
  937. }
  938. } else {
  939. for (let i = 0; i < data.data.length; i++) {
  940. let thisdata = data.data[i];
  941. theArr.push({
  942. key: i,
  943. id: thisdata.id, //日志ID
  944. content: thisdata.content, //流程
  945. taskId: thisdata.taskId, //任务ID
  946. aName: thisdata.aName, //负责人
  947. createTimes: thisdata.createTimes //时间
  948. });
  949. }
  950. }
  951. this.setState({
  952. dataSourceA: theArr
  953. });
  954. }.bind(this)
  955. }).always(
  956. function() {
  957. this.setState({
  958. loading: false
  959. });
  960. }.bind(this)
  961. );
  962. },
  963. //关闭操作工时
  964. visitCancelA() {
  965. this.setState({
  966. visibleA: false
  967. });
  968. },
  969. nextCancel() {
  970. this.setState({
  971. addnextVisible: false
  972. });
  973. },
  974. //点击打卡项目详情
  975. tableRowClickX(record) {
  976. this.setState({
  977. jid: record.id, //项目ID
  978. kid: record.commodityId, //商品ID
  979. commodityName: record.commodityName, //金额
  980. commodityPrice: record.commodityPrice, //金额
  981. commodityQuantity: record.commodityQuantity, //数量
  982. taskComment: record.taskComment, //备注
  983. main: record.main.toString(), //是否为主要
  984. addnextVisible: true,
  985. addState: 0
  986. });
  987. },
  988. //关闭添加工时
  989. noCancel() {
  990. this.setState({
  991. lookVisible: false
  992. });
  993. this.reset();
  994. },
  995. search() {
  996. this.loadData();
  997. },
  998. reset() {
  999. this.state.id = ""; //任务编号
  1000. this.state.orderNo = ""; //订单编号
  1001. this.state.projectStatus = undefined; //项目状态
  1002. this.state.taskStatus = undefined; //任务状态
  1003. this.state.taskComment = ""; //说明
  1004. this.state.startDate = ""; //启动日期
  1005. this.state.endDate = ""; //结束日期
  1006. this.state.acceptDate = ""; //受理日期
  1007. this.state.reviewDate = ""; //评审日期
  1008. this.state.publicityDate = ""; //公示日期
  1009. this.state.licenceDate = ""; //发证日期
  1010. attachmentUrl: []; //附件
  1011. this.state.contacts = ""; //联系人
  1012. this.state.contactMobile = ""; //联系人电话
  1013. this.state.legalPerson = ""; //法人
  1014. this.state.legalPersonTel = ""; //法人电话
  1015. this.state.taskId = ""; //任务编号
  1016. this.state.hours = ""; //工时
  1017. this.state.remarks = ""; //说明
  1018. this.state.taskDate = ""; //日期
  1019. this.state.taskComment = ""; //说明
  1020. this.state.nameSearch = "";
  1021. this.state.releaseDate = [];
  1022. this.state.orderNoSearch = "";
  1023. this.state.taskNoSearch = "";
  1024. this.state.outsourceName = "";
  1025. this.state.outsourcePrice = undefined;
  1026. this.state.distribution = undefined;
  1027. this.state.departmenttSearch = undefined;
  1028. this.loadData(this.state.page);
  1029. },
  1030. searchSwitch() {
  1031. this.setState({
  1032. searchMore: !this.state.searchMore
  1033. });
  1034. },
  1035. //部门
  1036. departmentList() {
  1037. this.setState({
  1038. loading: true
  1039. });
  1040. $.ajax({
  1041. method: "get",
  1042. dataType: "json",
  1043. crossDomain: false,
  1044. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  1045. data: {},
  1046. success: function(data) {
  1047. let thedata = data.data;
  1048. let theArr = [];
  1049. if (!thedata) {
  1050. if (data.error && data.error.length) {
  1051. message.warning(data.error[0].message);
  1052. }
  1053. thedata = {};
  1054. } else {
  1055. thedata.map(function(item, index) {
  1056. theArr.push({
  1057. key: index,
  1058. name: item.name,
  1059. id: item.id
  1060. });
  1061. });
  1062. }
  1063. this.setState({
  1064. departmentArr: theArr
  1065. });
  1066. }.bind(this)
  1067. }).always(
  1068. function() {
  1069. this.setState({
  1070. loading: false
  1071. });
  1072. }.bind(this)
  1073. );
  1074. },
  1075. render() {
  1076. const formItemLayout = {
  1077. labelCol: { span: 8 },
  1078. wrapperCol: { span: 14 }
  1079. };
  1080. let departmentArr = this.state.departmentArr || [];
  1081. return (
  1082. <div className="user-content">
  1083. <ShowModalDiv ShowModal={this.state.showModal} />
  1084. <div className="content-title">
  1085. <span>任务派单管理</span>
  1086. </div>
  1087. <div className="user-search">
  1088. <Input
  1089. placeholder="客户名称"
  1090. value={this.state.nameSearch}
  1091. onChange={e => {
  1092. this.setState({ nameSearch: e.target.value });
  1093. }}
  1094. />
  1095. <Input
  1096. placeholder="订单编号"
  1097. value={this.state.orderNoSearch}
  1098. onChange={e => {
  1099. this.setState({ orderNoSearch: e.target.value });
  1100. }}
  1101. />
  1102. <Input
  1103. placeholder="任务编号"
  1104. value={this.state.taskNoSearch}
  1105. onChange={e => {
  1106. this.setState({ taskNoSearch: e.target.value });
  1107. }}
  1108. />
  1109. <Select
  1110. placeholder="选择部门"
  1111. style={{ width: 150, marginRight: "10px" }}
  1112. value={this.state.departmenttSearch}
  1113. onChange={e => {
  1114. this.setState({ departmenttSearch: e });
  1115. }}
  1116. >
  1117. {departmentArr.map(function(item) {
  1118. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  1119. })}
  1120. </Select>
  1121. <Button type="primary" onClick={this.search}>
  1122. 搜索
  1123. </Button>
  1124. <Button onClick={this.reset}>重置</Button>
  1125. <Button
  1126. type="primary"
  1127. style={{ marginLeft: "10px" }}
  1128. onClick={this.exportExec}
  1129. >
  1130. 导出Excel
  1131. </Button>
  1132. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  1133. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  1134. <span>订单时间 :</span>
  1135. <RangePicker
  1136. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  1137. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  1138. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  1139. </div> */}
  1140. </div>
  1141. <div className="patent-table">
  1142. <Spin spinning={this.state.loading}>
  1143. <Table
  1144. columns={this.state.columns}
  1145. dataSource={this.state.dataSource}
  1146. pagination={this.state.pagination}
  1147. onRowClick={this.tableRowClick.bind(this)}
  1148. />
  1149. </Spin>
  1150. </div>
  1151. <Assign
  1152. title="任务"
  1153. selApi={"/api/admin/orderProject/projectDistribution"}
  1154. data={this.state.assignData}
  1155. showDesc={this.state.assignVisible}
  1156. closeDesc={this.closeAssign.bind(this)}
  1157. fenpaiData={8}
  1158. specially={0}
  1159. roleName={this.state.nub}
  1160. requestMethod={"post"}
  1161. flag={this.state.flag}
  1162. all={this.state}
  1163. />
  1164. <Modal
  1165. className="customeDetails"
  1166. footer=""
  1167. title="项目概况"
  1168. width="900px"
  1169. visible={this.state.visible}
  1170. onOk={this.visitOk}
  1171. onCancel={this.visitCancel}
  1172. >
  1173. <Form
  1174. layout="horizontal"
  1175. onSubmit={this.handleSubmit}
  1176. id="demand-form"
  1177. style={{ paddingBottom: "00px" }}
  1178. >
  1179. <Spin spinning={this.state.loading}>
  1180. <div className="clearfix">
  1181. <div className="clearfix">
  1182. <FormItem
  1183. className="half-item"
  1184. {...formItemLayout}
  1185. label="当前项目情况"
  1186. >
  1187. <Radio.Group
  1188. value={this.state.status}
  1189. onChange={e => {
  1190. this.setState({ status: e.target.value });
  1191. }}
  1192. >
  1193. <Radio value={0}>开启</Radio>
  1194. <Radio value={1}>暂停</Radio>
  1195. </Radio.Group>
  1196. <Button
  1197. type="primary"
  1198. size="small"
  1199. style={{ marginTop: "5px", position: "absolute" }}
  1200. onClick={this.caozuorizhi}
  1201. >
  1202. 操作日志
  1203. </Button>
  1204. </FormItem>
  1205. <FormItem
  1206. className="half-item"
  1207. {...formItemLayout}
  1208. label="合同编号"
  1209. >
  1210. <span>{this.state.contractNo}</span>
  1211. </FormItem>
  1212. </div>
  1213. <div className="clearfix">
  1214. <FormItem
  1215. className="half-item"
  1216. {...formItemLayout}
  1217. label="项目状态"
  1218. >
  1219. <Select
  1220. placeholder="选择项目状态"
  1221. style={{ width: "200px" }}
  1222. value={this.state.projectStatus}
  1223. onChange={e => {
  1224. this.setState({ projectStatus: e });
  1225. }}
  1226. >
  1227. {projectStatus.map(function(item) {
  1228. return (
  1229. <Select.Option key={item.value}>
  1230. {item.key}
  1231. </Select.Option>
  1232. );
  1233. })}
  1234. </Select>
  1235. </FormItem>
  1236. <FormItem
  1237. className="half-item"
  1238. {...formItemLayout}
  1239. label="是否特批"
  1240. >
  1241. <span>{getApproval(this.state.approval)}</span>
  1242. </FormItem>
  1243. <FormItem
  1244. className="half-item"
  1245. {...formItemLayout}
  1246. label="结算状态"
  1247. >
  1248. <span>
  1249. {getLiquidationStatus(this.state.liquidationStatus)}
  1250. </span>
  1251. </FormItem>
  1252. <FormItem
  1253. className="half-item"
  1254. {...formItemLayout}
  1255. label="流程状态"
  1256. >
  1257. <span>{getProcessStatus(this.state.processStatus)}</span>
  1258. </FormItem>
  1259. <FormItem
  1260. className="half-item"
  1261. {...formItemLayout}
  1262. label="订单编号"
  1263. >
  1264. <span>{this.state.orderNo}</span>
  1265. </FormItem>
  1266. </div>
  1267. <div className="clearfix">
  1268. <FormItem
  1269. className="half-item"
  1270. {...formItemLayout}
  1271. label="满意度表格"
  1272. >
  1273. <Radio.Group
  1274. value={this.state.formRetrieve}
  1275. onChange={e => {
  1276. this.setState({ formRetrieve: e.target.value });
  1277. }}
  1278. >
  1279. <Radio value={0}>未收回</Radio>
  1280. <Radio value={1}>已收回</Radio>
  1281. <Radio value={2}>其他</Radio>
  1282. </Radio.Group>
  1283. </FormItem>
  1284. <FormItem
  1285. className="half-item"
  1286. {...formItemLayout}
  1287. label="退单"
  1288. >
  1289. <Radio.Group
  1290. value={this.state.taskRefund}
  1291. onChange={e => {
  1292. this.setState({ taskRefund: e.target.value });
  1293. }}
  1294. >
  1295. <Radio value={0}>已完成</Radio>
  1296. <Radio value={1}>未完成</Radio>
  1297. <Radio value={2}>其他</Radio>
  1298. </Radio.Group>
  1299. </FormItem>
  1300. </div>
  1301. <div className="clearfix">
  1302. {
  1303. <FormItem
  1304. className="half-item"
  1305. {...formItemLayout}
  1306. label="(满意度)备注"
  1307. >
  1308. <Input
  1309. type="textarea"
  1310. placeholder="请输入备注"
  1311. rows={2}
  1312. value={this.state.retrieveContent}
  1313. onChange={e => {
  1314. this.setState({ retrieveContent: e.target.value });
  1315. }}
  1316. />
  1317. </FormItem>
  1318. }
  1319. {
  1320. <FormItem
  1321. className="half-item"
  1322. {...formItemLayout}
  1323. label="(退单)备注"
  1324. >
  1325. <Input
  1326. type="textarea"
  1327. placeholder="请输入备注"
  1328. rows={2}
  1329. value={this.state.refundContent}
  1330. onChange={e => {
  1331. this.setState({ refundContent: e.target.value });
  1332. }}
  1333. />
  1334. </FormItem>
  1335. }
  1336. </div>
  1337. <div className="clearfix">
  1338. <h3 className="sub-title">订单负责人信息</h3>
  1339. <FormItem
  1340. className="half-item"
  1341. {...formItemLayout}
  1342. label="负责人"
  1343. >
  1344. <span>
  1345. {this.state.salesmanName + "(" + this.state.depName + ")"}
  1346. </span>
  1347. </FormItem>
  1348. <FormItem
  1349. className="half-item"
  1350. {...formItemLayout}
  1351. label="负责人电话"
  1352. >
  1353. <span>{this.state.salesmanMobile}</span>
  1354. </FormItem>
  1355. <FormItem
  1356. className="half-item"
  1357. {...formItemLayout}
  1358. label="当前财务负责人"
  1359. >
  1360. <span>{this.state.nowFinance}</span>
  1361. </FormItem>
  1362. <FormItem
  1363. className="half-item"
  1364. {...formItemLayout}
  1365. label="当前财务负责人电话"
  1366. >
  1367. <span>{this.state.nowFinanceMobile}</span>
  1368. </FormItem>
  1369. <FormItem
  1370. className="half-item"
  1371. {...formItemLayout}
  1372. style={{ opacity: ".5" }}
  1373. label="原负责人"
  1374. >
  1375. <span>{this.state.oldSalesmanName}</span>
  1376. </FormItem>
  1377. <FormItem
  1378. className="half-item"
  1379. {...formItemLayout}
  1380. style={{ opacity: ".5" }}
  1381. label="原负责人电话"
  1382. >
  1383. <span>{this.state.oldSalesmanMobile}</span>
  1384. </FormItem>
  1385. <FormItem
  1386. className="half-item"
  1387. {...formItemLayout}
  1388. style={{ opacity: ".5" }}
  1389. label="实际财务操作人"
  1390. >
  1391. <span>{this.state.financeName}</span>
  1392. </FormItem>
  1393. <FormItem
  1394. className="half-item"
  1395. {...formItemLayout}
  1396. style={{ opacity: ".5" }}
  1397. label="实际财务操作人电话"
  1398. >
  1399. <span>{this.state.financeMobile}</span>
  1400. </FormItem>
  1401. </div>
  1402. <div className="clearfix">
  1403. <h3 className="sub-title">外包信息</h3>
  1404. <FormItem
  1405. className="half-item"
  1406. {...formItemLayout}
  1407. label="外包公司"
  1408. >
  1409. <Input
  1410. value={this.state.outsourceName}
  1411. onChange={e => {
  1412. this.setState({
  1413. outsourceName: e.target.value
  1414. });
  1415. }}
  1416. placeholder="请输入外包公司"
  1417. style={{ width: "200px" }}
  1418. />
  1419. </FormItem>
  1420. <FormItem
  1421. className="half-item"
  1422. {...formItemLayout}
  1423. label="外包成本(万元)"
  1424. >
  1425. <Input
  1426. value={this.state.outsourcePrice}
  1427. onChange={e => {
  1428. this.setState({
  1429. outsourcePrice: e.target.value
  1430. });
  1431. }}
  1432. placeholder="请输入外包成本"
  1433. style={{ width: "200px" }}
  1434. />
  1435. </FormItem>
  1436. </div>
  1437. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1438. <div className="clearfix">
  1439. <h3 className="sub-title">联系信息</h3>
  1440. <FormItem
  1441. className="half-item"
  1442. {...formItemLayout}
  1443. label="客户名称"
  1444. >
  1445. <span>{this.state.userName}</span>
  1446. </FormItem>
  1447. <FormItem
  1448. className="half-item"
  1449. {...formItemLayout}
  1450. label="企业法人"
  1451. >
  1452. <Input
  1453. placeholder="请输入法人名称"
  1454. value={this.state.legalPerson}
  1455. style={{ width: "200px" }}
  1456. onChange={e => {
  1457. this.setState({ legalPerson: e.target.value });
  1458. }}
  1459. ref="commodityQuantity"
  1460. />
  1461. </FormItem>
  1462. <FormItem
  1463. className="half-item"
  1464. {...formItemLayout}
  1465. label="法人电话"
  1466. >
  1467. <Input
  1468. placeholder="请输入法人电话"
  1469. value={this.state.legalPersonTel}
  1470. style={{ width: "200px" }}
  1471. onChange={e => {
  1472. this.setState({ legalPersonTel: e.target.value });
  1473. }}
  1474. ref="commodityQuantity"
  1475. />
  1476. </FormItem>
  1477. <FormItem
  1478. className="half-item"
  1479. {...formItemLayout}
  1480. label="客户联系人"
  1481. >
  1482. <Input
  1483. placeholder="请输入联系人名称"
  1484. value={this.state.contacts}
  1485. style={{ width: "200px" }}
  1486. onChange={e => {
  1487. this.setState({ contacts: e.target.value });
  1488. }}
  1489. ref="commodityQuantity"
  1490. />
  1491. </FormItem>
  1492. <FormItem
  1493. className="half-item"
  1494. {...formItemLayout}
  1495. label="联系人电话"
  1496. >
  1497. <Input
  1498. placeholder="请输入联系人电话"
  1499. value={this.state.contactMobile}
  1500. style={{ width: "200px" }}
  1501. onChange={e => {
  1502. this.setState({ contactMobile: e.target.value });
  1503. }}
  1504. ref="commodityQuantity"
  1505. />
  1506. </FormItem>
  1507. <FormItem
  1508. className="half-item"
  1509. {...formItemLayout}
  1510. label="企业地址"
  1511. >
  1512. <Cascader
  1513. options={areaSelect()}
  1514. value={this.state.ProvinceCity}
  1515. placeholder="选择城市"
  1516. style={{ width: "200px" }}
  1517. onChange={e => {
  1518. this.setState({ ProvinceCity: e });
  1519. }}
  1520. />
  1521. </FormItem>
  1522. <FormItem
  1523. className="half-item"
  1524. {...formItemLayout}
  1525. label=""
  1526. ></FormItem>
  1527. <FormItem className="half-item" {...formItemLayout} label="">
  1528. <Input
  1529. placeholder="请输入详细地址"
  1530. value={this.state.postalAddress}
  1531. style={{ width: "200px", marginLeft: "12em" }}
  1532. onChange={e => {
  1533. this.setState({ postalAddress: e.target.value });
  1534. }}
  1535. ref="commodityQuantity"
  1536. />
  1537. </FormItem>
  1538. </div>
  1539. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1540. <div className="clearfix">
  1541. <h3 className="sub-title">任务信息</h3>
  1542. <FormItem
  1543. className="half-item"
  1544. {...formItemLayout}
  1545. label="任务编号"
  1546. >
  1547. <span>{this.state.id}</span>
  1548. </FormItem>
  1549. <FormItem
  1550. className="half-item"
  1551. {...formItemLayout}
  1552. label="任务名称"
  1553. >
  1554. <span>{this.state.taskName}</span>
  1555. </FormItem>
  1556. <FormItem
  1557. className="half-item"
  1558. {...formItemLayout}
  1559. label="任务状态"
  1560. >
  1561. <Select
  1562. placeholder="选择任务状态"
  1563. style={{ width: "200px" }}
  1564. value={this.state.taskStatus}
  1565. onChange={e => {
  1566. this.setState({ taskStatus: e });
  1567. }}
  1568. >
  1569. {taskStatus.map(function(item) {
  1570. return (
  1571. <Select.Option key={item.value}>
  1572. {item.key}
  1573. </Select.Option>
  1574. );
  1575. })}
  1576. </Select>
  1577. </FormItem>
  1578. <FormItem
  1579. className="half-item"
  1580. {...formItemLayout}
  1581. label="任务类别"
  1582. >
  1583. <span>{this.state.cname}</span>
  1584. </FormItem>
  1585. <FormItem
  1586. className="half-item"
  1587. {...formItemLayout}
  1588. label="证书编号"
  1589. >
  1590. <Input
  1591. placeholder="请输入证书编号"
  1592. value={this.state.certificateNumber}
  1593. style={{ width: "200px" }}
  1594. onChange={e => {
  1595. this.setState({ certificateNumber: e.target.value });
  1596. }}
  1597. ref="commodityQuantity"
  1598. />
  1599. </FormItem>
  1600. </div>
  1601. <div className="clearfix">
  1602. <h3 className="sub-title">申报系统账户信息</h3>
  1603. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  1604. <FormItem
  1605. className="half-item"
  1606. {...formItemLayout}
  1607. label="用户名"
  1608. >
  1609. <Input
  1610. placeholder="请输入用户名"
  1611. value={this.state.declareUser}
  1612. style={{ width: "200px" }}
  1613. onChange={e => {
  1614. this.setState({ declareUser: e.target.value });
  1615. }}
  1616. />
  1617. </FormItem>
  1618. <FormItem
  1619. className="half-item"
  1620. {...formItemLayout}
  1621. label="密码"
  1622. >
  1623. <Input
  1624. placeholder="请输入密码"
  1625. value={this.state.declarePwd}
  1626. style={{ width: "200px" }}
  1627. onChange={e => {
  1628. this.setState({ declarePwd: e.target.value });
  1629. }}
  1630. />
  1631. </FormItem>
  1632. </div>
  1633. <div className="clearfix">
  1634. <h3 className="sub-title">项目申报进度</h3>
  1635. <FormItem
  1636. className="half-item"
  1637. {...formItemLayout}
  1638. label="启动时间"
  1639. >
  1640. <DatePicker
  1641. style={{
  1642. marginTop: "2px",
  1643. width: "200px",
  1644. height: "32px"
  1645. }}
  1646. showTime
  1647. format="YYYY-MM-DD"
  1648. onOk={() => {}}
  1649. value={
  1650. this.state.startDate
  1651. ? moment(this.state.startDate)
  1652. : null
  1653. }
  1654. onChange={(data, dataString) => {
  1655. this.setState({ startDate: dataString });
  1656. }}
  1657. />
  1658. </FormItem>
  1659. <FormItem
  1660. className="half-item"
  1661. {...formItemLayout}
  1662. label="完成时间"
  1663. >
  1664. <DatePicker
  1665. style={{
  1666. marginTop: "2px",
  1667. width: "200px",
  1668. height: "32px"
  1669. }}
  1670. showTime
  1671. format="YYYY-MM-DD"
  1672. onOk={() => {}}
  1673. value={
  1674. this.state.endDate ? moment(this.state.endDate) : null
  1675. }
  1676. onChange={(data, dataString) => {
  1677. this.setState({ endDate: dataString });
  1678. }}
  1679. />
  1680. </FormItem>
  1681. <FormItem
  1682. className="half-item"
  1683. {...formItemLayout}
  1684. label="受理时间"
  1685. >
  1686. <DatePicker
  1687. style={{
  1688. marginTop: "2px",
  1689. width: "200px",
  1690. height: "32px"
  1691. }}
  1692. showTime
  1693. format="YYYY-MM-DD"
  1694. onOk={() => {}}
  1695. value={
  1696. this.state.acceptDate
  1697. ? moment(this.state.acceptDate)
  1698. : null
  1699. }
  1700. onChange={(data, dataString) => {
  1701. this.setState({ acceptDate: dataString });
  1702. }}
  1703. />
  1704. </FormItem>
  1705. <FormItem
  1706. className="half-item"
  1707. {...formItemLayout}
  1708. label="评审时间"
  1709. >
  1710. <DatePicker
  1711. style={{
  1712. marginTop: "2px",
  1713. width: "200px",
  1714. height: "32px"
  1715. }}
  1716. showTime
  1717. format="YYYY-MM-DD"
  1718. onOk={() => {}}
  1719. value={
  1720. this.state.reviewDate
  1721. ? moment(this.state.reviewDate)
  1722. : null
  1723. }
  1724. onChange={(data, dataString) => {
  1725. this.setState({ reviewDate: dataString });
  1726. }}
  1727. />
  1728. </FormItem>
  1729. <FormItem
  1730. className="half-item"
  1731. {...formItemLayout}
  1732. label="公示时间"
  1733. >
  1734. <DatePicker
  1735. style={{
  1736. marginTop: "2px",
  1737. width: "200px",
  1738. height: "32px"
  1739. }}
  1740. showTime
  1741. format="YYYY-MM-DD"
  1742. onOk={() => {}}
  1743. value={
  1744. this.state.publicityDate
  1745. ? moment(this.state.publicityDate)
  1746. : null
  1747. }
  1748. onChange={(data, dataString) => {
  1749. this.setState({ publicityDate: dataString });
  1750. }}
  1751. />
  1752. </FormItem>
  1753. <FormItem
  1754. className="half-item"
  1755. {...formItemLayout}
  1756. label="发证时间"
  1757. >
  1758. <DatePicker
  1759. style={{
  1760. marginTop: "2px",
  1761. width: "200px",
  1762. height: "32px"
  1763. }}
  1764. showTime
  1765. format="YYYY-MM-DD"
  1766. onOk={() => {}}
  1767. value={
  1768. this.state.licenceDate
  1769. ? moment(this.state.licenceDate)
  1770. : null
  1771. }
  1772. onChange={(data, dataString) => {
  1773. this.setState({ licenceDate: dataString });
  1774. }}
  1775. />
  1776. </FormItem>
  1777. <FormItem
  1778. className="half-item"
  1779. {...formItemLayout}
  1780. label="立项金额(万元)"
  1781. >
  1782. <Input
  1783. placeholder="请输入立项金额"
  1784. value={this.state.setUpAmount}
  1785. style={{ width: "200px" }}
  1786. onChange={e => {
  1787. this.setState({ setUpAmount: e.target.value });
  1788. }}
  1789. ref="commodityQuantity"
  1790. />
  1791. </FormItem>
  1792. <FormItem
  1793. className="half-item"
  1794. {...formItemLayout}
  1795. label="是否到款"
  1796. >
  1797. <Radio.Group
  1798. value={this.state.arrivalMoney}
  1799. onChange={e => {
  1800. this.setState({ arrivalMoney: e.target.value });
  1801. }}
  1802. >
  1803. <Radio value={0}>未到企业</Radio>
  1804. <Radio value={1}>已到企业</Radio>
  1805. </Radio.Group>
  1806. </FormItem>
  1807. </div>
  1808. <div className="clearfix">
  1809. <FormItem
  1810. labelCol={{ span: 3 }}
  1811. wrapperCol={{ span: 16 }}
  1812. label="附件"
  1813. >
  1814. <Picture
  1815. fileList={e => {
  1816. this.setState({ attachmentUrl: e });
  1817. }}
  1818. pictureUrl={this.state.attachmentUrl}
  1819. visible={this.props.visible}
  1820. data={{
  1821. sign: "order_task_file",
  1822. url: "/api/admin/orderProject/uploadOrderTaskFile",
  1823. number: 8
  1824. }}
  1825. />
  1826. </FormItem>
  1827. </div>
  1828. <div className="clearfix">
  1829. <FormItem
  1830. labelCol={{ span: 3 }}
  1831. wrapperCol={{ span: 16 }}
  1832. label="备注"
  1833. >
  1834. <Input
  1835. type="textarea"
  1836. placeholder="请输入备注"
  1837. rows={4}
  1838. value={this.state.taskComment}
  1839. onChange={e => {
  1840. this.setState({ taskComment: e.target.value });
  1841. }}
  1842. />
  1843. </FormItem>
  1844. </div>
  1845. <div>
  1846. <h3 className="sub-title">项目业务</h3>
  1847. {this.state.processStatus == 0 ? (
  1848. <Button
  1849. type="primary"
  1850. onClick={this.addDetailed}
  1851. style={{
  1852. float: "right",
  1853. marginRight: "50px",
  1854. marginBottom: "15px"
  1855. }}
  1856. >
  1857. 添加项目明细
  1858. </Button>
  1859. ) : (
  1860. ""
  1861. )}
  1862. </div>
  1863. <div className="patent-table">
  1864. <Spin spinning={this.state.loading}>
  1865. <Table
  1866. columns={this.state.columnsX}
  1867. dataSource={this.state.dataSourceX}
  1868. pagination={this.state.paginations}
  1869. onRowClick={this.tableRowClickX}
  1870. />
  1871. </Spin>
  1872. </div>
  1873. <div className="clearfix">
  1874. <Button
  1875. className="cancel"
  1876. type="primary"
  1877. onClick={this.tijiaoOk}
  1878. style={{ marginLeft: "200px", marginTop: "10px" }}
  1879. htmlType="submit"
  1880. >
  1881. 保存
  1882. </Button>
  1883. <Button
  1884. className="cancel"
  1885. type="ghost"
  1886. onClick={this.visitCancel}
  1887. style={{ marginLeft: "50px", marginTop: "10px" }}
  1888. >
  1889. 取消
  1890. </Button>
  1891. </div>
  1892. </div>
  1893. </Spin>
  1894. </Form>
  1895. </Modal>
  1896. <Modal
  1897. maskClosable={false}
  1898. visible={this.state.lookVisible}
  1899. onOk={this.noCancel}
  1900. onCancel={this.noCancel}
  1901. width="500px"
  1902. title={"添加工时"}
  1903. footer=""
  1904. className="admin-desc-content"
  1905. >
  1906. <Form layout="horizontal" id="demand-form">
  1907. <Spin spinning={this.state.loading}>
  1908. <div className="clearfix">
  1909. <FormItem {...formItemLayout} label="工作日期">
  1910. <DatePicker
  1911. style={{ marginTop: "2px", width: "200px", height: "32px" }}
  1912. showTime
  1913. format="YYYY-MM-DD"
  1914. onOk={() => {}}
  1915. value={
  1916. this.state.taskDate ? moment(this.state.taskDate) : null
  1917. }
  1918. onChange={(data, dataString) => {
  1919. this.setState({ taskDate: dataString });
  1920. }}
  1921. />
  1922. </FormItem>
  1923. </div>
  1924. <div className="clearfix">
  1925. <FormItem {...formItemLayout} label="工作时长">
  1926. <Input
  1927. placeholder="请输入工作时长"
  1928. value={this.state.hours}
  1929. style={{ width: "200px" }}
  1930. onChange={e => {
  1931. this.setState({ hours: e.target.value });
  1932. }}
  1933. ref="commodityQuantity"
  1934. />
  1935. </FormItem>
  1936. </div>
  1937. <div className="clearfix">
  1938. <FormItem {...formItemLayout} label="工作内容">
  1939. <Input
  1940. type="textarea"
  1941. placeholder="请输入备注"
  1942. rows={4}
  1943. value={this.state.remarks}
  1944. onChange={e => {
  1945. this.setState({ remarks: e.target.value });
  1946. }}
  1947. />
  1948. </FormItem>
  1949. </div>
  1950. <div className="clearfix">
  1951. <Button
  1952. className="cancel"
  1953. type="primary"
  1954. onClick={this.tianjiaOk}
  1955. style={{ marginLeft: "100px", marginTop: "10px" }}
  1956. htmlType="submit"
  1957. >
  1958. 确定
  1959. </Button>
  1960. <Button
  1961. className="cancel"
  1962. type="ghost"
  1963. onClick={this.noCancel}
  1964. style={{ marginLeft: "50px" }}
  1965. >
  1966. 取消
  1967. </Button>
  1968. </div>
  1969. </Spin>
  1970. </Form>
  1971. </Modal>
  1972. <Modal
  1973. maskClosable={false}
  1974. visible={this.state.addnextVisible}
  1975. onOk={this.nextCancel}
  1976. onCancel={this.nextCancel}
  1977. width="800px"
  1978. title="项目任务详情"
  1979. footer=""
  1980. className="admin-desc-content"
  1981. >
  1982. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  1983. <Spin spinning={this.state.loading}>
  1984. <div className="clearfix">
  1985. <FormItem
  1986. className="half-item"
  1987. {...formItemLayout}
  1988. label="项目名称"
  1989. >
  1990. <span>{this.state.commodityName}</span>
  1991. </FormItem>
  1992. <FormItem
  1993. className="half-item"
  1994. {...formItemLayout}
  1995. label="项目数量"
  1996. >
  1997. <span>{this.state.commodityQuantity}</span>
  1998. </FormItem>
  1999. <FormItem
  2000. className="half-item"
  2001. {...formItemLayout}
  2002. label="金额(万元)"
  2003. >
  2004. <span>{this.state.commodityPrice}</span>
  2005. </FormItem>
  2006. <FormItem
  2007. className="half-item"
  2008. {...formItemLayout}
  2009. label="主要项目"
  2010. >
  2011. <span>{getboutique(this.state.main)}</span>
  2012. </FormItem>
  2013. <div className="clearfix">
  2014. <FormItem
  2015. labelCol={{ span: 3 }}
  2016. wrapperCol={{ span: 18 }}
  2017. label="服务说明"
  2018. >
  2019. <span>{this.state.taskComment}</span>
  2020. </FormItem>
  2021. </div>
  2022. </div>
  2023. </Spin>
  2024. </Form>
  2025. </Modal>
  2026. <Modal
  2027. maskClosable={false}
  2028. visible={this.state.speVisible}
  2029. onOk={this.visitOk}
  2030. onCancel={this.visitCancel}
  2031. width="900px"
  2032. title="项目概况"
  2033. footer=""
  2034. className="admin-desc-content"
  2035. >
  2036. <div className="clearfix">
  2037. <FormItem
  2038. className="half-item"
  2039. {...formItemLayout}
  2040. label="当前项目情况"
  2041. >
  2042. <Radio.Group
  2043. value={this.state.status}
  2044. onChange={e => {
  2045. this.setState({ status: e.target.value });
  2046. }}
  2047. >
  2048. <Radio value={0}>开启</Radio>
  2049. <Radio value={1}>暂停</Radio>
  2050. </Radio.Group>
  2051. <Button
  2052. type="primary"
  2053. size="small"
  2054. style={{ marginTop: "5px", position: "absolute" }}
  2055. onClick={this.caozuorizhi}
  2056. >
  2057. 操作日志
  2058. </Button>
  2059. </FormItem>
  2060. <FormItem
  2061. className="half-item"
  2062. {...formItemLayout}
  2063. label="合同编号"
  2064. >
  2065. <span>{this.state.contractNo}</span>
  2066. </FormItem>
  2067. </div>
  2068. <div className="clearfix">
  2069. <FormItem
  2070. className="half-item"
  2071. {...formItemLayout}
  2072. label="项目状态"
  2073. >
  2074. <Select
  2075. placeholder="选择项目状态"
  2076. style={{ width: "200px" }}
  2077. value={this.state.projectStatus}
  2078. onChange={e => {
  2079. this.setState({ projectStatus: e });
  2080. }}
  2081. >
  2082. {projectStatus.map(function(item) {
  2083. return (
  2084. <Select.Option key={item.value}>{item.key}</Select.Option>
  2085. );
  2086. })}
  2087. </Select>
  2088. </FormItem>
  2089. <FormItem
  2090. className="half-item"
  2091. {...formItemLayout}
  2092. label="是否特批"
  2093. >
  2094. <span>{getApproval(this.state.approval)}</span>
  2095. </FormItem>
  2096. <FormItem
  2097. className="half-item"
  2098. {...formItemLayout}
  2099. label="结算状态"
  2100. >
  2101. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  2102. </FormItem>
  2103. <FormItem
  2104. className="half-item"
  2105. {...formItemLayout}
  2106. label="流程状态"
  2107. >
  2108. <span>{getProcessStatus(this.state.processStatus)}</span>
  2109. </FormItem>
  2110. <FormItem
  2111. className="half-item"
  2112. {...formItemLayout}
  2113. label="订单编号"
  2114. >
  2115. <span>{this.state.orderNo}</span>
  2116. </FormItem>
  2117. </div>
  2118. <div className="clearfix">
  2119. <FormItem
  2120. className="half-item"
  2121. {...formItemLayout}
  2122. label="满意度表格"
  2123. >
  2124. <Radio.Group
  2125. value={this.state.formRetrieve}
  2126. onChange={e => {
  2127. this.setState({ formRetrieve: e.target.value });
  2128. }}
  2129. >
  2130. <Radio value={0}>未收回</Radio>
  2131. <Radio value={1}>已收回</Radio>
  2132. <Radio value={2}>其他</Radio>
  2133. </Radio.Group>
  2134. </FormItem>
  2135. <FormItem className="half-item" {...formItemLayout} label="退单">
  2136. <Radio.Group
  2137. value={this.state.taskRefund}
  2138. onChange={e => {
  2139. this.setState({ taskRefund: e.target.value });
  2140. }}
  2141. >
  2142. <Radio value={0}>已完成</Radio>
  2143. <Radio value={1}>未完成</Radio>
  2144. <Radio value={2}>其他</Radio>
  2145. </Radio.Group>
  2146. </FormItem>
  2147. </div>
  2148. <div className="clearfix">
  2149. {
  2150. <FormItem
  2151. className="half-item"
  2152. {...formItemLayout}
  2153. label="(满意度)备注"
  2154. >
  2155. <Input
  2156. type="textarea"
  2157. placeholder="请输入备注"
  2158. rows={2}
  2159. value={this.state.retrieveContent}
  2160. onChange={e => {
  2161. this.setState({ retrieveContent: e.target.value });
  2162. }}
  2163. />
  2164. </FormItem>
  2165. }
  2166. {
  2167. <FormItem
  2168. className="half-item"
  2169. {...formItemLayout}
  2170. label="(退单)备注"
  2171. >
  2172. <Input
  2173. type="textarea"
  2174. placeholder="请输入备注"
  2175. rows={2}
  2176. value={this.state.refundContent}
  2177. onChange={e => {
  2178. this.setState({ refundContent: e.target.value });
  2179. }}
  2180. />
  2181. </FormItem>
  2182. }
  2183. </div>
  2184. <div className="clearfix">
  2185. <h3 className="sub-title">订单负责人信息</h3>
  2186. <FormItem className="half-item" {...formItemLayout} label="负责人">
  2187. <span>
  2188. {this.state.salesmanName + "(" + this.state.depName + ")"}
  2189. </span>
  2190. </FormItem>
  2191. <FormItem
  2192. className="half-item"
  2193. {...formItemLayout}
  2194. label="负责人电话"
  2195. >
  2196. <span>{this.state.salesmanMobile}</span>
  2197. </FormItem>
  2198. <FormItem
  2199. className="half-item"
  2200. {...formItemLayout}
  2201. label="当前财务负责人"
  2202. >
  2203. <span>{this.state.nowFinance}</span>
  2204. </FormItem>
  2205. <FormItem
  2206. className="half-item"
  2207. {...formItemLayout}
  2208. label="当前财务负责人电话"
  2209. >
  2210. <span>{this.state.nowFinanceMobile}</span>
  2211. </FormItem>
  2212. <FormItem
  2213. className="half-item"
  2214. {...formItemLayout}
  2215. style={{ opacity: ".5" }}
  2216. label="原负责人"
  2217. >
  2218. <span>{this.state.oldSalesmanName}</span>
  2219. </FormItem>
  2220. <FormItem
  2221. className="half-item"
  2222. {...formItemLayout}
  2223. style={{ opacity: ".5" }}
  2224. label="原负责人电话"
  2225. >
  2226. <span>{this.state.oldSalesmanMobile}</span>
  2227. </FormItem>
  2228. <FormItem
  2229. className="half-item"
  2230. {...formItemLayout}
  2231. style={{ opacity: ".5" }}
  2232. label="实际财务操作人"
  2233. >
  2234. <span>{this.state.financeName}</span>
  2235. </FormItem>
  2236. <FormItem
  2237. className="half-item"
  2238. {...formItemLayout}
  2239. style={{ opacity: ".5" }}
  2240. label="实际财务操作人电话"
  2241. >
  2242. <span>{this.state.financeMobile}</span>
  2243. </FormItem>
  2244. </div>
  2245. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  2246. <div className="clearfix">
  2247. <h3 className="sub-title">联系信息</h3>
  2248. <FormItem
  2249. className="half-item"
  2250. {...formItemLayout}
  2251. label="客户名称"
  2252. >
  2253. <span>{this.state.userName}</span>
  2254. </FormItem>
  2255. <FormItem
  2256. className="half-item"
  2257. {...formItemLayout}
  2258. label="企业法人"
  2259. >
  2260. <Input
  2261. placeholder="请输入法人名称"
  2262. value={this.state.legalPerson}
  2263. style={{ width: "200px" }}
  2264. onChange={e => {
  2265. this.setState({ legalPerson: e.target.value });
  2266. }}
  2267. ref="commodityQuantity"
  2268. />
  2269. </FormItem>
  2270. <FormItem
  2271. className="half-item"
  2272. {...formItemLayout}
  2273. label="法人电话"
  2274. >
  2275. <Input
  2276. placeholder="请输入法人电话"
  2277. value={this.state.legalPersonTel}
  2278. style={{ width: "200px" }}
  2279. onChange={e => {
  2280. this.setState({ legalPersonTel: e.target.value });
  2281. }}
  2282. ref="commodityQuantity"
  2283. />
  2284. </FormItem>
  2285. <FormItem
  2286. className="half-item"
  2287. {...formItemLayout}
  2288. label="客户联系人"
  2289. >
  2290. <Input
  2291. placeholder="请输入联系人名称"
  2292. value={this.state.contacts}
  2293. style={{ width: "200px" }}
  2294. onChange={e => {
  2295. this.setState({ contacts: e.target.value });
  2296. }}
  2297. ref="commodityQuantity"
  2298. />
  2299. </FormItem>
  2300. <FormItem
  2301. className="half-item"
  2302. {...formItemLayout}
  2303. label="联系人电话"
  2304. >
  2305. <Input
  2306. placeholder="请输入联系人电话"
  2307. value={this.state.contactMobile}
  2308. style={{ width: "200px" }}
  2309. onChange={e => {
  2310. this.setState({ contactMobile: e.target.value });
  2311. }}
  2312. ref="commodityQuantity"
  2313. />
  2314. </FormItem>
  2315. <FormItem
  2316. className="half-item"
  2317. {...formItemLayout}
  2318. label="企业地址"
  2319. >
  2320. <Cascader
  2321. options={areaSelect()}
  2322. value={this.state.ProvinceCity}
  2323. placeholder="选择城市"
  2324. style={{ width: "200px" }}
  2325. onChange={e => {
  2326. this.setState({ ProvinceCity: e });
  2327. }}
  2328. />
  2329. </FormItem>
  2330. <FormItem
  2331. className="half-item"
  2332. {...formItemLayout}
  2333. label=""
  2334. ></FormItem>
  2335. <FormItem className="half-item" {...formItemLayout} label="">
  2336. <Input
  2337. placeholder="请输入详细地址"
  2338. value={this.state.postalAddress}
  2339. style={{ width: "200px", marginLeft: "12em" }}
  2340. onChange={e => {
  2341. this.setState({ postalAddress: e.target.value });
  2342. }}
  2343. ref="commodityQuantity"
  2344. />
  2345. </FormItem>
  2346. </div>
  2347. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  2348. <div className="clearfix">
  2349. <h3 className="sub-title">任务信息</h3>
  2350. <FormItem
  2351. className="half-item"
  2352. {...formItemLayout}
  2353. label="任务编号"
  2354. >
  2355. <span>{this.state.id}</span>
  2356. </FormItem>
  2357. <FormItem
  2358. className="half-item"
  2359. {...formItemLayout}
  2360. label="任务名称"
  2361. >
  2362. <span>{this.state.taskName}</span>
  2363. </FormItem>
  2364. <FormItem
  2365. className="half-item"
  2366. {...formItemLayout}
  2367. label="任务状态"
  2368. >
  2369. <Select
  2370. placeholder="选择任务状态"
  2371. style={{ width: "200px" }}
  2372. value={this.state.taskStatus}
  2373. onChange={e => {
  2374. this.setState({ taskStatus: e });
  2375. }}
  2376. >
  2377. {taskStatus.map(function(item) {
  2378. return (
  2379. <Select.Option key={item.value}>{item.key}</Select.Option>
  2380. );
  2381. })}
  2382. </Select>
  2383. </FormItem>
  2384. <FormItem
  2385. className="half-item"
  2386. {...formItemLayout}
  2387. label="任务类别"
  2388. >
  2389. <span>{this.state.cname}</span>
  2390. </FormItem>
  2391. <FormItem
  2392. className="half-item"
  2393. {...formItemLayout}
  2394. label="证书编号"
  2395. >
  2396. <Input
  2397. placeholder="请输入证书编号"
  2398. value={this.state.certificateNumber}
  2399. style={{ width: "200px" }}
  2400. onChange={e => {
  2401. this.setState({ certificateNumber: e.target.value });
  2402. }}
  2403. ref="commodityQuantity"
  2404. />
  2405. </FormItem>
  2406. </div>
  2407. <div className="clearfix" style={{ marginTop: "10px" }}>
  2408. <FormItem
  2409. labelCol={{ span: 3 }}
  2410. wrapperCol={{ span: 14 }}
  2411. label="附件"
  2412. >
  2413. <Picture
  2414. fileList={e => {
  2415. this.setState({ attachmentUrl: e });
  2416. }}
  2417. pictureUrl={this.state.attachmentUrl}
  2418. visible={this.props.visible}
  2419. data={{
  2420. sign: "order_task_file",
  2421. url: "/api/admin/orderProject/uploadOrderTaskFile",
  2422. number: 8
  2423. }}
  2424. />
  2425. </FormItem>
  2426. </div>
  2427. <div className="clearfix">
  2428. <FormItem
  2429. labelCol={{ span: 3 }}
  2430. wrapperCol={{ span: 16 }}
  2431. label="备注"
  2432. >
  2433. <Input
  2434. type="textarea"
  2435. placeholder="请输入备注"
  2436. rows={4}
  2437. value={this.state.taskComment}
  2438. onChange={e => {
  2439. this.setState({ taskComment: e.target.value });
  2440. }}
  2441. />
  2442. </FormItem>
  2443. </div>
  2444. <div className="clearfix">
  2445. <h3 className="sub-title">项目申报进度</h3>
  2446. <FormItem
  2447. className="half-item"
  2448. {...formItemLayout}
  2449. label="启动时间"
  2450. >
  2451. <DatePicker
  2452. style={{ marginTop: "5px" }}
  2453. showTime
  2454. format="YYYY-MM-DD"
  2455. onOk={() => {}}
  2456. value={
  2457. this.state.startDate ? moment(this.state.startDate) : null
  2458. }
  2459. onChange={(data, dataString) => {
  2460. this.setState({ startDate: dataString });
  2461. }}
  2462. />
  2463. </FormItem>
  2464. <FormItem
  2465. className="half-item"
  2466. {...formItemLayout}
  2467. label="软著派单数量"
  2468. >
  2469. <span>{this.state.commodityQuantity}</span>
  2470. <Button
  2471. type="primary"
  2472. size="small"
  2473. style={{ marginLeft: "45px" }}
  2474. onClick={this.addcontact}
  2475. >
  2476. +增加下证信息
  2477. </Button>
  2478. </FormItem>
  2479. <div className="patent-table">
  2480. <Spin spinning={this.state.loading}>
  2481. <Table
  2482. columns={this.state.ContactsLists}
  2483. dataSource={this.state.contactList}
  2484. pagination={false}
  2485. />
  2486. </Spin>
  2487. </div>
  2488. </div>
  2489. <div className="clearfix">
  2490. <h3 className="sub-title">项目业务</h3>
  2491. <div className="patent-table">
  2492. <Spin spinning={this.state.loading}>
  2493. <Table
  2494. columns={this.state.columnsX}
  2495. dataSource={this.state.dataSourceX}
  2496. pagination={this.state.paginations}
  2497. onRowClick={this.tableRowClickX}
  2498. />
  2499. </Spin>
  2500. </div>
  2501. </div>
  2502. <div className="clearfix">
  2503. <Button
  2504. className="cancel"
  2505. type="primary"
  2506. onClick={this.tijiaoOk}
  2507. style={{ marginLeft: "200px", marginTop: "10px" }}
  2508. htmlType="submit"
  2509. >
  2510. 保存
  2511. </Button>
  2512. <Button
  2513. className="cancel"
  2514. type="ghost"
  2515. onClick={this.visitCancel}
  2516. style={{ marginLeft: "50px", marginTop: "10px" }}
  2517. >
  2518. 取消
  2519. </Button>
  2520. </div>
  2521. </Modal>
  2522. <Modal
  2523. width="800px"
  2524. visible={this.state.visibleA}
  2525. onCancel={this.visitCancelA}
  2526. title="操作日志"
  2527. footer=""
  2528. className="admin-desc-content"
  2529. >
  2530. <div className="patent-table patent-table-center">
  2531. <Spin spinning={this.state.loading}>
  2532. <Table
  2533. columns={this.state.columnsA}
  2534. dataSource={this.state.dataSourceA}
  2535. pagination={false}
  2536. />
  2537. </Spin>
  2538. </div>
  2539. </Modal>
  2540. </div>
  2541. );
  2542. }
  2543. });
  2544. export default Task;