myTask.jsx 178 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296
  1. import React from 'react'
  2. import $ from 'jquery'
  3. import moment from 'moment'
  4. import Picture from '@/manageCenter/publicComponent/picture'
  5. import '@/manageCenter/financialManage/distribute/public.less'
  6. import '@/manageCenter/financialManage/distribute/shouKuan.less'
  7. import OrderDetail from '../../order/orderNew/changeComponent/orderDetail'
  8. import ResolutionDetail from '@/resolutionDetail'
  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. Switch,
  23. Tabs,
  24. Col,
  25. Icon,
  26. Upload,
  27. AutoComplete,
  28. Tag,
  29. } from 'antd'
  30. import Assign from '@/manageCenter/publicComponent/assign'
  31. import { areaSelect } from '@/NewDicProvinceList'
  32. import { ChooseList } from '../../order/orderNew/chooseList'
  33. import OrderRiZi from '@/orderRiZi.jsx'
  34. import './table.less'
  35. import {
  36. getMaterialStatus,
  37. getUrgentStatus,
  38. getProcessStatus,
  39. getApproval,
  40. getTaskStatus,
  41. getLiquidationStatus,
  42. getProjectStatus,
  43. splitUrl,
  44. getboutique,
  45. ShowModal,
  46. getRefundStatus,
  47. } from '@/tools'
  48. import { taskStatus, projectStatus, cuiJieDian } from '@/dataDic.js'
  49. import ShowModalDiv from '@/showModal.jsx'
  50. const confirm = Modal.confirm
  51. const FormItem = Form.Item
  52. const { TabPane } = Tabs
  53. const { TextArea } = Input
  54. const { Option } = Select
  55. const { MonthPicker, RangePicker } = DatePicker
  56. const PicturesWall = React.createClass({
  57. getInitialState() {
  58. return {
  59. previewVisible: false,
  60. previewImage: '',
  61. fileList: [],
  62. }
  63. },
  64. handleCancel() {
  65. this.setState({
  66. previewVisible: false,
  67. })
  68. },
  69. handlePreview(file) {
  70. this.setState({
  71. previewImage: file.url || file.thumbUrl,
  72. previewVisible: true,
  73. })
  74. },
  75. handleChange(info) {
  76. let fileList = info.fileList
  77. this.setState({
  78. fileList,
  79. })
  80. this.props.fileList(fileList)
  81. },
  82. componentWillReceiveProps(nextProps) {
  83. this.state.fileList = nextProps.pictureUrl
  84. this.state.pojectApplicationUrl = undefined
  85. },
  86. render() {
  87. const { previewVisible, previewImage, fileList } = this.state
  88. const uploadButton = (
  89. <div>
  90. <Icon type="plus" />
  91. <div className="ant-upload-text">点击上传</div>
  92. </div>
  93. )
  94. return (
  95. <div style={{ display: 'inline-block' }}>
  96. <Upload
  97. action={
  98. globalConfig.context + '/api/admin/outsourceOrg/uploadOutsourceFile'
  99. }
  100. data={{ sign: 'order_outsource' }}
  101. listType="picture-card"
  102. fileList={fileList}
  103. onPreview={this.handlePreview}
  104. onChange={this.handleChange}
  105. >
  106. {fileList && fileList.length >= 10 ? null : uploadButton}
  107. </Upload>
  108. <Modal
  109. maskClosable={false}
  110. visible={previewVisible}
  111. footer={null}
  112. onCancel={this.handleCancel}
  113. >
  114. <img alt="example" style={{ width: '100%' }} src={previewImage} />
  115. </Modal>
  116. </div>
  117. )
  118. },
  119. })
  120. const Task = React.createClass({
  121. loadData(pageNo) {
  122. this.state.data = []
  123. this.setState({
  124. page: pageNo,
  125. loading: true,
  126. })
  127. $.ajax({
  128. method: 'get',
  129. dataType: 'json',
  130. crossDomain: false,
  131. url: globalConfig.context + '/api/admin/orderProject/orderTaskList',
  132. data: {
  133. pageNo: pageNo || 1,
  134. pageSize: this.state.pagination.pageSize,
  135. specially: 0, //个人
  136. name: this.state.nameSearch, //客户名称
  137. depId: this.state.departmenttSearch, //订单部门
  138. orderNo: this.state.orderNoSearch, //订单编号
  139. contractNo: this.state.contractNoSearch, //合同编号
  140. taskId: this.state.taskNoSearch, //项目编号
  141. taskStatus: this.state.taskStatuSearch, //项目状态
  142. projectStatus: this.state.projectStatusSearch, //项目状态
  143. adminName: this.state.adminName, //项目受理人
  144. approval: this.state.approvalSearch, //特批状态搜索
  145. outsourceStatus:
  146. this.state.outsourceStatusSearch >= 999
  147. ? undefined
  148. : this.state.outsourceStatusSearch, //外包状态搜索
  149. },
  150. success: function (data) {
  151. ShowModal(this)
  152. let theArr = []
  153. if (!data.data || !data.data.list) {
  154. if (data.error && data.error.length) {
  155. message.warning(data.error[0].message)
  156. }
  157. } else {
  158. for (let i = 0; i < data.data.list.length; i++) {
  159. let thisdata = data.data.list[i]
  160. theArr.push({
  161. key: i,
  162. orderNo: thisdata.orderNo, //订单编号
  163. id: thisdata.id, //项目ID
  164. taskName: thisdata.taskName, //名称
  165. cname: thisdata.cname, //项目品类
  166. receiverName: thisdata.receiverName, //受理人
  167. projectStatus: thisdata.projectStatus, //项目状态
  168. taskStatus: thisdata.taskStatus, //项目状态
  169. taskDate: thisdata.taskDate, //分配时间
  170. userName:
  171. thisdata.taskName.substring(0, 5) === '软件著作权'
  172. ? thisdata.userName +
  173. '(' +
  174. thisdata.commodityQuantity.toString() +
  175. '/' +
  176. thisdata.alreadyNumber +
  177. ')'
  178. : thisdata.userName, //用户名
  179. depName: thisdata.depName, //部门名称
  180. commodityQuantity: thisdata.commodityQuantity, //项目数量
  181. hours: thisdata.hours,
  182. contractNo: thisdata.contractNo,
  183. approval: thisdata.approval, //特批状态
  184. outsourceStatus: thisdata.outsourceStatus, //外包审核状态
  185. splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目
  186. splitSuper: thisdata.splitSuper,
  187. splitId: thisdata.splitId,
  188. })
  189. }
  190. }
  191. this.state.pagination.current = data.data.pageNo
  192. this.state.pagination.total = data.data.totalCount
  193. if (data.data && data.data.list && !data.data.list.length) {
  194. this.state.pagination.current = 0
  195. this.state.pagination.total = 0
  196. }
  197. this.setState({
  198. dataSource: theArr,
  199. pagination: this.state.pagination,
  200. })
  201. }.bind(this),
  202. }).always(
  203. function () {
  204. this.setState({
  205. loading: false,
  206. })
  207. }.bind(this)
  208. )
  209. },
  210. getInitialState() {
  211. return {
  212. PayNodeCompany:[],
  213. thirdMaterial: 0, //第三方信息材料 0-无 1-有
  214. thirdUrgent: 0, //第三方信息加急状态
  215. thirdCompanyName: '',
  216. thirdUnitPrice: '',
  217. thirdQuantity: 1,
  218. payNodeQuantity: 1,
  219. thirdRemarks: '',
  220. customerArr: [],
  221. currentTotalPrice: 0, //当前修改页面的总价
  222. saveThirdList: [],
  223. orderData: [],
  224. orderNo: '',
  225. jiedian: [],
  226. jiedianNew: [],
  227. timeVisible: false,
  228. ThirdListVisible: false,
  229. PayNodeVisible: false, //新增付款节点
  230. searchMore: true,
  231. assignVisible: false,
  232. releaseDate: [],
  233. // 判断是否是退回给咨询师经理
  234. flag: false,
  235. roleName: '',
  236. activeKey: '1',
  237. //特批状态搜索
  238. approvalSearch: undefined,
  239. testFlag: true,
  240. boHuivisible: false,
  241. selectedRowKeys: [],
  242. avisible: false,
  243. departmentArr: [],
  244. selectedRows: [],
  245. attachmentUrl: [],
  246. contactList: [],
  247. paginations: false,
  248. loading: false,
  249. pagination: {
  250. defaultCurrent: 1,
  251. defaultPageSize: 10,
  252. showQuickJumper: true,
  253. pageSize: 10,
  254. onChange: function (page) {
  255. this.loadData(page)
  256. }.bind(this),
  257. showTotal: function (total) {
  258. return '共' + total + '条数据'
  259. },
  260. },
  261. // 子组件改变的表格title数组
  262. changeList: undefined,
  263. columnsTime: [
  264. {
  265. title: '工作时长(小时)',
  266. dataIndex: 'hours',
  267. key: 'hours',
  268. },
  269. {
  270. title: '工作时间',
  271. dataIndex: 'taskDays',
  272. key: 'taskDays',
  273. },
  274. // {
  275. // title: "项目负责人",
  276. // dataIndex: "remarks",
  277. // key: "remarks"
  278. // },
  279. {
  280. title: '备注',
  281. dataIndex: 'remarks',
  282. key: 'remarks',
  283. },
  284. ],
  285. columns: [
  286. {
  287. title: '项目编号',
  288. dataIndex: 'id',
  289. key: 'id',
  290. render: (text, record) => {
  291. if (record.splitStatus == 2) {
  292. return <span>{record.splitSuper + '-' + record.splitId}</span>
  293. } else {
  294. return text
  295. }
  296. },
  297. },
  298. {
  299. title: '项目名称',
  300. dataIndex: 'taskName',
  301. key: 'taskName',
  302. render: (text) => {
  303. return text && text.length > 8 ? text.substr(0, 8) + '…' : text
  304. },
  305. },
  306. {
  307. title: '项目数量',
  308. dataIndex: 'commodityQuantity',
  309. key: 'commodityQuantity',
  310. },
  311. {
  312. title: '订单编号',
  313. dataIndex: 'orderNo',
  314. key: 'orderNo',
  315. },
  316. {
  317. title: '合同编号',
  318. dataIndex: 'contractNo',
  319. key: 'contractNo',
  320. },
  321. {
  322. title: '业务类别',
  323. dataIndex: 'cname',
  324. key: 'cname',
  325. },
  326. {
  327. title: '客户名称',
  328. dataIndex: 'userName',
  329. key: 'userName',
  330. className: 'userName',
  331. },
  332. {
  333. title: '分配状态',
  334. dataIndex: 'taskStatus',
  335. key: 'taskStatus',
  336. render: (text) => {
  337. return getTaskStatus(text)
  338. },
  339. },
  340. {
  341. title: '项目状态',
  342. dataIndex: 'projectStatus',
  343. key: 'projectStatus',
  344. render: (text) => {
  345. return getProjectStatus(text)
  346. },
  347. },
  348. {
  349. title: '外包审核',
  350. dataIndex: 'outsourceStatus',
  351. key: 'outsourceStatus',
  352. render: (text) => {
  353. if (text == 0) {
  354. return <Tag color="#f50">待审核</Tag>
  355. } else if (text == 1) {
  356. return <Tag color="#87d068">审核通过</Tag>
  357. } else if (text == 2) {
  358. return <Tag color="#2db7f5">审核驳回</Tag>
  359. } else {
  360. return '非外包'
  361. }
  362. },
  363. },
  364. {
  365. title: '分配时间',
  366. dataIndex: 'taskDate',
  367. key: 'taskDate',
  368. },
  369. {
  370. title: '订单部门',
  371. dataIndex: 'depName',
  372. key: 'depName',
  373. },
  374. {
  375. title: '累计工时(小时)',
  376. dataIndex: 'hours',
  377. key: 'hours',
  378. },
  379. {
  380. title: '操作',
  381. dataIndex: 'caozuo',
  382. key: 'caozuo',
  383. render: (text, record) => {
  384. return (
  385. <div>
  386. <Button
  387. type="primary"
  388. onClick={(e) => {
  389. e.stopPropagation(), this.evaluate(record, '咨询师')
  390. }}
  391. >
  392. 转交
  393. </Button>
  394. <Button
  395. type="primary"
  396. style={{ marginLeft: 10 }}
  397. onClick={(e) => {
  398. e.stopPropagation(),
  399. this.evaluate(record, '咨询师经理', true)
  400. }}
  401. >
  402. 回退
  403. </Button>
  404. <Button
  405. type="primary"
  406. style={{ margin: '0 10px' }}
  407. onClick={(e) => {
  408. e.stopPropagation(), this.okCancel(record)
  409. }}
  410. >
  411. 添加工时
  412. </Button>
  413. <Button
  414. type="primary"
  415. onClick={(e) => {
  416. e.stopPropagation()
  417. this.setState({
  418. timeVisible: true,
  419. })
  420. this.timeDetail(record)
  421. }}
  422. >
  423. 工时记录
  424. </Button>
  425. </div>
  426. )
  427. },
  428. },
  429. ],
  430. dataSource: [],
  431. searchTime: [],
  432. columnsX: [
  433. {
  434. title: '业务项目名称',
  435. dataIndex: 'commodityName',
  436. key: 'commodityName',
  437. },
  438. {
  439. title: '项目类别',
  440. dataIndex: 'cname',
  441. key: 'cname',
  442. },
  443. {
  444. title: '项目数量',
  445. dataIndex: 'commodityQuantity',
  446. key: 'commodityQuantity',
  447. render: (text, record) => {
  448. if (record.splitStatus == 1) {
  449. return (
  450. <span>
  451. {text}{' '}
  452. <Tag
  453. color="#108ee9"
  454. onClick={(e) => {
  455. e.stopPropagation()
  456. this.showRes(record)
  457. }}
  458. >
  459. 已拆
  460. </Tag>
  461. </span>
  462. )
  463. } else {
  464. return text
  465. }
  466. },
  467. },
  468. {
  469. title: '金额(万元)',
  470. dataIndex: 'commodityPrice',
  471. key: 'commodityPrice',
  472. },
  473. {
  474. title: '负责人',
  475. dataIndex: 'contacts',
  476. key: 'contacts',
  477. },
  478. {
  479. title: '负责人电话',
  480. dataIndex: 'contactsMobile',
  481. key: 'contactsMobile',
  482. },
  483. {
  484. title: '主要项目',
  485. dataIndex: 'main',
  486. key: 'main',
  487. render: (text) => {
  488. return text ? '是' : '否'
  489. },
  490. },
  491. {
  492. title: '项目说明',
  493. dataIndex: 'taskComment',
  494. key: 'taskComment',
  495. render: (text) => {
  496. return text && text.length > 8 ? text.substr(0, 8) + '…' : text
  497. },
  498. },
  499. ],
  500. columnsA: [
  501. {
  502. title: '流程',
  503. dataIndex: 'content',
  504. key: 'content',
  505. align: 'center',
  506. },
  507. {
  508. title: '操作人',
  509. dataIndex: 'aName',
  510. key: 'aName',
  511. align: 'center',
  512. },
  513. {
  514. title: '时间',
  515. dataIndex: 'createTimes',
  516. key: 'createTimes',
  517. align: 'center',
  518. },
  519. ],
  520. dataSourceX: [],
  521. dataSourceA: [],
  522. ContactsLists: [
  523. {
  524. title: '批次',
  525. dataIndex: 'num',
  526. key: 'num',
  527. },
  528. {
  529. title: '下证时间',
  530. dataIndex: 'licenceTimes',
  531. key: 'licenceTimes',
  532. render: (text, record) => {
  533. return (
  534. <div>
  535. <DatePicker
  536. style={{ marginTop: '5px' }}
  537. showTime
  538. format="YYYY-MM-DD"
  539. onOk={() => {}}
  540. value={
  541. record.licenceTimes ? moment(record.licenceTimes) : null
  542. }
  543. onChange={(data, dataString) => {
  544. record.licenceTimes = dataString
  545. this.setState({ contactList: this.state.contactList })
  546. }}
  547. />
  548. </div>
  549. )
  550. },
  551. },
  552. {
  553. title: '下证数量',
  554. dataIndex: 'alreadyNumber',
  555. key: 'alreadyNumber',
  556. render: (text, record) => {
  557. return (
  558. <div>
  559. {
  560. <Input
  561. value={record.alreadyNumber}
  562. placeholder="请输入下证数量"
  563. key={record.id}
  564. required="required"
  565. onChange={(e) => {
  566. record.alreadyNumber = e.target.value
  567. this.setState({ contactList: this.state.contactList })
  568. }}
  569. style={{ width: '120px' }}
  570. />
  571. }
  572. </div>
  573. )
  574. },
  575. },
  576. {
  577. title: '未下证数量',
  578. dataIndex: 'notCount',
  579. key: 'notCount',
  580. },
  581. {
  582. title: '操作',
  583. dataIndex: 'dels',
  584. key: 'dels',
  585. render: (text, record, index) => {
  586. return (
  587. <div>
  588. {
  589. <Popconfirm
  590. title="是否删除?"
  591. onConfirm={() => {
  592. this.confirmDelet(record)
  593. }}
  594. okText="删除"
  595. cancelText="不删除"
  596. >
  597. <Button
  598. style={{
  599. marginRight: '10px',
  600. color: '#ffffff',
  601. background: '#f00',
  602. border: 'none',
  603. }}
  604. >
  605. 删除
  606. </Button>
  607. </Popconfirm>
  608. }
  609. {record.flag ? (
  610. ''
  611. ) : (
  612. <Button
  613. type="primary"
  614. onClick={(e) => {
  615. e.stopPropagation(), this.contactSave(record, index)
  616. }}
  617. >
  618. 保存
  619. </Button>
  620. )}
  621. </div>
  622. )
  623. },
  624. },
  625. ],
  626. // 专利
  627. ContactsListsNew: [
  628. {
  629. title: '供应商名称',
  630. dataIndex: 'companyName',
  631. key: 'companyName',
  632. render: (text, record, index) => {
  633. if (text) {
  634. return <span>{text}</span>
  635. }
  636. },
  637. },
  638. {
  639. title: '单价(万元)',
  640. dataIndex: 'unitPrice',
  641. key: 'unitPrice',
  642. render: (text, record) => {
  643. if (text) {
  644. return <span>{text}</span>
  645. }
  646. },
  647. },
  648. {
  649. title: '数量',
  650. dataIndex: 'quantity',
  651. key: 'quantity',
  652. render: (text, record) => {
  653. if (text) {
  654. return <span>{text}</span>
  655. }
  656. },
  657. },
  658. {
  659. title: '总价',
  660. dataIndex: 'totalAmount',
  661. key: 'totalAmount',
  662. render: (text, record) => {
  663. if (text) {
  664. return <span>{text}</span>
  665. }
  666. },
  667. },
  668. {
  669. title: '材料',
  670. dataIndex: 'material',
  671. key: 'material',
  672. render: (text, record) => {
  673. return getMaterialStatus(text)
  674. },
  675. },
  676. {
  677. title: '加急',
  678. dataIndex: 'urgent',
  679. key: 'urgent',
  680. render: (text, record) => {
  681. return getUrgentStatus(text)
  682. },
  683. },
  684. {
  685. title: '备注',
  686. dataIndex: 'remarks',
  687. key: 'remarks',
  688. },
  689. {
  690. title: '操作',
  691. dataIndex: 'dels',
  692. key: 'dels',
  693. render: (text, record, index) => {
  694. return (
  695. <div>
  696. <Popconfirm
  697. title="是否删除?"
  698. onConfirm={() => {
  699. this.confirmDeletNew(record)
  700. }}
  701. okText="删除"
  702. cancelText="不删除"
  703. >
  704. <Button
  705. onClick={(e) => {
  706. e.stopPropagation()
  707. }}
  708. style={{
  709. marginRight: '10px',
  710. color: '#ffffff',
  711. background: '#f00',
  712. border: 'none',
  713. }}
  714. >
  715. 删除
  716. </Button>
  717. </Popconfirm>
  718. </div>
  719. )
  720. },
  721. },
  722. ],
  723. //付款节点表头
  724. PayNodeTableColunms: [
  725. {
  726. title: '供应商名称',
  727. dataIndex: 'companyName',
  728. key: 'companyName',
  729. render: (text, record, index) => {
  730. if (text) {
  731. return <span>{text}</span>
  732. }
  733. },
  734. },
  735. {
  736. title: '付款科目',
  737. dataIndex: 'unitPrice',
  738. key: 'unitPrice',
  739. render: (text, record) => {
  740. if (text) {
  741. return <span>{text}</span>
  742. }
  743. },
  744. },
  745. {
  746. title: '数量',
  747. dataIndex: 'quantity',
  748. key: 'quantity',
  749. render: (text, record) => {
  750. if (text) {
  751. return <span>{text}</span>
  752. }
  753. },
  754. },
  755. {
  756. title: '总价',
  757. dataIndex: 'totalAmount',
  758. key: 'totalAmount',
  759. render: (text, record) => {
  760. if (text) {
  761. return <span>{text}</span>
  762. }
  763. },
  764. },
  765. {
  766. title: '付款',
  767. dataIndex: 'partyAmount',
  768. key: 'partyAmount',
  769. render: (text, record) => {
  770. if (text) {
  771. return <span>{text}</span>
  772. }
  773. },
  774. },
  775. {
  776. title: '付款时间',
  777. dataIndex: 'partyTimes',
  778. key: 'partyTimes',
  779. render: (text, record) => {
  780. if (text) {
  781. return <span>{text}</span>
  782. }
  783. },
  784. },
  785. {
  786. title: '操作',
  787. dataIndex: 'dels',
  788. key: 'dels',
  789. render: (text, record, index) => {
  790. return (
  791. <div>
  792. <Popconfirm
  793. title="是否删除?"
  794. onConfirm={() => {
  795. this.payNodeConfirmDeletNew(record)
  796. }}
  797. okText="删除"
  798. cancelText="不删除"
  799. >
  800. <Button
  801. onClick={(e) => {
  802. e.stopPropagation()
  803. }}
  804. style={{
  805. marginRight: '10px',
  806. color: '#ffffff',
  807. background: '#f00',
  808. border: 'none',
  809. }}
  810. >
  811. 删除
  812. </Button>
  813. </Popconfirm>
  814. </div>
  815. )
  816. },
  817. },
  818. ]
  819. }
  820. },
  821. /* 分派 */
  822. evaluate(record, nub, flag) {
  823. this.setState(
  824. {
  825. nub: nub,
  826. assignData: record,
  827. flag,
  828. },
  829. () => {
  830. this.setState({
  831. assignVisible: true,
  832. })
  833. }
  834. )
  835. },
  836. componentWillMount() {
  837. this.departmentList()
  838. this.loadData()
  839. },
  840. componentDidMount() {
  841. this.setColor()
  842. },
  843. setColor() {
  844. $('.userName span').after(
  845. "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)"
  846. )
  847. },
  848. // 获取csort下的数据
  849. getCsortData(cSort) {
  850. cuiJieDian.map(item=>{
  851. if(item.value==cSort) {
  852. console.log(item.children);
  853. localStorage.setItem('paySubject',JSON.stringify(item.children))
  854. return item.children;
  855. }
  856. })
  857. },
  858. tableRowClick(record) {
  859. this.state.RowData = record
  860. let str = record.taskName
  861. let test = str.indexOf('会员')
  862. if (test == -1) {
  863. this.setState({
  864. isHuiyuan: false,
  865. })
  866. } else {
  867. this.setState({
  868. isHuiyuan: true,
  869. })
  870. }
  871. if (record.taskName.substring(0, 5) === '软件著作权') {
  872. this.setState({
  873. speVisible: true,
  874. id: record.id,
  875. splitStatus: record.splitStatus,
  876. splitSuper: record.splitSuper,
  877. splitId: record.splitId,
  878. dataArr: record,
  879. commodityQuantity: record.commodityQuantity,
  880. })
  881. } else {
  882. this.setState({
  883. visible: true,
  884. splitStatus: record.splitStatus,
  885. splitSuper: record.splitSuper,
  886. splitId: record.splitId,
  887. })
  888. }
  889. this.xiangqing(record.id, record.taskName)
  890. this.xiangqings(record.orderNo)
  891. this.xiangmu(record.orderNo)
  892. this.loaduserss(record)
  893. // 获取第三方信息表格
  894. this.thirdTable(record.id)
  895. //获取支付节点信息表格
  896. this.payNodeTable(record.id)
  897. // 获取Csort
  898. this.getCsortData(localStorage.getItem('cSort'));
  899. },
  900. //点击修改项目详情
  901. tijiaoOk() {
  902. let attachmentUrls = []
  903. if (this.state.attachmentUrl.length) {
  904. let picArr = []
  905. this.state.attachmentUrl.map(function (item) {
  906. if (item.response && item.response.data && item.response.data.length) {
  907. picArr.push(item.response.data)
  908. }
  909. })
  910. attachmentUrls = picArr.join(',')
  911. }
  912. this.setState({
  913. loading: true,
  914. })
  915. $.ajax({
  916. method: 'POST',
  917. dataType: 'json',
  918. crossDomain: false,
  919. url: globalConfig.context + '/api/admin/orderProject/updateOrderTask',
  920. data: {
  921. id: this.state.id, //项目编号
  922. orderNo: this.state.orderNo, //订单编号
  923. projectStatus: this.state.projectStatus, //项目状态
  924. taskStatus: this.state.taskStatus, //项目状态
  925. taskComment: this.state.taskComment, //说明
  926. startDate: this.state.startDate, //启动日期
  927. endDate: this.state.endDate, //结束日期
  928. acceptDate: this.state.acceptDate, //受理日期
  929. reviewDate: this.state.reviewDate, //评审日期
  930. publicityDate: this.state.publicityDate, //公示日期
  931. licenceDate: this.state.licenceDate, //发证日期
  932. attachmentUrl: attachmentUrls.length ? attachmentUrls : '', //附件
  933. contacts: this.state.contacts, //联系人
  934. contactMobile: this.state.contactMobile, //联系人电话
  935. legalPerson: this.state.legalPerson, //法人
  936. legalPersonTel: this.state.legalPersonTel, //法人电话
  937. certificateNumber: this.state.certificateNumber, //证书编号
  938. status: this.state.status, //状态
  939. formRetrieve: this.state.formRetrieve, //满意度表格
  940. taskRefund: this.state.taskRefund, //退单
  941. refundContent: this.state.refundContent, //退单信息
  942. retrieveContent: this.state.retrieveContent, //回收信息
  943. locationProvince: this.state.ProvinceCity[0],
  944. locationCity: this.state.ProvinceCity[1],
  945. locationArea: this.state.ProvinceCity[2],
  946. postalAddress: this.state.postalAddress, //详细地址
  947. arrivalMoney: this.state.arrivalMoney, //是否到款
  948. setUpAmount: this.state.setUpAmount, //立项金额
  949. declareUser: this.state.declareUser, //账号
  950. declarePwd: this.state.declarePwd, //密码
  951. outsourceName: this.state.outsourceName, //外包公司
  952. outsourcePrice: this.state.outsourcePrice, //外包价格
  953. declarationBatch: this.state.declarationBatch,
  954. },
  955. }).done(
  956. function (data) {
  957. this.setState({
  958. loading: false,
  959. })
  960. if (!data.error.length) {
  961. message.success('保存成功!')
  962. this.visitCancel()
  963. } else {
  964. message.warning(data.error[0].message)
  965. }
  966. }.bind(this)
  967. )
  968. },
  969. //点击修改项目详情
  970. tianjiaOk() {
  971. if (this.state.attachmentUrl.length) {
  972. let picArr = []
  973. this.state.attachmentUrl.map(function (item) {
  974. if (item.response && item.response.data && item.response.data.length) {
  975. picArr.push(item.response.data)
  976. }
  977. })
  978. }
  979. $.ajax({
  980. method: 'POST',
  981. dataType: 'json',
  982. crossDomain: false,
  983. url: globalConfig.context + '/api/admin/orderProject/addTaskHours',
  984. data: {
  985. taskId: this.state.taskId, //项目编号
  986. hours: this.state.hours, //工时
  987. remarks: this.state.remarks, //说明
  988. taskDate: this.state.taskDate, //日期
  989. taskComment: this.state.taskComment, //说明
  990. },
  991. }).done(
  992. function (data) {
  993. this.setState({
  994. loading: false,
  995. })
  996. if (!data.error.length) {
  997. message.success('保存成功!')
  998. this.noCancel()
  999. } else {
  1000. message.warning(data.error[0].message)
  1001. }
  1002. }.bind(this)
  1003. )
  1004. },
  1005. //订单详情
  1006. xiangqing(id) {
  1007. $.ajax({
  1008. method: 'get',
  1009. dataType: 'json',
  1010. crossDomain: false,
  1011. url: globalConfig.context + '/api/admin/orderProject/orderTaskDetail',
  1012. data: {
  1013. id: id,
  1014. },
  1015. success: function (data) {
  1016. let thisdata = data.data
  1017. if (data.error.length || data.data.list == '') {
  1018. if (data.error && data.error.length) {
  1019. message.warning(data.error[0].message)
  1020. }
  1021. } else {
  1022. this.setState({
  1023. id: thisdata.id, //ID
  1024. orderNo: thisdata.orderNo, //订单编号
  1025. userName: thisdata.userName, //客户名称
  1026. taskName: thisdata.taskName, //项目名称
  1027. cname: thisdata.cname, //项目品类
  1028. contractNo: thisdata.contractNo, //合同编号
  1029. projectStatus: thisdata.projectStatus.toString(), //项目状态
  1030. taskStatus: thisdata.taskStatus.toString(), //项目状态
  1031. taskDate: thisdata.taskDate, //分配时间
  1032. taskComment: thisdata.taskComment, //说明
  1033. attachmentUrl: thisdata.attachmentUrl
  1034. ? splitUrl(
  1035. thisdata.attachmentUrl,
  1036. ',',
  1037. globalConfig.avatarHost + '/upload'
  1038. )
  1039. : [], //图片地址
  1040. salesmanName: thisdata.salesmanName, //订单负责人
  1041. startDate: thisdata.startDate, //启动日期
  1042. endDate: thisdata.endDate, //结束日期
  1043. acceptDate: thisdata.acceptDate, //受理日期
  1044. reviewDate: thisdata.reviewDate, //评审日期
  1045. publicityDate: thisdata.publicityDate, //公示日期
  1046. licenceDate: thisdata.licenceDate, //发证日期
  1047. contacts: thisdata.contacts, //联系人
  1048. contactMobile: thisdata.contactMobile, //联系人电话
  1049. legalPerson: thisdata.legalPerson, //法人
  1050. legalPersonTel: thisdata.legalPersonTel, //法人电话
  1051. certificateNumber: thisdata.certificateNumber, //证书编号
  1052. status: thisdata.status, //状态
  1053. formRetrieve: thisdata.formRetrieve, //满意度表格
  1054. taskRefund: thisdata.taskRefund, //退单
  1055. refundContent: thisdata.refundContent, //退单信息
  1056. retrieveContent: thisdata.retrieveContent, //回收信息
  1057. arrivalMoney: thisdata.arrivalMoney, //是否到款
  1058. setUpAmount: thisdata.setUpAmount, //立项金额
  1059. declareUser: thisdata.declareUser, //账号
  1060. declarePwd: thisdata.declarePwd, //密码
  1061. outsourceName: thisdata.outsourceName, //外包公司
  1062. outsourcePrice: thisdata.outsourcePrice, //外包价格
  1063. declarationBatch: thisdata.declarationBatch,
  1064. })
  1065. }
  1066. }.bind(this),
  1067. }).always(
  1068. function () {
  1069. this.setState({
  1070. loading: false,
  1071. })
  1072. }.bind(this)
  1073. )
  1074. },
  1075. //订单详情
  1076. xiangqings(orderNos) {
  1077. $.ajax({
  1078. method: 'get',
  1079. dataType: 'json',
  1080. crossDomain: false,
  1081. url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
  1082. data: {
  1083. orderNo: orderNos,
  1084. },
  1085. success: function (data) {
  1086. let thisdata = data.data
  1087. let ProvinceCityArr = []
  1088. let ProvinceS = thisdata.locationProvince //省
  1089. let citys = thisdata.locationCity //市
  1090. let Areas = thisdata.locationArea //区
  1091. ProvinceCityArr.push(ProvinceS, citys, Areas)
  1092. if (data.error.length || data.data.list == '') {
  1093. if (data.error && data.error.length) {
  1094. message.warning(data.error[0].message)
  1095. }
  1096. } else {
  1097. this.setState({
  1098. processStatus: thisdata.processStatus, //流程状态
  1099. liquidationStatus: thisdata.liquidationStatus, //结算状态
  1100. approval: thisdata.approval, //特批状态
  1101. orderRemarks: thisdata.orderRemarks, //订单留言
  1102. salesmanName: thisdata.salesmanName, //营销员名称
  1103. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  1104. financeName: thisdata.financeName, //财务名称
  1105. financeMobile: thisdata.financeMobile, //财务电话
  1106. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  1107. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  1108. nowFinance: thisdata.nowFinance, //财务名称
  1109. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  1110. depName: thisdata.depName, //订单部门
  1111. ProvinceCity: ProvinceCityArr[0] === null ? [] : ProvinceCityArr,
  1112. postalAddress: thisdata.postalAddress, //详细地址
  1113. })
  1114. }
  1115. }.bind(this),
  1116. }).always(
  1117. function () {
  1118. this.setState({
  1119. loading: false,
  1120. })
  1121. }.bind(this)
  1122. )
  1123. },
  1124. //项目列表
  1125. xiangmu(orderNos) {
  1126. $.ajax({
  1127. method: 'get',
  1128. dataType: 'json',
  1129. crossDomain: false,
  1130. url: globalConfig.context + '/api/admin/newOrder/getOrderTask',
  1131. data: {
  1132. orderNo: orderNos,
  1133. },
  1134. success: function (data) {
  1135. let theArr = []
  1136. if (data.error.length || data.data.list == '') {
  1137. if (data.error && data.error.length) {
  1138. message.warning(data.error[0].message)
  1139. }
  1140. } else {
  1141. for (let i = 0; i < data.data.length; i++) {
  1142. let thisdata = data.data[i]
  1143. localStorage.setItem('cSort',thisdata.cSort);
  1144. theArr.push({
  1145. key: i,
  1146. id: thisdata.id,
  1147. orderNo: thisdata.orderNo, //订单编号
  1148. commodityId: thisdata.commodityId, //项目ID
  1149. commodityName: thisdata.commodityName, //项目名称
  1150. cname: thisdata.cname, //项目类别
  1151. commodityPrice: thisdata.commodityPrice, //项目价格
  1152. commodityQuantity: thisdata.commodityQuantity, //项目数量
  1153. main: thisdata.main, //是否为主要项目
  1154. taskComment: thisdata.taskComment, //项目说明
  1155. contacts: thisdata.contacts, //联系人
  1156. contactsMobile: thisdata.contactsMobile, //联系人电话
  1157. taskStatus: thisdata.taskStatus, //是否分配
  1158. contractNo: thisdata.contractNo, //合同编号
  1159. certificateNumber: thisdata.certificateNumber,
  1160. splitStatus: thisdata.splitStatus,
  1161. officialCost: thisdata.officialCost,
  1162. costReduction: thisdata.costReduction,
  1163. type: thisdata.type,
  1164. cSort: thisdata.cSort,
  1165. })
  1166. }
  1167. }
  1168. this.setState({
  1169. dataSourceX: theArr,
  1170. type: theArr[0].type,
  1171. cSort: theArr[0].cSort,
  1172. })
  1173. }.bind(this),
  1174. }).always(
  1175. function () {
  1176. this.setState({
  1177. loading: false,
  1178. })
  1179. }.bind(this)
  1180. )
  1181. },
  1182. //导出
  1183. exportExec() {
  1184. let departmentName = '',
  1185. depart = this.state.departmentArr || []
  1186. depart.map((item) => {
  1187. if (this.state.departmentId == item.id) {
  1188. departmentName = item.name
  1189. return
  1190. }
  1191. })
  1192. let data = {
  1193. departmentId: this.state.departmentId,
  1194. departmentName: departmentName,
  1195. salesName: this.state.orderRefundSearch, //订单负责人
  1196. startTime: this.state.releaseDate[0],
  1197. endTime: this.state.releaseDate[1],
  1198. grantStatus: this.state.grantStatus,
  1199. }
  1200. window.location.href =
  1201. globalConfig.context +
  1202. '/api/admin/orderProject/exportMyTaskList?' +
  1203. $.param(data)
  1204. },
  1205. //关闭详情
  1206. visitCancel() {
  1207. this.setState({
  1208. visible: false,
  1209. speVisible: false,
  1210. activeKey: '1',
  1211. })
  1212. this.reset()
  1213. },
  1214. visitOk() {
  1215. this.setState({
  1216. visible: false,
  1217. speVisible: false,
  1218. })
  1219. this.reset()
  1220. },
  1221. closeDesc(e, s) {
  1222. this.state.showDesc = e
  1223. if (s) {
  1224. this.loadData(this.state.page)
  1225. }
  1226. },
  1227. closeAssign(e, s) {
  1228. this.state.roleName = ''
  1229. this.state.assignVisible = e
  1230. if (s) {
  1231. this.loadData(this.state.page)
  1232. }
  1233. },
  1234. //添加工时
  1235. okCancel(record) {
  1236. this.setState({
  1237. lookVisible: true,
  1238. taskId: record.id,
  1239. })
  1240. },
  1241. //测试
  1242. getOrgCodeUrl(e) {
  1243. this.setState({ orgCodeUrl: e })
  1244. },
  1245. //查看下证信息
  1246. loaduserss(record) {
  1247. $.ajax({
  1248. method: 'get',
  1249. dataType: 'json',
  1250. crossDomain: false,
  1251. url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
  1252. data: {
  1253. tid: record.id,
  1254. },
  1255. success: function (data) {
  1256. let theArr = []
  1257. let thisData = []
  1258. if (!thisData) {
  1259. if (data.error && data.error.length) {
  1260. message.warning(data.error[0].message)
  1261. }
  1262. thisData = {}
  1263. } else {
  1264. for (let i = 0; i < data.data.length; i++) {
  1265. thisData = data.data[i]
  1266. theArr.push({
  1267. num: i + 1,
  1268. key: i,
  1269. id: thisData.id, //编号
  1270. alreadyNumber: thisData.alreadyNumber, //下证数
  1271. licenceTimes: thisData.licenceTimes, //下证时间
  1272. notCount: thisData.notCount, //未下证数
  1273. flag: true,
  1274. })
  1275. }
  1276. this.setState({
  1277. contactList: theArr,
  1278. tid: record.id,
  1279. })
  1280. }
  1281. }.bind(this),
  1282. }).always(
  1283. function () {
  1284. this.setState({
  1285. loading: false,
  1286. })
  1287. }.bind(this)
  1288. )
  1289. },
  1290. // 拆分详细
  1291. showRes(record) {
  1292. this.setState({
  1293. resVisible: true,
  1294. resRecord: record,
  1295. })
  1296. },
  1297. resCancel() {
  1298. this.setState({
  1299. resVisible: false,
  1300. })
  1301. },
  1302. //下证信息保存
  1303. contactSave(record) {
  1304. if (!record.licenceTimes) {
  1305. message.warning('下证日期不能为空')
  1306. return
  1307. }
  1308. if (!record.alreadyNumber) {
  1309. message.warning('下证数量不能为空')
  1310. return
  1311. }
  1312. this.setState({
  1313. loading: true,
  1314. })
  1315. $.ajax({
  1316. url: globalConfig.context + '/api/admin/orderProject/createTaskProgress',
  1317. method: 'post',
  1318. data: {
  1319. taskId: this.state.id,
  1320. licenceTimes: record.licenceTimes,
  1321. alreadyNumber: record.alreadyNumber,
  1322. },
  1323. }).done(
  1324. function (data) {
  1325. this.setState({
  1326. loading: false,
  1327. })
  1328. if (!data.error.length) {
  1329. message.success('保存成功!')
  1330. record.flag = true
  1331. this.loaduserss(this.state.dataArr)
  1332. } else {
  1333. message.warning(data.error[0].message)
  1334. }
  1335. }.bind(this)
  1336. )
  1337. },
  1338. //下证信息删除
  1339. contactDele(record) {
  1340. this.setState({
  1341. loading: true,
  1342. })
  1343. $.ajax({
  1344. url: globalConfig.context + '/api/admin/orderProject/delectTaskProgress',
  1345. method: 'post',
  1346. data: {
  1347. id: record.id,
  1348. },
  1349. }).done(
  1350. function (data) {
  1351. this.setState({
  1352. loading: false,
  1353. })
  1354. if (!data.error.length) {
  1355. this.loaduserss(this.state.dataArr)
  1356. } else {
  1357. message.warning(data.error[0].message)
  1358. }
  1359. }.bind(this)
  1360. )
  1361. },
  1362. //点击新增下证信息
  1363. addcontact() {
  1364. this.state.contactList.push({
  1365. num: this.state.contactList.length + 1,
  1366. key: this.state.contactList.length,
  1367. licenceTimes: '',
  1368. alreadyNumber: '',
  1369. notCount: '',
  1370. dels: '',
  1371. flag: false,
  1372. aflag: false,
  1373. })
  1374. this.setState({
  1375. contactList: this.state.contactList,
  1376. })
  1377. },
  1378. //删除下证信息
  1379. confirmDelet(record) {
  1380. this.state.contactList.splice(record.key, 1)
  1381. this.setState({
  1382. contactList: this.state.contactList,
  1383. })
  1384. if (record.id) {
  1385. this.contactDele(record)
  1386. }
  1387. },
  1388. caozuorizhi() {
  1389. this.setState({
  1390. visibleA: true,
  1391. })
  1392. $.ajax({
  1393. method: 'get',
  1394. dataType: 'json',
  1395. crossDomain: false,
  1396. url: globalConfig.context + '/api/admin/orderProject/TaskLogList',
  1397. data: {
  1398. id: this.state.id,
  1399. },
  1400. success: function (data) {
  1401. let theArr = []
  1402. if (data.error.length || data.data.list == '') {
  1403. if (data.error && data.error.length) {
  1404. message.warning(data.error[0].message)
  1405. }
  1406. } else {
  1407. for (let i = 0; i < data.data.length; i++) {
  1408. let thisdata = data.data[i]
  1409. theArr.push({
  1410. key: i,
  1411. id: thisdata.id, //日志ID
  1412. content: thisdata.content, //流程
  1413. taskId: thisdata.taskId, //项目ID
  1414. aName: thisdata.aName, //负责人
  1415. createTimes: thisdata.createTimes, //时间
  1416. })
  1417. }
  1418. }
  1419. this.setState({
  1420. dataSourceA: theArr,
  1421. })
  1422. }.bind(this),
  1423. }).always(
  1424. function () {
  1425. this.setState({
  1426. loading: false,
  1427. })
  1428. }.bind(this)
  1429. )
  1430. },
  1431. //关闭操作工时
  1432. visitCancelA() {
  1433. this.setState({
  1434. visibleA: false,
  1435. })
  1436. },
  1437. nextCancel() {
  1438. this.setState({
  1439. addnextVisible: false,
  1440. displayFees: 'none',
  1441. officialCost: '', //是否有官费
  1442. costReduction: '', //是否有费减
  1443. })
  1444. },
  1445. //点击打卡项目详情
  1446. tableRowClickX(record) {
  1447. if (record.type == '1') {
  1448. this.setState({
  1449. displayFees: 'block',
  1450. costReduction: record.costReduction,
  1451. officialCost: record.officialCost,
  1452. })
  1453. }
  1454. this.setState({
  1455. jid: record.id, //项目ID
  1456. kid: record.commodityId, //商品ID
  1457. commodityName: record.commodityName, //金额
  1458. commodityPrice: record.commodityPrice, //金额
  1459. commodityQuantity: record.commodityQuantity, //数量
  1460. taskComment: record.taskComment, //备注
  1461. main: record.main.toString(), //是否为主要
  1462. addnextVisible: true,
  1463. addState: 0,
  1464. })
  1465. },
  1466. //关闭添加工时
  1467. noCancel() {
  1468. this.setState({
  1469. lookVisible: false,
  1470. })
  1471. this.reset()
  1472. },
  1473. search() {
  1474. this.loadData()
  1475. },
  1476. reset(flag) {
  1477. if (flag) {
  1478. this.state.nameSearch = ''
  1479. this.state.orderNoSearch = ''
  1480. this.state.contractNoSearch = undefined
  1481. this.state.taskNoSearch = ''
  1482. this.state.departmenttSearch = undefined
  1483. this.state.projectStatusSearch = undefined //项目状态
  1484. this.state.approvalSearch = undefined
  1485. this.state.outsourceStatusSearch = []
  1486. }
  1487. this.state.id = '' //项目编号
  1488. this.state.orderNo = '' //订单编号
  1489. this.state.projectStatus = undefined //项目状态
  1490. this.state.taskStatuSearch = undefined //项目状态
  1491. this.state.taskComment = '' //说明
  1492. this.state.startDate = '' //启动日期
  1493. this.state.endDate = '' //结束日期
  1494. this.state.acceptDate = '' //受理日期
  1495. this.state.reviewDate = '' //评审日期
  1496. this.state.publicityDate = '' //公示日期
  1497. this.state.licenceDate = '' //发证日期
  1498. this.state.partyTimes = ''//付款时间
  1499. attachmentUrl: [] //附件
  1500. this.state.contacts = '' //联系人
  1501. this.state.contactMobile = '' //联系人电话
  1502. this.state.legalPerson = '' //法人
  1503. this.state.legalPersonTel = '' //法人电话
  1504. this.state.taskId = '' //项目编号
  1505. this.state.hours = '' //工时
  1506. this.state.remarks = '' //说明
  1507. this.state.taskDate = '' //日期
  1508. this.state.taskComment = '' //说明
  1509. this.state.releaseDate = []
  1510. this.state.outsourceName = ''
  1511. this.state.outsourcePrice = undefined
  1512. this.state.distribution = undefined
  1513. this.loadData(this.state.page)
  1514. this.state.companyName = undefined
  1515. this.state.unitPrice = undefined
  1516. this.state.unitNumber = undefined
  1517. this.state.amount = undefined
  1518. this.state.outsourceRemarks = undefined
  1519. this.state.pictureUrl = []
  1520. },
  1521. searchSwitch() {
  1522. this.setState({
  1523. searchMore: !this.state.searchMore,
  1524. })
  1525. },
  1526. //部门
  1527. departmentList() {
  1528. this.setState({
  1529. loading: true,
  1530. })
  1531. $.ajax({
  1532. method: 'get',
  1533. dataType: 'json',
  1534. crossDomain: false,
  1535. url: globalConfig.context + '/api/admin/organization/selectSuperId',
  1536. data: {},
  1537. success: function (data) {
  1538. let thedata = data.data
  1539. let theArr = []
  1540. if (!thedata) {
  1541. if (data.error && data.error.length) {
  1542. message.warning(data.error[0].message)
  1543. }
  1544. thedata = {}
  1545. } else {
  1546. thedata.map(function (item, index) {
  1547. theArr.push({
  1548. key: index,
  1549. name: item.name,
  1550. id: item.id,
  1551. })
  1552. })
  1553. }
  1554. this.setState({
  1555. departmentArr: theArr,
  1556. })
  1557. }.bind(this),
  1558. }).always(
  1559. function () {
  1560. this.setState({
  1561. loading: false,
  1562. })
  1563. }.bind(this)
  1564. )
  1565. },
  1566. changeList(arr) {
  1567. const newArr = []
  1568. this.state.columns.forEach((item) => {
  1569. arr.forEach((val) => {
  1570. if (val === item.title) {
  1571. newArr.push(item)
  1572. }
  1573. })
  1574. })
  1575. this.setState({
  1576. changeList: newArr,
  1577. })
  1578. },
  1579. timeClose() {
  1580. this.setState({
  1581. timeVisible: false,
  1582. })
  1583. },
  1584. timeDetail(record) {
  1585. console.log(record)
  1586. this.setState({
  1587. loading: true,
  1588. recordHour: record.hours,
  1589. })
  1590. $.ajax({
  1591. method: 'get',
  1592. dataType: 'json',
  1593. crossDomain: false,
  1594. url:
  1595. globalConfig.context + '/api/admin/orderProject/taskHoursDetailsList',
  1596. data: {
  1597. taskId: record.id,
  1598. },
  1599. success: function (data) {
  1600. if (data.error && data.error.length) {
  1601. message.warning(data.error[0].message)
  1602. } else {
  1603. this.setState({
  1604. dataSourceTime: data.data,
  1605. })
  1606. console.log(this.state.dataSourceTime)
  1607. }
  1608. }.bind(this),
  1609. }).always(
  1610. function () {
  1611. this.setState({
  1612. loading: false,
  1613. })
  1614. }.bind(this)
  1615. )
  1616. },
  1617. showDeleteConfirm(num, fn) {
  1618. let text = getProjectStatus(num)
  1619. confirm({
  1620. title: <p style={{ fontSize: 16, fontWeight: 900 }}>注意</p>,
  1621. content: (
  1622. <p style={{ fontWeight: 900, color: 'red' }}>
  1623. 当前的项目状态为{text},保存后将触发对应的催款节点!!!您确定保存?
  1624. </p>
  1625. ),
  1626. okText: '确定',
  1627. okType: 'danger',
  1628. cancelText: '取消',
  1629. onOk() {
  1630. fn()
  1631. },
  1632. onCancel() {},
  1633. })
  1634. },
  1635. // 项目发起外包
  1636. sureOut() {
  1637. if (!this.state.startType) {
  1638. message.warning('请选择类型')
  1639. return
  1640. }
  1641. if (this.state.type == 1) {
  1642. //专利
  1643. if (!this.state.patentType) {
  1644. message.warning('请选择专利类型')
  1645. return
  1646. }
  1647. if (!this.state.patentNameType) {
  1648. message.warning('请选择专利类型名称')
  1649. return
  1650. }
  1651. if (this.state.patentNameType == 3) {
  1652. if (!this.state.patentName) {
  1653. message.warning('请填写专利名称')
  1654. return
  1655. }
  1656. }
  1657. }
  1658. if (!this.state.outsourceRemarks) {
  1659. message.warning('备注不能为空')
  1660. return
  1661. }
  1662. if (this.state.pictureUrl.length === 0) {
  1663. message.warning('合同扫描件不能为空')
  1664. return
  1665. }
  1666. this.setState({
  1667. loading: true,
  1668. })
  1669. $.ajax({
  1670. method: 'POST',
  1671. dataType: 'json',
  1672. crossDomain: false,
  1673. url:
  1674. globalConfig.context + '/api/admin/outsourceOrg/outsourceProjectAudit',
  1675. data: {
  1676. tid: this.state.id,
  1677. orderNo: this.state.orderNo,
  1678. type: 1,
  1679. companyName: this.state.companyName,
  1680. amount: this.state.amount,
  1681. pictureUrl: this.getUrl(this.state.pictureUrl).length
  1682. ? this.getUrl(this.state.pictureUrl)
  1683. : '',
  1684. outsourceRemarks: this.state.outsourceRemarks,
  1685. unitNumber: this.state.unitNumber,
  1686. unitPrice: this.state.unitPrice,
  1687. id: this.state.refundStatus == 2 ? this.state.mid : undefined,
  1688. },
  1689. }).done(
  1690. function (data) {
  1691. this.setState({
  1692. loading: false,
  1693. })
  1694. if (!data.error.length) {
  1695. message.success('提交成功!')
  1696. this.visitCancel()
  1697. } else {
  1698. message.warning(data.error[0].message)
  1699. }
  1700. }.bind(this)
  1701. )
  1702. },
  1703. callback(e) {
  1704. this.setState({
  1705. activeKey: e,
  1706. })
  1707. if (e == 3) {
  1708. this.orderDetailData(this.state.orderNo)
  1709. this.xiangmu(this.state.orderNo)
  1710. this.jiedian(this.state.orderNo)
  1711. this.jiedianNew(this.state.orderNo)
  1712. }
  1713. },
  1714. getOrgCodeUrlWai(e) {
  1715. this.setState({ pictureUrl: e })
  1716. },
  1717. getUrl(url) {
  1718. let theorgCodeUrl = []
  1719. if (url.length) {
  1720. let picArr = []
  1721. url.map(function (item) {
  1722. if (item.response && item.response.data && item.response.data.length) {
  1723. picArr.push(item.response.data)
  1724. }
  1725. })
  1726. theorgCodeUrl = picArr.join(',')
  1727. }
  1728. return theorgCodeUrl
  1729. },
  1730. waiDetail() {
  1731. let url = window.location.href.substring(7)
  1732. this.setState({
  1733. loading: true,
  1734. })
  1735. $.ajax({
  1736. method: 'get',
  1737. dataType: 'json',
  1738. crossDomain: false,
  1739. url:
  1740. globalConfig.context + '/api/admin/outsourceOrg/orderOutsourceDtails',
  1741. data: {
  1742. tid: this.state.id,
  1743. orderNo: this.state.orderNo,
  1744. },
  1745. }).done(
  1746. function (data) {
  1747. this.setState({
  1748. loading: false,
  1749. })
  1750. if (!data.error.length && data.data) {
  1751. this.setState({
  1752. startType: data.data.startType, //类型
  1753. patentType: data.data.patentType, //专利类型
  1754. patentNameType: data.data.patentNameType, //专利名称类型
  1755. patentName: data.data.patentName, //专利名称
  1756. outsourceRemarks: data.data.outsourceRemarks,
  1757. remarks: data.data.remarks,
  1758. companyName: data.data.companyName,
  1759. amount: data.data.amount,
  1760. mid: data.data.id,
  1761. unitPrice: data.data.unitPrice,
  1762. refundStatus: data.data.refundStatus,
  1763. unitNumber: data.data.unitNumber,
  1764. pictureUrl: data.data.pictureUrl
  1765. ? splitUrl(
  1766. data.data.pictureUrl,
  1767. ',',
  1768. globalConfig.avatarHost + '/upload',
  1769. url
  1770. )
  1771. : [], //图片地址
  1772. createTimes: data.data.createTimes,
  1773. auditTimes: data.data.auditTimes,
  1774. })
  1775. } else if (data.error && data.error.length) {
  1776. message.warning(data.error[0].message)
  1777. } else if (!data.data) {
  1778. this.setState({
  1779. refundStatus: undefined,
  1780. })
  1781. }
  1782. }.bind(this)
  1783. )
  1784. },
  1785. rizhi() {
  1786. this.setState({
  1787. loading: true,
  1788. })
  1789. $.ajax({
  1790. method: 'get',
  1791. dataType: 'json',
  1792. crossDomain: false,
  1793. url: '/api/admin/newOrder/selectOrderLog',
  1794. data: {
  1795. orderNo: this.state.orderNo,
  1796. },
  1797. success: function (data) {
  1798. let theArr = []
  1799. let thisData = data.data
  1800. if (!thisData.length) {
  1801. if (data.error && data.error.length) {
  1802. message.warning(data.error[0].message)
  1803. }
  1804. thisData = {}
  1805. } else {
  1806. for (let i = 0; i < data.data.length; i++) {
  1807. let thisdata = data.data[i]
  1808. theArr.push({
  1809. processName: thisdata.processName,
  1810. adminName: thisdata.adminName,
  1811. createDate: thisdata.createDate,
  1812. remarks: thisdata.remarks,
  1813. })
  1814. }
  1815. }
  1816. this.setState({
  1817. dataSourceY: theArr,
  1818. })
  1819. }.bind(this),
  1820. }).always(
  1821. function () {
  1822. this.setState({
  1823. loading: false,
  1824. })
  1825. }.bind(this)
  1826. )
  1827. },
  1828. closeOrderLog() {
  1829. this.setState({
  1830. avisible: false,
  1831. })
  1832. },
  1833. getOrderLog() {
  1834. this.setState({
  1835. avisible: true,
  1836. })
  1837. this.rizhi()
  1838. },
  1839. orderChange(key) {
  1840. this.setState({
  1841. activeKey: key,
  1842. })
  1843. if (key == 3) {
  1844. this.orderDetailData(this.state.orderNo)
  1845. this.xiangmu(this.state.orderNo)
  1846. this.jiedian(this.state.orderNo)
  1847. this.jiedianNew(this.state.orderNo)
  1848. }
  1849. if (key == 2) {
  1850. this.waiDetail()
  1851. }
  1852. },
  1853. //节点列表
  1854. jiedian(orderNos) {
  1855. $.ajax({
  1856. method: 'get',
  1857. dataType: 'json',
  1858. crossDomain: false,
  1859. url: globalConfig.context + '/api/admin/newOrder/selectOrderDun',
  1860. data: {
  1861. orderNo: orderNos,
  1862. },
  1863. success: function (data) {
  1864. let theArr = []
  1865. let thisData = []
  1866. if (data.error.length || data.data.list == '') {
  1867. if (data.error && data.error.length) {
  1868. message.warning(data.error[0].message)
  1869. }
  1870. } else {
  1871. for (let i = 0; i < data.data.length; i++) {
  1872. thisData = data.data[i]
  1873. theArr.push({
  1874. key: i,
  1875. dunSubject: thisData.dunSubject
  1876. ? thisData.dunSubject.toString()
  1877. : '', //催款科目
  1878. id: thisData.id, //节点Id
  1879. money: thisData.money, //催款金额
  1880. dunStatus: thisData.dunStatus, //催款状态
  1881. })
  1882. }
  1883. this.setState({
  1884. jiedian: theArr,
  1885. })
  1886. }
  1887. }.bind(this),
  1888. })
  1889. },
  1890. jiedianNew(orderNos) {
  1891. $.ajax({
  1892. method: 'get',
  1893. dataType: 'json',
  1894. crossDomain: false,
  1895. url:
  1896. globalConfig.context + '/api/admin/newOrderDun/selectListNewOrderDun',
  1897. data: {
  1898. orderNo: orderNos,
  1899. },
  1900. success: function (data) {
  1901. if (data.error && data.error.length) {
  1902. message.warning(data.error[0].message)
  1903. } else {
  1904. let theArr = []
  1905. let thisData = []
  1906. let arr = data.data || []
  1907. let totalCui = 0
  1908. for (let i = 0; i < arr.length; i++) {
  1909. thisData = arr[i]
  1910. totalCui += +thisData.money
  1911. theArr.push({
  1912. key: i,
  1913. dunSubject: thisData.dunSubject
  1914. ? thisData.dunSubject.toString()
  1915. : '', //催款科目
  1916. id: thisData.id, //节点Id
  1917. money: thisData.money, //催款金额
  1918. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  1919. commodityName: thisData.commodityName,
  1920. projectType: thisData.projectType,
  1921. dunTypeName: thisData.dunTypeName,
  1922. status: thisData.status,
  1923. waitDay: thisData.waitDay,
  1924. effectiveCount: thisData.effectiveCount,
  1925. startDate: thisData.startDate,
  1926. dunType: thisData.dunType,
  1927. appropriationRatio: thisData.appropriationRatio,
  1928. customizeName: thisData.customizeName,
  1929. customizeTimes: thisData.customizeTimes,
  1930. })
  1931. }
  1932. if (!totalCui) {
  1933. totalCui = 0
  1934. }
  1935. totalCui = (Math.round(totalCui * 10000) / 10000).toFixed(4)
  1936. this.setState({
  1937. jiedianNew: theArr,
  1938. totalCui,
  1939. })
  1940. }
  1941. }.bind(this),
  1942. }).always(
  1943. function () {
  1944. this.setState({
  1945. loading: false,
  1946. })
  1947. }.bind(this)
  1948. )
  1949. },
  1950. orderDetailData(orderNos) {
  1951. this.setState({
  1952. loading: true,
  1953. })
  1954. $.ajax({
  1955. method: 'get',
  1956. dataType: 'json',
  1957. crossDomain: false,
  1958. url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
  1959. data: {
  1960. orderNo: orderNos,
  1961. },
  1962. success: function (data) {
  1963. if (data.error.length || data.data.list == '') {
  1964. if (data.error && data.error.length) {
  1965. message.warning(data.error[0].message)
  1966. this.setState({
  1967. loading: false,
  1968. })
  1969. }
  1970. } else {
  1971. let thisdata = data.data
  1972. this.setState({
  1973. loading: false,
  1974. userName: thisdata.userName,
  1975. primaryOrderNo: thisdata.primaryOrder,
  1976. additionalOrder: thisdata.additionalOrder,
  1977. contractNo: thisdata.contractNo,
  1978. orderData: thisdata,
  1979. isAddition: thisdata.additionalOrder ? true : false,
  1980. contractPictureUrl: thisdata.contractPictureUrl
  1981. ? splitUrl(
  1982. thisdata.contractPictureUrl,
  1983. ',',
  1984. globalConfig.avatarHost + '/upload'
  1985. )
  1986. : [],
  1987. })
  1988. }
  1989. }.bind(this),
  1990. })
  1991. },
  1992. //点击新增供应商
  1993. addcontactNew() {
  1994. this.state.contactListNew.push({
  1995. key: this.state.contactListNew.length,
  1996. money: '',
  1997. dunSubject: undefined,
  1998. orderNo: this.state.orderNo,
  1999. dunTarget: this.state.kehuId,
  2000. })
  2001. this.setState({
  2002. contactListNew: this.state.contactListNew,
  2003. cuiFlag: true,
  2004. })
  2005. },
  2006. //查看第三方信息表格
  2007. thirdTable(id) {
  2008. this.setState({
  2009. loadData: true,
  2010. })
  2011. $.ajax({
  2012. method: 'get',
  2013. dataType: 'json',
  2014. crossDomain: false,
  2015. url: globalConfig.context + '/api/admin/company/selectCompany',
  2016. data: {
  2017. tid: id,
  2018. },
  2019. success: function (data) {
  2020. if (data.error && data.error.length) {
  2021. message.warning(data.error[0].message)
  2022. } else {
  2023. let companyNameArr = []
  2024. let theArr = []
  2025. let thisData = []
  2026. let arr = data.data || []
  2027. let allTotalAmount = 0
  2028. for (let i = 0; i < arr.length; i++) {
  2029. thisData = arr[i]
  2030. allTotalAmount += +thisData.totalAmount
  2031. companyNameArr.push(thisData.companyName)
  2032. theArr.push({
  2033. key: i,
  2034. id: thisData.id, //节点Id
  2035. tid: thisData.tid,
  2036. companyName: thisData.companyName, //供应商名称
  2037. unitPrice: thisData.unitPrice, //单价
  2038. quantity: thisData.quantity, //数量
  2039. totalAmount: thisData.totalAmount, //总价
  2040. material: thisData.material, //材料 0无 1有
  2041. urgent: thisData.urgent, // 0无加急(系统默认)1加急3天 2加急4天 3加急5-10天 4加急11-15天 5加急16-20天 6加急21-25天 7加急26-30天
  2042. audit: thisData.audit, //0无审计 1年审 2专审
  2043. assets: thisData.assets, //资产
  2044. income: thisData.income, //收入
  2045. remarks: thisData.remarks, //备注
  2046. cid: thisData.cid, //机构id
  2047. })
  2048. }
  2049. if (!allTotalAmount) {
  2050. allTotalAmount = 0
  2051. }
  2052. console.log(theArr)
  2053. console.log(companyNameArr);
  2054. this.setState({
  2055. tid: id,
  2056. PayNodeCompany:companyNameArr,
  2057. thirdInfoList: theArr,
  2058. allTotalAmount: allTotalAmount,
  2059. })
  2060. }
  2061. }.bind(this),
  2062. }).always(
  2063. function () {
  2064. this.setState({
  2065. loading: false,
  2066. })
  2067. }.bind(this)
  2068. )
  2069. },
  2070. payNodeTable(id) {
  2071. this.setState({
  2072. loadData: true,
  2073. })
  2074. $.ajax({
  2075. method: 'get',
  2076. dataType: 'json',
  2077. crossDomain: false,
  2078. url: globalConfig.context + '/api/admin/company/selectPaymentNode',
  2079. data: {
  2080. tid: id,
  2081. },
  2082. success: function (data) {
  2083. if (data.error && data.error.length) {
  2084. message.warning(data.error[0].message)
  2085. } else {
  2086. let payNodeArr = []
  2087. let thisData = []
  2088. let arr = data.data || []
  2089. for (let i = 0; i < arr.length; i++) {
  2090. thisData = arr[i]
  2091. payNodeArr.push({
  2092. key: i,
  2093. id: thisData.id, //付款节点Id
  2094. tid: thisData.tid,
  2095. companyName: thisData.companyName, //供应商名称
  2096. projectType: thisData.projectType, //项目分类
  2097. dunType: thisData.dunType, //催款分类
  2098. unitPrice: thisData.unitPrice, //单价
  2099. quantity: thisData.quantity, //数量
  2100. totalAmount: thisData.totalAmount, //总价
  2101. partyAmount: thisData.partyAmount, //付款
  2102. partyTimes: thisData.partyTimes, //付款时间
  2103. cid: thisData.cid, //机构id
  2104. })
  2105. }
  2106. console.log(payNodeArr)
  2107. this.setState({
  2108. tid: id,
  2109. payNodeList: payNodeArr,
  2110. })
  2111. }
  2112. }.bind(this),
  2113. }).always(
  2114. function () {
  2115. this.setState({
  2116. loading: false,
  2117. })
  2118. }.bind(this)
  2119. )
  2120. },
  2121. // 新增第三方供应商信息
  2122. addThirdList() {
  2123. this.setState({
  2124. ThirdListVisible: true,
  2125. })
  2126. },
  2127. // 新增支付节点
  2128. addPayNode() {
  2129. this.setState({
  2130. PayNodeVisible: true,
  2131. })
  2132. },
  2133. // 第三方信息自动计算总金额
  2134. calculatedAmount() {
  2135. let currentTotalPrice
  2136. currentTotalPrice = this.state.thirdUnitPrice * this.state.thirdQuantity
  2137. currentTotalPrice = currentTotalPrice.toFixed(4)
  2138. this.setState({
  2139. currentTotalPrice: currentTotalPrice,
  2140. })
  2141. },
  2142. // 付款节点自动计算总金额
  2143. payNodeCalculatedAmount() {
  2144. let currentTotalPrice
  2145. currentTotalPrice = this.state.thirdUnitPrice * this.state.payNodeQuantity
  2146. currentTotalPrice = currentTotalPrice.toFixed(4)
  2147. this.setState({
  2148. currentTotalPrice: currentTotalPrice,
  2149. })
  2150. },
  2151. //服务值改变时请求供应商名称
  2152. httpChange(e) {
  2153. if (e.length >= 1) {
  2154. this.supervisor(e)
  2155. }
  2156. this.setState({
  2157. thirdCompanyName: e,
  2158. })
  2159. },
  2160. //加载(自动补全)
  2161. supervisor(e) {
  2162. $.ajax({
  2163. method: 'get',
  2164. dataType: 'json',
  2165. crossDomain: false,
  2166. url: globalConfig.context + '/api/admin/company/selectVague',
  2167. data: { name: e },
  2168. success: function (data) {
  2169. let thedata = data.data
  2170. if (!thedata) {
  2171. if (data.error && data.error.length) {
  2172. message.warning(data.error[0].message)
  2173. }
  2174. thedata = {}
  2175. }
  2176. this.setState({
  2177. customerArr: thedata,
  2178. })
  2179. }.bind(this),
  2180. }).always(
  2181. function () {
  2182. this.setState({
  2183. loading: false,
  2184. })
  2185. }.bind(this)
  2186. )
  2187. },
  2188. // 保存供应商信息
  2189. handleCancelq() {
  2190. let api
  2191. if (this.state.ThirdId) {
  2192. //修改
  2193. api = '/api/admin/company/updateCompany'
  2194. } else {
  2195. //新增
  2196. api = '/api/admin/company/addCompany'
  2197. }
  2198. this.setState({
  2199. loading: true,
  2200. })
  2201. $.ajax({
  2202. url: globalConfig.context + api,
  2203. method: 'post',
  2204. dataType: 'json',
  2205. crossDomain: false,
  2206. data: {
  2207. id: this.state.ThirdId, //id
  2208. tid: this.state.tid, //订单编号
  2209. companyName: this.state.thirdCompanyName, //第三方名称
  2210. unitPrice: this.state.thirdUnitPrice, //单价
  2211. quantity: this.state.thirdQuantity, //数量
  2212. totalAmount: this.state.currentTotalPrice, //总价
  2213. material: this.state.thirdMaterial, //材料
  2214. urgent: this.state.thirdUrgent, //加急
  2215. remarks: this.state.thirdRemarks, //备注
  2216. },
  2217. }).done(
  2218. function (data) {
  2219. this.setState({
  2220. loading: false,
  2221. })
  2222. if (!data.error.length) {
  2223. message.success('保存成功!')
  2224. this.setState({
  2225. ThirdId: '',
  2226. ThirdListVisible: false,
  2227. thirdCompanyName: '', //第三方名称
  2228. thirdUnitPrice: '', //单价
  2229. thirdQuantity: '', //数量
  2230. currentTotalPrice: '', //总价
  2231. thirdRemarks: '',
  2232. })
  2233. // this.visitCancel();
  2234. this.thirdTable(this.state.tid)
  2235. } else {
  2236. message.warning(data.error[0].message)
  2237. }
  2238. }.bind(this)
  2239. )
  2240. },
  2241. //保存付款节点
  2242. savePayNode() {
  2243. let api
  2244. if (this.state.ThirdId) {
  2245. //修改
  2246. api = '/api/admin/company/updatePaymentNode'
  2247. } else {
  2248. //新增
  2249. api = '/api/admin/company/addPaymentNode'
  2250. }
  2251. this.setState({
  2252. loading: true,
  2253. })
  2254. $.ajax({
  2255. url: globalConfig.context + api,
  2256. method: 'post',
  2257. dataType: 'json',
  2258. crossDomain: false,
  2259. data: {
  2260. id: this.state.ThirdId, //id
  2261. tid: this.state.tid, //订单编号
  2262. companyName: this.state.thirdCompanyName, //第三方名称
  2263. unitPrice: this.state.thirdUnitPrice, //单价
  2264. quantity: this.state.thirdQuantity, //数量
  2265. totalAmount: this.state.currentTotalPrice, //总价
  2266. partyAmount: this.state.partyAmount, //付款金额
  2267. partyTimes: this.state.partyTimes, //付款时间
  2268. dunType: this.state.dunType, //催款节点
  2269. projectType: this.state.projectType, //项目分类
  2270. },
  2271. }).done(
  2272. function (data) {
  2273. this.setState({
  2274. loading: false,
  2275. })
  2276. if (!data.error.length) {
  2277. message.success('保存成功!')
  2278. this.setState({
  2279. ThirdId: '',
  2280. PayNodeVisible: false,
  2281. thirdCompanyName: '', //第三方名称
  2282. thirdUnitPrice: '', //单价
  2283. thirdQuantity: '', //数量
  2284. currentTotalPrice: '', //总价
  2285. partyAmount:'',//付款金额
  2286. partyTimes:'',//付款时间
  2287. dunType:'',//催款节点
  2288. projectType:''//项目分类
  2289. })
  2290. // this.visitCancel();
  2291. this.payNodeTable(this.state.tid)
  2292. } else {
  2293. message.warning(data.error[0].message)
  2294. }
  2295. }.bind(this)
  2296. )
  2297. },
  2298. // 取消
  2299. handleCancelclose() {
  2300. this.setState({
  2301. PayNodeVisible: false,
  2302. ThirdListVisible: false,
  2303. thirdCompanyName: '', //第三方名称
  2304. thirdUnitPrice: '', //单价
  2305. thirdQuantity: 1, //数量
  2306. currentTotalPrice: '', //总价
  2307. thirdRemarks: '',
  2308. ThirdId: '',
  2309. })
  2310. },
  2311. // 删除供应商信息
  2312. confirmDeletNew(index) {
  2313. this.setState({
  2314. loading: true,
  2315. ThirdListVisible: false,
  2316. })
  2317. $.ajax({
  2318. url: globalConfig.context + '/api/admin/company/deleteCompany',
  2319. method: 'post',
  2320. data: {
  2321. id: index.id,
  2322. },
  2323. }).done(
  2324. function (data) {
  2325. this.setState({
  2326. loading: false,
  2327. })
  2328. if (!data.error.length) {
  2329. message.success('删除成功!')
  2330. this.thirdTable(this.state.tid)
  2331. } else {
  2332. message.warning(data.error[0].message)
  2333. }
  2334. }.bind(this)
  2335. )
  2336. },
  2337. // 删除付款节点
  2338. payNodeConfirmDeletNew(index) {
  2339. this.setState({
  2340. loading: true,
  2341. PayNodeVisible: false,
  2342. })
  2343. $.ajax({
  2344. url: globalConfig.context + '/api/admin/company/deletePaymentNode',
  2345. method: 'post',
  2346. data: {
  2347. id: index.id,
  2348. },
  2349. }).done(
  2350. function (data) {
  2351. this.setState({
  2352. loading: false,
  2353. })
  2354. if (!data.error.length) {
  2355. message.success('删除成功!')
  2356. this.payNodeTable(this.state.tid)
  2357. } else {
  2358. message.warning(data.error[0].message)
  2359. }
  2360. }.bind(this)
  2361. )
  2362. },
  2363. //点击供应商详情
  2364. tableRowClickOne(record) {
  2365. this.setState({
  2366. ThirdListVisible:true,
  2367. ThirdId: record.id, //供应商id
  2368. thirdCompanyName: record.companyName, //第三方名称
  2369. thirdUnitPrice: record.unitPrice, //单价
  2370. thirdQuantity: record.quantity, //数量
  2371. currentTotalPrice: record.totalAmount, //总价
  2372. thirdMaterial: record.material, //有无材料
  2373. thirdUrgent: record.urgent, //加急情况
  2374. thirdRemarks: record.remarks,
  2375. })
  2376. },
  2377. //点击付款节点详情
  2378. payNodeTableRowClickOne(record) {
  2379. this.setState({
  2380. PayNodeVisible: true,
  2381. ThirdId: record.id, //供应商id
  2382. thirdCompanyName: record.companyName, //第三方名称
  2383. thirdUnitPrice: record.unitPrice, //单价
  2384. thirdQuantity: record.quantity, //数量
  2385. currentTotalPrice: record.totalAmount, //总价
  2386. })
  2387. },
  2388. render() {
  2389. const dataSources = this.state.customerArr || []
  2390. console.log(dataSources)
  2391. const options = dataSources.map((group) => (
  2392. <Select.Option key={group.id} value={group.companyName}>
  2393. {group.companyName}
  2394. </Select.Option>
  2395. ))
  2396. const formItemLayout = {
  2397. labelCol: { span: 8 },
  2398. wrapperCol: { span: 14 },
  2399. }
  2400. let departmentArr = this.state.departmentArr || []
  2401. return (
  2402. <div className="user-content">
  2403. {this.state.resVisible ? (
  2404. <ResolutionDetail
  2405. cancel={this.resCancel}
  2406. detail={this.state.resRecord}
  2407. visible={this.state.resVisible}
  2408. id={this.state.resRecord.orderNo}
  2409. />
  2410. ) : (
  2411. ''
  2412. )}
  2413. <ShowModalDiv ShowModal={this.state.showModal} />
  2414. <div className="content-title" style={{ marginBottom: 10 }}>
  2415. <span style={{ fontWeight: 900, fontSize: 16 }}>项目任务</span>
  2416. </div>
  2417. <Tabs defaultActiveKey="2" className="test" bordered>
  2418. <TabPane tab="更改表格显示数据" key="1">
  2419. <div style={{ marginLeft: 10 }}>
  2420. <ChooseList
  2421. columns={this.state.columns}
  2422. changeFn={this.changeList}
  2423. changeList={this.state.changeList}
  2424. top={55}
  2425. margin={11}
  2426. />
  2427. </div>
  2428. </TabPane>
  2429. <TabPane tab="搜索" key="2">
  2430. <div className="user-search" style={{ marginLeft: 10 }}>
  2431. <Input
  2432. placeholder="客户名称"
  2433. value={this.state.nameSearch}
  2434. onChange={(e) => {
  2435. this.setState({ nameSearch: e.target.value })
  2436. }}
  2437. />
  2438. <Input
  2439. placeholder="订单编号"
  2440. value={this.state.orderNoSearch}
  2441. onChange={(e) => {
  2442. this.setState({ orderNoSearch: e.target.value })
  2443. }}
  2444. />
  2445. <Input
  2446. placeholder="合同编号"
  2447. value={this.state.contractNoSearch}
  2448. onChange={(e) => {
  2449. this.setState({ contractNoSearch: e.target.value })
  2450. }}
  2451. />
  2452. <Input
  2453. placeholder="项目编号"
  2454. value={this.state.taskNoSearch}
  2455. onChange={(e) => {
  2456. this.setState({ taskNoSearch: e.target.value })
  2457. }}
  2458. />
  2459. <Select
  2460. placeholder="选择部门"
  2461. style={{ width: 150, marginRight: '10px' }}
  2462. value={this.state.departmenttSearch}
  2463. onChange={(e) => {
  2464. this.setState({ departmenttSearch: e })
  2465. }}
  2466. >
  2467. {departmentArr.map(function (item) {
  2468. return (
  2469. <Select.Option key={item.id}>{item.name}</Select.Option>
  2470. )
  2471. })}
  2472. </Select>
  2473. <Select
  2474. placeholder="项目状态"
  2475. style={{ width: 150, marginRight: '10px' }}
  2476. value={this.state.projectStatusSearch}
  2477. onChange={(e) => {
  2478. this.setState({ projectStatusSearch: e })
  2479. console.log(this.state.projectStatusSearch)
  2480. }}
  2481. >
  2482. {projectStatus.map(function (item) {
  2483. return (
  2484. <Select.Option key={item.value}>{item.key}</Select.Option>
  2485. )
  2486. })}
  2487. </Select>
  2488. <Select
  2489. placeholder="特批状态"
  2490. style={{ width: 150, marginRight: '10px' }}
  2491. value={this.state.approvalSearch}
  2492. onChange={(e) => {
  2493. this.setState({ approvalSearch: e })
  2494. console.log(this.state.approvalSearch)
  2495. }}
  2496. >
  2497. <Select.Option key={0}>非特批</Select.Option>
  2498. <Select.Option key={1}>特批</Select.Option>
  2499. </Select>
  2500. <Select
  2501. placeholder="外包状态"
  2502. style={{ width: 150, marginRight: '10px' }}
  2503. value={this.state.outsourceStatusSearch}
  2504. onChange={(e) => {
  2505. this.setState({ outsourceStatusSearch: e })
  2506. console.log(this.state.outsourceStatusSearch)
  2507. }}
  2508. >
  2509. <Select.Option key={0}>外包待审核</Select.Option>
  2510. {/* <Select.Option key={1}>外包审核通过</Select.Option> */}
  2511. <Select.Option key={2}>外包审核驳回</Select.Option>
  2512. <Select.Option key={999}>全部</Select.Option>
  2513. </Select>
  2514. <Button type="primary" onClick={this.search}>
  2515. 搜索
  2516. </Button>
  2517. <Button
  2518. onClick={(e) => {
  2519. this.reset(true)
  2520. }}
  2521. >
  2522. 重置
  2523. </Button>
  2524. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  2525. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  2526. <span>订单时间 :</span>
  2527. <RangePicker
  2528. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  2529. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  2530. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  2531. </div> */}
  2532. </div>
  2533. </TabPane>
  2534. <TabPane tab="导出Excel" key="3">
  2535. <Button
  2536. type="primary"
  2537. style={{ margin: '11px 0 10px 10px' }}
  2538. onClick={this.exportExec}
  2539. >
  2540. 导出Excel
  2541. </Button>
  2542. </TabPane>
  2543. {/* <TabPane tab="批量操作" key="6">
  2544. <Button
  2545. type="primary"
  2546. disabled={this.state.selectedRowKeys.length == 0}
  2547. style={{ margin: "0px 0px 10px 10px" }}
  2548. onClick={e => {
  2549. e.stopPropagation(),
  2550. this.evaluateY(this.state.selectedRowKeys, "财务专员");
  2551. }}
  2552. >
  2553. 转交
  2554. </Button>
  2555. </TabPane> */}
  2556. </Tabs>
  2557. {/* <div className="user-search">
  2558. <Input
  2559. placeholder="客户名称"
  2560. value={this.state.nameSearch}
  2561. onChange={e => {
  2562. this.setState({ nameSearch: e.target.value });
  2563. }}
  2564. />
  2565. <Input
  2566. placeholder="订单编号"
  2567. value={this.state.orderNoSearch}
  2568. onChange={e => {
  2569. this.setState({ orderNoSearch: e.target.value });
  2570. }}
  2571. />
  2572. <Input
  2573. placeholder="项目编号"
  2574. value={this.state.taskNoSearch}
  2575. onChange={e => {
  2576. this.setState({ taskNoSearch: e.target.value });
  2577. }}
  2578. />
  2579. <Select
  2580. placeholder="选择部门"
  2581. style={{ width: 150, marginRight: "10px" }}
  2582. value={this.state.departmenttSearch}
  2583. onChange={e => {
  2584. this.setState({ departmenttSearch: e });
  2585. }}
  2586. >
  2587. {departmentArr.map(function(item) {
  2588. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  2589. })}
  2590. </Select>
  2591. <Button type="primary" onClick={this.search}>
  2592. 搜索
  2593. </Button>
  2594. <Button onClick={this.reset}>重置</Button>
  2595. <Button
  2596. type="primary"
  2597. style={{ marginLeft: "10px" }}
  2598. onClick={this.exportExec}
  2599. >
  2600. 导出Excel
  2601. </Button>
  2602. <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  2603. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  2604. <span>订单时间 :</span>
  2605. <RangePicker
  2606. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  2607. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  2608. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  2609. </div>
  2610. </div> */}
  2611. <div className="patent-table">
  2612. <Spin spinning={this.state.loading}>
  2613. <Table
  2614. columns={
  2615. this.state.changeList == undefined
  2616. ? this.state.columns
  2617. : this.state.changeList
  2618. }
  2619. dataSource={this.state.dataSource}
  2620. pagination={this.state.pagination}
  2621. scroll={{ x: 'max-content', y: 0 }}
  2622. onRowClick={this.tableRowClick.bind(this)}
  2623. bordered
  2624. size={'small'}
  2625. />
  2626. </Spin>
  2627. </div>
  2628. <Assign
  2629. title="项目"
  2630. selApi={'/api/admin/orderProject/projectDistribution'}
  2631. data={this.state.assignData}
  2632. showDesc={this.state.assignVisible}
  2633. closeDesc={this.closeAssign.bind(this)}
  2634. fenpaiData={8}
  2635. specially={0}
  2636. roleName={this.state.nub}
  2637. requestMethod={'post'}
  2638. flag={this.state.flag}
  2639. all={this.state}
  2640. />
  2641. <Modal
  2642. className="customeDetails"
  2643. footer=""
  2644. title=""
  2645. width="900px"
  2646. visible={this.state.visible}
  2647. onOk={this.visitOk}
  2648. onCancel={this.visitCancel}
  2649. >
  2650. <Tabs
  2651. activeKey={this.state.activeKey}
  2652. onChange={(e) => {
  2653. this.callback(e)
  2654. if (e == 2) {
  2655. this.waiDetail()
  2656. }
  2657. }}
  2658. >
  2659. <TabPane tab="项目概况" key="1">
  2660. <Form
  2661. layout="horizontal"
  2662. onSubmit={this.handleSubmit}
  2663. id="demand-form"
  2664. style={{ paddingBottom: '00px' }}
  2665. >
  2666. <Spin spinning={this.state.loading}>
  2667. <div className="clearfix">
  2668. <div className="clearfix">
  2669. <FormItem
  2670. className="half-item"
  2671. {...formItemLayout}
  2672. label="当前项目情况"
  2673. >
  2674. <Radio.Group
  2675. value={this.state.status}
  2676. onChange={(e) => {
  2677. this.setState({ status: e.target.value })
  2678. }}
  2679. >
  2680. <Radio value={0}>开启</Radio>
  2681. <Radio value={1}>暂停</Radio>
  2682. </Radio.Group>
  2683. <Button
  2684. type="primary"
  2685. size="small"
  2686. style={{ marginTop: '5px', position: 'absolute' }}
  2687. onClick={this.caozuorizhi}
  2688. >
  2689. 操作日志
  2690. </Button>
  2691. </FormItem>
  2692. <FormItem
  2693. className="half-item"
  2694. {...formItemLayout}
  2695. label="合同编号"
  2696. >
  2697. <span>{this.state.contractNo}</span>
  2698. </FormItem>
  2699. </div>
  2700. <div className="clearfix">
  2701. <FormItem
  2702. className="half-item"
  2703. {...formItemLayout}
  2704. label="项目状态"
  2705. >
  2706. <Select
  2707. placeholder="选择项目状态"
  2708. style={{ width: '200px' }}
  2709. value={this.state.projectStatus}
  2710. onChange={(e) => {
  2711. this.setState({ projectStatus: e })
  2712. }}
  2713. >
  2714. {projectStatus.map(function (item) {
  2715. return (
  2716. <Select.Option key={item.value}>
  2717. {item.key}
  2718. </Select.Option>
  2719. )
  2720. })}
  2721. </Select>
  2722. </FormItem>
  2723. <FormItem
  2724. className="half-item"
  2725. {...formItemLayout}
  2726. label="是否特批"
  2727. >
  2728. <span>{getApproval(this.state.approval)}</span>
  2729. </FormItem>
  2730. <FormItem
  2731. className="half-item"
  2732. {...formItemLayout}
  2733. label="结算状态"
  2734. >
  2735. <span>
  2736. {getLiquidationStatus(this.state.liquidationStatus)}
  2737. </span>
  2738. </FormItem>
  2739. <FormItem
  2740. className="half-item"
  2741. {...formItemLayout}
  2742. label="流程状态"
  2743. >
  2744. <span>
  2745. {getProcessStatus(this.state.processStatus)}
  2746. </span>
  2747. </FormItem>
  2748. <FormItem
  2749. className="half-item"
  2750. {...formItemLayout}
  2751. label="订单编号"
  2752. >
  2753. <span>{this.state.orderNo}</span>
  2754. </FormItem>
  2755. </div>
  2756. <div className="clearfix">
  2757. <FormItem
  2758. className="half-item"
  2759. {...formItemLayout}
  2760. label="满意度表格"
  2761. >
  2762. <Radio.Group
  2763. value={this.state.formRetrieve}
  2764. onChange={(e) => {
  2765. this.setState({ formRetrieve: e.target.value })
  2766. }}
  2767. >
  2768. <Radio value={0}>未收回</Radio>
  2769. <Radio value={1}>已收回</Radio>
  2770. <Radio value={2}>其他</Radio>
  2771. </Radio.Group>
  2772. </FormItem>
  2773. <FormItem
  2774. className="half-item"
  2775. {...formItemLayout}
  2776. label="退单"
  2777. >
  2778. <Radio.Group
  2779. value={this.state.taskRefund}
  2780. onChange={(e) => {
  2781. this.setState({ taskRefund: e.target.value })
  2782. }}
  2783. >
  2784. <Radio value={0}>已完成</Radio>
  2785. <Radio value={1}>未完成</Radio>
  2786. <Radio value={2}>其他</Radio>
  2787. </Radio.Group>
  2788. </FormItem>
  2789. </div>
  2790. <div className="clearfix">
  2791. {
  2792. <FormItem
  2793. className="half-item"
  2794. {...formItemLayout}
  2795. label="(满意度)备注"
  2796. >
  2797. <Input
  2798. type="textarea"
  2799. placeholder="请输入备注"
  2800. rows={2}
  2801. value={this.state.retrieveContent}
  2802. onChange={(e) => {
  2803. this.setState({
  2804. retrieveContent: e.target.value,
  2805. })
  2806. }}
  2807. />
  2808. </FormItem>
  2809. }
  2810. {
  2811. <FormItem
  2812. className="half-item"
  2813. {...formItemLayout}
  2814. label="(退单)备注"
  2815. >
  2816. <Input
  2817. type="textarea"
  2818. placeholder="请输入备注"
  2819. rows={2}
  2820. value={this.state.refundContent}
  2821. onChange={(e) => {
  2822. this.setState({ refundContent: e.target.value })
  2823. }}
  2824. />
  2825. </FormItem>
  2826. }
  2827. </div>
  2828. <div className="clearfix">
  2829. <h3 className="sub-title">订单负责人信息</h3>
  2830. <FormItem
  2831. className="half-item"
  2832. {...formItemLayout}
  2833. label="负责人"
  2834. >
  2835. <span>
  2836. {this.state.salesmanName +
  2837. '(' +
  2838. this.state.depName +
  2839. ')'}
  2840. </span>
  2841. </FormItem>
  2842. <FormItem
  2843. className="half-item"
  2844. {...formItemLayout}
  2845. label="负责人电话"
  2846. >
  2847. <span>{this.state.salesmanMobile}</span>
  2848. </FormItem>
  2849. <FormItem
  2850. className="half-item"
  2851. {...formItemLayout}
  2852. label="当前财务负责人"
  2853. >
  2854. <span>{this.state.nowFinance}</span>
  2855. </FormItem>
  2856. <FormItem
  2857. className="half-item"
  2858. {...formItemLayout}
  2859. label="当前财务负责人电话"
  2860. >
  2861. <span>{this.state.nowFinanceMobile}</span>
  2862. </FormItem>
  2863. <FormItem
  2864. className="half-item"
  2865. {...formItemLayout}
  2866. style={{ opacity: '.5' }}
  2867. label="原负责人"
  2868. >
  2869. <span>{this.state.oldSalesmanName}</span>
  2870. </FormItem>
  2871. <FormItem
  2872. className="half-item"
  2873. {...formItemLayout}
  2874. style={{ opacity: '.5' }}
  2875. label="原负责人电话"
  2876. >
  2877. <span>{this.state.oldSalesmanMobile}</span>
  2878. </FormItem>
  2879. <FormItem
  2880. className="half-item"
  2881. {...formItemLayout}
  2882. style={{ opacity: '.5' }}
  2883. label="实际财务操作人"
  2884. >
  2885. <span>{this.state.financeName}</span>
  2886. </FormItem>
  2887. <FormItem
  2888. className="half-item"
  2889. {...formItemLayout}
  2890. style={{ opacity: '.5' }}
  2891. label="实际财务操作人电话"
  2892. >
  2893. <span>{this.state.financeMobile}</span>
  2894. </FormItem>
  2895. <FormItem
  2896. className="half-item"
  2897. {...formItemLayout}
  2898. label="订单留言"
  2899. >
  2900. <span>{this.state.orderRemarks}</span>
  2901. </FormItem>
  2902. <FormItem
  2903. className="half-item"
  2904. {...formItemLayout}
  2905. label=""
  2906. >
  2907. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  2908. </FormItem>
  2909. <OrderRiZi
  2910. dataSourcerizhi={this.state.dataSourceY}
  2911. closeOrderLog={this.closeOrderLog}
  2912. visible={this.state.avisible}
  2913. loading={this.state.loading}
  2914. />
  2915. </div>
  2916. <div className="clearfix">
  2917. <h3 className="sub-title">外包信息</h3>
  2918. <FormItem
  2919. className="half-item"
  2920. {...formItemLayout}
  2921. label="外包公司"
  2922. >
  2923. <Input
  2924. value={this.state.outsourceName}
  2925. onChange={(e) => {
  2926. this.setState({
  2927. outsourceName: e.target.value,
  2928. })
  2929. }}
  2930. placeholder="请输入外包公司"
  2931. style={{ width: '200px' }}
  2932. />
  2933. </FormItem>
  2934. <FormItem
  2935. className="half-item"
  2936. {...formItemLayout}
  2937. label="外包成本(万元)"
  2938. >
  2939. <Input
  2940. value={this.state.outsourcePrice}
  2941. onChange={(e) => {
  2942. this.setState({
  2943. outsourcePrice: e.target.value,
  2944. })
  2945. }}
  2946. placeholder="请输入外包成本"
  2947. style={{ width: '200px' }}
  2948. />
  2949. </FormItem>
  2950. </div>
  2951. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  2952. <div className="clearfix">
  2953. <h3 className="sub-title">联系信息</h3>
  2954. <FormItem
  2955. className="half-item"
  2956. {...formItemLayout}
  2957. label="客户名称"
  2958. >
  2959. <span>{this.state.userName}</span>
  2960. </FormItem>
  2961. <FormItem
  2962. className="half-item"
  2963. {...formItemLayout}
  2964. label="企业法人"
  2965. >
  2966. <Input
  2967. placeholder="请输入法人名称"
  2968. value={this.state.legalPerson}
  2969. style={{ width: '200px' }}
  2970. onChange={(e) => {
  2971. this.setState({ legalPerson: e.target.value })
  2972. }}
  2973. ref="commodityQuantity"
  2974. />
  2975. </FormItem>
  2976. <FormItem
  2977. className="half-item"
  2978. {...formItemLayout}
  2979. label="法人电话"
  2980. >
  2981. <Input
  2982. placeholder="请输入法人电话"
  2983. value={this.state.legalPersonTel}
  2984. style={{ width: '200px' }}
  2985. onChange={(e) => {
  2986. this.setState({ legalPersonTel: e.target.value })
  2987. }}
  2988. ref="commodityQuantity"
  2989. />
  2990. </FormItem>
  2991. <FormItem
  2992. className="half-item"
  2993. {...formItemLayout}
  2994. label="客户联系人"
  2995. >
  2996. <Input
  2997. placeholder="请输入联系人名称"
  2998. value={this.state.contacts}
  2999. style={{ width: '200px' }}
  3000. onChange={(e) => {
  3001. this.setState({ contacts: e.target.value })
  3002. }}
  3003. ref="commodityQuantity"
  3004. />
  3005. </FormItem>
  3006. <FormItem
  3007. className="half-item"
  3008. {...formItemLayout}
  3009. label="联系人电话"
  3010. >
  3011. <Input
  3012. placeholder="请输入联系人电话"
  3013. value={this.state.contactMobile}
  3014. style={{ width: '200px' }}
  3015. onChange={(e) => {
  3016. this.setState({ contactMobile: e.target.value })
  3017. }}
  3018. ref="commodityQuantity"
  3019. />
  3020. </FormItem>
  3021. <FormItem
  3022. className="half-item"
  3023. {...formItemLayout}
  3024. label="企业地址"
  3025. >
  3026. <Cascader
  3027. options={areaSelect()}
  3028. value={this.state.ProvinceCity}
  3029. placeholder="选择城市"
  3030. style={{ width: '200px' }}
  3031. onChange={(e) => {
  3032. this.setState({ ProvinceCity: e })
  3033. }}
  3034. />
  3035. </FormItem>
  3036. <FormItem
  3037. className="half-item"
  3038. {...formItemLayout}
  3039. label=""
  3040. ></FormItem>
  3041. <FormItem
  3042. className="half-item"
  3043. {...formItemLayout}
  3044. label=""
  3045. >
  3046. <Input
  3047. placeholder="请输入详细地址"
  3048. value={this.state.postalAddress}
  3049. style={{ width: '200px', marginLeft: '12em' }}
  3050. onChange={(e) => {
  3051. this.setState({ postalAddress: e.target.value })
  3052. }}
  3053. ref="commodityQuantity"
  3054. />
  3055. </FormItem>
  3056. </div>
  3057. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  3058. <div className="clearfix">
  3059. <h3 className="sub-title">项目信息</h3>
  3060. <FormItem
  3061. className="half-item"
  3062. {...formItemLayout}
  3063. label="项目编号"
  3064. >
  3065. <span>
  3066. {this.state.splitStatus == 2
  3067. ? this.state.splitSuper + '-' + this.state.splitId
  3068. : this.state.id}
  3069. </span>
  3070. </FormItem>
  3071. <FormItem
  3072. className="half-item"
  3073. {...formItemLayout}
  3074. label="项目名称"
  3075. >
  3076. <span>{this.state.taskName}</span>
  3077. </FormItem>
  3078. <FormItem
  3079. className="half-item"
  3080. {...formItemLayout}
  3081. label="项目状态"
  3082. >
  3083. <Select
  3084. placeholder="选择项目状态"
  3085. style={{ width: '200px' }}
  3086. value={this.state.taskStatus}
  3087. onChange={(e) => {
  3088. this.setState({ taskStatus: e })
  3089. }}
  3090. >
  3091. {taskStatus.map(function (item) {
  3092. return (
  3093. <Select.Option key={item.value}>
  3094. {item.key}
  3095. </Select.Option>
  3096. )
  3097. })}
  3098. </Select>
  3099. </FormItem>
  3100. <FormItem
  3101. className="half-item"
  3102. {...formItemLayout}
  3103. label="项目类别"
  3104. >
  3105. <span>{this.state.cname}</span>
  3106. </FormItem>
  3107. <FormItem
  3108. className="half-item"
  3109. {...formItemLayout}
  3110. label="证书编号"
  3111. >
  3112. <Input
  3113. placeholder="请输入证书编号"
  3114. value={this.state.certificateNumber}
  3115. style={{ width: '200px' }}
  3116. onChange={(e) => {
  3117. this.setState({
  3118. certificateNumber: e.target.value,
  3119. })
  3120. }}
  3121. ref="commodityQuantity"
  3122. />
  3123. </FormItem>
  3124. </div>
  3125. <div className="clearfix">
  3126. <h3 className="sub-title">申报系统账户信息</h3>
  3127. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  3128. <FormItem
  3129. className="half-item"
  3130. {...formItemLayout}
  3131. label="用户名"
  3132. >
  3133. <Input
  3134. placeholder="请输入用户名"
  3135. value={this.state.declareUser}
  3136. style={{ width: '200px' }}
  3137. onChange={(e) => {
  3138. this.setState({ declareUser: e.target.value })
  3139. }}
  3140. />
  3141. </FormItem>
  3142. <FormItem
  3143. className="half-item"
  3144. {...formItemLayout}
  3145. label="密码"
  3146. >
  3147. <Input
  3148. placeholder="请输入密码"
  3149. value={this.state.declarePwd}
  3150. style={{ width: '200px' }}
  3151. onChange={(e) => {
  3152. this.setState({ declarePwd: e.target.value })
  3153. }}
  3154. />
  3155. </FormItem>
  3156. </div>
  3157. <div className="clearfix">
  3158. <h3 className="sub-title">项目申报进度</h3>
  3159. <FormItem
  3160. className="half-item"
  3161. {...formItemLayout}
  3162. label="申报批次"
  3163. >
  3164. <Select
  3165. style={{ width: 200 }}
  3166. placeholder="请选择批次"
  3167. value={
  3168. this.state.declarationBatch
  3169. ? this.state.declarationBatch
  3170. : undefined
  3171. }
  3172. onChange={(e) => {
  3173. this.setState({
  3174. declarationBatch: e,
  3175. })
  3176. }}
  3177. >
  3178. <Option value={1}>第一批</Option>
  3179. <Option value={2}>第二批</Option>
  3180. <Option value={3}>第三批</Option>
  3181. <Option value={4}>第四批</Option>
  3182. </Select>
  3183. </FormItem>
  3184. <FormItem
  3185. className="half-item"
  3186. {...formItemLayout}
  3187. label="启动时间"
  3188. >
  3189. <DatePicker
  3190. style={{
  3191. marginTop: '2px',
  3192. width: '200px',
  3193. height: '32px',
  3194. }}
  3195. showTime
  3196. format="YYYY-MM-DD"
  3197. onOk={() => {}}
  3198. value={
  3199. this.state.startDate
  3200. ? moment(this.state.startDate)
  3201. : null
  3202. }
  3203. onChange={(data, dataString) => {
  3204. this.setState({ startDate: dataString })
  3205. }}
  3206. />
  3207. </FormItem>
  3208. <FormItem
  3209. className="half-item"
  3210. {...formItemLayout}
  3211. label="完成时间"
  3212. >
  3213. <DatePicker
  3214. style={{
  3215. marginTop: '2px',
  3216. width: '200px',
  3217. height: '32px',
  3218. }}
  3219. showTime
  3220. format="YYYY-MM-DD"
  3221. onOk={() => {}}
  3222. value={
  3223. this.state.endDate
  3224. ? moment(this.state.endDate)
  3225. : null
  3226. }
  3227. onChange={(data, dataString) => {
  3228. this.setState({ endDate: dataString })
  3229. }}
  3230. />
  3231. </FormItem>
  3232. <FormItem
  3233. className="half-item"
  3234. {...formItemLayout}
  3235. label="受理时间"
  3236. >
  3237. <DatePicker
  3238. style={{
  3239. marginTop: '2px',
  3240. width: '200px',
  3241. height: '32px',
  3242. }}
  3243. showTime
  3244. format="YYYY-MM-DD"
  3245. onOk={() => {}}
  3246. value={
  3247. this.state.acceptDate
  3248. ? moment(this.state.acceptDate)
  3249. : null
  3250. }
  3251. onChange={(data, dataString) => {
  3252. this.setState({ acceptDate: dataString })
  3253. }}
  3254. />
  3255. </FormItem>
  3256. <FormItem
  3257. className="half-item"
  3258. {...formItemLayout}
  3259. label="评审时间"
  3260. >
  3261. <DatePicker
  3262. style={{
  3263. marginTop: '2px',
  3264. width: '200px',
  3265. height: '32px',
  3266. }}
  3267. showTime
  3268. format="YYYY-MM-DD"
  3269. onOk={() => {}}
  3270. value={
  3271. this.state.reviewDate
  3272. ? moment(this.state.reviewDate)
  3273. : null
  3274. }
  3275. onChange={(data, dataString) => {
  3276. this.setState({ reviewDate: dataString })
  3277. }}
  3278. />
  3279. </FormItem>
  3280. <FormItem
  3281. className="half-item"
  3282. {...formItemLayout}
  3283. label="公示时间"
  3284. >
  3285. <DatePicker
  3286. style={{
  3287. marginTop: '2px',
  3288. width: '200px',
  3289. height: '32px',
  3290. }}
  3291. showTime
  3292. format="YYYY-MM-DD"
  3293. onOk={() => {}}
  3294. value={
  3295. this.state.publicityDate
  3296. ? moment(this.state.publicityDate)
  3297. : null
  3298. }
  3299. onChange={(data, dataString) => {
  3300. this.setState({ publicityDate: dataString })
  3301. }}
  3302. />
  3303. </FormItem>
  3304. <FormItem
  3305. className="half-item"
  3306. {...formItemLayout}
  3307. label="发证时间"
  3308. >
  3309. <DatePicker
  3310. style={{
  3311. marginTop: '2px',
  3312. width: '200px',
  3313. height: '32px',
  3314. }}
  3315. showTime
  3316. format="YYYY-MM-DD"
  3317. onOk={() => {}}
  3318. value={
  3319. this.state.licenceDate
  3320. ? moment(this.state.licenceDate)
  3321. : null
  3322. }
  3323. onChange={(data, dataString) => {
  3324. this.setState({ licenceDate: dataString })
  3325. }}
  3326. />
  3327. </FormItem>
  3328. <FormItem
  3329. className="half-item"
  3330. {...formItemLayout}
  3331. label="立项金额(万元)"
  3332. >
  3333. <Input
  3334. placeholder="请输入立项金额"
  3335. value={this.state.setUpAmount}
  3336. style={{ width: '200px' }}
  3337. onChange={(e) => {
  3338. this.setState({ setUpAmount: e.target.value })
  3339. }}
  3340. ref="commodityQuantity"
  3341. />
  3342. </FormItem>
  3343. <FormItem
  3344. className="half-item"
  3345. {...formItemLayout}
  3346. label="是否到款"
  3347. >
  3348. <Radio.Group
  3349. value={this.state.arrivalMoney}
  3350. onChange={(e) => {
  3351. this.setState({ arrivalMoney: e.target.value })
  3352. }}
  3353. >
  3354. <Radio value={0}>未到企业</Radio>
  3355. <Radio value={1}>已到企业</Radio>
  3356. </Radio.Group>
  3357. </FormItem>
  3358. </div>
  3359. <div className="clearfix">
  3360. <FormItem
  3361. labelCol={{ span: 3 }}
  3362. wrapperCol={{ span: 16 }}
  3363. label="附件"
  3364. >
  3365. <Picture
  3366. fileList={(e) => {
  3367. this.setState({ attachmentUrl: e })
  3368. }}
  3369. pictureUrl={this.state.attachmentUrl}
  3370. visible={this.props.visible}
  3371. data={{
  3372. sign: 'order_task_file',
  3373. url: '/api/admin/orderProject/uploadOrderTaskFile',
  3374. number: 8,
  3375. }}
  3376. />
  3377. </FormItem>
  3378. </div>
  3379. <div className="clearfix">
  3380. <FormItem
  3381. labelCol={{ span: 3 }}
  3382. wrapperCol={{ span: 16 }}
  3383. label="备注"
  3384. >
  3385. <Input
  3386. type="textarea"
  3387. placeholder="请输入备注"
  3388. rows={4}
  3389. value={this.state.taskComment}
  3390. onChange={(e) => {
  3391. this.setState({ taskComment: e.target.value })
  3392. }}
  3393. />
  3394. </FormItem>
  3395. </div>
  3396. <div>
  3397. <h3 className="sub-title">项目业务</h3>
  3398. {this.state.processStatus == 0 ? (
  3399. <Button
  3400. type="primary"
  3401. onClick={this.addDetailed}
  3402. style={{
  3403. float: 'right',
  3404. marginRight: '50px',
  3405. marginBottom: '15px',
  3406. }}
  3407. >
  3408. 添加项目明细
  3409. </Button>
  3410. ) : (
  3411. ''
  3412. )}
  3413. </div>
  3414. <div className="patent-table">
  3415. <Spin spinning={this.state.loading}>
  3416. <Table
  3417. columns={this.state.columnsX}
  3418. dataSource={this.state.dataSourceX}
  3419. pagination={this.state.paginations}
  3420. onRowClick={this.tableRowClickX}
  3421. bordered
  3422. size="small"
  3423. />
  3424. </Spin>
  3425. </div>
  3426. <div className="clearfix">
  3427. <Button
  3428. className="cancel"
  3429. type="primary"
  3430. // onClick={this.tijiaoOk}
  3431. onClick={() => {
  3432. let num = this.state.projectStatus
  3433. if (
  3434. num != 0 &&
  3435. num != 10 &&
  3436. num != 11 &&
  3437. num != 12 &&
  3438. num != 2 &&
  3439. num != 5 &&
  3440. num != 6
  3441. ) {
  3442. this.showDeleteConfirm(num, this.tijiaoOk)
  3443. } else {
  3444. this.tijiaoOk()
  3445. }
  3446. }}
  3447. style={{ marginLeft: '200px', marginTop: '10px' }}
  3448. htmlType="submit"
  3449. >
  3450. 保存
  3451. </Button>
  3452. <Button
  3453. className="cancel"
  3454. type="ghost"
  3455. onClick={this.visitCancel}
  3456. style={{ marginLeft: '50px', marginTop: '10px' }}
  3457. >
  3458. 取消
  3459. </Button>
  3460. </div>
  3461. </div>
  3462. </Spin>
  3463. </Form>
  3464. </TabPane>
  3465. <TabPane tab="外包/供应商信息" key="2">
  3466. {this.state.refundStatus != 0 && this.state.refundStatus != 1 ? (
  3467. <div style={{ marginTop: 10 }}>
  3468. <div className="clearfix">
  3469. <FormItem
  3470. className="half-item"
  3471. {...formItemLayout}
  3472. label={
  3473. <span>
  3474. <strong style={{ color: '#f00' }}>*</strong>
  3475. 类型:
  3476. </span>
  3477. }
  3478. >
  3479. <Radio.Group
  3480. value={this.state.startType}
  3481. onChange={(e) => {
  3482. this.setState({ startType: e.target.value })
  3483. }}
  3484. >
  3485. <Radio value={0}>外包(不走总部)</Radio>
  3486. <Radio value={1}>供应商信息</Radio>
  3487. </Radio.Group>
  3488. </FormItem>
  3489. </div>
  3490. {/* 专利类型 */}
  3491. <div
  3492. className="clearfix"
  3493. style={{
  3494. display: this.state.type == 1 ? 'block' : 'none',
  3495. }}
  3496. >
  3497. <FormItem
  3498. className="half-item"
  3499. {...formItemLayout}
  3500. label={
  3501. <span>
  3502. <strong style={{ color: '#f00' }}>*</strong>
  3503. 专利类型:
  3504. </span>
  3505. }
  3506. >
  3507. <Radio.Group
  3508. value={this.state.patentType}
  3509. onChange={(e) => {
  3510. this.setState({ patentType: e.target.value })
  3511. }}
  3512. >
  3513. <Radio value={0}>专利申请/变更/转让</Radio>
  3514. <Radio value={1}>专利买卖</Radio>
  3515. </Radio.Group>
  3516. </FormItem>
  3517. </div>
  3518. <div
  3519. className="clearfix"
  3520. style={{
  3521. display: this.state.type == 1 ? 'block' : 'none',
  3522. }}
  3523. >
  3524. <FormItem
  3525. className="half-item"
  3526. {...formItemLayout}
  3527. label={
  3528. <span>
  3529. <strong style={{ color: '#f00' }}>*</strong>
  3530. 专利名称:
  3531. </span>
  3532. }
  3533. >
  3534. <Radio.Group
  3535. value={this.state.patentNameType}
  3536. onChange={(e) => {
  3537. this.setState({ patentNameType: e.target.value })
  3538. }}
  3539. >
  3540. <Radio value={0}>实用新型专利</Radio>
  3541. <Radio value={1}>发明专利</Radio>
  3542. <Radio value={2}>外观专利</Radio>
  3543. <Radio value={3}>
  3544. 其他
  3545. <Input
  3546. value={this.state.patentName}
  3547. style={{ marginLeft: '15px' }}
  3548. onChange={(e) => {
  3549. this.setState({
  3550. patentName: e.target.value,
  3551. })
  3552. }}
  3553. placeholder="请填写专利名称"
  3554. />
  3555. </Radio>
  3556. </Radio.Group>
  3557. </FormItem>
  3558. </div>
  3559. {/* 第三方信息专利 */}
  3560. <div
  3561. style={{
  3562. // display: this.state.type == 1 ? "block" : "none",
  3563. display: this.state.type == 1 ? 'block' : 'block',
  3564. }}
  3565. >
  3566. <span
  3567. style={{
  3568. marginLeft: '50px',
  3569. fontSize: '18px',
  3570. }}
  3571. >
  3572. 第三方信息
  3573. </span>
  3574. <span
  3575. style={{
  3576. display: 'inline-block',
  3577. marginLeft: 10,
  3578. color: 'red',
  3579. }}
  3580. >
  3581. 金额总计(万元): {this.state.allTotalAmount}
  3582. </span>
  3583. <Button
  3584. type="primary"
  3585. onClick={(e) => {
  3586. this.addThirdList()
  3587. }}
  3588. style={{
  3589. float: 'right',
  3590. marginRight: '50px',
  3591. marginBottom: '15px',
  3592. }}
  3593. >
  3594. +新增供应商名称
  3595. </Button>
  3596. </div>
  3597. <div
  3598. className="clearfix"
  3599. style={{
  3600. // display: this.state.type == 1 ? "block" : "none",
  3601. display: this.state.type == 1 ? 'block' : 'block',
  3602. }}
  3603. >
  3604. <Spin spinning={this.state.loading}>
  3605. <Form layout="horizontal">
  3606. <Table
  3607. pagination={false}
  3608. columns={this.state.ContactsListsNew}
  3609. dataSource={this.state.thirdInfoList}
  3610. onRowClick={this.tableRowClickOne}
  3611. scroll={{ x: 'max-content', y: 0 }}
  3612. bordered
  3613. size="small"
  3614. />
  3615. <Col
  3616. span={24}
  3617. offset={9}
  3618. style={{ marginTop: '15px' }}
  3619. ></Col>
  3620. </Form>
  3621. </Spin>
  3622. </div>
  3623. <div
  3624. style={{
  3625. // display: this.state.type == 1 ? "block" : "none",
  3626. display: this.state.type == 1 ? 'block' : 'block',
  3627. }}
  3628. >
  3629. <span
  3630. style={{
  3631. marginLeft: '50px',
  3632. fontSize: '18px',
  3633. }}
  3634. >
  3635. 付款节点
  3636. </span>
  3637. <span
  3638. style={{
  3639. display: 'inline-block',
  3640. marginLeft: 10,
  3641. color: 'red',
  3642. }}
  3643. ></span>
  3644. <Button
  3645. type="primary"
  3646. onClick={(e) => {
  3647. this.addPayNode()
  3648. }}
  3649. style={{
  3650. float: 'right',
  3651. marginRight: '50px',
  3652. marginBottom: '15px',
  3653. }}
  3654. >
  3655. +新增付款节点
  3656. </Button>
  3657. </div>
  3658. <div
  3659. className="clearfix"
  3660. style={{
  3661. // display: this.state.type == 1 ? "block" : "none",
  3662. display: this.state.type == 1 ? 'block' : 'block',
  3663. }}
  3664. >
  3665. <Spin spinning={this.state.loading}>
  3666. <Form layout="horizontal">
  3667. <Table
  3668. pagination={false}
  3669. columns={this.state.PayNodeTableColunms}
  3670. dataSource={this.state.payNodeList}
  3671. onRowClick={this.payNodeTableRowClickOne}
  3672. scroll={{ x: 'max-content', y: 0 }}
  3673. bordered
  3674. size="small"
  3675. />
  3676. <Col
  3677. span={24}
  3678. offset={9}
  3679. style={{ marginTop: '15px' }}
  3680. ></Col>
  3681. </Form>
  3682. </Spin>
  3683. </div>
  3684. <div className="clearfix">
  3685. <FormItem
  3686. className="half-item"
  3687. {...formItemLayout}
  3688. label={
  3689. <span>
  3690. <strong style={{ color: '#f00' }}>*</strong>备注
  3691. </span>
  3692. }
  3693. >
  3694. <TextArea
  3695. rows={4}
  3696. value={this.state.outsourceRemarks}
  3697. onChange={(e) => {
  3698. this.setState({
  3699. outsourceRemarks: e.target.value,
  3700. })
  3701. }}
  3702. placeholder="请输入备注"
  3703. />
  3704. </FormItem>
  3705. </div>
  3706. {/*<div className="clearfix">
  3707. <FormItem className="half-item"
  3708. {...formItemLayout}
  3709. label="上传协议文件" style={{height:"auto"}}>
  3710. <Upload header={{authorization: 'authorization-text'}} action={globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"}
  3711. data={(e)=>{
  3712. return {
  3713. 'sign': e.name.substring(0,e.name.lastIndexOf("."))
  3714. }
  3715. }}
  3716. fileList={this.state.fileUrl}
  3717. onChange={(e)=>{
  3718. this.setState({
  3719. attachmentUrl:e.fileList,
  3720. fileUrl:e.fileList
  3721. })
  3722. }}>
  3723. {fileUrl.length>1?null:<Button>
  3724. <Icon type="upload" /> 点击上传
  3725. </Button>}
  3726. </Upload>
  3727. <span className="tip" style={{display:"inline-block"}}>支持文件格式: doc,excel,ppt</span>
  3728. </FormItem>
  3729. </div>*/}
  3730. <p
  3731. className="tip"
  3732. style={{
  3733. paddingBottom: '12px',
  3734. width: '240px',
  3735. marginLeft: '145px',
  3736. color: 'red',
  3737. }}
  3738. >
  3739. 首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
  3740. </p>
  3741. <div className="clearfix">
  3742. <FormItem
  3743. labelCol={{ span: 4 }}
  3744. wrapperCol={{ span: 18 }}
  3745. label={
  3746. <span>
  3747. <strong style={{ color: '#f00' }}>*</strong>
  3748. 合同/协议扫描件
  3749. </span>
  3750. }
  3751. >
  3752. <PicturesWall
  3753. fileList={this.getOrgCodeUrlWai}
  3754. pictureUrl={this.state.pictureUrl}
  3755. />
  3756. <p style={{ color: 'red' }}>图片建议:要清晰。</p>
  3757. </FormItem>
  3758. </div>
  3759. <div className="clearfix">
  3760. <div
  3761. style={{
  3762. display: 'inline-black',
  3763. textAlign: 'center',
  3764. }}
  3765. >
  3766. <Button
  3767. type="primary"
  3768. loading={this.state.loading}
  3769. onClick={this.sureOut}
  3770. >
  3771. 确认发起外包,不通过总部
  3772. </Button>
  3773. <p className="tip" style={{ color: 'red' }}>
  3774. 提示:高于总部价格,费用个人承担
  3775. </p>
  3776. </div>
  3777. </div>
  3778. </div>
  3779. ) : (
  3780. <div>
  3781. <div className="clearfix">
  3782. <FormItem
  3783. className="half-item"
  3784. {...formItemLayout}
  3785. label="外包公司"
  3786. >
  3787. <span>{this.state.companyName}</span>
  3788. </FormItem>
  3789. </div>
  3790. <div className="clearfix">
  3791. <FormItem
  3792. className="half-item"
  3793. {...formItemLayout}
  3794. label="单价(万元)"
  3795. >
  3796. <span>{this.state.unitPrice}</span>
  3797. </FormItem>
  3798. </div>
  3799. <div className="clearfix">
  3800. <FormItem
  3801. className="half-item"
  3802. {...formItemLayout}
  3803. label="数量(个)"
  3804. >
  3805. <span>{this.state.unitNumber}</span>
  3806. </FormItem>
  3807. </div>
  3808. <div className="clearfix">
  3809. <FormItem
  3810. className="half-item"
  3811. {...formItemLayout}
  3812. label="总金额(万元)"
  3813. >
  3814. <span>{this.state.amount}</span>
  3815. </FormItem>
  3816. </div>
  3817. <div className="clearfix">
  3818. <FormItem
  3819. className="half-item"
  3820. {...formItemLayout}
  3821. label="备注"
  3822. >
  3823. <span>{this.state.outsourceRemarks}</span>
  3824. </FormItem>
  3825. </div>
  3826. {/*<div className="clearfix">
  3827. <FormItem className="half-item" style={{height:'auto'}}
  3828. {...formItemLayout}
  3829. label="上传协议文件" >
  3830. <Upload header={{authorization: 'authorization-text'}} action={globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"}
  3831. data={(e)=>{
  3832. return {
  3833. 'sign': e.name.substring(0,e.name.lastIndexOf("."))
  3834. }
  3835. }}
  3836. fileList={this.state.fileUrl}
  3837. showUploadList={{showRemoveIcon:false}}
  3838. onPreview={(e)=>{
  3839. let url = window.location.href.substring(7)
  3840. window.location.href="http://"+url.substring(0,url.indexOf("/"))+"/api/admin/outsourceOrg//downloadFile?path="+e.response.data
  3841. }}
  3842. >
  3843. </Upload>
  3844. </FormItem>
  3845. </div>*/}
  3846. <div className="clearfix">
  3847. <FormItem
  3848. labelCol={{ span: 4 }}
  3849. wrapperCol={{ span: 18 }}
  3850. label="合同/协议扫描件"
  3851. >
  3852. <Upload
  3853. className="demandDetailShow-upload"
  3854. listType="picture-card"
  3855. fileList={this.state.pictureUrl}
  3856. onPreview={(file) => {
  3857. this.setState({
  3858. previewImage: file.url || file.thumbUrl,
  3859. previewVisible: true,
  3860. })
  3861. }}
  3862. ></Upload>
  3863. <Modal
  3864. maskClosable={false}
  3865. footer={null}
  3866. visible={this.state.previewVisible}
  3867. onCancel={() => {
  3868. this.setState({ previewVisible: false })
  3869. }}
  3870. >
  3871. <img
  3872. alt=""
  3873. style={{ width: '100%' }}
  3874. src={this.state.previewImage || ''}
  3875. />
  3876. </Modal>
  3877. </FormItem>
  3878. </div>
  3879. </div>
  3880. )}
  3881. {this.state.refundStatus == 1 ||
  3882. this.state.refundStatus == 0 ||
  3883. this.state.refundStatus == 2 ? (
  3884. <div className="clearfix">
  3885. <hr className="division" />
  3886. <div
  3887. className="clearfix"
  3888. style={{
  3889. display: this.state.refundStatus == 0 ? 'none' : 'block',
  3890. }}
  3891. >
  3892. <FormItem
  3893. className="half-item"
  3894. {...formItemLayout}
  3895. label="审核意见"
  3896. >
  3897. <span>{this.state.remarks}</span>
  3898. </FormItem>
  3899. </div>
  3900. <div className="clearfix">
  3901. <FormItem
  3902. className="half-item"
  3903. {...formItemLayout}
  3904. label="审核结果"
  3905. >
  3906. <span>{getRefundStatus(this.state.refundStatus)}</span>
  3907. </FormItem>
  3908. </div>
  3909. <div
  3910. className="clearfix"
  3911. style={{
  3912. display: this.state.refundStatus == 0 ? 'none' : 'block',
  3913. }}
  3914. >
  3915. <FormItem
  3916. className="half-item"
  3917. {...formItemLayout}
  3918. label="审核时间"
  3919. >
  3920. <span>{this.state.auditTimes}</span>
  3921. </FormItem>
  3922. </div>
  3923. </div>
  3924. ) : (
  3925. ''
  3926. )}
  3927. </TabPane>
  3928. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  3929. <TabPane tab="订单详情" key="3">
  3930. <Spin spinning={this.state.loading}>
  3931. <OrderDetail
  3932. orderData={this.state.orderData}
  3933. getOrderLog={this.getOrderLog}
  3934. dataSourceX={this.state.dataSourceX}
  3935. contactList={this.state.jiedian}
  3936. orderNo={this.state.orderNo}
  3937. totalCui={this.state.totalCui}
  3938. contactListNew={this.state.jiedianNew}
  3939. pictureUrl={this.state.contractPictureUrl}
  3940. />
  3941. </Spin>
  3942. </TabPane>
  3943. ) : (
  3944. ''
  3945. )}
  3946. </Tabs>
  3947. </Modal>
  3948. <Modal
  3949. maskClosable={false}
  3950. visible={this.state.lookVisible}
  3951. onOk={this.noCancel}
  3952. onCancel={this.noCancel}
  3953. width="500px"
  3954. title={'添加工时'}
  3955. footer=""
  3956. className="admin-desc-content"
  3957. >
  3958. <Form layout="horizontal" id="demand-form">
  3959. <Spin spinning={this.state.loading}>
  3960. <div className="clearfix">
  3961. <FormItem {...formItemLayout} label="工作日期">
  3962. <DatePicker
  3963. style={{ marginTop: '2px', width: '200px', height: '32px' }}
  3964. showTime
  3965. format="YYYY-MM-DD"
  3966. onOk={() => {}}
  3967. value={
  3968. this.state.taskDate ? moment(this.state.taskDate) : null
  3969. }
  3970. onChange={(data, dataString) => {
  3971. this.setState({ taskDate: dataString })
  3972. }}
  3973. />
  3974. </FormItem>
  3975. </div>
  3976. <div className="clearfix">
  3977. <FormItem {...formItemLayout} label="工作时长">
  3978. <Input
  3979. placeholder="请输入工作时长"
  3980. value={this.state.hours}
  3981. style={{ width: '200px' }}
  3982. onChange={(e) => {
  3983. this.setState({ hours: e.target.value })
  3984. }}
  3985. ref="commodityQuantity"
  3986. />
  3987. </FormItem>
  3988. </div>
  3989. <div className="clearfix">
  3990. <FormItem {...formItemLayout} label="工作内容">
  3991. <Input
  3992. type="textarea"
  3993. placeholder="请输入备注"
  3994. rows={4}
  3995. value={this.state.remarks}
  3996. onChange={(e) => {
  3997. this.setState({ remarks: e.target.value })
  3998. }}
  3999. />
  4000. </FormItem>
  4001. </div>
  4002. <div className="clearfix">
  4003. <Button
  4004. className="cancel"
  4005. type="primary"
  4006. onClick={this.tianjiaOk}
  4007. style={{ marginLeft: '100px' }}
  4008. htmlType="submit"
  4009. >
  4010. 确定
  4011. </Button>
  4012. <Button
  4013. className="cancel"
  4014. type="ghost"
  4015. onClick={this.noCancel}
  4016. style={{ marginLeft: '50px' }}
  4017. >
  4018. 取消
  4019. </Button>
  4020. </div>
  4021. </Spin>
  4022. </Form>
  4023. </Modal>
  4024. <Modal
  4025. maskClosable={false}
  4026. visible={this.state.addnextVisible}
  4027. onOk={this.nextCancel}
  4028. onCancel={this.nextCancel}
  4029. width="800px"
  4030. title="项目详情"
  4031. footer=""
  4032. className="admin-desc-content"
  4033. >
  4034. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  4035. <Spin spinning={this.state.loading}>
  4036. <div className="clearfix">
  4037. <FormItem
  4038. className="half-item"
  4039. {...formItemLayout}
  4040. label="项目名称"
  4041. >
  4042. <span>{this.state.commodityName}</span>
  4043. </FormItem>
  4044. <FormItem
  4045. className="half-item"
  4046. {...formItemLayout}
  4047. label="项目数量"
  4048. >
  4049. <span>{this.state.commodityQuantity}</span>
  4050. </FormItem>
  4051. <FormItem
  4052. className="half-item"
  4053. {...formItemLayout}
  4054. label="官费"
  4055. style={{ display: this.state.displayFees }}
  4056. >
  4057. <span>
  4058. {this.state.officialCost == 0 ? '无官费' : '有官费'}
  4059. </span>
  4060. </FormItem>
  4061. <FormItem
  4062. className="half-item"
  4063. {...formItemLayout}
  4064. label="费减"
  4065. style={{ display: this.state.displayFees }}
  4066. >
  4067. <span>
  4068. {this.state.costReduction == 0 ? '无费减' : '有费减'}
  4069. </span>
  4070. </FormItem>
  4071. <FormItem
  4072. className="half-item"
  4073. {...formItemLayout}
  4074. label="金额(万元)"
  4075. >
  4076. <span>{this.state.commodityPrice ? '***' : 0}</span>
  4077. </FormItem>
  4078. <FormItem
  4079. className="half-item"
  4080. {...formItemLayout}
  4081. label="主要项目"
  4082. >
  4083. <span>{getboutique(this.state.main)}</span>
  4084. </FormItem>
  4085. <div className="clearfix">
  4086. <FormItem
  4087. labelCol={{ span: 3 }}
  4088. wrapperCol={{ span: 18 }}
  4089. label="服务说明"
  4090. >
  4091. <span>{this.state.taskComment}</span>
  4092. </FormItem>
  4093. </div>
  4094. </div>
  4095. </Spin>
  4096. </Form>
  4097. </Modal>
  4098. <Modal
  4099. maskClosable={false}
  4100. visible={this.state.speVisible}
  4101. onOk={this.visitOk}
  4102. onCancel={this.visitCancel}
  4103. width="900px"
  4104. title=""
  4105. footer=""
  4106. className="admin-desc-content"
  4107. >
  4108. <Tabs activeKey={this.state.activeKey} onChange={this.orderChange}>
  4109. <TabPane tab="项目概况" key="1">
  4110. <div className="clearfix">
  4111. <FormItem
  4112. className="half-item"
  4113. {...formItemLayout}
  4114. label="当前项目情况"
  4115. >
  4116. <Radio.Group
  4117. value={this.state.status}
  4118. onChange={(e) => {
  4119. this.setState({ status: e.target.value })
  4120. }}
  4121. >
  4122. <Radio value={0}>开启</Radio>
  4123. <Radio value={1}>暂停</Radio>
  4124. </Radio.Group>
  4125. <Button
  4126. type="primary"
  4127. size="small"
  4128. style={{ marginTop: '5px', position: 'absolute' }}
  4129. onClick={this.caozuorizhi}
  4130. >
  4131. 操作日志
  4132. </Button>
  4133. </FormItem>
  4134. <FormItem
  4135. className="half-item"
  4136. {...formItemLayout}
  4137. label="合同编号"
  4138. >
  4139. <span>{this.state.contractNo}</span>
  4140. </FormItem>
  4141. </div>
  4142. <div className="clearfix">
  4143. <FormItem
  4144. className="half-item"
  4145. {...formItemLayout}
  4146. label="项目状态"
  4147. >
  4148. <Select
  4149. placeholder="选择项目状态"
  4150. style={{ width: '200px' }}
  4151. value={this.state.projectStatus}
  4152. onChange={(e) => {
  4153. this.setState({ projectStatus: e })
  4154. }}
  4155. >
  4156. {projectStatus.map(function (item) {
  4157. return (
  4158. <Select.Option key={item.value}>
  4159. {item.key}
  4160. </Select.Option>
  4161. )
  4162. })}
  4163. </Select>
  4164. </FormItem>
  4165. <FormItem
  4166. className="half-item"
  4167. {...formItemLayout}
  4168. label="是否特批"
  4169. >
  4170. <span>{getApproval(this.state.approval)}</span>
  4171. </FormItem>
  4172. <FormItem
  4173. className="half-item"
  4174. {...formItemLayout}
  4175. label="结算状态"
  4176. >
  4177. <span>
  4178. {getLiquidationStatus(this.state.liquidationStatus)}
  4179. </span>
  4180. </FormItem>
  4181. <FormItem
  4182. className="half-item"
  4183. {...formItemLayout}
  4184. label="流程状态"
  4185. >
  4186. <span>{getProcessStatus(this.state.processStatus)}</span>
  4187. </FormItem>
  4188. <FormItem
  4189. className="half-item"
  4190. {...formItemLayout}
  4191. label="订单编号"
  4192. >
  4193. <span>{this.state.orderNo}</span>
  4194. </FormItem>
  4195. </div>
  4196. <div className="clearfix">
  4197. <FormItem
  4198. className="half-item"
  4199. {...formItemLayout}
  4200. label="满意度表格"
  4201. >
  4202. <Radio.Group
  4203. value={this.state.formRetrieve}
  4204. onChange={(e) => {
  4205. this.setState({ formRetrieve: e.target.value })
  4206. }}
  4207. >
  4208. <Radio value={0}>未收回</Radio>
  4209. <Radio value={1}>已收回</Radio>
  4210. <Radio value={2}>其他</Radio>
  4211. </Radio.Group>
  4212. </FormItem>
  4213. <FormItem
  4214. className="half-item"
  4215. {...formItemLayout}
  4216. label="退单"
  4217. >
  4218. <Radio.Group
  4219. value={this.state.taskRefund}
  4220. onChange={(e) => {
  4221. this.setState({ taskRefund: e.target.value })
  4222. }}
  4223. >
  4224. <Radio value={0}>已完成</Radio>
  4225. <Radio value={1}>未完成</Radio>
  4226. <Radio value={2}>其他</Radio>
  4227. </Radio.Group>
  4228. </FormItem>
  4229. </div>
  4230. <div className="clearfix">
  4231. {
  4232. <FormItem
  4233. className="half-item"
  4234. {...formItemLayout}
  4235. label="(满意度)备注"
  4236. >
  4237. <Input
  4238. type="textarea"
  4239. placeholder="请输入备注"
  4240. rows={2}
  4241. value={this.state.retrieveContent}
  4242. onChange={(e) => {
  4243. this.setState({ retrieveContent: e.target.value })
  4244. }}
  4245. />
  4246. </FormItem>
  4247. }
  4248. {
  4249. <FormItem
  4250. className="half-item"
  4251. {...formItemLayout}
  4252. label="(退单)备注"
  4253. >
  4254. <Input
  4255. type="textarea"
  4256. placeholder="请输入备注"
  4257. rows={2}
  4258. value={this.state.refundContent}
  4259. onChange={(e) => {
  4260. this.setState({ refundContent: e.target.value })
  4261. }}
  4262. />
  4263. </FormItem>
  4264. }
  4265. </div>
  4266. <div className="clearfix">
  4267. <h3 className="sub-title">订单负责人信息</h3>
  4268. <FormItem
  4269. className="half-item"
  4270. {...formItemLayout}
  4271. label="负责人"
  4272. >
  4273. <span>
  4274. {this.state.salesmanName + '(' + this.state.depName + ')'}
  4275. </span>
  4276. </FormItem>
  4277. <FormItem
  4278. className="half-item"
  4279. {...formItemLayout}
  4280. label="负责人电话"
  4281. >
  4282. <span>{this.state.salesmanMobile}</span>
  4283. </FormItem>
  4284. <FormItem
  4285. className="half-item"
  4286. {...formItemLayout}
  4287. label="当前财务负责人"
  4288. >
  4289. <span>{this.state.nowFinance}</span>
  4290. </FormItem>
  4291. <FormItem
  4292. className="half-item"
  4293. {...formItemLayout}
  4294. label="当前财务负责人电话"
  4295. >
  4296. <span>{this.state.nowFinanceMobile}</span>
  4297. </FormItem>
  4298. <FormItem
  4299. className="half-item"
  4300. {...formItemLayout}
  4301. style={{ opacity: '.5' }}
  4302. label="原负责人"
  4303. >
  4304. <span>{this.state.oldSalesmanName}</span>
  4305. </FormItem>
  4306. <FormItem
  4307. className="half-item"
  4308. {...formItemLayout}
  4309. style={{ opacity: '.5' }}
  4310. label="原负责人电话"
  4311. >
  4312. <span>{this.state.oldSalesmanMobile}</span>
  4313. </FormItem>
  4314. <FormItem
  4315. className="half-item"
  4316. {...formItemLayout}
  4317. style={{ opacity: '.5' }}
  4318. label="实际财务操作人"
  4319. >
  4320. <span>{this.state.financeName}</span>
  4321. </FormItem>
  4322. <FormItem
  4323. className="half-item"
  4324. {...formItemLayout}
  4325. style={{ opacity: '.5' }}
  4326. label="实际财务操作人电话"
  4327. >
  4328. <span>{this.state.financeMobile}</span>
  4329. </FormItem>
  4330. <FormItem
  4331. className="half-item"
  4332. {...formItemLayout}
  4333. label="订单留言"
  4334. >
  4335. <span>{this.state.orderRemarks}</span>
  4336. </FormItem>
  4337. <FormItem className="half-item" {...formItemLayout} label="">
  4338. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  4339. </FormItem>
  4340. <OrderRiZi
  4341. dataSourcerizhi={this.state.dataSourceY}
  4342. closeOrderLog={this.closeOrderLog}
  4343. visible={this.state.avisible}
  4344. loading={this.state.loading}
  4345. />
  4346. </div>
  4347. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  4348. <div className="clearfix">
  4349. <h3 className="sub-title">联系信息</h3>
  4350. <FormItem
  4351. className="half-item"
  4352. {...formItemLayout}
  4353. label="客户名称"
  4354. >
  4355. <span>{this.state.userName}</span>
  4356. </FormItem>
  4357. <FormItem
  4358. className="half-item"
  4359. {...formItemLayout}
  4360. label="企业法人"
  4361. >
  4362. <Input
  4363. placeholder="请输入法人名称"
  4364. value={this.state.legalPerson}
  4365. style={{ width: '200px' }}
  4366. onChange={(e) => {
  4367. this.setState({ legalPerson: e.target.value })
  4368. }}
  4369. ref="commodityQuantity"
  4370. />
  4371. </FormItem>
  4372. <FormItem
  4373. className="half-item"
  4374. {...formItemLayout}
  4375. label="法人电话"
  4376. >
  4377. <Input
  4378. placeholder="请输入法人电话"
  4379. value={this.state.legalPersonTel}
  4380. style={{ width: '200px' }}
  4381. onChange={(e) => {
  4382. this.setState({ legalPersonTel: e.target.value })
  4383. }}
  4384. ref="commodityQuantity"
  4385. />
  4386. </FormItem>
  4387. <FormItem
  4388. className="half-item"
  4389. {...formItemLayout}
  4390. label="客户联系人"
  4391. >
  4392. <Input
  4393. placeholder="请输入联系人名称"
  4394. value={this.state.contacts}
  4395. style={{ width: '200px' }}
  4396. onChange={(e) => {
  4397. this.setState({ contacts: e.target.value })
  4398. }}
  4399. ref="commodityQuantity"
  4400. />
  4401. </FormItem>
  4402. <FormItem
  4403. className="half-item"
  4404. {...formItemLayout}
  4405. label="联系人电话"
  4406. >
  4407. <Input
  4408. placeholder="请输入联系人电话"
  4409. value={this.state.contactMobile}
  4410. style={{ width: '200px' }}
  4411. onChange={(e) => {
  4412. this.setState({ contactMobile: e.target.value })
  4413. }}
  4414. ref="commodityQuantity"
  4415. />
  4416. </FormItem>
  4417. <FormItem
  4418. className="half-item"
  4419. {...formItemLayout}
  4420. label="企业地址"
  4421. >
  4422. <Cascader
  4423. options={areaSelect()}
  4424. value={this.state.ProvinceCity}
  4425. placeholder="选择城市"
  4426. style={{ width: '200px' }}
  4427. onChange={(e) => {
  4428. this.setState({ ProvinceCity: e })
  4429. }}
  4430. />
  4431. </FormItem>
  4432. <FormItem
  4433. className="half-item"
  4434. {...formItemLayout}
  4435. label=""
  4436. ></FormItem>
  4437. <FormItem className="half-item" {...formItemLayout} label="">
  4438. <Input
  4439. placeholder="请输入详细地址"
  4440. value={this.state.postalAddress}
  4441. style={{ width: '200px', marginLeft: '12em' }}
  4442. onChange={(e) => {
  4443. this.setState({ postalAddress: e.target.value })
  4444. }}
  4445. ref="commodityQuantity"
  4446. />
  4447. </FormItem>
  4448. </div>
  4449. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  4450. <div className="clearfix">
  4451. <h3 className="sub-title">项目信息</h3>
  4452. <FormItem
  4453. className="half-item"
  4454. {...formItemLayout}
  4455. label="项目编号"
  4456. >
  4457. <span>
  4458. {this.state.splitStatus == 2
  4459. ? this.state.splitSuper + '-' + this.state.splitId
  4460. : this.state.id}
  4461. </span>
  4462. </FormItem>
  4463. <FormItem
  4464. className="half-item"
  4465. {...formItemLayout}
  4466. label="项目名称"
  4467. >
  4468. <span>{this.state.taskName}</span>
  4469. </FormItem>
  4470. <FormItem
  4471. className="half-item"
  4472. {...formItemLayout}
  4473. label="项目状态"
  4474. >
  4475. <Select
  4476. placeholder="选择项目状态"
  4477. style={{ width: '200px' }}
  4478. value={this.state.taskStatus}
  4479. onChange={(e) => {
  4480. this.setState({ taskStatus: e })
  4481. }}
  4482. >
  4483. {taskStatus.map(function (item) {
  4484. return (
  4485. <Select.Option key={item.value}>
  4486. {item.key}
  4487. </Select.Option>
  4488. )
  4489. })}
  4490. </Select>
  4491. </FormItem>
  4492. <FormItem
  4493. className="half-item"
  4494. {...formItemLayout}
  4495. label="项目类别"
  4496. >
  4497. <span>{this.state.cname}</span>
  4498. </FormItem>
  4499. <FormItem
  4500. className="half-item"
  4501. {...formItemLayout}
  4502. label="证书编号"
  4503. >
  4504. <Input
  4505. placeholder="请输入证书编号"
  4506. value={this.state.certificateNumber}
  4507. style={{ width: '200px' }}
  4508. onChange={(e) => {
  4509. this.setState({ certificateNumber: e.target.value })
  4510. }}
  4511. ref="commodityQuantity"
  4512. />
  4513. </FormItem>
  4514. </div>
  4515. <div className="clearfix" style={{ marginTop: '10px' }}>
  4516. <FormItem
  4517. labelCol={{ span: 3 }}
  4518. wrapperCol={{ span: 14 }}
  4519. label="附件"
  4520. >
  4521. <Picture
  4522. fileList={(e) => {
  4523. this.setState({ attachmentUrl: e })
  4524. }}
  4525. pictureUrl={this.state.attachmentUrl}
  4526. visible={this.props.visible}
  4527. data={{
  4528. sign: 'order_task_file',
  4529. url: '/api/admin/orderProject/uploadOrderTaskFile',
  4530. number: 8,
  4531. }}
  4532. />
  4533. </FormItem>
  4534. </div>
  4535. <div className="clearfix">
  4536. <FormItem
  4537. labelCol={{ span: 3 }}
  4538. wrapperCol={{ span: 16 }}
  4539. label="备注"
  4540. >
  4541. <Input
  4542. type="textarea"
  4543. placeholder="请输入备注"
  4544. rows={4}
  4545. value={this.state.taskComment}
  4546. onChange={(e) => {
  4547. this.setState({ taskComment: e.target.value })
  4548. }}
  4549. />
  4550. </FormItem>
  4551. </div>
  4552. <div className="clearfix">
  4553. <h3 className="sub-title">项目申报进度</h3>
  4554. <FormItem
  4555. className="half-item"
  4556. {...formItemLayout}
  4557. label="申报批次"
  4558. >
  4559. <Select
  4560. value={
  4561. this.state.declarationBatch
  4562. ? this.state.declarationBatch
  4563. : undefined
  4564. }
  4565. placeholder="请选择批次"
  4566. style={{ width: 200 }}
  4567. onChange={(e) => {
  4568. this.setState({
  4569. declarationBatch: e,
  4570. })
  4571. }}
  4572. >
  4573. <Option value={1}>第一批</Option>
  4574. <Option value={2}>第二批</Option>
  4575. <Option value={3}>第三批</Option>
  4576. <Option value={4}>第四批</Option>
  4577. </Select>
  4578. </FormItem>
  4579. <FormItem
  4580. className="half-item"
  4581. {...formItemLayout}
  4582. label="软著派单数量"
  4583. >
  4584. <span>{this.state.commodityQuantity}</span>
  4585. <Button
  4586. type="primary"
  4587. size="small"
  4588. style={{ marginLeft: '45px' }}
  4589. onClick={this.addcontact}
  4590. >
  4591. +增加下证信息
  4592. </Button>
  4593. </FormItem>
  4594. <div className="patent-table">
  4595. <Spin spinning={this.state.loading}>
  4596. <Table
  4597. columns={this.state.ContactsLists}
  4598. dataSource={this.state.contactList}
  4599. pagination={false}
  4600. bordered
  4601. size="small"
  4602. />
  4603. </Spin>
  4604. </div>
  4605. </div>
  4606. <div className="clearfix">
  4607. <h3 className="sub-title">项目业务</h3>
  4608. <div className="patent-table">
  4609. <Spin spinning={this.state.loading}>
  4610. <Table
  4611. columns={this.state.columnsX}
  4612. dataSource={this.state.dataSourceX}
  4613. pagination={this.state.paginations}
  4614. onRowClick={this.tableRowClickX}
  4615. bordered
  4616. size="small"
  4617. />
  4618. </Spin>
  4619. </div>
  4620. </div>
  4621. <div className="clearfix">
  4622. <Button
  4623. className="cancel"
  4624. type="primary"
  4625. onClick={this.tijiaoOk}
  4626. style={{ marginLeft: '200px', marginTop: '10px' }}
  4627. htmlType="submit"
  4628. >
  4629. 保存
  4630. </Button>
  4631. <Button
  4632. className="cancel"
  4633. type="ghost"
  4634. onClick={this.visitCancel}
  4635. style={{ marginLeft: '50px', marginTop: '10px' }}
  4636. >
  4637. 取消
  4638. </Button>
  4639. </div>
  4640. </TabPane>
  4641. <TabPane tab="外包(不走本部)" key="2">
  4642. {this.state.refundStatus != 0 && this.state.refundStatus != 1 ? (
  4643. <div style={{ marginTop: 10 }}>
  4644. <div className="clearfix">
  4645. <FormItem
  4646. className="half-item"
  4647. {...formItemLayout}
  4648. label={
  4649. <span>
  4650. <strong style={{ color: '#f00' }}>*</strong>
  4651. 外包公司
  4652. </span>
  4653. }
  4654. >
  4655. <Input
  4656. value={this.state.companyName}
  4657. onChange={(e) => {
  4658. this.setState({
  4659. companyName: e.target.value,
  4660. })
  4661. }}
  4662. placeholder="请填写外包公司名称"
  4663. />
  4664. </FormItem>
  4665. <span className="tip" style={{ color: 'red' }}>
  4666. 如多个公司,请用间隔
  4667. </span>
  4668. </div>
  4669. <div className="clearfix">
  4670. <FormItem
  4671. className="half-item"
  4672. {...formItemLayout}
  4673. label={
  4674. <span>
  4675. <strong style={{ color: '#f00' }}>*</strong>
  4676. 单价(万元)
  4677. </span>
  4678. }
  4679. >
  4680. <Input
  4681. value={this.state.unitPrice}
  4682. onChange={(e) => {
  4683. this.setState({
  4684. unitPrice: e.target.value,
  4685. })
  4686. }}
  4687. placeholder="请填写本次外包公司的价格"
  4688. />
  4689. </FormItem>
  4690. </div>
  4691. <div className="clearfix">
  4692. <FormItem
  4693. className="half-item"
  4694. {...formItemLayout}
  4695. label={
  4696. <span>
  4697. <strong style={{ color: '#f00' }}>*</strong>
  4698. 数量(个)
  4699. </span>
  4700. }
  4701. >
  4702. <Input
  4703. value={this.state.unitNumber}
  4704. onChange={(e) => {
  4705. this.setState({
  4706. unitNumber: e.target.value,
  4707. })
  4708. }}
  4709. placeholder="请填写本次外包公司的价格"
  4710. />
  4711. </FormItem>
  4712. </div>
  4713. <div className="clearfix">
  4714. <FormItem
  4715. className="half-item"
  4716. {...formItemLayout}
  4717. label={
  4718. <span>
  4719. <strong style={{ color: '#f00' }}>*</strong>
  4720. 总金额(万元)
  4721. </span>
  4722. }
  4723. >
  4724. <Input
  4725. value={this.state.amount}
  4726. onChange={(e) => {
  4727. this.setState({
  4728. amount: e.target.value,
  4729. })
  4730. }}
  4731. placeholder="请填写本次外包公司的价格"
  4732. />
  4733. </FormItem>
  4734. </div>
  4735. <div className="clearfix">
  4736. <FormItem
  4737. className="half-item"
  4738. {...formItemLayout}
  4739. label={
  4740. <span>
  4741. <strong style={{ color: '#f00' }}>*</strong>备注
  4742. </span>
  4743. }
  4744. >
  4745. <TextArea
  4746. rows={4}
  4747. value={this.state.outsourceRemarks}
  4748. onChange={(e) => {
  4749. this.setState({
  4750. outsourceRemarks: e.target.value,
  4751. })
  4752. }}
  4753. placeholder="请输入备注"
  4754. />
  4755. </FormItem>
  4756. </div>
  4757. <p
  4758. className="tip"
  4759. style={{
  4760. paddingBottom: '12px',
  4761. width: '240px',
  4762. marginLeft: '145px',
  4763. color: 'red',
  4764. }}
  4765. >
  4766. 首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
  4767. </p>
  4768. <div className="clearfix">
  4769. <FormItem
  4770. labelCol={{ span: 4 }}
  4771. wrapperCol={{ span: 18 }}
  4772. label={
  4773. <span>
  4774. <strong style={{ color: '#f00' }}>*</strong>
  4775. 合同/协议扫描件
  4776. </span>
  4777. }
  4778. >
  4779. <PicturesWall
  4780. fileList={this.getOrgCodeUrlWai}
  4781. pictureUrl={this.state.pictureUrl}
  4782. />
  4783. <p style={{ color: 'red' }}>图片建议:要清晰。</p>
  4784. </FormItem>
  4785. </div>
  4786. <div className="clearfix">
  4787. <div
  4788. style={{
  4789. display: 'inline-black',
  4790. textAlign: 'center',
  4791. }}
  4792. >
  4793. <Button
  4794. type="primary"
  4795. loading={this.state.loading}
  4796. onClick={this.sureOut}
  4797. >
  4798. 确认发起外包,不通过总部
  4799. </Button>
  4800. <p className="tip" style={{ color: 'red' }}>
  4801. 提示:高于总部价格,费用个人承担
  4802. </p>
  4803. </div>
  4804. </div>
  4805. </div>
  4806. ) : (
  4807. <div>
  4808. <div className="clearfix">
  4809. <FormItem
  4810. className="half-item"
  4811. {...formItemLayout}
  4812. label="外包公司"
  4813. >
  4814. <span>{this.state.companyName}</span>
  4815. </FormItem>
  4816. </div>
  4817. <div className="clearfix">
  4818. <FormItem
  4819. className="half-item"
  4820. {...formItemLayout}
  4821. label="单价(万元)"
  4822. >
  4823. <span>{this.state.unitPrice}</span>
  4824. </FormItem>
  4825. </div>
  4826. <div className="clearfix">
  4827. <FormItem
  4828. className="half-item"
  4829. {...formItemLayout}
  4830. label="数量(个)"
  4831. >
  4832. <span>{this.state.unitNumber}</span>
  4833. </FormItem>
  4834. </div>
  4835. <div className="clearfix">
  4836. <FormItem
  4837. className="half-item"
  4838. {...formItemLayout}
  4839. label="总金额(万元)"
  4840. >
  4841. <span>{this.state.amount}</span>
  4842. </FormItem>
  4843. </div>
  4844. <div className="clearfix">
  4845. <FormItem
  4846. className="half-item"
  4847. {...formItemLayout}
  4848. label="备注"
  4849. >
  4850. <span>{this.state.outsourceRemarks}</span>
  4851. </FormItem>
  4852. </div>
  4853. <div className="clearfix">
  4854. <FormItem
  4855. labelCol={{ span: 4 }}
  4856. wrapperCol={{ span: 18 }}
  4857. label="合同/协议扫描件"
  4858. >
  4859. <Upload
  4860. className="demandDetailShow-upload"
  4861. listType="picture-card"
  4862. fileList={this.state.pictureUrl}
  4863. onPreview={(file) => {
  4864. this.setState({
  4865. previewImage: file.url || file.thumbUrl,
  4866. previewVisible: true,
  4867. })
  4868. }}
  4869. ></Upload>
  4870. <Modal
  4871. maskClosable={false}
  4872. footer={null}
  4873. visible={this.state.previewVisible}
  4874. onCancel={() => {
  4875. this.setState({ previewVisible: false })
  4876. }}
  4877. >
  4878. <img
  4879. alt=""
  4880. style={{ width: '100%' }}
  4881. src={this.state.previewImage || ''}
  4882. />
  4883. </Modal>
  4884. </FormItem>
  4885. </div>
  4886. </div>
  4887. )}
  4888. {this.state.refundStatus == 1 ||
  4889. this.state.refundStatus == 0 ||
  4890. this.state.refundStatus == 2 ? (
  4891. <div className="clearfix">
  4892. <hr className="division" />
  4893. <div
  4894. className="clearfix"
  4895. style={{
  4896. display: this.state.refundStatus == 0 ? 'none' : 'block',
  4897. }}
  4898. >
  4899. <FormItem
  4900. className="half-item"
  4901. {...formItemLayout}
  4902. label="审核意见"
  4903. >
  4904. <span>{this.state.remarks}</span>
  4905. </FormItem>
  4906. </div>
  4907. <div className="clearfix">
  4908. <FormItem
  4909. className="half-item"
  4910. {...formItemLayout}
  4911. label="审核结果"
  4912. >
  4913. <span>{getRefundStatus(this.state.refundStatus)}</span>
  4914. </FormItem>
  4915. </div>
  4916. <div
  4917. className="clearfix"
  4918. style={{
  4919. display: this.state.refundStatus == 0 ? 'none' : 'block',
  4920. }}
  4921. >
  4922. <FormItem
  4923. className="half-item"
  4924. {...formItemLayout}
  4925. label="审核时间"
  4926. >
  4927. <span>{this.state.auditTimes}</span>
  4928. </FormItem>
  4929. </div>
  4930. </div>
  4931. ) : (
  4932. ''
  4933. )}
  4934. </TabPane>
  4935. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  4936. <TabPane tab="订单详情" key="3">
  4937. <Spin spinning={this.state.loading}>
  4938. <OrderDetail
  4939. orderData={this.state.orderData}
  4940. getOrderLog={this.getOrderLog}
  4941. dataSourceX={this.state.dataSourceX}
  4942. contactList={this.state.jiedian}
  4943. orderNo={this.state.orderNo}
  4944. totalCui={this.state.totalCui}
  4945. contactListNew={this.state.jiedianNew}
  4946. pictureUrl={this.state.contractPictureUrl}
  4947. />
  4948. </Spin>
  4949. </TabPane>
  4950. ) : (
  4951. ''
  4952. )}
  4953. </Tabs>
  4954. </Modal>
  4955. <Modal
  4956. width="800px"
  4957. visible={this.state.visibleA}
  4958. onCancel={this.visitCancelA}
  4959. title="操作日志"
  4960. footer=""
  4961. className="admin-desc-content"
  4962. >
  4963. <div className="patent-table patent-table-center">
  4964. <Spin spinning={this.state.loading}>
  4965. <Table
  4966. columns={this.state.columnsA}
  4967. dataSource={this.state.dataSourceA}
  4968. pagination={false}
  4969. bordered
  4970. size="small"
  4971. />
  4972. </Spin>
  4973. </div>
  4974. </Modal>
  4975. <Modal
  4976. title="工时记录"
  4977. visible={this.state.timeVisible}
  4978. onCancel={this.timeClose}
  4979. width={800}
  4980. footer={null}
  4981. >
  4982. <Spin spinning={this.state.loading}>
  4983. <Table
  4984. columns={this.state.columnsTime}
  4985. dataSource={this.state.dataSourceTime}
  4986. pagination={false}
  4987. scroll={{ x: 'max-content', y: 0 }}
  4988. bordered
  4989. size={'small'}
  4990. />
  4991. <p style={{ marginTop: 10, color: 'red' }}>
  4992. 累计工时(小时):{this.state.recordHour}
  4993. </p>
  4994. </Spin>
  4995. </Modal>
  4996. <Modal
  4997. visible={this.state.ThirdListVisible}
  4998. onCancel={this.handleCancelclose}
  4999. width={800}
  5000. title="新增供应商"
  5001. footer=""
  5002. // width={1300}
  5003. className="admin-desc-content"
  5004. >
  5005. <Form
  5006. layout="horizontal"
  5007. // onSubmit={this.handleSubmit1}
  5008. // id="demand-form"
  5009. style={{ paddingBottom: '40px' }}
  5010. >
  5011. <Spin spinning={this.state.loading}>
  5012. <div className="clearfix">
  5013. <div className="clearfix">
  5014. <FormItem {...formItemLayout} label="供应商名称">
  5015. <AutoComplete
  5016. className="certain-category-search"
  5017. dropdownClassName="certain-category-search-dropdown"
  5018. dropdownMatchSelectWidth={false}
  5019. dropdownStyle={{ width: 220 }}
  5020. style={{ width: '220px' }}
  5021. dataSource={options}
  5022. placeholder="请输入供应商名称"
  5023. value={this.state.thirdCompanyName}
  5024. onChange={this.httpChange}
  5025. filterOption={true}
  5026. onBlur={this.blurChange}
  5027. onSelect={this.selectAuto}
  5028. required="required"
  5029. ></AutoComplete>
  5030. <span className="mandatory">*</span>
  5031. </FormItem>
  5032. </div>
  5033. <div className="clearfix">
  5034. <FormItem {...formItemLayout} label="单价(万元)">
  5035. <Input
  5036. value={this.state.thirdUnitPrice}
  5037. placeholder="请输入金额(必填项)"
  5038. required="required"
  5039. onBlur={this.calculatedAmount}
  5040. onChange={(e) => {
  5041. this.setState({
  5042. thirdUnitPrice: e.target.value,
  5043. })
  5044. }}
  5045. style={{ width: '220px' }}
  5046. />
  5047. <span className="mandatory">*</span>
  5048. </FormItem>
  5049. </div>
  5050. <div className="clearfix">
  5051. <FormItem {...formItemLayout} label="数量">
  5052. <Input
  5053. value={this.state.thirdQuantity}
  5054. placeholder="请输入数量(必填项)"
  5055. required="required"
  5056. onBlur={this.calculatedAmount}
  5057. onChange={(e) => {
  5058. this.setState({
  5059. thirdQuantity: e.target.value,
  5060. })
  5061. }}
  5062. style={{ width: '220px' }}
  5063. />
  5064. <span className="mandatory">*</span>
  5065. </FormItem>
  5066. </div>
  5067. <div className="clearfix">
  5068. <FormItem {...formItemLayout} label="总价(万元)">
  5069. <span>{this.state.currentTotalPrice}</span>
  5070. </FormItem>
  5071. </div>
  5072. <div className="clearfix">
  5073. <FormItem {...formItemLayout} label="材料">
  5074. <Select
  5075. value={getMaterialStatus(this.state.thirdMaterial)}
  5076. onChange={(val) => {
  5077. this.setState({
  5078. thirdMaterial: val,
  5079. })
  5080. }}
  5081. style={{ width: '220px' }}
  5082. defaultValue="0"
  5083. >
  5084. <Option value="1">有材料</Option>
  5085. <Option value="0">无材料</Option>
  5086. </Select>
  5087. <span className="mandatory">*</span>
  5088. </FormItem>
  5089. </div>
  5090. <div className="clearfix">
  5091. <FormItem {...formItemLayout} label="加急">
  5092. <Select
  5093. value={getUrgentStatus(this.state.thirdUrgent)}
  5094. onChange={(val) => {
  5095. this.setState({
  5096. thirdUrgent: val,
  5097. })
  5098. }}
  5099. style={{ width: '220px' }}
  5100. defaultValue="0"
  5101. >
  5102. <Option value="0">无加急</Option>
  5103. <Option value="1">加急3天</Option>
  5104. <Option value="2">加急4天</Option>
  5105. <Option value="3">加急5-10天</Option>
  5106. <Option value="4">加急11-15天</Option>
  5107. <Option value="5">加急16-20天</Option>
  5108. <Option value="6">加急21-25天</Option>
  5109. <Option value="7">加急26-30天</Option>
  5110. </Select>
  5111. <span className="mandatory">*</span>
  5112. </FormItem>
  5113. </div>
  5114. <div className="clearfix">
  5115. <FormItem
  5116. style={{ height: 'auto' }}
  5117. labelCol={{ span: 4 }}
  5118. wrapperCol={{ span: 18 }}
  5119. label="备注"
  5120. >
  5121. <TextArea
  5122. rows={4}
  5123. placeholder="请输入备注"
  5124. ref="signTotalAmount"
  5125. style={{ width: '95%' }}
  5126. value={this.state.thirdRemarks}
  5127. onChange={(e) => {
  5128. this.setState({
  5129. thirdRemarks: e.target.value,
  5130. })
  5131. }}
  5132. />
  5133. </FormItem>
  5134. </div>
  5135. <div className="clearfix">
  5136. <div className="addSave" style={{ marginTop: '15px' }}>
  5137. <Button
  5138. className="cancel"
  5139. type="primary"
  5140. onClick={this.handleCancelq}
  5141. style={{ marginLeft: '300px' }}
  5142. htmlType="submit"
  5143. >
  5144. 保存
  5145. </Button>
  5146. <Button
  5147. className="cancel"
  5148. type="ghost"
  5149. onClick={this.handleCancelclose}
  5150. style={{ marginLeft: '50px' }}
  5151. >
  5152. 取消
  5153. </Button>
  5154. </div>
  5155. </div>
  5156. </div>
  5157. </Spin>
  5158. </Form>
  5159. </Modal>
  5160. <Modal
  5161. visible={this.state.PayNodeVisible}
  5162. onCancel={this.handleCancelclose}
  5163. width={800}
  5164. title="新增付款节点"
  5165. footer=""
  5166. // width={1300}
  5167. className="admin-desc-content"
  5168. >
  5169. <Form
  5170. layout="horizontal"
  5171. // onSubmit={this.handleSubmit1}
  5172. // id="demand-form"
  5173. style={{ paddingBottom: '40px' }}
  5174. >
  5175. <Spin spinning={this.state.loading}>
  5176. <div className="clearfix">
  5177. <div className="clearfix">
  5178. <FormItem {...formItemLayout} label="供应商名称">
  5179. <Select onChange={(val) => {
  5180. this.setState({
  5181. thirdCompanyName: val,
  5182. })
  5183. }} defaultValue="请选择供应商" style={{ width: 220 }}>
  5184. {this.state.PayNodeCompany.map((item, index) => (
  5185. <Select.Option value={item} key={index}>{item}</Select.Option>
  5186. ))}
  5187. </Select>
  5188. <span className="mandatory">*</span>
  5189. </FormItem>
  5190. </div>
  5191. <div className="clearfix">
  5192. <FormItem {...formItemLayout} label="付款科目">
  5193. <Select defaultValue="请选择付款科目" style={{ width: 220 }}>
  5194. {/* {
  5195. JSON.parse(
  5196. window.localStorage.getItem('paySubject')
  5197. ).map((item, index) => <Select.Option value={item.value} key={index}>{item.key}</Select.Option>)
  5198. } */}
  5199. </Select>
  5200. <span className="mandatory">*</span>
  5201. </FormItem>
  5202. </div>
  5203. <div className="clearfix">
  5204. <FormItem {...formItemLayout} label="付款时间">
  5205. <DatePicker value={ this.state.partyTimes? moment(this.state.partyTimes):null }
  5206. onChange={(data,dataString)=>{
  5207. this.setState({ partyTimes:dataString })
  5208. }}
  5209. style={{ width: '220px' }} />
  5210. <span className="mandatory">*</span>
  5211. </FormItem>
  5212. </div>
  5213. <div className="clearfix">
  5214. <FormItem {...formItemLayout} label="数量">
  5215. <Input
  5216. value={this.state.payNodeQuantity}
  5217. placeholder="请输入数量(必填项)"
  5218. required="required"
  5219. onBlur={this.calculatedAmount}
  5220. onChange={(e) => {
  5221. this.setState({
  5222. payNodeQuantity: e.target.value,
  5223. })
  5224. }}
  5225. style={{ width: '220px' }}
  5226. />
  5227. <span className="mandatory">*</span>
  5228. </FormItem>
  5229. </div>
  5230. <div className="clearfix">
  5231. <FormItem {...formItemLayout} label="总价(万元)">
  5232. {/* <span>{this.state.currentTotalPrice}</span> */}
  5233. <Input
  5234. value={this.state.currentTotalPrice}
  5235. placeholder=""
  5236. required="required"
  5237. onBlur={this.payNodeCalculatedAmount}
  5238. onChange={(e) => {
  5239. this.setState({
  5240. toltalAmount: e.target.value,
  5241. })
  5242. }}
  5243. style={{ width: '220px' }}
  5244. />
  5245. <span className="mandatory">*</span>
  5246. </FormItem>
  5247. </div>
  5248. <div className="clearfix">
  5249. <div className="addSave" style={{ marginTop: '15px' }}>
  5250. <Button
  5251. className="cancel"
  5252. type="primary"
  5253. onClick={this.savePayNode}
  5254. style={{ marginLeft: '300px' }}
  5255. htmlType="submit"
  5256. >
  5257. 保存
  5258. </Button>
  5259. <Button
  5260. className="cancel"
  5261. type="ghost"
  5262. onClick={this.handleCancelclose}
  5263. style={{ marginLeft: '50px' }}
  5264. >
  5265. 取消
  5266. </Button>
  5267. </div>
  5268. </div>
  5269. </div>
  5270. </Spin>
  5271. </Form>
  5272. </Modal>
  5273. </div>
  5274. )
  5275. },
  5276. })
  5277. export default Task