myTaskOutsource.jsx 129 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852
  1. import React from "react";
  2. import $ from "jquery";
  3. import moment from "moment";
  4. import Picture from "@/manageCenter/publicComponent/picture";
  5. import ResolutionDetail from "@/resolutionDetail";
  6. import "@/manageCenter/financialManage/distribute/public.less";
  7. import "@/manageCenter/financialManage/distribute/shouKuan.less";
  8. import OrderDetail from "../../order/orderNew/changeComponent/orderDetail";
  9. import {
  10. Button,
  11. Form,
  12. Input,
  13. Select,
  14. Spin,
  15. Table,
  16. message,
  17. DatePicker,
  18. Modal,
  19. Radio,
  20. Cascader,
  21. Popconfirm,
  22. Tabs,
  23. Tag,
  24. notification
  25. } from "antd";
  26. import Assign from "@/manageCenter/publicComponent/assign";
  27. import { areaSelect } from "@/NewDicProvinceList";
  28. import { ChooseList } from "../../order/orderNew/chooseList";
  29. import OrderRiZi from "@/orderRiZi.jsx";
  30. import "./table.less";
  31. import {
  32. getProcessStatus,
  33. getApproval,
  34. getTaskStatus,
  35. getLiquidationStatus,
  36. getProjectStatus,
  37. splitUrl,
  38. getboutique,
  39. getprovince,
  40. moneyVerify,
  41. ShowModal
  42. } from "@/tools";
  43. import { taskStatus, projectStatus } from "@/dataDic.js";
  44. import ShowModalDiv from "@/showModal.jsx";
  45. import CheckProject from "../../components/checkProject";
  46. const FormItem = Form.Item;
  47. const { TabPane } = Tabs;
  48. const { Option } = Select;
  49. const { MonthPicker, RangePicker } = DatePicker;
  50. const MyTaskOutsource = React.createClass({
  51. loadData(pageNo) {
  52. this.state.data = [];
  53. this.setState({
  54. page: pageNo,
  55. loading: true,
  56. });
  57. $.ajax({
  58. method: "get",
  59. dataType: "json",
  60. crossDomain: false,
  61. url: globalConfig.context + "/api/admin/orderProject/orderTaskList",
  62. data: {
  63. pageNo: pageNo || this.state.page || 1,
  64. pageSize: this.state.pagination.pageSize,
  65. specially: 0, //个人
  66. name: this.state.nameSearch, //客户名称
  67. depId: this.state.departmenttSearch, //订单部门
  68. orderNo: this.state.orderNoSearch, //订单编号
  69. contractNo: this.state.contractNoSearch, //合同编号
  70. taskId: this.state.taskNoSearch, //项目编号
  71. taskStatus: this.state.taskStatuSearch, //项目状态
  72. projectStatus: this.state.projectStatusSearch, //项目状态
  73. adminName: this.state.adminName, //项目受理人
  74. outsource: 1,
  75. approval: this.state.approvalSearch, //特批状态搜索
  76. },
  77. success: function (data) {
  78. ShowModal(this);
  79. let theArr = [];
  80. if (!data.data || !data.data.list) {
  81. if (data.error && data.error.length) {
  82. message.warning(data.error[0].message);
  83. }
  84. } else {
  85. for (let i = 0; i < data.data.list.length; i++) {
  86. let thisdata = data.data.list[i];
  87. theArr.push({
  88. key: i,
  89. orderNo: thisdata.orderNo, //订单编号
  90. id: thisdata.id, //项目ID
  91. taskName: thisdata.taskName, //名称
  92. cname: thisdata.cname, //项目品类
  93. receiverName: thisdata.receiverName, //受理人
  94. projectStatus: thisdata.projectStatus, //项目状态
  95. taskStatus: thisdata.taskStatus, //项目状态
  96. taskDate: thisdata.taskDate, //分配时间
  97. userName:
  98. thisdata.taskName.substring(0, 5) === "软件著作权"
  99. ? thisdata.userName +
  100. "(" +
  101. thisdata.commodityQuantity.toString() +
  102. "/" +
  103. thisdata.alreadyNumber +
  104. ")"
  105. : thisdata.userName, //用户名
  106. depName: thisdata.depName, //部门名称
  107. commodityQuantity: thisdata.commodityQuantity, //项目数量
  108. outsourceName: thisdata.outsourceName,
  109. hours: thisdata.hours,
  110. contractNo: thisdata.contractNo,
  111. approval: thisdata.approval, //特批状态
  112. outsourceStatus: thisdata.outsourceStatus, //外包审核状态
  113. splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目
  114. splitSuper: thisdata.splitSuper,
  115. splitId: thisdata.splitId,
  116. projectType: thisdata.projectType,//项目类型
  117. patentNameType: thisdata.patentNameType,
  118. patentName: thisdata.patentName,
  119. });
  120. }
  121. }
  122. this.state.pagination.current = data.data.pageNo;
  123. this.state.pagination.total = data.data.totalCount;
  124. if (data.data && data.data.list && !data.data.list.length) {
  125. this.state.pagination.current = 0;
  126. this.state.pagination.total = 0;
  127. }
  128. this.setState({
  129. dataSource: theArr,
  130. pagination: this.state.pagination,
  131. });
  132. }.bind(this),
  133. }).always(
  134. function () {
  135. this.setState({
  136. loading: false,
  137. });
  138. }.bind(this)
  139. );
  140. },
  141. waiDetail() {
  142. let url = window.location.href.substring(7)
  143. this.setState({
  144. loading: true,
  145. })
  146. $.ajax({
  147. method: 'get',
  148. dataType: 'json',
  149. crossDomain: false,
  150. url:
  151. globalConfig.context + '/api/admin/outsourceOrg/orderOutsourceDtails',
  152. data: {
  153. tid: this.state.id,
  154. orderNo: this.state.orderNo,
  155. },
  156. }).done(
  157. function (data) {
  158. this.setState({
  159. loading: false,
  160. })
  161. if (!data.error.length && data.data) {
  162. this.setState({
  163. startType: data.data.startType, //类型
  164. patentType: data.data.patentType, //专利类型
  165. patentNameType: data.data.patentNameType, //专利名称类型
  166. patentName: data.data.patentName, //专利名称
  167. outsourceRemarks: data.data.outsourceRemarks,
  168. remarks: data.data.remarks,
  169. companyName: data.data.companyName,
  170. amount: data.data.amount,
  171. mid: data.data.id,
  172. unitPrice: data.data.unitPrice,
  173. refundStatus: data.data.refundStatus,
  174. unitNumber: data.data.unitNumber,
  175. pictureUrl: data.data.pictureUrl
  176. ? splitUrl(
  177. data.data.pictureUrl,
  178. ',',
  179. globalConfig.avatarHost + '/upload',
  180. url
  181. )
  182. : [], //图片地址
  183. createTimes: data.data.createTimes,
  184. auditTimes: data.data.auditTimes,
  185. })
  186. } else if (data.error && data.error.length) {
  187. message.warning(data.error[0].message)
  188. } else if (!data.data) {
  189. this.setState({
  190. refundStatus: undefined,
  191. })
  192. }
  193. }.bind(this)
  194. )
  195. },
  196. getInitialState() {
  197. return {
  198. paySubject: [],
  199. orderData: [],
  200. orderNo: "",
  201. jiedian: [],
  202. jiedianNew: [],
  203. page: 1,
  204. timeVisible: false,
  205. searchMore: true,
  206. assignVisible: false,
  207. releaseDate: [],
  208. // 判断是否是退回给咨询师经理
  209. flag: false,
  210. roleName: "",
  211. modKey: "1",
  212. testFlag: true,
  213. boHuivisible: false,
  214. companyProvinceArr: [],
  215. selectedRowKeys: [],
  216. departmentArr: [],
  217. selectedRows: [],
  218. attachmentUrl: [],
  219. contactList: [],
  220. //特批状态搜索
  221. approvalSearch: undefined,
  222. paginations: false,
  223. loading: false,
  224. pagination: {
  225. defaultCurrent: 1,
  226. defaultPageSize: 10,
  227. showQuickJumper: true,
  228. pageSize: 10,
  229. onChange: function (page) {
  230. this.loadData(page);
  231. this.setState({
  232. page,
  233. });
  234. }.bind(this),
  235. showTotal: function (total) {
  236. return "共" + total + "条数据";
  237. },
  238. },
  239. // 子组件改变的表格title数组
  240. changeList: undefined,
  241. columnsTime: [
  242. {
  243. title: "工作时长(小时)",
  244. dataIndex: "hours",
  245. key: "hours",
  246. },
  247. {
  248. title: "工作时间",
  249. dataIndex: "taskDays",
  250. key: "taskDays",
  251. },
  252. // {
  253. // title: "项目负责人",
  254. // dataIndex: "remarks",
  255. // key: "remarks"
  256. // },
  257. {
  258. title: "备注",
  259. dataIndex: "remarks",
  260. key: "remarks",
  261. },
  262. ],
  263. columns: [
  264. {
  265. title: "项目编号",
  266. dataIndex: "id",
  267. key: "id",
  268. render: (text, record) => {
  269. if (record.splitStatus == 2) {
  270. return <span>{record.splitSuper + "-" + record.splitId}</span>;
  271. } else {
  272. return text;
  273. }
  274. },
  275. },
  276. {
  277. title: "项目名称",
  278. dataIndex: "taskName",
  279. key: "taskName",
  280. render: (text) => {
  281. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  282. },
  283. },
  284. {
  285. title: "项目数量",
  286. dataIndex: "commodityQuantity",
  287. key: "commodityQuantity",
  288. },
  289. {
  290. title: "订单编号",
  291. dataIndex: "orderNo",
  292. key: "orderNo",
  293. },
  294. {
  295. title: "合同编号",
  296. dataIndex: "contractNo",
  297. key: "contractNo",
  298. },
  299. {
  300. title: "业务类别",
  301. dataIndex: "cname",
  302. key: "cname",
  303. },
  304. {
  305. title: "客户名称",
  306. dataIndex: "userName",
  307. key: "userName",
  308. className: "userName",
  309. },
  310. // {
  311. // title: "外包公司",
  312. // dataIndex: "outsourceName",
  313. // key: "outsourceName",
  314. // },
  315. {
  316. title: "分配状态",
  317. dataIndex: "taskStatus",
  318. key: "taskStatus",
  319. render: (text) => {
  320. return getTaskStatus(text);
  321. },
  322. },
  323. {
  324. title: "项目状态",
  325. dataIndex: "projectStatus",
  326. key: "projectStatus",
  327. render: (text) => {
  328. return getProjectStatus(text);
  329. },
  330. },
  331. {
  332. title: "特批状态",
  333. dataIndex: "approval",
  334. key: "approval",
  335. render: (text) => {
  336. return getApproval(text, true);
  337. },
  338. },
  339. {
  340. title: "分配时间",
  341. dataIndex: "taskDate",
  342. key: "taskDate",
  343. },
  344. {
  345. title: "订单部门",
  346. dataIndex: "depName",
  347. key: "depName",
  348. },
  349. {
  350. title: "累计工时(小时)",
  351. dataIndex: "hours",
  352. key: "hours",
  353. },
  354. {
  355. title: "操作",
  356. dataIndex: "caozuo",
  357. key: "caozuo",
  358. render: (text, record) => {
  359. return (
  360. <div>
  361. <Button
  362. type="primary"
  363. onClick={(e) => {
  364. e.stopPropagation(), this.evaluate(record, "咨询师");
  365. }}
  366. >
  367. 转交
  368. </Button>
  369. <Button
  370. type="primary"
  371. style={{ marginLeft: 10 }}
  372. onClick={(e) => {
  373. e.stopPropagation(),
  374. this.evaluate(record, "咨询师经理", true);
  375. }}
  376. >
  377. 回退
  378. </Button>
  379. <Button
  380. type="primary"
  381. style={{ margin: "0 10px" }}
  382. onClick={(e) => {
  383. e.stopPropagation(), this.okCancel(record);
  384. }}
  385. >
  386. 添加工时
  387. </Button>
  388. <Button
  389. type="primary"
  390. onClick={(e) => {
  391. e.stopPropagation();
  392. this.setState({
  393. timeVisible: true,
  394. });
  395. this.timeDetail(record);
  396. }}
  397. >
  398. 工时记录
  399. </Button>
  400. </div>
  401. );
  402. },
  403. },
  404. ],
  405. dataSource: [],
  406. searchTime: [],
  407. columnsX: [
  408. {
  409. title: "业务项目名称",
  410. dataIndex: "commodityName",
  411. key: "commodityName",
  412. },
  413. {
  414. title: "项目类别",
  415. dataIndex: "cname",
  416. key: "cname",
  417. },
  418. {
  419. title: "项目数量",
  420. dataIndex: "commodityQuantity",
  421. key: "commodityQuantity",
  422. render: (text, record) => {
  423. if (record.splitStatus == 1) {
  424. return (
  425. <span>
  426. {text}{" "}
  427. <Tag
  428. color="#108ee9"
  429. onClick={(e) => {
  430. e.stopPropagation();
  431. this.showRes(record);
  432. }}
  433. >
  434. 已拆
  435. </Tag>
  436. </span>
  437. );
  438. } else {
  439. return text;
  440. }
  441. },
  442. },
  443. {
  444. title: "金额(万元)",
  445. dataIndex: "commodityPrice",
  446. key: "commodityPrice",
  447. },
  448. {
  449. title: "负责人",
  450. dataIndex: "contacts",
  451. key: "contacts",
  452. },
  453. {
  454. title: "负责人电话",
  455. dataIndex: "contactsMobile",
  456. key: "contactsMobile",
  457. },
  458. {
  459. title: "主要项目",
  460. dataIndex: "main",
  461. key: "main",
  462. render: (text) => {
  463. return text ? "是" : "否";
  464. },
  465. },
  466. {
  467. title: "项目说明",
  468. dataIndex: "taskComment",
  469. key: "taskComment",
  470. render: (text) => {
  471. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  472. },
  473. },
  474. ],
  475. columnsA: [
  476. {
  477. title: "流程",
  478. dataIndex: "content",
  479. key: "content",
  480. align: "center",
  481. },
  482. {
  483. title: "操作人",
  484. dataIndex: "aName",
  485. key: "aName",
  486. align: "center",
  487. },
  488. {
  489. title: "时间",
  490. dataIndex: "createTimes",
  491. key: "createTimes",
  492. align: "center",
  493. },
  494. ],
  495. dataSourceX: [],
  496. dataSourceA: [],
  497. companys: [],
  498. ContactsLists: [
  499. {
  500. title: "批次",
  501. dataIndex: "num",
  502. key: "num",
  503. },
  504. {
  505. title: "下证时间",
  506. dataIndex: "licenceTimes",
  507. key: "licenceTimes",
  508. render: (text, record) => {
  509. return (
  510. <div>
  511. <DatePicker
  512. style={{ marginTop: "5px" }}
  513. showTime
  514. format="YYYY-MM-DD"
  515. onOk={() => {}}
  516. value={
  517. record.licenceTimes ? moment(record.licenceTimes) : null
  518. }
  519. onChange={(data, dataString) => {
  520. record.licenceTimes = dataString;
  521. this.setState({ contactList: this.state.contactList });
  522. }}
  523. />
  524. </div>
  525. );
  526. },
  527. },
  528. {
  529. title: "下证数量",
  530. dataIndex: "alreadyNumber",
  531. key: "alreadyNumber",
  532. render: (text, record) => {
  533. return (
  534. <div>
  535. {
  536. <Input
  537. value={record.alreadyNumber}
  538. placeholder="请输入下证数量"
  539. key={record.id}
  540. required="required"
  541. onChange={(e) => {
  542. record.alreadyNumber = e.target.value;
  543. this.setState({ contactList: this.state.contactList });
  544. }}
  545. style={{ width: "120px" }}
  546. />
  547. }
  548. </div>
  549. );
  550. },
  551. },
  552. {
  553. title: "未下证数量",
  554. dataIndex: "notCount",
  555. key: "notCount",
  556. },
  557. {
  558. title: "操作",
  559. dataIndex: "dels",
  560. key: "dels",
  561. render: (text, record, index) => {
  562. return (
  563. <div>
  564. {
  565. <Popconfirm
  566. title="是否删除?"
  567. onConfirm={() => {
  568. this.confirmDelet(record);
  569. }}
  570. okText="删除"
  571. cancelText="不删除"
  572. >
  573. <Button
  574. style={{
  575. marginRight: "10px",
  576. color: "#ffffff",
  577. background: "#f00",
  578. border: "none",
  579. }}
  580. >
  581. 删除
  582. </Button>
  583. </Popconfirm>
  584. }
  585. {record.flag ? (
  586. ""
  587. ) : (
  588. <Button
  589. type="primary"
  590. onClick={(e) => {
  591. e.stopPropagation(), this.contactSave(record, index);
  592. }}
  593. >
  594. 保存
  595. </Button>
  596. )}
  597. </div>
  598. );
  599. },
  600. },
  601. ],
  602. companyColumns: [
  603. {
  604. title: "公司",
  605. dataIndex: "name",
  606. key: "name",
  607. //fixed:'left',
  608. width: 160,
  609. },
  610. {
  611. title: "联系人",
  612. dataIndex: "contacts",
  613. key: "contacts",
  614. },
  615. {
  616. title: "联系人电话",
  617. dataIndex: "contactsMobile",
  618. key: "contactsMobile",
  619. },
  620. {
  621. title: "地址",
  622. dataIndex: "companyProvinceArr",
  623. key: "companyProvinceArr",
  624. width: 140,
  625. render: (test) => {
  626. return test[0] === null
  627. ? ""
  628. : getprovince(test[0]) +
  629. "/" +
  630. getprovince(test[1]) +
  631. "/" +
  632. getprovince(test[2]);
  633. },
  634. },
  635. {
  636. title: "详细地址",
  637. dataIndex: "address",
  638. key: "address",
  639. },
  640. {
  641. title: "操作",
  642. width: 160,
  643. render: (text, record) => {
  644. return (
  645. <div>
  646. <Button
  647. type="primary"
  648. onClick={() => {
  649. this.setState({
  650. companyId: record.id,
  651. updataSwicth: true,
  652. cName: record.name,
  653. companyContacts: record.contacts,
  654. companyContactsMobile: record.contactsMobile,
  655. companyProvinceArr: record.companyProvinceArr,
  656. companyAddress: record.address,
  657. companyRemarks: record.remarks,
  658. });
  659. this.openNotification();
  660. }}
  661. >
  662. 修改
  663. </Button>
  664. <Popconfirm
  665. title="是否确认删除?"
  666. okText="确定"
  667. onConfirm={() => {
  668. this.deleteCompany(record.id);
  669. }}
  670. cancelText="取消"
  671. >
  672. <Button type="danger" style={{ marginLeft: "10px" }}>
  673. 删除
  674. </Button>
  675. </Popconfirm>
  676. </div>
  677. );
  678. },
  679. },
  680. ],
  681. };
  682. },
  683. /* 分派 */
  684. evaluate(record, nub, flag) {
  685. this.state.assignData = record;
  686. this.setState(
  687. {
  688. nub,
  689. assignData: record,
  690. flag,
  691. },
  692. () => {
  693. this.setState({
  694. assignVisible: true,
  695. });
  696. }
  697. );
  698. },
  699. componentWillMount() {
  700. this.departmentList();
  701. this.loadData();
  702. },
  703. componentDidMount() {
  704. this.setColor();
  705. },
  706. setColor() {
  707. $(".userName span").after(
  708. "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)"
  709. );
  710. },
  711. tableRowClick(record) {
  712. this.state.RowData = record;
  713. let str = record.taskName;
  714. let test = str.indexOf("会员");
  715. if (test == -1) {
  716. this.setState({
  717. isHuiyuan: false,
  718. });
  719. } else {
  720. this.setState({
  721. isHuiyuan: true,
  722. });
  723. }
  724. if (record.taskName.substring(0, 5) === "软件著作权") {
  725. this.setState({
  726. speVisible: true,
  727. id: record.id,
  728. splitStatus: record.splitStatus,
  729. splitSuper: record.splitSuper,
  730. splitId: record.splitId,
  731. dataArr: record,
  732. commodityQuantity: record.commodityQuantity,
  733. });
  734. } else {
  735. this.setState({
  736. visible: true,
  737. splitStatus: record.splitStatus,
  738. splitSuper: record.splitSuper,
  739. splitId: record.splitId,
  740. projectType: record.projectType,
  741. patentNameType: record.patentNameType,
  742. patentName: record.patentName,
  743. });
  744. }
  745. this.xiangqing(record.id, record.taskName);
  746. this.xiangqings(record.orderNo);
  747. this.xiangmu(record.orderNo);
  748. this.loaduserss(record);
  749. // 获取第三方信息表格
  750. this.thirdTable(record.id)
  751. //获取支付节点信息表格
  752. this.payNodeTable(record.id)
  753. },
  754. //点击修改项目详情
  755. tijiaoOk() {
  756. if (moneyVerify(this.state.setUpAmount)) {
  757. return;
  758. }
  759. let attachmentUrls = [];
  760. if (this.state.attachmentUrl.length) {
  761. let picArr = [];
  762. this.state.attachmentUrl.map(function (item) {
  763. if (item.response && item.response.data && item.response.data.length) {
  764. picArr.push(item.response.data);
  765. }
  766. });
  767. attachmentUrls = picArr.join(",");
  768. }
  769. this.setState({
  770. loading: true,
  771. });
  772. $.ajax({
  773. method: "POST",
  774. dataType: "json",
  775. crossDomain: false,
  776. url: globalConfig.context + "/api/admin/orderProject/updateOrderTask",
  777. data: {
  778. id: this.state.id, //项目编号
  779. orderNo: this.state.orderNo, //订单编号
  780. projectStatus: this.state.projectStatus, //项目状态
  781. taskStatus: this.state.taskStatus, //项目状态
  782. taskComment: this.state.taskComment, //说明
  783. startDate: this.state.startDate, //启动日期
  784. endDate: this.state.endDate, //结束日期
  785. acceptDate: this.state.acceptDate, //受理日期
  786. reviewDate: this.state.reviewDate, //评审日期
  787. publicityDate: this.state.publicityDate, //公示日期
  788. licenceDate: this.state.licenceDate, //发证日期
  789. attachmentUrl: attachmentUrls.length ? attachmentUrls : "", //附件
  790. contacts: this.state.contacts, //联系人
  791. contactMobile: this.state.contactMobile, //联系人电话
  792. legalPerson: this.state.legalPerson, //法人
  793. legalPersonTel: this.state.legalPersonTel, //法人电话
  794. certificateNumber: this.state.certificateNumber, //证书编号
  795. status: this.state.status, //状态
  796. formRetrieve: this.state.formRetrieve, //满意度表格
  797. taskRefund: this.state.taskRefund, //退单
  798. refundContent: this.state.refundContent, //退单信息
  799. retrieveContent: this.state.retrieveContent, //回收信息
  800. locationProvince: this.state.ProvinceCity[0],
  801. locationCity: this.state.ProvinceCity[1],
  802. locationArea: this.state.ProvinceCity[2],
  803. postalAddress: this.state.postalAddress, //详细地址
  804. arrivalMoney: this.state.arrivalMoney, //是否到款
  805. setUpAmount: this.state.setUpAmount, //立项金额
  806. declareUser: this.state.declareUser, //账号
  807. declarePwd: this.state.declarePwd, //密码
  808. outsourceName: this.state.outsourceName, //外包公司名称
  809. outsourcePrice: this.state.outsourcePrice, //外包价格
  810. declarationBatch: this.state.declarationBatch,
  811. },
  812. }).done(
  813. function (data) {
  814. this.setState({
  815. loading: false,
  816. });
  817. if (!data.error.length) {
  818. message.success("保存成功!");
  819. this.visitCancel();
  820. } else {
  821. message.warning(data.error[0].message);
  822. }
  823. }.bind(this)
  824. );
  825. },
  826. //点击修改项目详情
  827. tianjiaOk() {
  828. if (this.state.attachmentUrl.length) {
  829. let picArr = [];
  830. this.state.attachmentUrl.map(function (item) {
  831. if (item.response && item.response.data && item.response.data.length) {
  832. picArr.push(item.response.data);
  833. }
  834. });
  835. }
  836. $.ajax({
  837. method: "POST",
  838. dataType: "json",
  839. crossDomain: false,
  840. url: globalConfig.context + "/api/admin/orderProject/addTaskHours",
  841. data: {
  842. taskId: this.state.taskId, //项目编号
  843. hours: this.state.hours, //工时
  844. remarks: this.state.remarks, //说明
  845. taskDate: this.state.taskDate, //日期
  846. taskComment: this.state.taskComment, //说明
  847. },
  848. }).done(
  849. function (data) {
  850. this.setState({
  851. loading: false,
  852. });
  853. if (!data.error.length) {
  854. message.success("保存成功!");
  855. this.noCancel();
  856. } else {
  857. message.warning(data.error[0].message);
  858. }
  859. }.bind(this)
  860. );
  861. },
  862. //订单详情
  863. xiangqing(id) {
  864. $.ajax({
  865. method: "get",
  866. dataType: "json",
  867. crossDomain: false,
  868. url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
  869. data: {
  870. id: id,
  871. },
  872. success: function (data) {
  873. let thisdata = data.data;
  874. if (data.error.length || data.data.list == "") {
  875. if (data.error && data.error.length) {
  876. message.warning(data.error[0].message);
  877. }
  878. } else {
  879. this.setState({
  880. id: thisdata.id, //ID
  881. orderNo: thisdata.orderNo, //订单编号
  882. userName: thisdata.userName, //客户名称
  883. taskName: thisdata.taskName, //项目名称
  884. cname: thisdata.cname, //项目品类
  885. contractNo: thisdata.contractNo, //合同编号
  886. projectStatus: thisdata.projectStatus.toString(), //项目状态
  887. taskStatus: thisdata.taskStatus.toString(), //项目状态
  888. taskDate: thisdata.taskDate, //分配时间
  889. taskComment: thisdata.taskComment, //说明
  890. attachmentUrl: thisdata.attachmentUrl
  891. ? splitUrl(
  892. thisdata.attachmentUrl,
  893. ",",
  894. globalConfig.avatarHost + "/upload"
  895. )
  896. : [], //图片地址
  897. salesmanName: thisdata.salesmanName, //订单负责人
  898. startDate: thisdata.startDate, //启动日期
  899. endDate: thisdata.endDate, //结束日期
  900. acceptDate: thisdata.acceptDate, //受理日期
  901. reviewDate: thisdata.reviewDate, //评审日期
  902. publicityDate: thisdata.publicityDate, //公示日期
  903. licenceDate: thisdata.licenceDate, //发证日期
  904. contacts: thisdata.contacts, //联系人
  905. contactMobile: thisdata.contactMobile, //联系人电话
  906. legalPerson: thisdata.legalPerson, //法人
  907. legalPersonTel: thisdata.legalPersonTel, //法人电话
  908. certificateNumber: thisdata.certificateNumber, //证书编号
  909. status: thisdata.status, //状态
  910. formRetrieve: thisdata.formRetrieve, //满意度表格
  911. taskRefund: thisdata.taskRefund, //退单
  912. refundContent: thisdata.refundContent, //退单信息
  913. retrieveContent: thisdata.retrieveContent, //回收信息
  914. arrivalMoney: thisdata.arrivalMoney, //是否到款
  915. setUpAmount: thisdata.setUpAmount, //立项金额
  916. declareUser: thisdata.declareUser, //账号
  917. declarePwd: thisdata.declarePwd, //密码
  918. outsourceName: thisdata.outsourceName, //外包公司名称
  919. outsourcePrice: thisdata.outsourcePrice, //外包价格
  920. declarationBatch: thisdata.declarationBatch,
  921. });
  922. }
  923. }.bind(this),
  924. }).always(
  925. function () {
  926. this.setState({
  927. loading: false,
  928. });
  929. }.bind(this)
  930. );
  931. },
  932. //订单详情
  933. xiangqings(orderNos) {
  934. $.ajax({
  935. method: "get",
  936. dataType: "json",
  937. crossDomain: false,
  938. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  939. data: {
  940. orderNo: orderNos,
  941. },
  942. success: function (data) {
  943. let thisdata = data.data;
  944. let ProvinceCityArr = [];
  945. let ProvinceS = thisdata.locationProvince; //省
  946. let citys = thisdata.locationCity; //市
  947. let Areas = thisdata.locationArea; //区
  948. ProvinceCityArr.push(ProvinceS, citys, Areas);
  949. if (data.error.length || data.data.list == "") {
  950. if (data.error && data.error.length) {
  951. message.warning(data.error[0].message);
  952. }
  953. } else {
  954. this.setState({
  955. processStatus: thisdata.processStatus, //流程状态
  956. liquidationStatus: thisdata.liquidationStatus, //结算状态
  957. approval: thisdata.approval, //特批状态
  958. orderRemarks: thisdata.orderRemarks, //订单留言
  959. salesmanName: thisdata.salesmanName, //营销员名称
  960. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  961. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  962. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  963. financeName: thisdata.financeName, //财务名称
  964. financeMobile: thisdata.financeMobile, //财务电话
  965. nowFinance: thisdata.nowFinance, //财务名称
  966. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  967. depName: thisdata.depName, //订单部门
  968. ProvinceCity: ProvinceCityArr[0] === null ? [] : ProvinceCityArr,
  969. postalAddress: thisdata.postalAddress, //详细地址
  970. });
  971. }
  972. }.bind(this),
  973. }).always(
  974. function () {
  975. this.setState({
  976. loading: false,
  977. });
  978. }.bind(this)
  979. );
  980. },
  981. //项目列表
  982. xiangmu(orderNos) {
  983. $.ajax({
  984. method: "get",
  985. dataType: "json",
  986. crossDomain: false,
  987. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  988. data: {
  989. orderNo: orderNos,
  990. },
  991. success: function (data) {
  992. let theArr = [];
  993. if (data.error.length || data.data.list == "") {
  994. if (data.error && data.error.length) {
  995. message.warning(data.error[0].message);
  996. }
  997. } else {
  998. for (let i = 0; i < data.data.length; i++) {
  999. let thisdata = data.data[i];
  1000. theArr.push({
  1001. key: i,
  1002. id: thisdata.id,
  1003. orderNo: thisdata.orderNo, //订单编号
  1004. commodityId: thisdata.commodityId, //项目ID
  1005. commodityName: thisdata.commodityName, //项目名称
  1006. cname: thisdata.cname, //项目类别
  1007. commodityPrice: thisdata.commodityPrice, //项目价格
  1008. commodityQuantity: thisdata.commodityQuantity, //项目数量
  1009. main: thisdata.main, //是否为主要项目
  1010. taskComment: thisdata.taskComment, //项目说明
  1011. contacts: thisdata.contacts, //联系人
  1012. contactsMobile: thisdata.contactsMobile, //联系人电话
  1013. taskStatus: thisdata.taskStatus, //是否分配
  1014. contractNo: thisdata.contractNo, //合同编号
  1015. certificateNumber: thisdata.certificateNumber,
  1016. splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目
  1017. splitSuper: thisdata.splitSuper,
  1018. splitId: thisdata.splitId,
  1019. });
  1020. }
  1021. }
  1022. this.setState({
  1023. dataSourceX: theArr,
  1024. });
  1025. }.bind(this),
  1026. }).always(
  1027. function () {
  1028. this.setState({
  1029. loading: false,
  1030. });
  1031. }.bind(this)
  1032. );
  1033. },
  1034. //导出
  1035. exportExec() {
  1036. let departmentName = "",
  1037. depart = this.state.departmentArr || [];
  1038. depart.map((item) => {
  1039. if (this.state.departmentId == item.id) {
  1040. departmentName = item.name;
  1041. return;
  1042. }
  1043. });
  1044. let data = {
  1045. departmentId: this.state.departmentId,
  1046. departmentName: departmentName,
  1047. salesName: this.state.orderRefundSearch, //订单负责人
  1048. startTime: this.state.releaseDate[0],
  1049. endTime: this.state.releaseDate[1],
  1050. grantStatus: this.state.grantStatus,
  1051. };
  1052. window.location.href =
  1053. globalConfig.context +
  1054. "/api/admin/orderProject/exporProjectList?" +
  1055. $.param(data);
  1056. },
  1057. //关闭详情
  1058. visitCancel() {
  1059. this.setState({
  1060. visible: false,
  1061. speVisible: false,
  1062. modKey: "1",
  1063. updataSwicth: false,
  1064. });
  1065. this.companyReset();
  1066. this.reset();
  1067. },
  1068. visitOk() {
  1069. this.setState({
  1070. visible: false,
  1071. speVisible: false,
  1072. });
  1073. this.reset();
  1074. },
  1075. closeDesc(e, s) {
  1076. this.state.showDesc = e;
  1077. if (s) {
  1078. this.loadData(this.state.page);
  1079. }
  1080. },
  1081. closeAssign(e, s) {
  1082. this.state.roleName = "";
  1083. this.state.assignVisible = e;
  1084. if (s) {
  1085. this.loadData(this.state.page);
  1086. }
  1087. },
  1088. //添加工时
  1089. okCancel(record) {
  1090. this.setState({
  1091. lookVisible: true,
  1092. taskId: record.id,
  1093. });
  1094. },
  1095. //测试
  1096. getOrgCodeUrl(e) {
  1097. this.setState({ orgCodeUrl: e });
  1098. },
  1099. //查看下证信息
  1100. loaduserss(record) {
  1101. $.ajax({
  1102. method: "get",
  1103. dataType: "json",
  1104. crossDomain: false,
  1105. url: globalConfig.context + "/api/admin/orderProject/selectTaskProgress",
  1106. data: {
  1107. tid: record.id,
  1108. },
  1109. success: function (data) {
  1110. let theArr = [];
  1111. let thisData = [];
  1112. if (!thisData) {
  1113. if (data.error && data.error.length) {
  1114. message.warning(data.error[0].message);
  1115. }
  1116. thisData = {};
  1117. } else {
  1118. for (let i = 0; i < data.data.length; i++) {
  1119. thisData = data.data[i];
  1120. theArr.push({
  1121. num: i + 1,
  1122. key: i,
  1123. id: thisData.id, //编号
  1124. alreadyNumber: thisData.alreadyNumber, //下证数
  1125. licenceTimes: thisData.licenceTimes, //下证时间
  1126. notCount: thisData.notCount, //未下证数
  1127. flag: true,
  1128. });
  1129. }
  1130. this.setState({
  1131. contactList: theArr,
  1132. });
  1133. }
  1134. }.bind(this),
  1135. }).always(
  1136. function () {
  1137. this.setState({
  1138. loading: false,
  1139. });
  1140. }.bind(this)
  1141. );
  1142. },
  1143. //下证信息保存
  1144. contactSave(record) {
  1145. if (!record.licenceTimes) {
  1146. message.warning("下证日期不能为空");
  1147. return;
  1148. }
  1149. if (!record.alreadyNumber) {
  1150. message.warning("下证数量不能为空");
  1151. return;
  1152. }
  1153. this.setState({
  1154. loading: true,
  1155. });
  1156. $.ajax({
  1157. url: globalConfig.context + "/api/admin/orderProject/createTaskProgress",
  1158. method: "post",
  1159. data: {
  1160. taskId: this.state.id,
  1161. licenceTimes: record.licenceTimes,
  1162. alreadyNumber: record.alreadyNumber,
  1163. },
  1164. }).done(
  1165. function (data) {
  1166. this.setState({
  1167. loading: false,
  1168. });
  1169. if (!data.error.length) {
  1170. message.success("保存成功!");
  1171. record.flag = true;
  1172. this.loaduserss(this.state.dataArr);
  1173. } else {
  1174. message.warning(data.error[0].message);
  1175. }
  1176. }.bind(this)
  1177. );
  1178. },
  1179. //下证信息删除
  1180. contactDele(record) {
  1181. this.setState({
  1182. loading: true,
  1183. });
  1184. $.ajax({
  1185. url: globalConfig.context + "/api/admin/orderProject/delectTaskProgress",
  1186. method: "post",
  1187. data: {
  1188. id: record.id,
  1189. },
  1190. }).done(
  1191. function (data) {
  1192. this.setState({
  1193. loading: false,
  1194. });
  1195. if (!data.error.length) {
  1196. this.loaduserss(this.state.dataArr);
  1197. } else {
  1198. message.warning(data.error[0].message);
  1199. }
  1200. }.bind(this)
  1201. );
  1202. },
  1203. //点击新增下证信息
  1204. addcontact() {
  1205. this.state.contactList.push({
  1206. num: this.state.contactList.length + 1,
  1207. key: this.state.contactList.length,
  1208. licenceTimes: "",
  1209. alreadyNumber: "",
  1210. notCount: "",
  1211. dels: "",
  1212. flag: false,
  1213. aflag: false,
  1214. });
  1215. this.setState({
  1216. contactList: this.state.contactList,
  1217. });
  1218. },
  1219. //删除下证信息
  1220. confirmDelet(record) {
  1221. this.state.contactList.splice(record.key, 1);
  1222. this.setState({
  1223. contactList: this.state.contactList,
  1224. });
  1225. if (record.id) {
  1226. this.contactDele(record);
  1227. }
  1228. },
  1229. caozuorizhi() {
  1230. this.setState({
  1231. visibleA: true,
  1232. });
  1233. $.ajax({
  1234. method: "get",
  1235. dataType: "json",
  1236. crossDomain: false,
  1237. url: globalConfig.context + "/api/admin/orderProject/TaskLogList",
  1238. data: {
  1239. id: this.state.id,
  1240. },
  1241. success: function (data) {
  1242. let theArr = [];
  1243. if (data.error.length || data.data.list == "") {
  1244. if (data.error && data.error.length) {
  1245. message.warning(data.error[0].message);
  1246. }
  1247. } else {
  1248. for (let i = 0; i < data.data.length; i++) {
  1249. let thisdata = data.data[i];
  1250. theArr.push({
  1251. key: i,
  1252. id: thisdata.id, //日志ID
  1253. content: thisdata.content, //流程
  1254. taskId: thisdata.taskId, //项目ID
  1255. aName: thisdata.aName, //负责人
  1256. createTimes: thisdata.createTimes, //时间
  1257. });
  1258. }
  1259. }
  1260. this.setState({
  1261. dataSourceA: theArr,
  1262. });
  1263. }.bind(this),
  1264. }).always(
  1265. function () {
  1266. this.setState({
  1267. loading: false,
  1268. });
  1269. }.bind(this)
  1270. );
  1271. },
  1272. //通知提醒
  1273. openNotification() {
  1274. notification.open({
  1275. message: "提醒",
  1276. description: "请在输入框中重新输入需要修改的选项!",
  1277. });
  1278. },
  1279. //关闭操作工时
  1280. visitCancelA() {
  1281. this.setState({
  1282. visibleA: false,
  1283. });
  1284. },
  1285. callBack(e) {
  1286. this.setState({
  1287. modKey: e,
  1288. });
  1289. this.loadCompany();
  1290. if (e == 2) {
  1291. this.waiDetail()
  1292. }
  1293. if (e == 3) {
  1294. this.orderDetailData(this.state.orderNo);
  1295. this.xiangmu(this.state.orderNo);
  1296. this.jiedian(this.state.orderNo);
  1297. this.jiedianNew(this.state.orderNo);
  1298. }
  1299. },
  1300. //添加公司
  1301. addCompany() {
  1302. this.setState({
  1303. switch: true,
  1304. });
  1305. },
  1306. //保存和修改公司
  1307. saveCompany(id) {
  1308. if (this.companyJugle()) {
  1309. let upAndde = this.state.updataSwicth
  1310. ? {
  1311. api: "/api/admin/outsourceOrg/updateOutsourceOrg",
  1312. warn: "修改成功",
  1313. data: {
  1314. id: id,
  1315. name: this.state.cName,
  1316. contacts: this.state.companyContacts,
  1317. contactsMobile: this.state.companyContactsMobile,
  1318. province: this.state.companyProvinceArr[0],
  1319. city: this.state.companyProvinceArr[1],
  1320. area: this.state.companyProvinceArr[2],
  1321. address: this.state.companyAddress,
  1322. remarks: this.state.companyRemarks,
  1323. },
  1324. }
  1325. : {
  1326. api: "/api/admin/outsourceOrg/addOutsourceOrg",
  1327. warn: "保存成功",
  1328. data: {
  1329. name: this.state.cName,
  1330. tid: this.state.RowData.id,
  1331. contacts: this.state.companyContacts,
  1332. contactsMobile: this.state.companyContactsMobile,
  1333. orderNo: this.state.orderNo,
  1334. province: this.state.companyProvinceArr[0],
  1335. city: this.state.companyProvinceArr[1],
  1336. area: this.state.companyProvinceArr[2],
  1337. address: this.state.companyAddress,
  1338. remarks: this.state.companyRemarks,
  1339. },
  1340. };
  1341. this.setState({
  1342. loading: true,
  1343. });
  1344. $.ajax({
  1345. method: "post",
  1346. dataType: "json",
  1347. crossDomain: false,
  1348. url: globalConfig.context + upAndde.api,
  1349. data: upAndde.data,
  1350. success: function (data) {
  1351. if (data.error.length || data.data.list == "") {
  1352. if (data.error && data.error.length) {
  1353. message.warning(data.error[0].message);
  1354. }
  1355. }
  1356. }.bind(this),
  1357. }).done(
  1358. function () {
  1359. this.setState({
  1360. loading: false,
  1361. updataSwicth: false,
  1362. });
  1363. this.companyReset();
  1364. message.success(upAndde.warn);
  1365. this.loadCompany();
  1366. }.bind(this)
  1367. );
  1368. }
  1369. },
  1370. //判断
  1371. companyJugle() {
  1372. if (this.state.cName === undefined) {
  1373. console.log(2345);
  1374. message.warning("公司名称不能为空!");
  1375. return;
  1376. }
  1377. if (this.state.companyContacts === undefined) {
  1378. message.warning("联系人不能为空!");
  1379. return;
  1380. }
  1381. if (this.state.companyContactsMobile === undefined) {
  1382. message.warning("联系人电话不能为空!");
  1383. return;
  1384. }
  1385. return true;
  1386. },
  1387. //删除外包
  1388. deleteCompany(id) {
  1389. $.ajax({
  1390. method: "post",
  1391. dataType: "json",
  1392. crossDomain: false,
  1393. url: globalConfig.context + "/api/admin/outsourceOrg/deleteOutsourceOrg",
  1394. data: {
  1395. id: id,
  1396. },
  1397. success: function () {}.bind(this),
  1398. }).done(
  1399. function () {
  1400. this.setState({
  1401. loading: false,
  1402. });
  1403. message.warning("删除成功");
  1404. this.loadCompany();
  1405. }.bind(this)
  1406. );
  1407. },
  1408. //重置外包
  1409. companyReset() {
  1410. this.setState({
  1411. cName: undefined,
  1412. companyContacts: undefined,
  1413. companyContactsMobile: undefined,
  1414. companyProvinceArr: [],
  1415. companyAddress: undefined,
  1416. companyRemarks: undefined,
  1417. });
  1418. },
  1419. //加载外包
  1420. loadCompany() {
  1421. this.setState({
  1422. loading: true,
  1423. });
  1424. $.ajax({
  1425. method: "get",
  1426. dataType: "json",
  1427. crossDomain: false,
  1428. url: globalConfig.context + "/api/admin/outsourceOrg/selectOutsourceOrg",
  1429. data: {
  1430. orderNo: this.state.RowData.orderNo,
  1431. tid: this.state.RowData.id,
  1432. },
  1433. success: function (data) {
  1434. let theArr = [];
  1435. if (data.error.length || data.data.list == "") {
  1436. if (data.error && data.error.length) {
  1437. message.warning(data.error[0].message);
  1438. }
  1439. } else {
  1440. for (let i = 0; i < data.data.length; i++) {
  1441. let thisdata = data.data[i];
  1442. let ProvinceCityArr = [];
  1443. let ProvinceS = thisdata.province; //省
  1444. let citys = thisdata.city; //市
  1445. let Areas = thisdata.area; //区
  1446. ProvinceCityArr.push(ProvinceS, citys, Areas);
  1447. theArr.push({
  1448. key: i,
  1449. id: thisdata.id, //外包Id
  1450. name: thisdata.name, //名称
  1451. contacts: thisdata.contacts, //联系人
  1452. contactsMobile: thisdata.contactsMobile, //联系人电话
  1453. companyProvinceArr: ProvinceCityArr,
  1454. address: thisdata.address,
  1455. remarks: thisdata.remarks,
  1456. });
  1457. }
  1458. }
  1459. this.setState({
  1460. companys: theArr,
  1461. });
  1462. }.bind(this),
  1463. }).always(
  1464. function () {
  1465. this.setState({
  1466. loading: false,
  1467. });
  1468. }.bind(this)
  1469. );
  1470. },
  1471. foo2() {
  1472. this.setState({
  1473. testFlag1: false,
  1474. });
  1475. },
  1476. foo1() {
  1477. this.setState({
  1478. testFlag1: true,
  1479. });
  1480. },
  1481. foo() {
  1482. this.setState({
  1483. testFlag: false,
  1484. });
  1485. },
  1486. nextCancel() {
  1487. this.setState({
  1488. addnextVisible: false,
  1489. });
  1490. },
  1491. //点击打卡项目详情
  1492. tableRowClickX(record) {
  1493. this.setState({
  1494. jid: record.id, //项目ID
  1495. kid: record.commodityId, //商品ID
  1496. commodityName: record.commodityName, //金额
  1497. commodityPrice: record.commodityPrice, //金额
  1498. commodityQuantity: record.commodityQuantity, //数量
  1499. taskComment: record.taskComment, //备注
  1500. main: record.main.toString(), //是否为主要
  1501. addnextVisible: true,
  1502. addState: 0,
  1503. });
  1504. },
  1505. //关闭添加工时
  1506. noCancel() {
  1507. this.setState({
  1508. lookVisible: false,
  1509. });
  1510. this.reset();
  1511. },
  1512. search() {
  1513. this.loadData();
  1514. },
  1515. reset() {
  1516. this.state.id = ""; //项目编号
  1517. this.state.orderNo = ""; //订单编号
  1518. this.state.contractNoSearch = undefined; //订单编号
  1519. this.state.projectStatus = undefined; //项目状态
  1520. this.state.projectStatusSearch = undefined; //项目状态
  1521. this.state.taskStatuSearch = undefined; //项目状态
  1522. this.state.taskComment = ""; //说明
  1523. this.state.startDate = ""; //启动日期
  1524. this.state.endDate = ""; //结束日期
  1525. this.state.acceptDate = ""; //受理日期
  1526. this.state.reviewDate = ""; //评审日期
  1527. this.state.publicityDate = ""; //公示日期
  1528. this.state.licenceDate = ""; //发证日期
  1529. attachmentUrl: []; //附件
  1530. this.state.contacts = ""; //联系人
  1531. this.state.contactMobile = ""; //联系人电话
  1532. this.state.legalPerson = ""; //法人
  1533. this.state.legalPersonTel = ""; //法人电话
  1534. this.state.taskId = ""; //项目编号
  1535. this.state.hours = ""; //工时
  1536. this.state.remarks = ""; //说明
  1537. this.state.taskDate = ""; //日期
  1538. this.state.taskComment = ""; //说明
  1539. this.state.nameSearch = "";
  1540. this.state.releaseDate = [];
  1541. this.state.orderNoSearch = "";
  1542. this.state.taskNoSearch = "";
  1543. this.state.distribution = undefined;
  1544. this.state.departmenttSearch = undefined;
  1545. this.state.outsourceName = ""; //外包公司名称
  1546. this.state.outsourcePrice = ""; //外包价格
  1547. this.loadData(this.state.page);
  1548. this.state.approvalSearch = undefined;
  1549. },
  1550. searchSwitch() {
  1551. this.setState({
  1552. searchMore: !this.state.searchMore,
  1553. });
  1554. },
  1555. // 拆分详细
  1556. showRes(record) {
  1557. this.setState({
  1558. resVisible: true,
  1559. resRecord: record,
  1560. });
  1561. },
  1562. resCancel() {
  1563. this.setState({
  1564. resVisible: false,
  1565. });
  1566. },
  1567. //部门
  1568. departmentList() {
  1569. this.setState({
  1570. loading: true,
  1571. });
  1572. $.ajax({
  1573. method: "get",
  1574. dataType: "json",
  1575. crossDomain: false,
  1576. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  1577. data: {},
  1578. success: function (data) {
  1579. let thedata = data.data;
  1580. let theArr = [];
  1581. if (!thedata) {
  1582. if (data.error && data.error.length) {
  1583. message.warning(data.error[0].message);
  1584. }
  1585. thedata = {};
  1586. } else {
  1587. thedata.map(function (item, index) {
  1588. theArr.push({
  1589. key: index,
  1590. name: item.name,
  1591. id: item.id,
  1592. });
  1593. });
  1594. }
  1595. this.setState({
  1596. departmentArr: theArr,
  1597. });
  1598. }.bind(this),
  1599. }).always(
  1600. function () {
  1601. this.setState({
  1602. loading: false,
  1603. });
  1604. }.bind(this)
  1605. );
  1606. },
  1607. changeList(arr) {
  1608. const newArr = [];
  1609. this.state.columns.forEach((item) => {
  1610. arr.forEach((val) => {
  1611. if (val === item.title) {
  1612. newArr.push(item);
  1613. }
  1614. });
  1615. });
  1616. this.setState({
  1617. changeList: newArr,
  1618. });
  1619. },
  1620. timeClose() {
  1621. this.setState({
  1622. timeVisible: false,
  1623. });
  1624. },
  1625. timeDetail(record) {
  1626. console.log(record);
  1627. this.setState({
  1628. loading: true,
  1629. recordHour: record.hours,
  1630. });
  1631. $.ajax({
  1632. method: "get",
  1633. dataType: "json",
  1634. crossDomain: false,
  1635. url:
  1636. globalConfig.context + "/api/admin/orderProject/taskHoursDetailsList",
  1637. data: {
  1638. taskId: record.id,
  1639. },
  1640. success: function (data) {
  1641. if (data.error && data.error.length) {
  1642. message.warning(data.error[0].message);
  1643. } else {
  1644. this.setState({
  1645. dataSourceTime: data.data,
  1646. });
  1647. console.log(this.state.dataSourceTime);
  1648. }
  1649. }.bind(this),
  1650. }).always(
  1651. function () {
  1652. this.setState({
  1653. loading: false,
  1654. });
  1655. }.bind(this)
  1656. );
  1657. },
  1658. rizhi() {
  1659. this.setState({
  1660. loading: true,
  1661. });
  1662. $.ajax({
  1663. method: "get",
  1664. dataType: "json",
  1665. crossDomain: false,
  1666. url: "/api/admin/newOrder/selectOrderLog",
  1667. data: {
  1668. orderNo: this.state.orderNo,
  1669. },
  1670. success: function (data) {
  1671. let theArr = [];
  1672. let thisData = data.data;
  1673. if (!thisData.length) {
  1674. if (data.error && data.error.length) {
  1675. message.warning(data.error[0].message);
  1676. }
  1677. thisData = {};
  1678. } else {
  1679. for (let i = 0; i < data.data.length; i++) {
  1680. let thisdata = data.data[i];
  1681. theArr.push({
  1682. processName: thisdata.processName,
  1683. adminName: thisdata.adminName,
  1684. createDate: thisdata.createDate,
  1685. remarks: thisdata.remarks,
  1686. });
  1687. }
  1688. }
  1689. this.setState({
  1690. dataSourceY: theArr,
  1691. });
  1692. }.bind(this),
  1693. }).always(
  1694. function () {
  1695. this.setState({
  1696. loading: false,
  1697. });
  1698. }.bind(this)
  1699. );
  1700. },
  1701. closeOrderLog() {
  1702. this.setState({
  1703. avisible: false,
  1704. });
  1705. },
  1706. getOrderLog() {
  1707. this.setState({
  1708. avisible: true,
  1709. });
  1710. this.rizhi();
  1711. },
  1712. orderChange(key) {
  1713. this.setState({
  1714. activeKey: key,
  1715. });
  1716. if (key == 2) {
  1717. this.orderDetailData(this.state.orderNo);
  1718. this.xiangmu(this.state.orderNo);
  1719. this.jiedian(this.state.orderNo);
  1720. this.jiedianNew(this.state.orderNo);
  1721. }
  1722. },
  1723. //节点列表
  1724. jiedian(orderNos) {
  1725. $.ajax({
  1726. method: "get",
  1727. dataType: "json",
  1728. crossDomain: false,
  1729. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  1730. data: {
  1731. orderNo: orderNos,
  1732. },
  1733. success: function (data) {
  1734. let theArr = [];
  1735. let thisData = [];
  1736. if (data.error.length || data.data.list == "") {
  1737. if (data.error && data.error.length) {
  1738. message.warning(data.error[0].message);
  1739. }
  1740. } else {
  1741. for (let i = 0; i < data.data.length; i++) {
  1742. thisData = data.data[i];
  1743. theArr.push({
  1744. key: i,
  1745. dunSubject: thisData.dunSubject
  1746. ? thisData.dunSubject.toString()
  1747. : "", //催款科目
  1748. id: thisData.id, //节点Id
  1749. money: thisData.money, //催款金额
  1750. dunStatus: thisData.dunStatus, //催款状态
  1751. });
  1752. }
  1753. this.setState({
  1754. jiedian: theArr,
  1755. });
  1756. }
  1757. }.bind(this),
  1758. });
  1759. },
  1760. jiedianNew(orderNos) {
  1761. $.ajax({
  1762. method: "get",
  1763. dataType: "json",
  1764. crossDomain: false,
  1765. url:
  1766. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  1767. data: {
  1768. orderNo: orderNos,
  1769. },
  1770. success: function (data) {
  1771. if (data.error && data.error.length) {
  1772. message.warning(data.error[0].message);
  1773. } else {
  1774. let theArr = [];
  1775. let thisData = [];
  1776. let arr = data.data || [];
  1777. let totalCui = 0;
  1778. for (let i = 0; i < arr.length; i++) {
  1779. thisData = arr[i];
  1780. totalCui += +thisData.money;
  1781. theArr.push({
  1782. key: i,
  1783. dunSubject: thisData.dunSubject
  1784. ? thisData.dunSubject.toString()
  1785. : "", //催款科目
  1786. id: thisData.id, //节点Id
  1787. money: thisData.money, //催款金额
  1788. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  1789. commodityName: thisData.commodityName,
  1790. projectType: thisData.projectType,
  1791. dunTypeName: thisData.dunTypeName,
  1792. status: thisData.status,
  1793. waitDay: thisData.waitDay,
  1794. effectiveCount: thisData.effectiveCount,
  1795. startDate: thisData.startDate,
  1796. dunType: thisData.dunType,
  1797. appropriationRatio: thisData.appropriationRatio,
  1798. customizeName: thisData.customizeName,
  1799. customizeTimes: thisData.customizeTimes,
  1800. });
  1801. }
  1802. if (!totalCui) {
  1803. totalCui = 0;
  1804. }
  1805. totalCui = (Math.round(totalCui * 10000) / 10000).toFixed(4);
  1806. this.setState({
  1807. jiedianNew: theArr,
  1808. totalCui,
  1809. });
  1810. }
  1811. }.bind(this),
  1812. }).always(
  1813. function () {
  1814. this.setState({
  1815. loading: false,
  1816. });
  1817. }.bind(this)
  1818. );
  1819. },
  1820. //查看第三方信息表格
  1821. thirdTable(id) {
  1822. this.setState({
  1823. loadData: true,
  1824. })
  1825. $.ajax({
  1826. method: 'get',
  1827. dataType: 'json',
  1828. crossDomain: false,
  1829. url: globalConfig.context + '/api/admin/company/selectCompany',
  1830. data: {
  1831. tid: id,
  1832. },
  1833. success: function (data) {
  1834. if (data.error && data.error.length) {
  1835. message.warning(data.error[0].message)
  1836. } else {
  1837. let companyNameArr = []
  1838. let theArr = []
  1839. let thisData = []
  1840. let arr = data.data || []
  1841. let allTotalAmount = 0
  1842. for (let i = 0; i < arr.length; i++) {
  1843. thisData = arr[i]
  1844. allTotalAmount =
  1845. (allTotalAmount * 10000 + thisData.totalAmount * 10000) / 10000
  1846. companyNameArr.push(thisData.companyName)
  1847. theArr.push({
  1848. key: i,
  1849. id: thisData.id, //节点Id
  1850. tid: thisData.tid,
  1851. companyName: thisData.companyName, //供应商名称
  1852. unitPrice: thisData.unitPrice, //单价
  1853. quantity: thisData.quantity, //数量
  1854. totalAmount: thisData.totalAmount, //总价
  1855. material: thisData.material, //材料 0无 1有
  1856. urgent: thisData.urgent, // 0无加急(系统默认)1加急3天 2加急4天 3加急5-10天 4加急11-15天 5加急16-20天 6加急21-25天 7加急26-30天
  1857. audit: thisData.audit, //0无审计 1年审 2专审
  1858. assets: thisData.assets, //资产
  1859. income: thisData.income, //收入
  1860. remarks: thisData.remarks, //备注
  1861. cid: thisData.cid, //机构id
  1862. })
  1863. }
  1864. if (!allTotalAmount) {
  1865. allTotalAmount = 0
  1866. }
  1867. console.log(theArr)
  1868. console.log(companyNameArr)
  1869. this.setState({
  1870. tid: id,
  1871. thirdInfoList: theArr,
  1872. allTotalAmount: allTotalAmount,
  1873. })
  1874. }
  1875. }.bind(this),
  1876. }).always(
  1877. function () {
  1878. this.setState({
  1879. loading: false,
  1880. })
  1881. }.bind(this)
  1882. )
  1883. },
  1884. payNodeTable(id) {
  1885. this.setState({
  1886. loadData: true,
  1887. })
  1888. $.ajax({
  1889. method: 'get',
  1890. dataType: 'json',
  1891. crossDomain: false,
  1892. url: globalConfig.context + '/api/admin/company/selectPaymentNode',
  1893. data: {
  1894. tid: id,
  1895. },
  1896. success: function (data) {
  1897. if (data.error && data.error.length) {
  1898. message.warning(data.error[0].message)
  1899. } else {
  1900. let payNodeArr = []
  1901. let thisData = []
  1902. let arr = data.data || []
  1903. // console.log('this.state.paySubject', this.state.paySubject)
  1904. //对#5283自定义的补充展示
  1905. this.state.paySubject.push({ key: '自定义', value: '0' })
  1906. for (let i = 0; i < arr.length; i++) {
  1907. thisData = arr[i]
  1908. //遍历paySubject,获取当前dunType对应的key
  1909. this.state.paySubject.map((item) => {
  1910. if (item.value == thisData.dunType) {
  1911. thisData.dunType = item.key
  1912. }
  1913. })
  1914. payNodeArr.push({
  1915. key: i,
  1916. id: thisData.id, //付款节点Id
  1917. tid: thisData.tid,
  1918. nodeId: thisData.id, //付款节点Id
  1919. companyName: thisData.companyName, //供应商名称
  1920. projectType: thisData.projectType, //项目分类
  1921. dunType: thisData.dunType, //催款分类
  1922. unitPrice: thisData.unitPrice, //单价
  1923. quantity: thisData.quantity, //数量
  1924. totalAmount: thisData.totalAmount, //总价
  1925. partyAmount: thisData.partyAmount, //付款
  1926. partyTimes: thisData.partyTimes, //付款时间
  1927. cid: thisData.cid, //机构id
  1928. status: thisData.status, //催款状态 0-未支付 1-待全款 ,2已全款 status=2的时候已经全款,申请付款按钮可以去掉了
  1929. })
  1930. }
  1931. console.log(payNodeArr,'payNodeArr:')
  1932. // console.log('paySubject:', this.state.paySubject)
  1933. this.setState({
  1934. tid: id,
  1935. payNodeList: payNodeArr,
  1936. })
  1937. }
  1938. }.bind(this),
  1939. }).always(
  1940. function () {
  1941. this.setState({
  1942. loading: false,
  1943. })
  1944. }.bind(this)
  1945. )
  1946. },
  1947. orderDetailData(orderNos) {
  1948. this.setState({
  1949. loading: true,
  1950. });
  1951. $.ajax({
  1952. method: "get",
  1953. dataType: "json",
  1954. crossDomain: false,
  1955. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  1956. data: {
  1957. orderNo: orderNos,
  1958. },
  1959. success: function (data) {
  1960. if (data.error.length || data.data.list == "") {
  1961. if (data.error && data.error.length) {
  1962. message.warning(data.error[0].message);
  1963. this.setState({
  1964. loading: false,
  1965. });
  1966. }
  1967. } else {
  1968. let thisdata = data.data;
  1969. this.setState({
  1970. loading: false,
  1971. userName: thisdata.userName,
  1972. primaryOrderNo: thisdata.primaryOrder,
  1973. additionalOrder: thisdata.additionalOrder,
  1974. contractNo: thisdata.contractNo,
  1975. orderData: thisdata,
  1976. isAddition: thisdata.additionalOrder ? true : false,
  1977. contractPictureUrl: thisdata.contractPictureUrl
  1978. ? splitUrl(
  1979. thisdata.contractPictureUrl,
  1980. ",",
  1981. globalConfig.avatarHost + "/upload"
  1982. )
  1983. : [],
  1984. });
  1985. }
  1986. }.bind(this),
  1987. });
  1988. },
  1989. render() {
  1990. const { TabPane } = Tabs;
  1991. const formItemLayout = {
  1992. labelCol: { span: 8 },
  1993. wrapperCol: { span: 14 },
  1994. };
  1995. let departmentArr = this.state.departmentArr || [];
  1996. return (
  1997. <div className="user-content">
  1998. {this.state.resVisible ? (
  1999. <ResolutionDetail
  2000. cancel={this.resCancel}
  2001. detail={this.state.resRecord}
  2002. visible={this.state.resVisible}
  2003. id={this.state.resRecord.orderNo}
  2004. />
  2005. ) : (
  2006. ""
  2007. )}
  2008. <ShowModalDiv ShowModal={this.state.showModal} />
  2009. <div className="content-title" style={{ marginBottom: 10 }}>
  2010. <span style={{ fontWeight: 900, fontSize: 16 }}>我的外包项目</span>
  2011. </div>
  2012. <Tabs defaultActiveKey="2" onChange={this.callback} className="test">
  2013. <TabPane tab="更改表格显示数据" key="1">
  2014. <div style={{ marginLeft: 10 }}>
  2015. <ChooseList
  2016. columns={this.state.columns}
  2017. changeFn={this.changeList}
  2018. changeList={this.state.changeList}
  2019. top={55}
  2020. margin={11}
  2021. />
  2022. </div>
  2023. </TabPane>
  2024. <TabPane tab="搜索" key="2">
  2025. <div className="user-search" style={{ marginLeft: 10 }}>
  2026. <Input
  2027. placeholder="客户名称"
  2028. value={this.state.nameSearch}
  2029. onChange={(e) => {
  2030. this.setState({ nameSearch: e.target.value });
  2031. }}
  2032. />
  2033. <Input
  2034. placeholder="订单编号"
  2035. value={this.state.orderNoSearch}
  2036. onChange={(e) => {
  2037. this.setState({ orderNoSearch: e.target.value });
  2038. }}
  2039. />
  2040. <Input
  2041. placeholder="合同编号"
  2042. value={this.state.contractNoSearch}
  2043. onChange={(e) => {
  2044. this.setState({ contractNoSearch: e.target.value });
  2045. }}
  2046. />
  2047. <Input
  2048. placeholder="项目编号"
  2049. value={this.state.taskNoSearch}
  2050. onChange={(e) => {
  2051. this.setState({ taskNoSearch: e.target.value });
  2052. }}
  2053. />
  2054. <Select
  2055. placeholder="选择部门"
  2056. style={{ width: 150, marginRight: "10px" }}
  2057. value={this.state.departmenttSearch}
  2058. onChange={(e) => {
  2059. this.setState({ departmenttSearch: e });
  2060. }}
  2061. >
  2062. {departmentArr.map(function (item) {
  2063. return (
  2064. <Select.Option key={item.id}>{item.name}</Select.Option>
  2065. );
  2066. })}
  2067. </Select>
  2068. <Select
  2069. placeholder="项目状态"
  2070. style={{ width: 150, marginRight: "10px" }}
  2071. value={this.state.projectStatusSearch}
  2072. onChange={(e) => {
  2073. this.setState({ projectStatusSearch: e });
  2074. console.log(this.state.projectStatusSearch);
  2075. }}
  2076. >
  2077. {projectStatus.map(function (item) {
  2078. return (
  2079. <Select.Option key={item.value}>{item.key}</Select.Option>
  2080. );
  2081. })}
  2082. </Select>
  2083. <Select
  2084. placeholder="特批状态"
  2085. style={{ width: 150, marginRight: "10px" }}
  2086. value={this.state.approvalSearch}
  2087. onChange={(e) => {
  2088. this.setState({ approvalSearch: e });
  2089. console.log(this.state.approvalSearch);
  2090. }}
  2091. >
  2092. <Select.Option key={0}>非特批</Select.Option>
  2093. <Select.Option key={1}>特批</Select.Option>
  2094. </Select>
  2095. <Button type="primary" onClick={this.search}>
  2096. 搜索
  2097. </Button>
  2098. <Button onClick={this.reset}>重置</Button>
  2099. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  2100. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  2101. <span>订单时间 :</span>
  2102. <RangePicker
  2103. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  2104. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  2105. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  2106. </div> */}
  2107. </div>
  2108. </TabPane>
  2109. <TabPane tab="导出Excel" key="3">
  2110. <Button
  2111. type="primary"
  2112. style={{ margin: "11px 0 10px 10px" }}
  2113. onClick={this.exportExec}
  2114. >
  2115. 导出Excel
  2116. </Button>
  2117. </TabPane>
  2118. {/* <TabPane tab="批量操作" key="6">
  2119. <Button
  2120. type="primary"
  2121. disabled={this.state.selectedRowKeys.length == 0}
  2122. style={{ margin: "0px 0px 10px 10px" }}
  2123. onClick={e => {
  2124. e.stopPropagation(),
  2125. this.evaluateY(this.state.selectedRowKeys, "财务专员");
  2126. }}
  2127. >
  2128. 转交
  2129. </Button>
  2130. </TabPane> */}
  2131. </Tabs>
  2132. <div className="patent-table">
  2133. <Spin spinning={this.state.loading}>
  2134. <Table
  2135. columns={
  2136. this.state.changeList == undefined
  2137. ? this.state.columns
  2138. : this.state.changeList
  2139. }
  2140. dataSource={this.state.dataSource}
  2141. pagination={this.state.pagination}
  2142. onRowClick={this.tableRowClick.bind(this)}
  2143. scroll={{ x: "max-content", y: 0 }}
  2144. bordered
  2145. size={"small"}
  2146. />
  2147. </Spin>
  2148. </div>
  2149. <Assign
  2150. title="项目"
  2151. selApi={"/api/admin/orderProject/projectDistribution"}
  2152. data={this.state.assignData}
  2153. showDesc={this.state.assignVisible}
  2154. closeDesc={this.closeAssign.bind(this)}
  2155. fenpaiData={8}
  2156. specially={0}
  2157. roleName={this.state.nub}
  2158. requestMethod={"post"}
  2159. flag={this.state.flag}
  2160. isZhuan={this.state.isZhuan} //是否转交
  2161. />
  2162. <Modal
  2163. className="customeDetails"
  2164. footer=""
  2165. title=""
  2166. width="900px"
  2167. visible={this.state.visible}
  2168. onOk={this.visitOk}
  2169. onCancel={this.visitCancel}
  2170. >
  2171. <Tabs onChange={this.callBack} activeKey={this.state.modKey}>
  2172. <TabPane tab="项目概况" key="1">
  2173. <Form
  2174. layout="horizontal"
  2175. onSubmit={this.handleSubmit}
  2176. id="demand-form"
  2177. style={{ paddingBottom: "00px" }}
  2178. >
  2179. <Spin spinning={this.state.loading}>
  2180. <div className="clearfix">
  2181. <div className="clearfix">
  2182. <FormItem
  2183. className="half-item"
  2184. {...formItemLayout}
  2185. label="当前项目情况"
  2186. >
  2187. <Radio.Group
  2188. value={this.state.status}
  2189. onChange={(e) => {
  2190. this.setState({ status: e.target.value });
  2191. }}
  2192. >
  2193. <Radio value={0}>开启</Radio>
  2194. <Radio value={1}>暂停</Radio>
  2195. </Radio.Group>
  2196. <Button
  2197. type="primary"
  2198. size="small"
  2199. style={{ marginTop: "5px", position: "absolute" }}
  2200. onClick={this.caozuorizhi}
  2201. >
  2202. 操作日志
  2203. </Button>
  2204. </FormItem>
  2205. <FormItem
  2206. className="half-item"
  2207. {...formItemLayout}
  2208. label="合同编号"
  2209. >
  2210. <span>{this.state.contractNo}</span>
  2211. </FormItem>
  2212. </div>
  2213. <div className="clearfix">
  2214. <FormItem
  2215. className="half-item"
  2216. {...formItemLayout}
  2217. label="项目状态"
  2218. >
  2219. <Select
  2220. placeholder="选择项目状态"
  2221. style={{ width: "200px" }}
  2222. value={this.state.projectStatus}
  2223. onChange={(e) => {
  2224. this.setState({ projectStatus: e });
  2225. }}
  2226. >
  2227. {projectStatus.map(function (item) {
  2228. return (
  2229. <Select.Option key={item.value}>
  2230. {item.key}
  2231. </Select.Option>
  2232. );
  2233. })}
  2234. </Select>
  2235. </FormItem>
  2236. <FormItem
  2237. className="half-item"
  2238. {...formItemLayout}
  2239. label="是否特批"
  2240. >
  2241. <span>{getApproval(this.state.approval)}</span>
  2242. </FormItem>
  2243. <FormItem
  2244. className="half-item"
  2245. {...formItemLayout}
  2246. label="结算状态"
  2247. >
  2248. <span>
  2249. {getLiquidationStatus(this.state.liquidationStatus)}
  2250. </span>
  2251. </FormItem>
  2252. <FormItem
  2253. className="half-item"
  2254. {...formItemLayout}
  2255. label="流程状态"
  2256. >
  2257. <span>
  2258. {getProcessStatus(this.state.processStatus)}
  2259. </span>
  2260. </FormItem>
  2261. <FormItem
  2262. className="half-item"
  2263. {...formItemLayout}
  2264. label="订单编号"
  2265. >
  2266. <span>{this.state.orderNo}</span>
  2267. </FormItem>
  2268. </div>
  2269. <div className="clearfix">
  2270. <FormItem
  2271. className="half-item"
  2272. {...formItemLayout}
  2273. label="满意度表格"
  2274. >
  2275. <Radio.Group
  2276. value={this.state.formRetrieve}
  2277. onChange={(e) => {
  2278. this.setState({ formRetrieve: e.target.value });
  2279. }}
  2280. >
  2281. <Radio value={0}>未收回</Radio>
  2282. <Radio value={1}>已收回</Radio>
  2283. <Radio value={2}>其他</Radio>
  2284. </Radio.Group>
  2285. </FormItem>
  2286. <FormItem
  2287. className="half-item"
  2288. {...formItemLayout}
  2289. label="退单"
  2290. >
  2291. <Radio.Group
  2292. value={this.state.taskRefund}
  2293. onChange={(e) => {
  2294. this.setState({ taskRefund: e.target.value });
  2295. }}
  2296. >
  2297. <Radio value={0}>已完成</Radio>
  2298. <Radio value={1}>未完成</Radio>
  2299. <Radio value={2}>其他</Radio>
  2300. </Radio.Group>
  2301. </FormItem>
  2302. </div>
  2303. <div className="clearfix">
  2304. {
  2305. <FormItem
  2306. className="half-item"
  2307. {...formItemLayout}
  2308. label="(满意度)备注"
  2309. >
  2310. <Input
  2311. type="textarea"
  2312. placeholder="请输入备注"
  2313. rows={2}
  2314. value={this.state.retrieveContent}
  2315. onChange={(e) => {
  2316. this.setState({
  2317. retrieveContent: e.target.value,
  2318. });
  2319. }}
  2320. />
  2321. </FormItem>
  2322. }
  2323. {
  2324. <FormItem
  2325. className="half-item"
  2326. {...formItemLayout}
  2327. label="(退单)备注"
  2328. >
  2329. <Input
  2330. type="textarea"
  2331. placeholder="请输入备注"
  2332. rows={2}
  2333. value={this.state.refundContent}
  2334. onChange={(e) => {
  2335. this.setState({ refundContent: e.target.value });
  2336. }}
  2337. />
  2338. </FormItem>
  2339. }
  2340. </div>
  2341. <div className="clearfix">
  2342. <h3 className="sub-title">订单负责人信息</h3>
  2343. <FormItem
  2344. className="half-item"
  2345. {...formItemLayout}
  2346. label="负责人"
  2347. >
  2348. <span>
  2349. {this.state.salesmanName +
  2350. "(" +
  2351. this.state.depName +
  2352. ")"}
  2353. </span>
  2354. </FormItem>
  2355. <FormItem
  2356. className="half-item"
  2357. {...formItemLayout}
  2358. label="负责人电话"
  2359. >
  2360. <span>{this.state.salesmanMobile}</span>
  2361. </FormItem>
  2362. <FormItem
  2363. className="half-item"
  2364. {...formItemLayout}
  2365. label="当前财务负责人"
  2366. >
  2367. <span>{this.state.nowFinance}</span>
  2368. </FormItem>
  2369. <FormItem
  2370. className="half-item"
  2371. {...formItemLayout}
  2372. label="当前财务负责人电话"
  2373. >
  2374. <span>{this.state.nowFinanceMobile}</span>
  2375. </FormItem>
  2376. <FormItem
  2377. className="half-item"
  2378. {...formItemLayout}
  2379. style={{ opacity: ".5" }}
  2380. label="原负责人"
  2381. >
  2382. <span>{this.state.oldSalesmanName}</span>
  2383. </FormItem>
  2384. <FormItem
  2385. className="half-item"
  2386. {...formItemLayout}
  2387. style={{ opacity: ".5" }}
  2388. label="原负责人电话"
  2389. >
  2390. <span>{this.state.oldSalesmanMobile}</span>
  2391. </FormItem>
  2392. <FormItem
  2393. className="half-item"
  2394. {...formItemLayout}
  2395. style={{ opacity: ".5" }}
  2396. label="实际财务操作人"
  2397. >
  2398. <span>{this.state.financeName}</span>
  2399. </FormItem>
  2400. <FormItem
  2401. className="half-item"
  2402. {...formItemLayout}
  2403. style={{ opacity: ".5" }}
  2404. label="实际财务操作人电话"
  2405. >
  2406. <span>{this.state.financeMobile}</span>
  2407. </FormItem>
  2408. <FormItem
  2409. className="half-item"
  2410. {...formItemLayout}
  2411. label="订单留言"
  2412. >
  2413. <span>{this.state.orderRemarks}</span>
  2414. </FormItem>
  2415. <FormItem
  2416. className="half-item"
  2417. {...formItemLayout}
  2418. label=""
  2419. >
  2420. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  2421. </FormItem>
  2422. <OrderRiZi
  2423. dataSourcerizhi={this.state.dataSourceY}
  2424. closeOrderLog={this.closeOrderLog}
  2425. visible={this.state.avisible}
  2426. loading={this.state.loading}
  2427. />
  2428. </div>
  2429. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  2430. <div className="clearfix">
  2431. <h3 className="sub-title">联系信息</h3>
  2432. <FormItem
  2433. className="half-item"
  2434. {...formItemLayout}
  2435. label="客户名称"
  2436. >
  2437. <span>{this.state.userName}</span>
  2438. </FormItem>
  2439. <FormItem
  2440. className="half-item"
  2441. {...formItemLayout}
  2442. label="企业法人"
  2443. >
  2444. <Input
  2445. placeholder="请输入法人名称"
  2446. value={this.state.legalPerson}
  2447. style={{ width: "200px" }}
  2448. onChange={(e) => {
  2449. this.setState({ legalPerson: e.target.value });
  2450. }}
  2451. ref="commodityQuantity"
  2452. />
  2453. </FormItem>
  2454. <FormItem
  2455. className="half-item"
  2456. {...formItemLayout}
  2457. label="法人电话"
  2458. >
  2459. <Input
  2460. placeholder="请输入法人电话"
  2461. value={this.state.legalPersonTel}
  2462. style={{ width: "200px" }}
  2463. onChange={(e) => {
  2464. this.setState({ legalPersonTel: e.target.value });
  2465. }}
  2466. ref="commodityQuantity"
  2467. />
  2468. </FormItem>
  2469. <FormItem
  2470. className="half-item"
  2471. {...formItemLayout}
  2472. label="客户联系人"
  2473. >
  2474. <Input
  2475. placeholder="请输入联系人名称"
  2476. value={this.state.contacts}
  2477. style={{ width: "200px" }}
  2478. onChange={(e) => {
  2479. this.setState({ contacts: e.target.value });
  2480. }}
  2481. ref="commodityQuantity"
  2482. />
  2483. </FormItem>
  2484. <FormItem
  2485. className="half-item"
  2486. {...formItemLayout}
  2487. label="联系人电话"
  2488. >
  2489. <Input
  2490. placeholder="请输入联系人电话"
  2491. value={this.state.contactMobile}
  2492. style={{ width: "200px" }}
  2493. onChange={(e) => {
  2494. this.setState({ contactMobile: e.target.value });
  2495. }}
  2496. ref="commodityQuantity"
  2497. />
  2498. </FormItem>
  2499. <FormItem
  2500. className="half-item"
  2501. {...formItemLayout}
  2502. label="企业地址"
  2503. >
  2504. <Cascader
  2505. options={areaSelect()}
  2506. value={this.state.ProvinceCity}
  2507. placeholder="选择城市"
  2508. style={{ width: "200px" }}
  2509. onChange={(e) => {
  2510. this.setState({ ProvinceCity: e });
  2511. }}
  2512. />
  2513. </FormItem>
  2514. <FormItem
  2515. className="half-item"
  2516. {...formItemLayout}
  2517. label=""
  2518. ></FormItem>
  2519. <FormItem
  2520. className="half-item"
  2521. {...formItemLayout}
  2522. label=""
  2523. >
  2524. <Input
  2525. placeholder="请输入详细地址"
  2526. value={this.state.postalAddress}
  2527. style={{ width: "200px", marginLeft: "12em" }}
  2528. onChange={(e) => {
  2529. this.setState({ postalAddress: e.target.value });
  2530. }}
  2531. ref="commodityQuantity"
  2532. />
  2533. </FormItem>
  2534. </div>
  2535. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  2536. <div className="clearfix">
  2537. <h3 className="sub-title">项目信息</h3>
  2538. <FormItem
  2539. className="half-item"
  2540. {...formItemLayout}
  2541. label="项目编号"
  2542. >
  2543. <span>
  2544. {this.state.splitStatus == 2
  2545. ? this.state.splitSuper + "-" + this.state.splitId
  2546. : this.state.id}
  2547. </span>
  2548. </FormItem>
  2549. <FormItem
  2550. className="half-item"
  2551. {...formItemLayout}
  2552. label="项目名称"
  2553. >
  2554. <span>{this.state.taskName}</span>
  2555. </FormItem>
  2556. <FormItem
  2557. className="half-item"
  2558. {...formItemLayout}
  2559. label="项目状态"
  2560. >
  2561. <Select
  2562. placeholder="选择项目状态"
  2563. style={{ width: "200px" }}
  2564. value={this.state.taskStatus}
  2565. onChange={(e) => {
  2566. this.setState({ taskStatus: e });
  2567. }}
  2568. >
  2569. {taskStatus.map(function (item) {
  2570. return (
  2571. <Select.Option key={item.value}>
  2572. {item.key}
  2573. </Select.Option>
  2574. );
  2575. })}
  2576. </Select>
  2577. </FormItem>
  2578. <FormItem
  2579. className="half-item"
  2580. {...formItemLayout}
  2581. label="项目类别"
  2582. >
  2583. <span>{this.state.cname}</span>
  2584. </FormItem>
  2585. <FormItem
  2586. className="half-item"
  2587. {...formItemLayout}
  2588. label="证书编号"
  2589. >
  2590. <Input
  2591. placeholder="请输入证书编号"
  2592. value={this.state.certificateNumber}
  2593. style={{ width: "200px" }}
  2594. onChange={(e) => {
  2595. this.setState({
  2596. certificateNumber: e.target.value,
  2597. });
  2598. }}
  2599. ref="commodityQuantity"
  2600. />
  2601. </FormItem>
  2602. </div>
  2603. <div className="clearfix">
  2604. <h3 className="sub-title">申报系统账户信息</h3>
  2605. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  2606. <FormItem
  2607. className="half-item"
  2608. {...formItemLayout}
  2609. label="用户名"
  2610. >
  2611. <Input
  2612. placeholder="请输入用户名"
  2613. value={this.state.declareUser}
  2614. style={{ width: "200px" }}
  2615. onChange={(e) => {
  2616. this.setState({ declareUser: e.target.value });
  2617. }}
  2618. />
  2619. </FormItem>
  2620. <FormItem
  2621. className="half-item"
  2622. {...formItemLayout}
  2623. label="密码"
  2624. >
  2625. <Input
  2626. placeholder="请输入密码"
  2627. value={this.state.declarePwd}
  2628. style={{ width: "200px" }}
  2629. onChange={(e) => {
  2630. this.setState({ declarePwd: e.target.value });
  2631. }}
  2632. />
  2633. </FormItem>
  2634. </div>
  2635. <div className="clearfix">
  2636. <h3 className="sub-title">项目申报进度</h3>
  2637. <FormItem
  2638. className="half-item"
  2639. {...formItemLayout}
  2640. label="申报批次"
  2641. >
  2642. <Select
  2643. value={
  2644. this.state.declarationBatch
  2645. ? this.state.declarationBatch
  2646. : undefined
  2647. }
  2648. placeholder="请选择批次"
  2649. style={{ width: 200 }}
  2650. onChange={(e) => {
  2651. this.setState({
  2652. declarationBatch: e,
  2653. });
  2654. }}
  2655. >
  2656. <Option value={1}>第一批</Option>
  2657. <Option value={2}>第二批</Option>
  2658. <Option value={3}>第三批</Option>
  2659. <Option value={4}>第四批</Option>
  2660. </Select>
  2661. </FormItem>
  2662. <FormItem
  2663. className="half-item"
  2664. {...formItemLayout}
  2665. label="启动时间"
  2666. >
  2667. <DatePicker
  2668. style={{
  2669. marginTop: "2px",
  2670. width: "200px",
  2671. height: "32px",
  2672. }}
  2673. showTime
  2674. format="YYYY-MM-DD"
  2675. onOk={() => {}}
  2676. value={
  2677. this.state.startDate
  2678. ? moment(this.state.startDate)
  2679. : null
  2680. }
  2681. onChange={(data, dataString) => {
  2682. this.setState({ startDate: dataString });
  2683. }}
  2684. />
  2685. </FormItem>
  2686. <FormItem
  2687. className="half-item"
  2688. {...formItemLayout}
  2689. label="完成时间"
  2690. >
  2691. <DatePicker
  2692. style={{
  2693. marginTop: "2px",
  2694. width: "200px",
  2695. height: "32px",
  2696. }}
  2697. showTime
  2698. format="YYYY-MM-DD"
  2699. onOk={() => {}}
  2700. value={
  2701. this.state.endDate
  2702. ? moment(this.state.endDate)
  2703. : null
  2704. }
  2705. onChange={(data, dataString) => {
  2706. this.setState({ endDate: dataString });
  2707. }}
  2708. />
  2709. </FormItem>
  2710. <FormItem
  2711. className="half-item"
  2712. {...formItemLayout}
  2713. label="受理时间"
  2714. >
  2715. <DatePicker
  2716. style={{
  2717. marginTop: "2px",
  2718. width: "200px",
  2719. height: "32px",
  2720. }}
  2721. showTime
  2722. format="YYYY-MM-DD"
  2723. onOk={() => {}}
  2724. value={
  2725. this.state.acceptDate
  2726. ? moment(this.state.acceptDate)
  2727. : null
  2728. }
  2729. onChange={(data, dataString) => {
  2730. this.setState({ acceptDate: dataString });
  2731. }}
  2732. />
  2733. </FormItem>
  2734. <FormItem
  2735. className="half-item"
  2736. {...formItemLayout}
  2737. label="评审时间"
  2738. >
  2739. <DatePicker
  2740. style={{
  2741. marginTop: "2px",
  2742. width: "200px",
  2743. height: "32px",
  2744. }}
  2745. showTime
  2746. format="YYYY-MM-DD"
  2747. onOk={() => {}}
  2748. value={
  2749. this.state.reviewDate
  2750. ? moment(this.state.reviewDate)
  2751. : null
  2752. }
  2753. onChange={(data, dataString) => {
  2754. this.setState({ reviewDate: dataString });
  2755. }}
  2756. />
  2757. </FormItem>
  2758. <FormItem
  2759. className="half-item"
  2760. {...formItemLayout}
  2761. label="公示时间"
  2762. >
  2763. <DatePicker
  2764. style={{
  2765. marginTop: "2px",
  2766. width: "200px",
  2767. height: "32px",
  2768. }}
  2769. showTime
  2770. format="YYYY-MM-DD"
  2771. onOk={() => {}}
  2772. value={
  2773. this.state.publicityDate
  2774. ? moment(this.state.publicityDate)
  2775. : null
  2776. }
  2777. onChange={(data, dataString) => {
  2778. this.setState({ publicityDate: dataString });
  2779. }}
  2780. />
  2781. </FormItem>
  2782. <FormItem
  2783. className="half-item"
  2784. {...formItemLayout}
  2785. label="发证时间"
  2786. >
  2787. <DatePicker
  2788. style={{
  2789. marginTop: "2px",
  2790. width: "200px",
  2791. height: "32px",
  2792. }}
  2793. showTime
  2794. format="YYYY-MM-DD"
  2795. onOk={() => {}}
  2796. value={
  2797. this.state.licenceDate
  2798. ? moment(this.state.licenceDate)
  2799. : null
  2800. }
  2801. onChange={(data, dataString) => {
  2802. this.setState({ licenceDate: dataString });
  2803. }}
  2804. />
  2805. </FormItem>
  2806. <FormItem
  2807. className="half-item"
  2808. {...formItemLayout}
  2809. label="立项金额(万元)"
  2810. >
  2811. <Input
  2812. placeholder="请输入立项金额"
  2813. value={this.state.setUpAmount}
  2814. style={{ width: "200px" }}
  2815. onChange={(e) => {
  2816. this.setState({ setUpAmount: e.target.value });
  2817. }}
  2818. ref="commodityQuantity"
  2819. />
  2820. </FormItem>
  2821. <FormItem
  2822. className="half-item"
  2823. {...formItemLayout}
  2824. label="是否到款"
  2825. >
  2826. <Radio.Group
  2827. value={this.state.arrivalMoney}
  2828. onChange={(e) => {
  2829. this.setState({ arrivalMoney: e.target.value });
  2830. }}
  2831. >
  2832. <Radio value={0}>未到企业</Radio>
  2833. <Radio value={1}>已到企业</Radio>
  2834. </Radio.Group>
  2835. </FormItem>
  2836. </div>
  2837. <div className="clearfix">
  2838. <FormItem
  2839. labelCol={{ span: 3 }}
  2840. wrapperCol={{ span: 16 }}
  2841. label="附件"
  2842. >
  2843. <Picture
  2844. fileList={(e) => {
  2845. this.setState({ attachmentUrl: e });
  2846. }}
  2847. pictureUrl={this.state.attachmentUrl}
  2848. visible={this.props.visible}
  2849. data={{
  2850. sign: "order_task_file",
  2851. url: "/api/admin/orderProject/uploadOrderTaskFile",
  2852. number: 8,
  2853. }}
  2854. />
  2855. </FormItem>
  2856. </div>
  2857. <div className="clearfix">
  2858. <FormItem
  2859. labelCol={{ span: 3 }}
  2860. wrapperCol={{ span: 16 }}
  2861. label="备注"
  2862. >
  2863. <Input
  2864. type="textarea"
  2865. placeholder="请输入备注"
  2866. rows={4}
  2867. value={this.state.taskComment}
  2868. onChange={(e) => {
  2869. this.setState({ taskComment: e.target.value });
  2870. }}
  2871. />
  2872. </FormItem>
  2873. </div>
  2874. <div>
  2875. <h3 className="sub-title">项目业务</h3>
  2876. {this.state.processStatus == 0 ? (
  2877. <Button
  2878. type="primary"
  2879. onClick={this.addDetailed}
  2880. style={{
  2881. float: "right",
  2882. marginRight: "50px",
  2883. marginBottom: "15px",
  2884. }}
  2885. >
  2886. 添加项目明细
  2887. </Button>
  2888. ) : (
  2889. ""
  2890. )}
  2891. </div>
  2892. <div className="patent-table">
  2893. <Spin spinning={this.state.loading}>
  2894. <Table
  2895. columns={this.state.columnsX}
  2896. dataSource={this.state.dataSourceX}
  2897. pagination={this.state.paginations}
  2898. onRowClick={this.tableRowClickX}
  2899. bordered
  2900. size="small"
  2901. />
  2902. </Spin>
  2903. </div>
  2904. <div className="clearfix">
  2905. <Button
  2906. className="cancel"
  2907. type="primary"
  2908. onClick={this.tijiaoOk}
  2909. style={{ marginLeft: "200px", marginTop: "10px" }}
  2910. htmlType="submit"
  2911. >
  2912. 保存
  2913. </Button>
  2914. <Button
  2915. className="cancel"
  2916. type="ghost"
  2917. onClick={this.visitCancel}
  2918. style={{ marginLeft: "50px", marginTop: "10px" }}
  2919. >
  2920. 取消
  2921. </Button>
  2922. </div>
  2923. </div>
  2924. </Spin>
  2925. </Form>
  2926. </TabPane>
  2927. <TabPane tab="外包接单公司信息" key="2">
  2928. {this.state.visible && this.state.modKey === '2'?<CheckProject
  2929. {...this.props}
  2930. tid={this.state.tid}
  2931. status={this.state.refundStatus}
  2932. projectType={this.state.projectType}
  2933. patentNameType={this.state.patentNameType}
  2934. patentName={this.state.patentName}
  2935. patentType={this.state.patentType}
  2936. isPreviewPay={true}
  2937. thirdInfoList={this.state.thirdInfoList}
  2938. dataSource={this.state.payNodeList}
  2939. outsourceRemarks={this.state.outsourceRemarks}
  2940. fileList={this.state.pictureUrl}
  2941. startType={this.state.startType}
  2942. projectStatus={this.state.projectStatus}
  2943. onRefresh={()=>{
  2944. this.waiDetail();
  2945. this.thirdTable(this.state.tid);
  2946. this.payNodeTable(this.state.tid)
  2947. this.loadData(this.state.page)
  2948. }}
  2949. />:<div/>}
  2950. </TabPane>
  2951. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  2952. <TabPane tab="订单详情" key="3">
  2953. <Spin spinning={this.state.loading}>
  2954. <OrderDetail
  2955. orderData={this.state.orderData}
  2956. getOrderLog={this.getOrderLog}
  2957. dataSourceX={this.state.dataSourceX}
  2958. contactList={this.state.jiedian}
  2959. orderNo={this.state.orderNo}
  2960. totalCui={this.state.totalCui}
  2961. contactListNew={this.state.jiedianNew}
  2962. pictureUrl={this.state.contractPictureUrl}
  2963. />
  2964. </Spin>
  2965. </TabPane>
  2966. ) : (
  2967. ""
  2968. )}
  2969. </Tabs>
  2970. </Modal>
  2971. <Modal
  2972. maskClosable={false}
  2973. visible={this.state.lookVisible}
  2974. onOk={this.noCancel}
  2975. onCancel={this.noCancel}
  2976. width="500px"
  2977. title={"添加工时"}
  2978. footer=""
  2979. className="admin-desc-content"
  2980. >
  2981. <Form layout="horizontal" id="demand-form">
  2982. <Spin spinning={this.state.loading}>
  2983. <div className="clearfix">
  2984. <FormItem {...formItemLayout} label="工作日期">
  2985. <DatePicker
  2986. style={{ marginTop: "2px", width: "200px", height: "32px" }}
  2987. showTime
  2988. format="YYYY-MM-DD"
  2989. onOk={() => {}}
  2990. value={
  2991. this.state.taskDate ? moment(this.state.taskDate) : null
  2992. }
  2993. onChange={(data, dataString) => {
  2994. this.setState({ taskDate: dataString });
  2995. }}
  2996. />
  2997. </FormItem>
  2998. </div>
  2999. <div className="clearfix">
  3000. <FormItem {...formItemLayout} label="工作时长">
  3001. <Input
  3002. placeholder="请输入工作时长"
  3003. value={this.state.hours}
  3004. style={{ width: "200px" }}
  3005. onChange={(e) => {
  3006. this.setState({ hours: e.target.value });
  3007. }}
  3008. ref="commodityQuantity"
  3009. />
  3010. </FormItem>
  3011. </div>
  3012. <div className="clearfix">
  3013. <FormItem {...formItemLayout} label="工作内容">
  3014. <Input
  3015. type="textarea"
  3016. placeholder="请输入备注"
  3017. rows={4}
  3018. value={this.state.remarks}
  3019. onChange={(e) => {
  3020. this.setState({ remarks: e.target.value });
  3021. }}
  3022. />
  3023. </FormItem>
  3024. </div>
  3025. <div className="clearfix">
  3026. <Button
  3027. className="cancel"
  3028. type="primary"
  3029. onClick={this.tianjiaOk}
  3030. style={{ marginLeft: "100px", marginTop: "10px" }}
  3031. htmlType="submit"
  3032. >
  3033. 确定
  3034. </Button>
  3035. <Button
  3036. className="cancel"
  3037. type="ghost"
  3038. onClick={this.noCancel}
  3039. style={{ marginLeft: "50px" }}
  3040. >
  3041. 取消
  3042. </Button>
  3043. </div>
  3044. </Spin>
  3045. </Form>
  3046. </Modal>
  3047. <Modal
  3048. maskClosable={false}
  3049. visible={this.state.addnextVisible}
  3050. onOk={this.nextCancel}
  3051. onCancel={this.nextCancel}
  3052. width="800px"
  3053. title="项目项目详情"
  3054. footer=""
  3055. className="admin-desc-content"
  3056. >
  3057. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  3058. <Spin spinning={this.state.loading}>
  3059. <div className="clearfix">
  3060. <FormItem
  3061. className="half-item"
  3062. {...formItemLayout}
  3063. label="项目名称"
  3064. >
  3065. <span>{this.state.commodityName}</span>
  3066. </FormItem>
  3067. <FormItem
  3068. className="half-item"
  3069. {...formItemLayout}
  3070. label="项目数量"
  3071. >
  3072. <span>{this.state.commodityQuantity}</span>
  3073. </FormItem>
  3074. <FormItem
  3075. className="half-item"
  3076. {...formItemLayout}
  3077. label="金额(万元)"
  3078. >
  3079. <span>{this.state.commodityPrice}</span>
  3080. </FormItem>
  3081. <FormItem
  3082. className="half-item"
  3083. {...formItemLayout}
  3084. label="主要项目"
  3085. >
  3086. <span>{getboutique(this.state.main)}</span>
  3087. </FormItem>
  3088. <div className="clearfix">
  3089. <FormItem
  3090. labelCol={{ span: 3 }}
  3091. wrapperCol={{ span: 18 }}
  3092. label="服务说明"
  3093. >
  3094. <span>{this.state.taskComment}</span>
  3095. </FormItem>
  3096. </div>
  3097. </div>
  3098. </Spin>
  3099. </Form>
  3100. </Modal>
  3101. <Modal
  3102. maskClosable={false}
  3103. visible={this.state.speVisible}
  3104. onOk={this.visitOk}
  3105. onCancel={this.visitCancel}
  3106. width="900px"
  3107. title=""
  3108. footer=""
  3109. className="admin-desc-content"
  3110. >
  3111. <Tabs
  3112. activeKey={this.state.modKey}
  3113. onChange={this.callBack}
  3114. type="card"
  3115. >
  3116. <TabPane tab="项目概况" key="1">
  3117. <div className="clearfix">
  3118. <FormItem
  3119. className="half-item"
  3120. {...formItemLayout}
  3121. label="当前项目情况"
  3122. >
  3123. <Radio.Group
  3124. value={this.state.status}
  3125. onChange={(e) => {
  3126. this.setState({ status: e.target.value });
  3127. }}
  3128. >
  3129. <Radio value={0}>开启</Radio>
  3130. <Radio value={1}>暂停</Radio>
  3131. </Radio.Group>
  3132. <Button
  3133. type="primary"
  3134. size="small"
  3135. style={{ marginTop: "5px", position: "absolute" }}
  3136. onClick={this.caozuorizhi}
  3137. >
  3138. 操作日志
  3139. </Button>
  3140. </FormItem>
  3141. <FormItem
  3142. className="half-item"
  3143. {...formItemLayout}
  3144. label="合同编号"
  3145. >
  3146. <span>{this.state.contractNo}</span>
  3147. </FormItem>
  3148. </div>
  3149. <div className="clearfix">
  3150. <FormItem
  3151. className="half-item"
  3152. {...formItemLayout}
  3153. label="项目状态"
  3154. >
  3155. <Select
  3156. placeholder="选择项目状态"
  3157. style={{ width: "200px" }}
  3158. value={this.state.projectStatus}
  3159. onChange={(e) => {
  3160. this.setState({ projectStatus: e });
  3161. }}
  3162. >
  3163. {projectStatus.map(function (item) {
  3164. return (
  3165. <Select.Option key={item.value}>
  3166. {item.key}
  3167. </Select.Option>
  3168. );
  3169. })}
  3170. </Select>
  3171. </FormItem>
  3172. <FormItem
  3173. className="half-item"
  3174. {...formItemLayout}
  3175. label="是否特批"
  3176. >
  3177. <span>{getApproval(this.state.approval)}</span>
  3178. </FormItem>
  3179. <FormItem
  3180. className="half-item"
  3181. {...formItemLayout}
  3182. label="结算状态"
  3183. >
  3184. <span>
  3185. {getLiquidationStatus(this.state.liquidationStatus)}
  3186. </span>
  3187. </FormItem>
  3188. <FormItem
  3189. className="half-item"
  3190. {...formItemLayout}
  3191. label="流程状态"
  3192. >
  3193. <span>{getProcessStatus(this.state.processStatus)}</span>
  3194. </FormItem>
  3195. <FormItem
  3196. className="half-item"
  3197. {...formItemLayout}
  3198. label="订单编号"
  3199. >
  3200. <span>{this.state.orderNo}</span>
  3201. </FormItem>
  3202. </div>
  3203. <div className="clearfix">
  3204. <FormItem
  3205. className="half-item"
  3206. {...formItemLayout}
  3207. label="满意度表格"
  3208. >
  3209. <Radio.Group
  3210. value={this.state.formRetrieve}
  3211. onChange={(e) => {
  3212. this.setState({ formRetrieve: e.target.value });
  3213. }}
  3214. >
  3215. <Radio value={0}>未收回</Radio>
  3216. <Radio value={1}>已收回</Radio>
  3217. <Radio value={2}>其他</Radio>
  3218. </Radio.Group>
  3219. </FormItem>
  3220. <FormItem
  3221. className="half-item"
  3222. {...formItemLayout}
  3223. label="退单"
  3224. >
  3225. <Radio.Group
  3226. value={this.state.taskRefund}
  3227. onChange={(e) => {
  3228. this.setState({ taskRefund: e.target.value });
  3229. }}
  3230. >
  3231. <Radio value={0}>已完成</Radio>
  3232. <Radio value={1}>未完成</Radio>
  3233. <Radio value={2}>其他</Radio>
  3234. </Radio.Group>
  3235. </FormItem>
  3236. </div>
  3237. <div className="clearfix">
  3238. {
  3239. <FormItem
  3240. className="half-item"
  3241. {...formItemLayout}
  3242. label="(满意度)备注"
  3243. >
  3244. <Input
  3245. type="textarea"
  3246. placeholder="请输入备注"
  3247. rows={2}
  3248. value={this.state.retrieveContent}
  3249. onChange={(e) => {
  3250. this.setState({ retrieveContent: e.target.value });
  3251. }}
  3252. />
  3253. </FormItem>
  3254. }
  3255. {
  3256. <FormItem
  3257. className="half-item"
  3258. {...formItemLayout}
  3259. label="(退单)备注"
  3260. >
  3261. <Input
  3262. type="textarea"
  3263. placeholder="请输入备注"
  3264. rows={2}
  3265. value={this.state.refundContent}
  3266. onChange={(e) => {
  3267. this.setState({ refundContent: e.target.value });
  3268. }}
  3269. />
  3270. </FormItem>
  3271. }
  3272. </div>
  3273. <div className="clearfix">
  3274. <h3 className="sub-title">订单负责人信息</h3>
  3275. <FormItem
  3276. className="half-item"
  3277. {...formItemLayout}
  3278. label="负责人"
  3279. >
  3280. <span>
  3281. {this.state.salesmanName + "(" + this.state.depName + ")"}
  3282. </span>
  3283. </FormItem>
  3284. <FormItem
  3285. className="half-item"
  3286. {...formItemLayout}
  3287. label="负责人电话"
  3288. >
  3289. <span>{this.state.salesmanMobile}</span>
  3290. </FormItem>
  3291. <FormItem
  3292. className="half-item"
  3293. {...formItemLayout}
  3294. label="财务负责人"
  3295. >
  3296. <span>{this.state.financeName}</span>
  3297. </FormItem>
  3298. <FormItem
  3299. className="half-item"
  3300. {...formItemLayout}
  3301. label="财务负责人电话"
  3302. >
  3303. <span>{this.state.financeMobile}</span>
  3304. </FormItem>
  3305. </div>
  3306. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  3307. <div className="clearfix">
  3308. <h3 className="sub-title">联系信息</h3>
  3309. <FormItem
  3310. className="half-item"
  3311. {...formItemLayout}
  3312. label="客户名称"
  3313. >
  3314. <span>{this.state.userName}</span>
  3315. </FormItem>
  3316. <FormItem
  3317. className="half-item"
  3318. {...formItemLayout}
  3319. label="企业法人"
  3320. >
  3321. <Input
  3322. placeholder="请输入法人名称"
  3323. value={this.state.legalPerson}
  3324. style={{ width: "200px" }}
  3325. onChange={(e) => {
  3326. this.setState({ legalPerson: e.target.value });
  3327. }}
  3328. ref="commodityQuantity"
  3329. />
  3330. </FormItem>
  3331. <FormItem
  3332. className="half-item"
  3333. {...formItemLayout}
  3334. label="法人电话"
  3335. >
  3336. <Input
  3337. placeholder="请输入法人电话"
  3338. value={this.state.legalPersonTel}
  3339. style={{ width: "200px" }}
  3340. onChange={(e) => {
  3341. this.setState({ legalPersonTel: e.target.value });
  3342. }}
  3343. ref="commodityQuantity"
  3344. />
  3345. </FormItem>
  3346. <FormItem
  3347. className="half-item"
  3348. {...formItemLayout}
  3349. label="客户联系人"
  3350. >
  3351. <Input
  3352. placeholder="请输入联系人名称"
  3353. value={this.state.contacts}
  3354. style={{ width: "200px" }}
  3355. onChange={(e) => {
  3356. this.setState({ contacts: e.target.value });
  3357. }}
  3358. ref="commodityQuantity"
  3359. />
  3360. </FormItem>
  3361. <FormItem
  3362. className="half-item"
  3363. {...formItemLayout}
  3364. label="联系人电话"
  3365. >
  3366. <Input
  3367. placeholder="请输入联系人电话"
  3368. value={this.state.contactMobile}
  3369. style={{ width: "200px" }}
  3370. onChange={(e) => {
  3371. this.setState({ contactMobile: e.target.value });
  3372. }}
  3373. ref="commodityQuantity"
  3374. />
  3375. </FormItem>
  3376. <FormItem
  3377. className="half-item"
  3378. {...formItemLayout}
  3379. label="企业地址"
  3380. >
  3381. <Cascader
  3382. options={areaSelect()}
  3383. value={this.state.ProvinceCity}
  3384. placeholder="选择城市"
  3385. style={{ width: "200px" }}
  3386. onChange={(e) => {
  3387. this.setState({ ProvinceCity: e });
  3388. }}
  3389. />
  3390. </FormItem>
  3391. <FormItem
  3392. className="half-item"
  3393. {...formItemLayout}
  3394. label=""
  3395. ></FormItem>
  3396. <FormItem className="half-item" {...formItemLayout} label="">
  3397. <Input
  3398. placeholder="请输入详细地址"
  3399. value={this.state.postalAddress}
  3400. style={{ width: "200px", marginLeft: "12em" }}
  3401. onChange={(e) => {
  3402. this.setState({ postalAddress: e.target.value });
  3403. }}
  3404. ref="commodityQuantity"
  3405. />
  3406. </FormItem>
  3407. </div>
  3408. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  3409. <div className="clearfix">
  3410. <h3 className="sub-title">项目信息</h3>
  3411. <FormItem
  3412. className="half-item"
  3413. {...formItemLayout}
  3414. label="项目编号"
  3415. >
  3416. <span>{this.state.id}</span>
  3417. </FormItem>
  3418. <FormItem
  3419. className="half-item"
  3420. {...formItemLayout}
  3421. label="项目名称"
  3422. >
  3423. <span>{this.state.taskName}</span>
  3424. </FormItem>
  3425. <FormItem
  3426. className="half-item"
  3427. {...formItemLayout}
  3428. label="项目状态"
  3429. >
  3430. <Select
  3431. placeholder="选择项目状态"
  3432. style={{ width: "200px" }}
  3433. value={this.state.taskStatus}
  3434. onChange={(e) => {
  3435. this.setState({ taskStatus: e });
  3436. }}
  3437. >
  3438. {taskStatus.map(function (item) {
  3439. return (
  3440. <Select.Option key={item.value}>
  3441. {item.key}
  3442. </Select.Option>
  3443. );
  3444. })}
  3445. </Select>
  3446. </FormItem>
  3447. <FormItem
  3448. className="half-item"
  3449. {...formItemLayout}
  3450. label="项目类别"
  3451. >
  3452. <span>{this.state.cname}</span>
  3453. </FormItem>
  3454. <FormItem
  3455. className="half-item"
  3456. {...formItemLayout}
  3457. label="证书编号"
  3458. >
  3459. <Input
  3460. placeholder="请输入证书编号"
  3461. value={this.state.certificateNumber}
  3462. style={{ width: "200px" }}
  3463. onChange={(e) => {
  3464. this.setState({ certificateNumber: e.target.value });
  3465. }}
  3466. ref="commodityQuantity"
  3467. />
  3468. </FormItem>
  3469. </div>
  3470. <div className="clearfix" style={{ marginTop: "10px" }}>
  3471. <FormItem
  3472. labelCol={{ span: 3 }}
  3473. wrapperCol={{ span: 14 }}
  3474. label="附件"
  3475. >
  3476. <Picture
  3477. fileList={(e) => {
  3478. this.setState({ attachmentUrl: e });
  3479. }}
  3480. pictureUrl={this.state.attachmentUrl}
  3481. visible={this.props.visible}
  3482. data={{
  3483. sign: "order_task_file",
  3484. url: "/api/admin/orderProject/uploadOrderTaskFile",
  3485. number: 8,
  3486. }}
  3487. />
  3488. </FormItem>
  3489. </div>
  3490. <div className="clearfix">
  3491. <FormItem
  3492. labelCol={{ span: 3 }}
  3493. wrapperCol={{ span: 16 }}
  3494. label="备注"
  3495. >
  3496. <Input
  3497. type="textarea"
  3498. placeholder="请输入备注"
  3499. rows={4}
  3500. value={this.state.taskComment}
  3501. onChange={(e) => {
  3502. this.setState({ taskComment: e.target.value });
  3503. }}
  3504. />
  3505. </FormItem>
  3506. </div>
  3507. <div className="clearfix">
  3508. <h3 className="sub-title">项目申报进度</h3>
  3509. <FormItem
  3510. className="half-item"
  3511. {...formItemLayout}
  3512. label="申报批次"
  3513. >
  3514. <Select
  3515. value={
  3516. this.state.declarationBatch
  3517. ? this.state.declarationBatch
  3518. : undefined
  3519. }
  3520. placeholder="请选择批次"
  3521. style={{ width: 200 }}
  3522. onChange={(e) => {
  3523. this.setState({
  3524. declarationBatch: e,
  3525. });
  3526. }}
  3527. >
  3528. <Option value={1}>第一批</Option>
  3529. <Option value={2}>第二批</Option>
  3530. <Option value={3}>第三批</Option>
  3531. <Option value={4}>第四批</Option>
  3532. </Select>
  3533. </FormItem>
  3534. <FormItem
  3535. className="half-item"
  3536. {...formItemLayout}
  3537. label="启动时间"
  3538. >
  3539. <DatePicker
  3540. style={{ marginTop: "5px" }}
  3541. showTime
  3542. format="YYYY-MM-DD"
  3543. onOk={() => {}}
  3544. value={
  3545. this.state.startDate ? moment(this.state.startDate) : null
  3546. }
  3547. onChange={(data, dataString) => {
  3548. this.setState({ startDate: dataString });
  3549. }}
  3550. />
  3551. </FormItem>
  3552. <FormItem
  3553. className="half-item"
  3554. {...formItemLayout}
  3555. label="软著派单数量"
  3556. >
  3557. <span>{this.state.commodityQuantity}</span>
  3558. <Button
  3559. type="primary"
  3560. size="small"
  3561. style={{ marginLeft: "45px" }}
  3562. onClick={this.addcontact}
  3563. >
  3564. +增加下证信息
  3565. </Button>
  3566. </FormItem>
  3567. <div className="patent-table">
  3568. <Spin spinning={this.state.loading}>
  3569. <Table
  3570. columns={this.state.ContactsLists}
  3571. dataSource={this.state.contactList}
  3572. pagination={false}
  3573. bordered
  3574. size="small"
  3575. />
  3576. </Spin>
  3577. </div>
  3578. </div>
  3579. <div className="clearfix">
  3580. <h3 className="sub-title">项目业务</h3>
  3581. <div className="patent-table">
  3582. <Spin spinning={this.state.loading}>
  3583. <Table
  3584. columns={this.state.columnsX}
  3585. dataSource={this.state.dataSourceX}
  3586. pagination={this.state.paginations}
  3587. onRowClick={this.tableRowClickX}
  3588. bordered
  3589. size="small"
  3590. />
  3591. </Spin>
  3592. </div>
  3593. </div>
  3594. <div className="clearfix">
  3595. <Button
  3596. className="cancel"
  3597. type="primary"
  3598. onClick={this.tijiaoOk}
  3599. style={{ marginLeft: "200px", marginTop: "10px" }}
  3600. htmlType="submit"
  3601. >
  3602. 保存
  3603. </Button>
  3604. <Button
  3605. className="cancel"
  3606. type="ghost"
  3607. onClick={this.visitCancel}
  3608. style={{ marginLeft: "50px", marginTop: "10px" }}
  3609. >
  3610. 取消
  3611. </Button>
  3612. </div>
  3613. </TabPane>
  3614. <TabPane tab="外包接单公司信息" key="2">
  3615. {/*<Button type="primary" onClick={this.addCompany} style={{float:'right',marginBottom:'10px'}}>+新增接单公司</Button>*/}
  3616. {
  3617. <div className="clearfix">
  3618. <h3 className="sub-title" style={{ marginBottom: "10px" }}>
  3619. 新增(编辑)接单公司
  3620. </h3>
  3621. <FormItem
  3622. className="three-item"
  3623. {...formItemLayout}
  3624. label={
  3625. <span>
  3626. <strong style={{ color: "#f00" }}>*</strong>公司名称
  3627. </span>
  3628. }
  3629. >
  3630. <Input
  3631. placeholder="请输入公司名称"
  3632. value={this.state.cName}
  3633. style={{ width: "200px" }}
  3634. onChange={(e) => {
  3635. this.setState({ cName: e.target.value });
  3636. }}
  3637. className="height-input"
  3638. />
  3639. </FormItem>
  3640. <FormItem
  3641. className="three-item"
  3642. {...formItemLayout}
  3643. label={
  3644. <span>
  3645. <strong style={{ color: "#f00" }}>*</strong>联系人
  3646. </span>
  3647. }
  3648. >
  3649. <Input
  3650. placeholder="请输入联系人名称"
  3651. value={this.state.companyContacts}
  3652. style={{ width: "200px" }}
  3653. onChange={(e) => {
  3654. this.setState({ companyContacts: e.target.value });
  3655. }}
  3656. className="height-input"
  3657. />
  3658. </FormItem>
  3659. <FormItem
  3660. className="three-item"
  3661. {...formItemLayout}
  3662. label={
  3663. <span>
  3664. <strong style={{ color: "#f00" }}>*</strong>联系人电话
  3665. </span>
  3666. }
  3667. >
  3668. <Input
  3669. placeholder="请输入联系人电话"
  3670. value={this.state.companyContactsMobile}
  3671. style={{ width: "200px" }}
  3672. onChange={(e) => {
  3673. this.setState({
  3674. companyContactsMobile: e.target.value,
  3675. });
  3676. }}
  3677. className="height-input"
  3678. />
  3679. </FormItem>
  3680. <FormItem
  3681. className="three-item"
  3682. {...formItemLayout}
  3683. label="企业地址"
  3684. >
  3685. <Cascader
  3686. options={areaSelect()}
  3687. value={this.state.companyProvinceArr}
  3688. placeholder="选择城市"
  3689. style={{ width: "200px" }}
  3690. onChange={(e) => {
  3691. this.setState({ companyProvinceArr: e });
  3692. }}
  3693. />
  3694. </FormItem>
  3695. <FormItem className="three-item" {...formItemLayout} label="">
  3696. <Input
  3697. placeholder="请输入详细地址"
  3698. value={this.state.companyAddress}
  3699. style={{ width: "200px", marginLeft: "12em" }}
  3700. onChange={(e) => {
  3701. this.setState({ companyAddress: e.target.value });
  3702. }}
  3703. className="height-input"
  3704. />
  3705. </FormItem>
  3706. <FormItem
  3707. className="three-item"
  3708. {...formItemLayout}
  3709. label=""
  3710. ></FormItem>
  3711. <div className="clearfix">
  3712. <FormItem
  3713. labelCol={{ span: 3 }}
  3714. wrapperCol={{ span: 16 }}
  3715. label="备注"
  3716. >
  3717. <Input
  3718. type="textarea"
  3719. placeholder="请输入备注"
  3720. rows={4}
  3721. value={this.state.companyRemarks}
  3722. onChange={(e) => {
  3723. this.setState({ companyRemarks: e.target.value });
  3724. }}
  3725. />
  3726. </FormItem>
  3727. </div>
  3728. <Button
  3729. type="primary"
  3730. style={{
  3731. float: "right",
  3732. marginTop: "10px",
  3733. marginRight: "50px",
  3734. }}
  3735. onClick={() => {
  3736. this.saveCompany(this.state.companyId);
  3737. }}
  3738. >
  3739. 保存
  3740. </Button>
  3741. </div>
  3742. }
  3743. <p style={{ color: "red" }}>
  3744. 提示:查看备注请点击表格左侧加号按钮~
  3745. </p>
  3746. <div className="patent-table" style={{ marginTop: "10px" }}>
  3747. <Spin spinning={this.state.loading}>
  3748. <Table
  3749. columns={this.state.companyColumns}
  3750. dataSource={this.state.companys}
  3751. scroll={{ x: 300, y: 0 }}
  3752. expandedRowRender={(record) => {
  3753. return <p>{record.remarks}</p>;
  3754. }}
  3755. bordered
  3756. size="small"
  3757. pagination={false}
  3758. />
  3759. </Spin>
  3760. </div>
  3761. </TabPane>
  3762. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  3763. <TabPane tab="订单详情" key="3">
  3764. <Spin spinning={this.state.loading}>
  3765. <OrderDetail
  3766. orderData={this.state.orderData}
  3767. getOrderLog={this.getOrderLog}
  3768. dataSourceX={this.state.dataSourceX}
  3769. contactList={this.state.jiedian}
  3770. orderNo={this.state.orderNo}
  3771. totalCui={this.state.totalCui}
  3772. contactListNew={this.state.jiedianNew}
  3773. pictureUrl={this.state.contractPictureUrl}
  3774. />
  3775. </Spin>
  3776. <OrderRiZi
  3777. dataSourcerizhi={this.state.dataSourceY}
  3778. closeOrderLog={this.closeOrderLog}
  3779. visible={this.state.avisible}
  3780. loading={this.state.loading}
  3781. />
  3782. </TabPane>
  3783. ) : (
  3784. ""
  3785. )}
  3786. </Tabs>
  3787. </Modal>
  3788. {/* <Modal
  3789. width="800px"
  3790. visible={this.state.visibleA}
  3791. onCancel={this.visitCancelA}
  3792. title="操作日志"
  3793. footer=""
  3794. className="admin-desc-content"
  3795. >
  3796. <div className="patent-table patent-table-center">
  3797. <Spin spinning={this.state.loading}>
  3798. <Table
  3799. columns={this.state.columnsA}
  3800. dataSource={this.state.dataSourceA}
  3801. pagination={false}
  3802. />
  3803. </Spin>
  3804. </div>
  3805. </Modal> */}
  3806. <OrderRiZi
  3807. dataSourcerizhi={this.state.dataSourceA}
  3808. closeOrderLog={this.visitCancelA}
  3809. visible={this.state.visibleA}
  3810. loading={this.state.loading}
  3811. />
  3812. <Modal
  3813. title="工时记录"
  3814. visible={this.state.timeVisible}
  3815. onCancel={this.timeClose}
  3816. width={800}
  3817. footer={null}
  3818. >
  3819. <Spin spinning={this.state.loading}>
  3820. <Table
  3821. columns={this.state.columnsTime}
  3822. dataSource={this.state.dataSourceTime}
  3823. pagination={false}
  3824. scroll={{ x: "max-content", y: 0 }}
  3825. bordered
  3826. size={"small"}
  3827. />
  3828. <p style={{ marginTop: 10, color: "red" }}>
  3829. 累计工时(小时):{this.state.recordHour}
  3830. </p>
  3831. </Spin>
  3832. </Modal>
  3833. </div>
  3834. );
  3835. },
  3836. });
  3837. export default MyTaskOutsource;