myTaskOutsource.jsx 210 KB

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