1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240 |
- <template>
- <normalLayout style="background: #f8f8f8;">
- <template #refresh>
- <div style="margin-right:15px">
- <el-button style="font-size:14px !important;color: #3874f6" type="text" size="small" @click="$refs.scroll.wrap.scrollTop=0">{{ $t('返回顶部') }}</el-button>
- </div>
- <!-- <i class="el-icon-refresh-right" @click="refresh" v-loading.fullscreen.lock="fullscreenLoading"></i> -->
- </template>
- <template #content>
- <div style="padding: 16px;">
- <el-scrollbar ref="scroll">
- <div style="height:calc(100vh - 230px);padding:5rem">
- <div style="display: flex;justify-content: space-between">
- <div>
- <div class=" inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- ref="selectdep"
- placement="bottom"
- size="small"
- v-model="depment"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="selectDep"
- clearable
- ></el-cascader>
- </div>
- <div class="inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="person" filterable :placeholder="$t('请选择')" size="small" clearable @change="selectPerson">
- <el-option
- v-for="item in personnelList"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="leaveChange" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- </div>
- <div>
- <btnSelect :btn-title="['全部','本年','本季','本月','去年']" :date-type="dateType" @btnClick="btnClick"></btnSelect>
- </div>
- </div>
- <div class="data-all">
- <div style="margin-bottom:20px">{{$t(`项目数据概况`)}}</div>
- <div class="data-all-wrapper">
- <div class="data-left">
- <div class="data-item div-hover-click" @click="onClick('项目总数')">
- <p>{{ tool.formatAmount(dataAll.totalqty) }}</p>
- <p>{{$t(`项目总数`)}}</p>
- </div>
- <div class="data-item div-hover-click" @click="onClick('报备项目数')">
- <p>{{ tool.formatAmount(dataAll.reportProject)}}</p>
- <p >
- {{$t(`报备项目数`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`统计已报备的项目数量`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item div-hover-click" @click="onClick('进行中项目数')">
- <p>{{ dataAll.startproject?tool.formatAmount(dataAll.startproject):0 }}</p>
- <p>
- {{$t(`进行中项目数`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`进行中状态的项目数量`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item div-hover-click" @click="onClick('项目成交数')">
- <p>{{ tool.formatAmount(dataAll.dealProject) }}</p>
- <p>
- {{$t(`项目成交数`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`统计有关联审核过的订单的项目数量`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item">
- <p>{{ dataAll.cjl }}%</p>
- <p>
- {{$t(`项目成交率`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`项目成交率=有关联审核订单的项目数÷项目总数×100%`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item div-hover-click" @click="onClick('项目失败数')">
- <p>{{ dataAll.failedproject?tool.formatAmount(dataAll.failedproject):0 }}</p>
- <p>
- {{$t(`项目失败数`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`已失败状态的项目数量`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item">
- <p>{{ dataAll.sbl }}%</p>
- <p>
- {{$t(`项目失败率`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`项目失败率=已失败项目数÷项目总数×100%`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item div-hover-click" @click="onClick('参与项目数')">
- <p>{{ dataAll.joinProject }}</p>
- <p>
- {{$t(`参与项目数`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`参与的并且至少有一次跟进的项目数量`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item div-hover-click" @click="onClick('参与项目成交数')">
- <p>{{ dataAll.joinDealProject }}</p>
- <p>
- {{$t(`参与项目成交数`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`参与的并且至少有一次跟进的项目的成交数量`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- <div class="data-item">
- <p>{{ dataAll.joinDealProjectcjl }}%</p>
- <p>
- {{$t(`参与项目成交率`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`参与项目成交率=参与项目成交数 ÷ 参与项目数 ×100%`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- </div>
- <div class="data-right">
- <div class="data-item div-hover-click" v-for="item in dataAll.projecttype" :key="item.rowindex" @click="onClick(item.value)">
- <p>{{ tool.formatAmount(item.qty) }}</p>
- <p>
- {{ $t(item.value) }}
- <el-tooltip class="item" effect="dark" :content="$t(`统计没有客户分类信息的客户数量`)" placement="top" v-if="item.value == '无分类客户'">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- <el-tooltip class="item" effect="dark" :content="$t(`客户分类为A核心客户的数量`)" placement="top" v-else-if="item.value == 'A核心客户'">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- <el-tooltip class="item" effect="dark" :content="$t(`客户分类为B重要客户的数量`)" placement="top" v-else-if="item.value == 'B重要客户'">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- <el-tooltip class="item" effect="dark" :content="$t(`客户分类为C普通客户的数量`)" placement="top" v-else-if="item.value == 'C普通客户'">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- <el-tooltip class="item" effect="dark" :content="$(`客户分类为D一般客户的数量`)" placement="top" v-else-if="item.value == 'D一般客户'">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </p>
- </div>
- </div>
- </div>
- </div>
- <!--项目类型-->
- <div class="data-panel" id="projectType">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`项目类型分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="typeTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {typeMapParam.content.type=1;typeMapParam.content.dataid=$event[$event.length - 1];typeTableParam.content.type=1;typeTableParam.content.username='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()} else {typeMapParam.content.type='';typeMapParam.content.dataid='';typeTableParam.content.dataid='';typeTableParam.content.type='';typeTableParam.content.username='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()}}">
- </el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="typeTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {typeMapParam.content.type=0;typeMapParam.content.dataid=$event;typeTableParam.content.type=0;typeTableParam.content.dataid=$event;typeTableParam.content.depname='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()} else {typeMapParam.content.type='';typeMapParam.content.dataid='';typeTableParam.content.dataid='';typeTableParam.content.type='';typeTableParam.content.depname='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()}}"
- >
- <el-option
- v-for="item in typeMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="typeTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="typeMapParam.content.where.isleave = typeTableParam.content.where.isleave;typeTableParam.content.username = '';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData(null,'状态');typeInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="typeMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="typeTableParam.content.where.status = typeMapParam.content.where.status;typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <el-button-group>
- <el-button :type="typeTableParam.content.dateType === '全部'?'primary':''" size="small" @click="typeMapParam.content.dateType = '全部';typeTableParam.content.dateType = '全部';
- typeMapParam.content.where.begdate = '';typeMapParam.content.where.enddate = '';typeTableParam.content.where.begdate = '';typeTableParam.content.where.enddate = '';typeDate = []
- typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()">{{$t(`全部`)}}</el-button>
- <el-button :type="typeTableParam.content.dateType === '本年'?'primary':''" size="small" @click="typeMapParam.content.dateType = '本年';typeTableParam.content.dateType = '本年';
- typeDate = [new Date().getFullYear() + '-01',new Date().getFullYear() + '-12'];typeMapParam.content.where.begdate = new Date().getFullYear() + '-01';typeMapParam.content.where.enddate = new Date().getFullYear() + '-12';
- typeTableParam.content.where.begdate = new Date().getFullYear() + '-01';typeTableParam.content.where.enddate = new Date().getFullYear() + '-12';
- typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()">{{$t(`本年`)}}</el-button>
- </el-button-group>
- </div>
- <div class="mt-10 inline-16">
- <el-date-picker
- v-show="isFull"
- :append-to-body="false"
- v-model="typeDate"
- :clearable="false"
- @change="typeMapParam.content.dateType = '';typeMapParam.content.where.begdate = typeDate[0];typeMapParam.content.where.enddate = typeDate[1];typeTableParam.content.dateType = '';typeTableParam.content.where.begdate = typeDate[0];typeTableParam.content.where.enddate = typeDate[1];
- typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- <el-date-picker
- v-show="!isFull"
- v-model="typeDate"
- :clearable="false"
- @change="typeMapParam.content.dateType = '';typeMapParam.content.where.begdate = typeDate[0];typeMapParam.content.where.enddate = typeDate[1];typeTableParam.content.dateType = '';typeTableParam.content.where.begdate = typeDate[0];typeTableParam.content.where.enddate = typeDate[1];
- typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="typeTableParam" :columns="tool.tabelCol($route.name).projectTable.tablecols" fileName="项目类型分析" :dataid="typeMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectType" @onFull="onFull" @backFull="backFull"></FullScroll>
- </div>
- </div>
- </div>
- <div class="panel-content" :style="windowWidth<1335?'height:calc(100% - 140px)':windowWidth<2006?'height:calc(100% - 93px)':windowWidth<2037?'height:calc(100% - 83px)':'height:calc(100% - 53px)'">
- <div ref="typeEl" :style="windowWidth<1505?'width:54%;height:calc(100%)':windowWidth<1805?'width:54%;height:calc(100%)':windowWidth<2500?'width:45%':'width:30%'"></div>
- <!-- <div ref="typeEl" style="width:30%"></div>-->
- <div class="panel-table" :style="windowWidth<1505?'width:46%;height:calc(100%)':windowWidth<1805?'width:46%;height:calc(100%)':windowWidth<2500?'width:55%':'width:70%'">
- <!-- <div class="panel-table" style="width:70%">-->
- <pageTable
- ref="typeTable"
- :tablecols="tool.tabelCol($route.name).projectTable.tablecols"
- :param="typeTableParam"
- :custom="true"
- fixedName="operation"
- setName="typeTable"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'typeTable',typeTableParam,'sa_projectid')" :disabled="isFull">{{$t('详情')}}</el-button>-->
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.typeTable.listqueryid" :total="detailDataSet.typeTable.total" :overview="true"></drawerTemp>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--项目等级分析-->
- <div class="data-panel" id="projectGrad">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`项目等级分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="gradTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {gradMapParam.content.type=1;gradMapParam.content.dataid=$event[$event.length - 1];gradTableParam.content.type=1;gradTableParam.content.username='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()} else {gradMapParam.content.type='';gradMapParam.content.dataid='';gradTableParam.content.dataid='';gradTableParam.content.type='';gradTableParam.content.username='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="gradTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {gradMapParam.content.type=0;gradMapParam.content.dataid=$event;gradTableParam.content.type=0;gradTableParam.content.dataid=$event;gradTableParam.content.depname='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()} else {gradMapParam.content.type='';gradMapParam.content.dataid='';gradTableParam.content.dataid='';gradTableParam.content.type='';gradTableParam.content.depname='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()}}"
- >
- <el-option
- v-for="item in gradMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="gradTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="gradMapParam.content.where.isleave = gradTableParam.content.where.isleave;gradTableParam.content.username = '';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData(null,'状态');gradInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="gradMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="gradTableParam.content.where.status = gradMapParam.content.where.status;gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <el-button-group>
- <el-button :type="gradTableParam.content.dateType === '全部'?'primary':''" size="small" @click="gradMapParam.content.dateType = '全部';gradTableParam.content.dateType = '全部';
- gradMapParam.content.where.begdate = '';gradMapParam.content.where.enddate = '';gradTableParam.content.where.begdate = '';gradTableParam.content.where.enddate = '';gradDate = []
- gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()">{{$t(`全部`)}}</el-button>
- <el-button :type="gradTableParam.content.dateType === '本年'?'primary':''" size="small" @click="gradMapParam.content.dateType = '本年';gradTableParam.content.dateType = '本年';
- gradDate = [new Date().getFullYear() + '-01',new Date().getFullYear() + '-12'];gradMapParam.content.where.begdate = new Date().getFullYear() + '-01';gradMapParam.content.where.enddate = new Date().getFullYear() + '-12';
- gradTableParam.content.where.begdate = new Date().getFullYear() + '-01';gradTableParam.content.where.enddate = new Date().getFullYear() + '-12';
- gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()">{{$t(`本年`)}}</el-button>
- </el-button-group>
- </div>
- <div class="mt-10 inline-16">
- <el-date-picker
- v-show="isFull"
- :append-to-body="false"
- v-model="gradDate"
- :clearable="false"
- @change="gradMapParam.content.dateType = '';gradMapParam.content.where.begdate = gradDate[0];gradMapParam.content.where.enddate = gradDate[1];gradTableParam.content.dateType = '';gradTableParam.content.where.begdate = gradDate[0];gradTableParam.content.where.enddate = gradDate[1];
- gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- <el-date-picker
- v-show="!isFull"
- v-model="gradDate"
- :clearable="false"
- @change="gradMapParam.content.dateType = '';gradMapParam.content.where.begdate = gradDate[0];gradMapParam.content.where.enddate = gradDate[1];gradTableParam.content.dateType = '';gradTableParam.content.where.begdate = gradDate[0];gradTableParam.content.where.enddate = gradDate[1];
- gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="gradTableParam" :columns="tool.tabelCol($route.name).projectTable.tablecols" fileName="项目等级分析" :dataid="gradMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectGrad" @onFull="onFull" @backFull="backFull"></FullScroll>
- </div>
- </div>
- </div>
- <div class="panel-content" :style="windowWidth<1335?'height:calc(100% - 140px)':windowWidth<2006?'height:calc(100% - 93px)':windowWidth<2037?'height:calc(100% - 83px)':'height:calc(100% - 53px)'">
- <div ref="gradEl" :style="windowWidth<1505?'width:54%;height:calc(100%)':windowWidth<1805?'width:54%;height:calc(100%)':windowWidth<2500?'width:45%':'width:30%'"></div>
- <div class="panel-table" :style="windowWidth<1505?'width:46%;height:calc(100%)':windowWidth<1805?'width:46%;height:calc(100%)':windowWidth<2500?'width:55%':'width:70%'">
- <pageTable
- ref="gradTable"
- :tablecols="tool.tabelCol($route.name).projectTable.tablecols"
- :param="gradTableParam"
- :custom="true"
- fixedName="operation"
- setName="gradTable"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'gradTable',gradTableParam,'sa_projectid')" :disabled="isFull">{{$t('详情')}}</el-button>-->
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.gradTable.listqueryid" :total="detailDataSet.gradTable.total" :overview="true"></drawerTemp>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--项目评估分析-->
- <div class="data-panel" style="height:800px" id="projectScore1">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">
- {{$t(`项目评估分析`)}}
- <el-tooltip class="item" effect="dark" placement="top">
- <template #content>
- {{$t(`项目指标分类比例`)}}:
- <div v-for="(item,index) in projectScoreDescript" :key="index">
- <span>{{ item.name }}:</span>
- <span>{{ item.range }}</span>
- </div>
- </template>
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- ref="selectdep"
- placement="bottom"
- :append-to-body="false"
- size="small"
- v-model="scoreTableParam1.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {scoreMapParam1.content.type=1;scoreMapParam1.content.dataid=$event[$event.length - 1];scoreTableParam1.content.type=1;scoreTableParam1.content.username='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()} else {scoreMapParam1.content.type='';scoreMapParam1.content.dataid='';scoreTableParam1.content.dataid='';scoreTableParam1.content.type='';scoreTableParam1.content.username='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="scoreTableParam1.content.username" filterable :placeholder="$t('请选择')" size="small"
- @change="$event => {if($event) {scoreMapParam1.content.type=0;scoreMapParam1.content.dataid=$event;scoreTableParam1.content.type=0;scoreTableParam1.content.dataid=$event;scoreTableParam1.content.depname='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()} else {scoreMapParam1.content.type='';gradMapParam.content.dataid='';scoreTableParam1.content.dataid='';scoreTableParam1.content.type='';scoreTableParam1.content.depname='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()}}"
- >
- <el-option
- v-for="item in scoreMapParam1Salesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="scoreTableParam1.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="scoreMapParam1.content.where.isleave = scoreTableParam1.content.where.isleave;scoreTableParam1.content.username = '';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData(null,'状态');scoreInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="scoreMapParam1.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="scoreTableParam1.content.where.status = scoreMapParam1.content.where.status;scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="scoreTableParam1" :columns="tool.tabelCol($route.name).projectTable2.tablecols.splice(0,tool.tabelCol($route.name).projectTable2.tablecols.length - 1)" fileName="项目评估分析" :dataid="scoreMapParam1.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectScore1"></FullScroll>
- </div>
- </div>
- </div>
- <div style="height:calc(100% - 44px)">
- <div ref="scoreEl" style="height:30%"></div>
- <div class="panel-table" style="height:70%">
- <div class="mt-10 inline-16" style="margin:10px 0;display:flex !important;justify-content:space-between">
- <span style="font-size:16px;color:#333333">{{ $t(scoreStatus ? scoreStatus : '全部') }}</span>
- <div style="display:flex;align-items:center">
- <div>
- <label class="search__label" >{{$t(`评估分档位`)}}:</label>
- <el-select v-model="scoreTableParam1.content.where.taskType" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$refs.scoreTable.listData()"
- >
- <el-option :label="$t(`全部`)" value="" />
- <el-option :label="$t(`高分档`)" value="高分档" />
- <el-option :label="$t(`中分档`)" value="中分档" />
- <el-option :label="$t(`低分档`)" value="低分档" />
- </el-select>
- </div>
- <el-tooltip class="item" effect="dark" placement="top">
- <template #content>
- <div>{{$t(`高分档: 200分以上`)}}</div>
- <div>{{$t(`中分档:100-200分`)}}</div>
- <div>{{$t(`低分档:100分以下`)}}</div>
- </template>
- <img style="vertical-align: middle;margin-left:10px" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </div>
- </div>
- <pageTable
- :style="windowWidth<1574?'height:calc(100% - 100px)':windowWidth<1593?'height:calc(100% - 90px)':'height:calc(100% - 60px)'"
- ref="scoreTable"
- :tablecols="tool.tabelCol($route.name).projectTable2.tablecols.splice(0,tool.tabelCol($route.name).projectTable2.tablecols.length - 1)"
- :param="scoreTableParam1"
- :custom="true"
- fixedName="operation"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'scoreTable',scoreTableParam1,'sa_projectid')">{{$t('详情')}}</el-button>-->
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname == 'dealamount'">
- {{ tool.formatAmount(scope.data.data.dealamount,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--12月项目新增-->
- <div class="data-panel" id="projectAdd">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`近12月项目新增分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- ref="selectdep"
- size="small"
- :append-to-body="false"
- placement="bottom"
- v-model="addParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {addParam.content.type=1;addParam.content.username='';addFun()} else {addParam.content.dataid='';addParam.content.type='';addParam.content.username='';addFun()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="addParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {addParam.content.type=0;addParam.content.dataid=$event;addParam.content.depname='';addFun()} else {addParam.content.dataid='';addParam.content.type='';addParam.content.depname='';addFun()}}"
- >
- <el-option
- v-for="item in addParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="addParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="addParam.content.username = '';addFun(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-15">
- <label class="search__label" >{{$t('分析日期')}}:</label>
- <el-date-picker
- :append-to-body="false"
- v-model="addParam.content.enddate"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- type="date"
- size="small"
- :placeholder="$t(`选择日期`)"
- @change="addFun()">
- </el-date-picker>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectAdd"></FullScroll>
- </div>
- </div>
- </div>
- <div ref="addEl":style="windowWidth<1574?'height:calc(100% - 100px)':windowWidth<1593?'height:calc(100% - 90px)':'height:calc(100% - 55px)'"></div>
- </div>
- </div>
- <!--12月项目报备-->
- <div class="data-panel" id="projectBaobei">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`近12月项目报备分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="baobeiParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {baobeiParam.content.type=1;baobeiParam.content.username='';baobeiFun()} else {baobeiParam.content.dataid='';baobeiParam.content.type='';baobeiParam.content.username='';baobeiFun()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="baobeiParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {baobeiParam.content.type=0;baobeiParam.content.dataid=$event;baobeiParam.content.depname='';baobeiFun()} else {baobeiParam.content.dataid='';baobeiParam.content.type='';baobeiParam.content.depname='';baobeiFun()}}"
- >
- <el-option
- v-for="item in baobeiParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="baobeiParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="baobeiParam.content.username = '';baobeiFun(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-15">
- <label class="search__label" >{{$t('分析日期')}}:</label>
- <el-date-picker
- :append-to-body="false"
- v-model="baobeiParam.content.enddate"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- type="date"
- size="small"
- :placeholder="$t(`选择日期`)"
- @change="baobeiFun()">
- </el-date-picker>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectBaobei"></FullScroll>
- </div>
- </div>
- </div>
- <div ref="baobeiEl" :style="windowWidth<1574?'height:calc(100% - 100px)':windowWidth<1593?'height:calc(100% - 90px)':'height:calc(100% - 55px)'"></div>
- </div>
- </div>
- <!--12月项目报价-->
- <div class="data-panel" id="projectBaojia">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`近12月项目报价分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="baojiaParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {baojiaParam.content.type=1;baojiaParam.content.username='';baojiaFun()} else {baojiaParam.content.dataid='';baojiaParam.content.type='';baojiaParam.content.username='';baojiaFun()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="baojiaParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {baojiaParam.content.type=0;baojiaParam.content.dataid=$event;baojiaParam.content.depname='';baojiaFun()} else {baojiaParam.content.dataid='';baojiaParam.content.type='';baojiaParam.content.depname='';baojiaFun()}}"
- >
- <el-option
- v-for="item in baojiaParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="baojiaParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="baojiaParam.content.username = '';baojiaFun(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-15">
- <label class="search__label" >{{$t('分析日期')}}:</label>
- <el-date-picker
- :append-to-body="false"
- v-model="baojiaParam.content.enddate"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- type="date"
- size="small"
- :placeholder="$t(`选择日期`)"
- @change="baojiaFun()">
- </el-date-picker>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectBaojia"></FullScroll>
- </div>
- </div>
- </div>
- <div ref="baojiaEl" :style="windowWidth<1574?'height:calc(100% - 100px)':windowWidth<1593?'height:calc(100% - 90px)':'height:calc(100% - 55px)'"></div>
- </div>
- </div>
- <!--12月项目跟进-->
- <div class="data-panel" id="projectFllow">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`近12月项目跟进分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="fllowParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {fllowParam.content.type=1;fllowParam.content.username='';fllowFun()} else {fllowParam.content.dataid='';fllowParam.content.type='';fllowParam.content.username='';fllowFun()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="fllowParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {fllowParam.content.type=0;fllowParam.content.dataid=$event;fllowParam.content.depname='';fllowFun()} else {fllowParam.content.dataid='';fllowParam.content.type='';fllowParam.content.depname='';fllowFun()}}"
- >
- <el-option
- v-for="item in fllowParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="fllowParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="fllowParam.content.username = '';fllowFun(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-15">
- <label class="search__label" >{{$t('分析日期')}}:</label>
- <el-date-picker
- :append-to-body="false"
- v-model="fllowParam.content.enddate"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- type="date"
- size="small"
- :placeholder="$t(`选择日期`)"
- @change="fllowFun()">
- </el-date-picker>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectFllow"></FullScroll>
- </div>
- </div>
- </div>
- <div ref="fllowEl" :style="windowWidth<1574?'height:calc(100% - 100px)':windowWidth<1593?'height:calc(100% - 90px)':'height:calc(100% - 55px)'"></div>
- </div>
- </div>
- <!--项目跟进情况-->
- <div class="data-panel" id="projectFllow1">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`项目跟进情况统计`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="fllowTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {fllowMapParam.content.type=1;fllowMapParam.content.dataid=$event[$event.length - 1];fllowTableParam.content.type=1;fllowTableParam.content.username='';fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()} else {fllowMapParam.content.type='';fllowMapParam.content.dataid='';fllowTableParam.content.dataid='';fllowTableParam.content.type='';fllowTableParam.content.username='';fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="fllowTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {fllowMapParam.content.type=0;fllowMapParam.content.dataid=$event;fllowTableParam.content.type=0;fllowTableParam.content.dataid=$event;fllowTableParam.content.depname='';
- fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()} else {fllowMapParam.content.type='';fllowMapParam.content.dataid='';fllowTableParam.content.dataid='';fllowTableParam.content.type='';
- fllowTableParam.content.depname='';fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()}}"
- >
- <el-option
- v-for="item in fllowMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="fllowTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="fllowMapParam.content.where.isleave = fllowTableParam.content.where.isleave;fllowTableParam.content.username = '';fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData(null,'状态');fllowInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="fllowMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="fllowTableParam.content.where.status = fllowMapParam.content.where.status;fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <el-button-group>
- <el-button :type="fllowTableParam.content.dateType === '全部'?'primary':''" size="small" @click="fllowMapParam.content.dateType = '全部';fllowTableParam.content.dateType = '全部';
- fllowMapParam.content.where.begdate = '';fllowMapParam.content.where.enddate = '';fllowTableParam.content.where.begdate = '';fllowTableParam.content.where.enddate = '';fllowDate = []
- fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()">{{$t(`全部`)}}</el-button>
- <el-button :type="fllowTableParam.content.dateType === '本年'?'primary':''" size="small" @click="fllowMapParam.content.dateType = '本年';fllowTableParam.content.dateType = '本年';
- fllowDate = [new Date().getFullYear() + '-01',new Date().getFullYear() + '-12'];fllowMapParam.content.where.begdate = new Date().getFullYear() + '-01';fllowMapParam.content.where.enddate = new Date().getFullYear() + '-12';
- fllowTableParam.content.where.begdate = new Date().getFullYear() + '-01';fllowTableParam.content.where.enddate = new Date().getFullYear() + '-12';
- fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()">{{$t(`本年`)}}</el-button>
- </el-button-group>
- </div>
- <div class="mt-10 inline-16">
- <el-date-picker
- v-show="isFull"
- :append-to-body="false"
- v-model="fllowDate"
- :clearable="false"
- @change="fllowMapParam.content.dateType = '';fllowMapParam.content.where.begdate = fllowDate[0];fllowMapParam.content.where.enddate = fllowDate[1];fllowTableParam.content.dateType = '';fllowTableParam.content.where.begdate = fllowDate[0];fllowTableParam.content.where.enddate = fllowDate[1];
- fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- <el-date-picker
- v-show="!isFull"
- v-model="fllowDate"
- :clearable="false"
- @change="fllowMapParam.content.dateType = '';fllowMapParam.content.where.begdate = fllowDate[0];fllowMapParam.content.where.enddate = fllowDate[1];fllowTableParam.content.dateType = '';fllowTableParam.content.where.begdate = fllowDate[0];fllowTableParam.content.where.enddate = fllowDate[1];
- fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="fllowTableParam" :columns="tool.tabelCol($route.name).projectTable.tablecols" fileName="项目跟进情况统计" :dataid="fllowMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectFllow1" @onFull="onFull" @backFull="backFull"></FullScroll>
- </div>
- </div>
- </div>
- <div class="panel-content" :style="windowWidth<1335?'height:calc(100% - 140px)':windowWidth<2006?'height:calc(100% - 93px)':windowWidth<2037?'height:calc(100% - 83px)':'height:calc(100% - 53px)'">
- <div ref="projectFllowEl" :style="windowWidth<1505?'width:54%;height:calc(100%)':windowWidth<1805?'width:54%;height:calc(100%)':windowWidth<2500?'width:45%':'width:30%'"></div>
- <div class="panel-table" :style="windowWidth<1505?'width:46%;height:calc(100%)':windowWidth<1805?'width:46%;height:calc(100%)':windowWidth<2500?'width:55%':'width:70%'">
- <pageTable
- ref="projectFllowTable"
- :tablecols="tool.tabelCol($route.name).projectTable.tablecols"
- :param="fllowTableParam"
- :custom="true"
- fixedName="operation"
- setName="fllowTable"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'projectFllowTable',fllowTableParam,'sa_projectid')" :disabled="isFull">{{$t('详情')}}</el-button>-->
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.fllowTable.listqueryid" :total="detailDataSet.fllowTable.total" :overview="true"></drawerTemp>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--项目联系人情况-->
- <div class="data-panel" id="projectContact">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`项目联系人情况统计`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="contactTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {contactMapParam.content.type=1;contactMapParam.content.dataid=$event[$event.length - 1];contactTableParam.content.type=1;contactTableParam.content.username='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()} else {contactMapParam.content.type='';contactMapParam.content.dataid='';contactTableParam.content.dataid='';contactTableParam.content.type='';contactTableParam.content.username='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="contactTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {contactMapParam.content.type=0;contactMapParam.content.dataid=$event;contactTableParam.content.type=0;contactTableParam.content.dataid=$event;contactTableParam.content.depname='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()} else {contactMapParam.content.type='';contactMapParam.content.dataid='';contactTableParam.content.dataid='';contactTableParam.content.type='';contactTableParam.content.depname='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()}}"
- >
- <el-option
- v-for="item in contactMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="contactTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="contactMapParam.content.where.isleave = contactTableParam.content.where.isleave;contactTableParam.content.username = '';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData(null,'状态');contactInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="contactMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="contactTableParam.content.where.status = contactMapParam.content.where.status;contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <el-button-group>
- <el-button :type="contactTableParam.content.dateType === '全部'?'primary':''" size="small" @click="contactMapParam.content.dateType = '全部';contactTableParam.content.dateType = '全部';
- contactMapParam.content.where.begdate = '';contactMapParam.content.where.enddate = '';contactTableParam.content.where.begdate = '';contactTableParam.content.where.enddate = '';contactDate = []
- contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()">{{$t(`全部`)}}</el-button>
- <el-button :type="contactTableParam.content.dateType === '本年'?'primary':''" size="small" @click="contactMapParam.content.dateType = '本年';contactTableParam.content.dateType = '本年';
- contactDate = [new Date().getFullYear() + '-01',new Date().getFullYear() + '-12'];contactMapParam.content.where.begdate = new Date().getFullYear() + '-01';contactMapParam.content.where.enddate = new Date().getFullYear() + '-12';
- contactTableParam.content.where.begdate = new Date().getFullYear() + '-01';contactTableParam.content.where.enddate = new Date().getFullYear() + '-12';
- contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()">{{$t(`本年`)}}</el-button>
- </el-button-group>
- </div>
- <div class="mt-10 inline-16">
- <el-date-picker
- v-show="isFull"
- :append-to-body="false"
- v-model="contactDate"
- :clearable="false"
- @change="contactMapParam.content.dateType = '';contactMapParam.content.where.begdate = contactDate[0];contactMapParam.content.where.enddate = contactDate[1];contactTableParam.content.dateType = '';contactTableParam.content.where.begdate = contactDate[0];contactTableParam.content.where.enddate = contactDate[1];
- contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- <el-date-picker
- v-show="!isFull"
- v-model="contactDate"
- :clearable="false"
- @change="contactMapParam.content.dateType = '';contactMapParam.content.where.begdate = contactDate[0];contactMapParam.content.where.enddate = contactDate[1];contactTableParam.content.dateType = '';contactTableParam.content.where.begdate = contactDate[0];contactTableParam.content.where.enddate = contactDate[1];
- contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="contactTableParam" :columns="tool.tabelCol($route.name).projectTable.tablecols" fileName="项目联系人情况统计" :dataid="contactMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectContact" @onFull="onFull" @backFull="backFull"></FullScroll>
- </div>
- </div>
- </div>
- <div class="panel-content" :style="windowWidth<1335?'height:calc(100% - 140px)':windowWidth<2006?'height:calc(100% - 93px)':windowWidth<2037?'height:calc(100% - 83px)':'height:calc(100% - 53px)'">
- <div ref="projectContactEl" :style="windowWidth<1505?'width:54%;height:calc(100%)':windowWidth<1805?'width:54%;height:calc(100%)':windowWidth<2500?'width:45%':'width:30%'"></div>
- <div class="panel-table" :style="windowWidth<1505?'width:46%;height:calc(100%)':windowWidth<1805?'width:46%;height:calc(100%)':windowWidth<2500?'width:55%':'width:70%'">
- <pageTable
- ref="projectContactTable"
- :tablecols="tool.tabelCol($route.name).projectTable.tablecols"
- :param="contactTableParam"
- :custom="true"
- fixedName="operation"
- setName="contactTable"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'projectContactTable',contactTableParam,'sa_projectid')" :disabled="isFull">{{$t('详情')}}</el-button>-->
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.contactTable.listqueryid" :total="detailDataSet.contactTable.total" :overview="true"></drawerTemp>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--项目关联客户情况-->
- <div class="data-panel" id="projectCustomer">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`项目关联客户情况统计`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="customerTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {customerMapParam.content.type=1;customerMapParam.content.dataid=$event[$event.length - 1];customerTableParam.content.type=1;customerTableParam.content.username='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()} else {customerMapParam.content.type='';customerMapParam.content.dataid='';customerTableParam.content.dataid='';customerTableParam.content.type='';customerTableParam.content.username='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="customerTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {customerMapParam.content.type=0;customerMapParam.content.dataid=$event;customerTableParam.content.type=0;customerTableParam.content.dataid=$event;customerTableParam.content.depname='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()} else {customerMapParam.content.type='';customerMapParam.content.dataid='';customerTableParam.content.dataid='';customerTableParam.content.type='';customerTableParam.content.depname='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()}}"
- >
- <el-option
- v-for="item in customerMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="customerTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="customerMapParam.content.where.isleave = customerTableParam.content.where.isleave;customerTableParam.content.username = '';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData(null,'状态');customerInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="customerMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="customerTableParam.content.where.status = customerMapParam.content.where.status;customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <el-button-group>
- <el-button :type="customerTableParam.content.dateType === '全部'?'primary':''" size="small" @click="customerMapParam.content.dateType = '全部';customerTableParam.content.dateType = '全部';
- customerMapParam.content.where.begdate = '';customerMapParam.content.where.enddate = '';customerTableParam.content.where.begdate = '';customerTableParam.content.where.enddate = '';customerDate = []
- customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()">{{$t(`全部`)}}</el-button>
- <el-button :type="customerTableParam.content.dateType === '本年'?'primary':''" size="small" @click="customerMapParam.content.dateType = '本年';customerTableParam.content.dateType = '本年';
- customerDate = [new Date().getFullYear() + '-01',new Date().getFullYear() + '-12'];customerMapParam.content.where.begdate = new Date().getFullYear() + '-01';customerMapParam.content.where.enddate = new Date().getFullYear() + '-12';
- customerTableParam.content.where.begdate = new Date().getFullYear() + '-01';customerTableParam.content.where.enddate = new Date().getFullYear() + '-12';
- customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()">{{$t(`本年`)}}</el-button>
- </el-button-group>
- </div>
- <div class="mt-10 inline-16">
- <el-date-picker
- v-show="isFull"
- :append-to-body="false"
- v-model="customerDate"
- :clearable="false"
- @change="customerMapParam.content.dateType = '';customerMapParam.content.where.begdate = customerDate[0];customerMapParam.content.where.enddate = customerDate[1];customerTableParam.content.dateType = '';customerTableParam.content.where.begdate = customerDate[0];customerTableParam.content.where.enddate = customerDate[1];
- customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- <el-date-picker
- v-show="!isFull"
- v-model="customerDate"
- :clearable="false"
- @change="customerMapParam.content.dateType = '';customerMapParam.content.where.begdate = customerDate[0];customerMapParam.content.where.enddate = customerDate[1];customerTableParam.content.dateType = '';customerTableParam.content.where.begdate = customerDate[0];customerTableParam.content.where.enddate = customerDate[1];
- customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="customerTableParam" :columns="tool.tabelCol($route.name).projectTable.tablecols" fileName="项目关联客户情况统计" :dataid="customerMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectCustomer" @onFull="onFull" @backFull="backFull"></FullScroll>
- </div>
- </div>
- </div>
- <div class="panel-content" :style="windowWidth<1335?'height:calc(100% - 140px)':windowWidth<2006?'height:calc(100% - 93px)':windowWidth<2037?'height:calc(100% - 83px)':'height:calc(100% - 53px)'">
- <div ref="projectCustomerEl" :style="windowWidth<1505?'width:54%;height:calc(100%)':windowWidth<1805?'width:54%;height:calc(100%)':windowWidth<2500?'width:45%':'width:30%'"></div>
- <div class="panel-table" :style="windowWidth<1505?'width:46%;height:calc(100%)':windowWidth<1805?'width:46%;height:calc(100%)':windowWidth<2500?'width:55%':'width:70%'">
- <pageTable
- ref="projectCustomerTable"
- :tablecols="tool.tabelCol($route.name).projectTable.tablecols"
- :param="customerTableParam"
- :custom="true"
- fixedName="operation"
- setName="customerTable"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'projectCustomerTable',customerTableParam,'sa_projectid')" :disabled="isFull">{{$t('详情')}}</el-button>-->
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.customerTable.listqueryid" :total="detailDataSet.customerTable.total" :overview="true"></drawerTemp>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--项目评估情况-->
- <div class="data-panel" id="projectScore">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`项目评估情况统计`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="scoreTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {scoreMapParam.content.type=1;scoreMapParam.content.dataid=$event[$event.length - 1];scoreTableParam.content.type=1;scoreTableParam.content.username='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()} else {scoreMapParam.content.type='';scoreMapParam.content.dataid='';scoreTableParam.content.dataid='';scoreTableParam.content.type='';scoreTableParam.content.username='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="scoreTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {scoreMapParam.content.type=0;scoreMapParam.content.dataid=$event;scoreTableParam.content.type=0;scoreTableParam.content.dataid=$event;scoreTableParam.content.depname='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()} else {scoreMapParam.content.type='';scoreMapParam.content.dataid='';scoreTableParam.content.dataid='';scoreTableParam.content.type='';scoreTableParam.content.depname='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()}}"
- >
- <el-option
- v-for="item in scoreMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="scoreTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="scoreMapParam.content.where.isleave = scoreTableParam.content.where.isleave;scoreTableParam.content.username = '';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData(null,'状态');projectScoreInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="scoreMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="scoreTableParam.content.where.status = scoreMapParam.content.where.status;scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <el-button-group>
- <el-button :type="scoreTableParam.content.dateType === '全部'?'primary':''" size="small" @click="scoreMapParam.content.dateType = '全部';scoreTableParam.content.dateType = '全部';
- scoreMapParam.content.where.begdate = '';scoreMapParam.content.where.enddate = '';scoreTableParam.content.where.begdate = '';scoreTableParam.content.where.enddate = '';scoreDate = []
- scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()">{{$t(`全部`)}}</el-button>
- <el-button :type="scoreTableParam.content.dateType === '本年'?'primary':''" size="small" @click="scoreMapParam.content.dateType = '本年';scoreTableParam.content.dateType = '本年';
- scoreDate = [new Date().getFullYear() + '-01',new Date().getFullYear() + '-12'];scoreMapParam.content.where.begdate = new Date().getFullYear() + '-01';scoreMapParam.content.where.enddate = new Date().getFullYear() + '-12';
- scoreTableParam.content.where.begdate = new Date().getFullYear() + '-01';scoreTableParam.content.where.enddate = new Date().getFullYear() + '-12';
- scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()">{{$t(`本年`)}}</el-button>
- </el-button-group>
- </div>
- <div class="mt-10 inline-16">
- <el-date-picker
- v-show="isFull"
- :append-to-body="false"
- v-model="scoreDate"
- :clearable="false"
- @change="scoreMapParam.content.dateType = '';scoreMapParam.content.where.begdate = scoreDate[0];scoreMapParam.content.where.enddate = scoreDate[1];scoreTableParam.content.dateType = '';scoreTableParam.content.where.begdate = scoreDate[0];scoreTableParam.content.where.enddate = scoreDate[1];
- scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- <el-date-picker
- v-show="!isFull"
- v-model="scoreDate"
- :clearable="false"
- @change="scoreMapParam.content.dateType = '';scoreMapParam.content.where.begdate = scoreDate[0];scoreMapParam.content.where.enddate = scoreDate[1];scoreTableParam.content.dateType = '';scoreTableParam.content.where.begdate = scoreDate[0];scoreTableParam.content.where.enddate = scoreDate[1];
- scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()"
- size="small"
- format="yyyy-MM"
- value-format="yyyy-MM"
- type="monthrange"
- :range-separator="$t('至')"
- :start-placeholder="$t('开始月份')"
- :end-placeholder="$t('结束月份')">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="scoreTableParam" :columns="tool.tabelCol($route.name).projectTable.tablecols" fileName="项目评估情况统计" :dataid="scoreMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectScore" @onFull="onFull" @backFull="backFull"></FullScroll>
- </div>
- </div>
- </div>
- <div class="panel-content" :style="windowWidth<1335?'height:calc(100% - 140px)':windowWidth<2006?'height:calc(100% - 93px)':windowWidth<2037?'height:calc(100% - 83px)':'height:calc(100% - 53px)'">
- <div ref="projectScoreEl" :style="windowWidth<1505?'width:54%;height:calc(100%)':windowWidth<1805?'width:54%;height:calc(100%)':windowWidth<2500?'width:45%':'width:30%'"></div>
- <div class="panel-table" :style="windowWidth<1505?'width:46%;height:calc(100%)':windowWidth<1805?'width:46%;height:calc(100%)':windowWidth<2500?'width:55%':'width:70%'">
- <pageTable
- ref="projectScoreTable"
- :tablecols="tool.tabelCol($route.name).projectTable.tablecols"
- :param="scoreTableParam"
- :custom="true"
- fixedName="operation"
- setName="scoreTable"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <!-- <el-button type="text" size="small" @click="goDetail(scope.data.data,'projectScoreTable',scoreTableParam,'sa_projectid')" :disabled="isFull">{{$t('详情')}}</el-button>-->
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.scoreTable.listqueryid" :total="detailDataSet.scoreTable.total" :overview="true"></drawerTemp>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--有效项目未跟进情况-->
- <div class="data-panel" style="height:800px" id="projectUnfllow">
- <div class="panel-content-wrapper" >
- <div class="panel-header">
- <div class="title">{{$t(`有效项目未跟进天数分析`)}}</div>
- <div class="panel-select">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- :append-to-body="false"
- placement="bottom"
- ref="selectdep"
- size="small"
- v-model="unfllowTableParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {unfllowMapParam.content.type=1;unfllowMapParam.content.dataid=$event[$event.length - 1];unfllowTableParam.content.type=1;unfllowTableParam.content.username='';unfllowTableParam.content.pageNumber = 1;$refs.customerUnfllowTable.listData();customerUnfllowInit()} else {unfllowMapParam.content.type='';unfllowMapParam.content.dataid='';unfllowTableParam.content.dataid='';unfllowTableParam.content.type='';unfllowTableParam.content.username='';unfllowTableParam.content.pageNumber = 1;$refs.customerUnfllowTable.listData();customerUnfllowInit()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="unfllowTableParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {unfllowMapParam.content.type=0;unfllowMapParam.content.dataid=$event;unfllowTableParam.content.type=0;unfllowTableParam.content.dataid=$event;unfllowTableParam.content.depname='';unfllowTableParam.content.pageNumber = 1;$refs.customerUnfllowTable.listData();customerUnfllowInit()} else {unfllowMapParam.content.type='';unfllowMapParam.content.dataid='';unfllowTableParam.content.dataid='';unfllowTableParam.content.type='';unfllowTableParam.content.depname='';unfllowTableParam.content.pageNumber = 1;$refs.customerUnfllowTable.listData();customerUnfllowInit()}}"
- >
- <el-option
- v-for="item in unfllowMapParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="unfllowTableParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="unfllowMapParam.content.where.isleave = unfllowTableParam.content.where.isleave;unfllowTableParam.content.username = '';unfllowTableParam.content.pageNumber = 1;$refs.customerUnfllowTable.listData(null,'状态');customerUnfllowInit(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{ $t('项目类型') }}:</label>
- <el-select
- v-model="unfllowMapParam.content.where.projecttype"
- :placeholder="$t(`请选择项目类型`)"
- :popper-append-to-body="false"
- @change="$event => {if($event.length) {unfllowTableParam.content.where.projecttype=$event;unfllowTableParam.content.pageNumber = 1;$refs.customerUnfllowTable.listData();customerUnfllowInit()} else {unfllowTableParam.content.where.projecttype='';$refs.customerUnfllowTable.listData();customerUnfllowInit()}}"
- size="small" clearable>
- <el-option
- v-for="item in projectType"
- :key="item.value"
- :label="$t(item.value + '-' +item.remarks)"
- :value="item.value">
- <span style="float: left">{{ $t(item.value) }}</span>
- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('项目状态')}}:</p>
- <el-select size="small" v-model="unfllowMapParam.content.where.status" multiple filterable :placeholder="$t(`请选择`)" @change="unfllowTableParam.content.where.status = unfllowMapParam.content.where.status;unfllowTableParam.content.pageNumber = 1;customerUnfllowInit();$refs.customerUnfllowTable.listData()">
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('分析日期')}}:</label>
- <el-date-picker
- :append-to-body="false"
- v-model="unfllowMapParam.content.enddate"
- format="yyyy-MM-dd"
- value-format="yyyy-MM-dd"
- type="date"
- size="small"
- :placeholder="$t(`选择日期`)"
- @change="unfllowTableParam.content.enddate=unfllowMapParam.content.enddate;unfllowTableParam.content.pageNumber = 1;customerUnfllowInit();$refs.customerUnfllowTable.listData()">
- </el-date-picker>
- </div>
- <div class="mt-10 inline-15">
- <exportFile :param="unfllowTableParam" :columns="tool.tabelCol($route.name).projectTable1.tablecols.splice(0,tool.tabelCol($route.name).projectTable1.tablecols.length - 1)" fileName="有效项目未跟进天数分析" :dataid="unfllowMapParam.content.dataid"></exportFile>
- </div>
- <div style="display: inline-block;vertical-align: middle">
- <FullScroll domId="projectUnfllow"></FullScroll>
- </div>
- </div>
- </div>
- <div style="height:calc(100% - 55px)">
- <div ref="customerUnfllowEl" style="height:30%"></div>
- <div style="font-size:16px;color:#333333;margin:10px 0">{{ $t(unfllowStatus ? unfllowStatus : '全部') }}</div>
- <div :style="{height:windowWidth<1359?'60%':windowWidth<1372?'62%':windowWidth<2110?'66%':'66%'}">
- <pageTable
- style="height:calc(100% - 50px)"
- v-if="projectType[0].value != ''"
- ref="customerUnfllowTable"
- :tablecols="tool.tabelCol($route.name).projectTable1.tablecols"
- :param="unfllowTableParam"
- :custom="true"
- @handleParam="handleUnfllowParam"
- @detailSet="detailSet"
- >
- <template v-slot:custom="scope">
- <div v-if="scope.data.columnname == 'sys_tag'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.sys_tag" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname == 'signamount_due'">
- {{ tool.formatAmount(scope.data.data.signamount_due,2,'¥') }}
- </div>
- <div v-else-if="scope.data.columnname === 'industry'">
- <el-tag size="small" v-for="(item,index) in scope.data.data.industry" :key="index" style="margin-right: 5px">{{ $t(item) }}</el-tag>
- </div>
- <div v-else-if="scope.data.columnname === 'tradingstatus'">
- <span style="color:#3874f6" v-if="scope.data.data[[scope.data.columnname]] == '未成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#fa8c16" v-else-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#333333" v-else-if="scope.data.data[[scope.data.columnname]] == '多次成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname === 'status'">
- <span style="color:rgb(250, 140, 22)" v-if="scope.data.data[[scope.data.columnname]] == '已成交'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#52c41a" v-else-if="scope.data.data[[scope.data.columnname]] == '跟进中'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- <span style="color:#999999" v-else-if="scope.data.data[[scope.data.columnname]] == '已失败' || scope.data.data[[scope.data.columnname]] == '已结案'">{{$t(scope.data.data[[scope.data.columnname]])}}</span>
- </div>
- <div v-else-if="scope.data.columnname == 'scale'">
- {{scope.data.data.scale ? scope.data.data.scale + scope.data.data.unitname : '' }}
- </div>
- <div v-else-if="scope.data.columnname == 'operation'">
- <drawerTemp class="inline-16" v-if="detailPath" :data="scope.data.data" :detailPath="detailPath" :idName="idName" :disabled="isFull"
- :listqueryid="detailDataSet.unfllowTable.listqueryid" :total="detailDataSet.unfllowTable.total" :overview="false"></drawerTemp>
- </div>
- <div v-else>
- {{ $t(scope.data.data[scope.data.columnname]) }}
- </div>
- </template>
- </pageTable>
- </div>
- </div>
- </div>
- </div>
- <!--项目生命周期分析-->
- <div style="margin-top:16px" class="data-all">
- <div class="panel-header">
- <div class="title">
- {{$t(`项目生命周期分析`)}}
- <el-tooltip class="item" effect="dark" :content="$t(`统计项目生命周期中的各个关键节点之间平均周期`)" placement="top">
- <img style="vertical-align: middle" src="@/assets/icons/prompt_icon.svg" alt="">
- </el-tooltip>
- </div>
- </div>
- <div class="progress" v-if="dateList.length">
- <div class="progress-item" :style="[{'--bg':colorArr[index]},{'--width':item.avg}]" v-for="(item,index) in dateList" :key="index">
- <div class="day">{{$t(`平均周期`)}}:{{ item.dateavg.toFixed(2) }}{{$t(`天`)}}</div>
- <div class="start" v-if="index == 0">
- <span>{{ $t(item.start) }}</span>
- <span v-if="item.end == '立项'">{{$t(`项目立项`)}}</span>
- <span v-else-if="item.end == '报备'">{{$t(`项目报备审核`)}}</span>
- <span v-else-if="item.end == '报价'">{{$t(`项目报价审核`)}}</span>
- <span v-else-if="item.end == '合同'">{{$t(`项目合同审核`)}}</span>
- <span v-else-if="item.end == '订单'">{{$t(`项目订单审核`)}}</span>
- <span v-else-if="item.end == '结案'">{{$t(`项目结案`)}}</span>
- </div>
- <div class="end">
- <span>{{ $t(item.end) }}</span>
- <span v-if="item.end == '立项'">{{$t(`项目立项`)}}</span>
- <span v-else-if="item.end == '报备'">{{$t(`项目报备审核`)}}</span>
- <span v-else-if="item.end == '报价'">{{$t(`项目报价审核`)}}</span>
- <span v-else-if="item.end == '合同'">{{$t(`项目合同审核`)}}</span>
- <span v-else-if="item.end == '订单'">{{$t(`项目订单审核`)}}</span>
- <span v-else-if="item.end == '结案'">{{$t(`项目结案`)}}</span>
- </div>
- </div>
- </div>
- <el-empty class="progress-item" :description="$t(`暂无数据`)" :image-size="80" v-else></el-empty>
- <div class="panel-select" :style="{marginTop:dateList.length?'90px':'30px'}">
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('部门')}}:</label>
- <el-cascader
- clearable
- :append-to-body="false"
- ref="selectdep"
- size="small"
- placement="bottom"
- v-model="dateParam.content.dataid"
- :options="deplist"
- :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
- @change="$event => {if($event.length) {[$event.length - 1];dateParam.content.type=1;dateParam.content.username='';getDate()} else {dateParam.content.dataid='';dateParam.content.type='';dateParam.content.username='';getDate()}}"></el-cascader>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label" >{{$t('业务员')}}:</label>
- <el-select v-model="dateParam.content.username" filterable :placeholder="$t('请选择')" size="small"
- :popper-append-to-body="false"
- @change="$event => {if($event) {dateParam.content.type=0;dateParam.content.dataid=$event;dateParam.content.depname='';getDate()} else {dateParam.content.type='';dateParam.content.dataid='';dateParam.content.depname='';getDate()}}"
- >
- <el-option
- v-for="item in dateParamSalesman"
- :key="item.index"
- :label="$t(item.name)"
- :value="item.userid">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <p class="search__label">{{$t('状态')}}:</p>
- <el-select v-model="dateParam.content.where.isleave" clearable style="margin-right:10px" size="small" :placeholder="$t('请选择状态')" @change="dateParam.content.username = '';getDate(null,'状态')" >
- <el-option :label="$t('在职')" value="1"></el-option>
- <el-option :label="$t('离职')" value="2"></el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{ $t('项目类型') }}:</label>
- <el-select v-model="dateParam.content.where.projecttype" :placeholder="$t(`请选择项目类型`)" @change="getDate" size="small" clearable>
- <el-option
- v-for="item in projectType"
- :key="item.value"
- :label="$t(item.value) + '-' + $t(item.remarks)"
- :value="item.value">
- <span style="float: left">{{ $t(item.value) }}</span>
- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t(`项目等级`)}}:</label>
- <el-select v-model="dateParam.content.where.grade" :placeholder="$t(`请选择项目等级`)" @change="getDate" size="small" clearable>
- <el-option
- v-for="item in projectLead"
- :key="item.value"
- :label="$t(item.value)"
- :value="item.value">
- <span style="float: left">{{ $t(item.value) }}</span>
- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t('领域')}}:</label>
- <el-select v-model="dateParam.content.where.tradefield" :placeholder="$t('请选择领域')" @change="getDate" size="small" clearable>
- <el-option
- v-for="item in tradefieldSelect"
- :key="item.value"
- :label="$t(item.value)"
- :value="item.value">
- <span style="float: left">{{ $t(item.value) }}</span>
- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
- </el-option>
- </el-select>
- </div>
- </div>
- <div class="mt-10 inline-16" style="margin-top:10px">
- <label class="search__label" >{{$t(`项目名称`)}}:</label>
- <selectProject :projectType="projectType" :projectLead="projectLead" :tradefieldSelect="tradefieldSelect" :grade="dateParam.content.where.grade" :projecttype="dateParam.content.where.projecttype" :tradefield="dateParam.content.where.tradefield" @selectRow="selectRow" ref="selectProject">
- <div slot="input" style="display:flex;align-items:center">
- <el-input v-model="projectname" style="width:300px" size="small" :placeholder="$t(`请选择项目`)" @focus="$refs.selectProject.visible=true"></el-input>
- <el-button style="margin-left:10px" @click="clearSelect" size="mini" type="text" v-if="dateParam.content.where.sa_projectid">{{$t('清空')}}</el-button>
- </div>
- </selectProject>
- </div>
- <div style="margin-top:10px">
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t(`开始节点`)}}:</label>
- <el-select v-model="dateParam.content.begnode" :placeholder="$t(`开始节点`)" @change="getDate" size="small" clearable>
- <el-option :label="$t(`立项`)" value="立项"></el-option>
- <el-option :label="$t(`报备`)" value="报备"></el-option>
- <el-option :label="$t(`报价`)" value="报价"></el-option>
- <el-option :label="$t(`合同`)" value="合同"></el-option>
- <el-option :label="$t(`订单`)" value="订单"></el-option>
- <el-option :label="$t(`结案`)" value="结案"></el-option>
- </el-select>
- </div>
- <span style="margin:0 35px 0 25px">{{$t(`至`)}}</span>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t(`结束节点`)}}:</label>
- <el-select v-model="dateParam.content.endnode" :placeholder="$t(`结束节点`)" @change="getDate" size="small" clearable>
- <el-option :label="$t(`立项`)" value="立项"></el-option>
- <el-option :label="$t(`报备`)" value="报备"></el-option>
- <el-option :label="$t(`报价`)" value="报价"></el-option>
- <el-option :label="$t(`合同`)" value="合同"></el-option>
- <el-option :label="$t(`订单`)" value="订单"></el-option>
- <el-option :label="$t(`结案`)" value="结案"></el-option>
- </el-select>
- </div>
- </div>
- </div>
- </div>
- </el-scrollbar>
- <dataDetail ref="detailRef" :title="title" :param="paramDetail" :person="person" :departmentid="depment" :isleave="isleave" :layout="tablecols" height="calc(100vh - 250px)">
- <template #custom>
- <div class="mt-10 inline-16">
- <label class="search__label">{{ $t('项目阶段') }}:</label>
- <el-select class="inline-24" v-model="paramDetail.content.where.stagename" :placeholder="$t(`请选择项目阶段`)" @change="selectChange" size="small" clearable>
- <el-option
- v-for="item in option.stageList"
- :key="item.stagename"
- :label="$t('item.stagename')"
- :value="item.stagename">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t(`报备进度`)}}:</label>
- <el-select class="inline-24" v-model="paramDetail.content.where.reportstatus" :placeholder="$t(`请选择报备进度`)" @change="selectChange" size="small" clearable>
- <el-option
- v-for="item in option.reportstatus"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{ $t('项目类型') }}:</label>
- <el-select class="inline-24" v-model="paramDetail.content.where.projecttype" :placeholder="$t(`请选择项目类型`)" @change="selectChange" size="small" clearable>
- <el-option
- v-for="item in projectType"
- :key="item.value"
- :label="$t(item.value)"
- :value="item.value">
- <span style="float: left">{{ $t(item.value) }}</span>
- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t('领域')}}:</label>
- <el-select class="inline-24" v-model="paramDetail.content.where.tradefield" :placeholder="$t('请选择领域')" @change="selectChange" size="small" clearable>
- <el-option
- v-for="item in tradefieldSelect"
- :key="item.value"
- :label="$t(item.value)"
- :value="item.value">
- <span style="float: left">{{ $t(item.value) }}</span>
- <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t('标签')}}:</label>
- <el-select class="inline-24" v-model="paramDetail.content.where.tag" size="small" :placeholder="$t('请选择')" @change="selectChange" clearable multiple>
- <el-option
- v-for="item in option.tagData"
- :key="item.tag"
- :label="$t(item.tag)"
- :value="item.tag">
- </el-option>
- </el-select>
- </div>
- <div class="mt-10 inline-16">
- <label class="search__label">{{$t('项目状态')}}:</label>
- <el-select class="inline-24" v-model="paramDetail.content.where.status" placeholder="请选择项目状态" @change="selectChange" size="small" clearable>
- <el-option
- v-for="item in option.statusTab"
- :key="item.value"
- :label="$t(item.label)"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- </template>
- </dataDetail>
- </div>
- </template>
- </normalLayout>
- </template>
- <script>
- import { DualAxes,Pie,measureTextWidth,Column,Line,Bar } from '@antv/g2plot'
- import pageTable from './components/pageTable.vue'
- import selectProject from './components/selectProject.vue'
- import borderTemp from '@/HDrpManagement/dataanalysis/components/border.vue'
- import FullScroll from '@/components/fullScroll/index.vue'
- import exportFile from '@/components/export_file/index'
- import btnSelect from "@/components/btn_select/btnSelect";
- import dataDetail from '@/template/dataDetail/index'
- export default {
- name:'projectData',
- components:{
- borderTemp,pageTable,selectProject,FullScroll,exportFile,btnSelect,dataDetail,
- drawerTemp:() => import('@/components/normal-basic-layout/drawerDetail/index'),
- },
- provide () {
- return {
- projectType:() => this.projectType,
- }
- },
- data () {
- return {
- siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
- detailPath:{
- path:'/projectProjectDetail'
- },
- idName:'sa_projectid',
- detailDataSet:{
- typeTable:{
- listqueryid:'',
- total:'',
- },
- gradTable:{
- listqueryid:'',
- total:'',
- },
- fllowTable:{
- listqueryid:'',
- total:'',
- },
- contactTable:{
- listqueryid:'',
- total:'',
- },
- customerTable:{
- listqueryid:'',
- total:'',
- },
- scoreTable:{
- listqueryid:'',
- total:'',
- },
- unfllowTable:{
- listqueryid:'',
- total:'',
- }
- },
- dateType:'本年',
- isFull:false,
- isAppend:true,
- colorArr:['#3874f6','#00b32b','#ffae02','#f53f3f','#f2f2f2'],
- windowWidth: document.documentElement.clientWidth, //实时屏幕宽度
- deplist:[],
- personnelList:[],
- depmentParam:{
- "id": 20230620102004,
- "content": {
- }
- },
- projectType:[{value:''}],
- projectLead:[],
- tradefieldSelect:[],
- projectname:'',
- projectScoreDescript:[],
- depment:'',
- dataAll:{
- data:{}
- },
- scoreStatus:'',
- unfllowStatus:'',
- person:'',
- isleave:'1',
- //项目类型分析
- typeMap:'',
- typeDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-12'],
- typeMapParam: {
- "id": 20231018140404,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dataid": '',
- "dateType":'本年',
- "where":{
- "projecttype":"",
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":'1'
- }
- }
- },
- typeTableParam:{
- "id": 20231019090104,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":'本年',
- "where": {
- // "isfollowup": "", // 有跟进 无跟进 ------项目跟进情况统计列表使用该字段
- // "grade": "", // 项目等级统计列表使用该字段
- // "iscontacts": "", //无联系人 有联系人 ------项目联系人情况统计列表使用该字段
- // "iscustomers": "", //无关联客户 有关联客户 ------项目关联客户情况统计列表使用该字段
- // "istask":"",// 有评估记录 无评估记录 ------ 项目评估情况统计列表使用该字段
- "projecttype":"",// 项目类型分析统计列表使用该最低端
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":'1'
- }
- }
- },
- typeData:{
- map:[],
- },
- //项目等级分析
- gradMap:'',
- gradDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-12'],
- gradMapParam: {
- "id": 20231018141804,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":'本年',
- "where":{
- "grade":"",
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":"1"
- }
- }
- },
- gradTableParam:{
- "id": 20231019090104,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":'本年',
- "where": {
- "grade": "", // 项目等级统计列表使用该字段
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":"1"
- }
- }
- },
- gradData:{
- map:[],
- },
- //项目评估分析
- scoreMap:'',
- scoreMapParam1: {
- "id": 20231024103104,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "where":{
- "unfinish":'0',
- "isleave":'1'
- }
- }
- },
- scoreTableParam1:{
- "id": 20231024112004,
- "content": {
- "type": "",
- "dataid": "",
- "occupancyratio":"",
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "where":{
- "taskType":"",
- "unfinish":'0',
- "isleave":"1"
- },
- "pageSize":20,
- "pageNumber":1
- }
- },
- scoreData:{
- map:[],
- },
- //项目12月新增分析
- addMap:'',
- addParam: {
- "id": 20231018155804,
- "content": {
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "type": '',
- "dataid": '',
- "enddate":`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
- "where":{
- "isleave":'1'
- }
- }
- },
- addData: {
- arr1:[],
- arr2:[]
- },
- //项目12月报备分析
- baobeiMap:'',
- baobeiParam: {
- "id": 20231018160504,
- "content": {
- "type": '',
- "enddate":`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dataid": '',
- "where":{
- "isleave":'1'
- }
- }
- },
- baobeiData: {
- arr1:[],
- arr2:[]
- },
- //项目12月跟进分析
- fllowMap:'',
- fllowParam: {
- "id": 20231018163004,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "enddate":`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
- "dataid": '',
- "where":{
- "isleave":'1'
- }
- }
- },
- fllowData: {
- },
- //项目12月报价分析
- baojiaMap:'',
- baojiaParam: {
- "id": 20231018161604,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "enddate":`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
- "dataid": '',
- "where":{
- "isleave":'1'
- }
- }
- },
- baojiaData: {
- },
- //项目跟进分析
- /* projectFllowMap:'',*/
- fllowDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-12'],
- fllowMapParam: {
- "id": 20231019085304,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dataid": '',
- "dateType":'本年',
- // "enddate":`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
- "where":{
- "grade":"",
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":"1",
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- fllowTableParam:{
- "id": 20231019090104,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dataid": '',
- "dateType":'本年',
- "where": {
- "isfollowup": "", // 有跟进 无跟进 ------项目跟进情况统计列表使用该字段
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":"1",
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- projectFllowData:{
- map:[],
- },
- //项目联系人分析
- projectFllowMap:'',
- contactDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-12'],
- contactMapParam: {
- "id": 20231019085404,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":'本年',
- "where":{
- "grade":"",
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":'1',
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- contactTableParam:{
- "id": 20231019090104,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":'本年',
- "where": {
- "iscontacts": "", //无联系人 有联系人 ------项目联系人情况统计列表使用该字段
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":'1',
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- projectContactData:{
- map:[],
- },
- //项目关联客户分析
- projectCustomerMap:'',
- customerDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-12'],
- customerMapParam: {
- "id": 20231019085504,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":"本年",
- "where":{
- "iscustomers":"",
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":'1',
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- customerTableParam:{
- "id": 20231019090104,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":"本年",
- "where": {
- "iscustomers": "", //无关联客户 有关联客户 ------项目关联客户情况统计列表使用该字段
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":'1',
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- projectCustomerData:{
- map:[],
- },
- //项目评估分析
- projectScoreMap:'',
- scoreDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-12'],
- scoreMapParam: {
- "id": 20231019085604,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":"本年",
- "where":{
- "istask":"",
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":"1"
- }
- }
- },
- scoreTableParam:{
- "id": 20231019090104,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":"本年",
- "dataid": '',
- "where": {
- "istask":"",// 有评估记录 无评估记录 ------ 项目评估情况统计列表使用该字段
- "begdate":"",
- "enddate":"",
- "unfinish":'0',
- "isleave":"1"
- }
- }
- },
- projectScoreData:{
- map:[],
- },
- //未跟进情况
- customerUnfllowMap:'',
- unfllowMapParam: {
- "id": 20231019095804,
- "content": {
- "type": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dataid": '',
- "enddate":new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate(),
- "where": {
- "projecttype":"",
- "unfinish":'0',
- "isleave":'1',
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- unfllowTableParam:{
- "id": 20231019095904,
- "content": {
- "type": '',
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "enddate":new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate(),
- "where": {
- "projecttype":"",
- "dateType":"",
- "unfinish":'0',
- "isleave":'1',
- "status":JSON.parse(sessionStorage.getItem('active_account')).siteid == 'HY' || JSON.parse(sessionStorage.getItem('active_account')).siteid == 'YOSTEST1' ?['跟进中']:[]
- }
- }
- },
- customerUnfllowData:{
- map:[],
- },
- //项目周期分析
- dateParam: {
- "id": 20231023092304,
- "content": {
- "type": "",
- "dataid": '',
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "begnode":"",//开始节点
- "endnode":"",//结束节点
- "where": {
- "projecttype": "",//项目类型
- "grade":"",//项目等级
- "tradefield":"",//领域
- "sa_projectid":"",//项目id
- "isleave":'1'
- }
- }
- },
- dateList:{},
- dataAllParam:{
- "id": 20231018110404,
- "content" :{
- "dataid": '',
- "type":"",
- "username":JSON.parse(sessionStorage.getItem('accountinfo')).name,
- "dateType":'本年',
- "where":{
- "isleave":'1'
- }
- }
- },
- /*业务员列表*/
- typeMapParamSalesman:[],
- gradMapParamSalesman:[],
- scoreMapParam1Salesman:[],
- addParamSalesman:[],
- baobeiParamSalesman:[],
- fllowParamSalesman:[],
- baojiaParamSalesman:[],
- fllowMapParamSalesman:[],
- contactMapParamSalesman:[],
- customerMapParamSalesman:[],
- scoreMapParamSalesman:[],
- unfllowMapParamSalesman:[],
- dateParamSalesman:[],
- paramDetail:{
- "id": 20241008152904,
- "content": {
- "dataid": '',
- "type": '',
- "typemx": "",
- "dateType":"",
- "where": {
- "isleave": "1",
- "condition":"",
- "stagename":"",
- "projecttype":"",
- "tradefield":"",
- "status":"",
- "tag":[],
- "reportstatus":""
- }
- },
- },
- title:'',
- userName:JSON.parse(window.sessionStorage.getItem('active_account')).name,
- tablecols:'',
- option:{
- statusTab:[
- {
- value:"跟进中",
- label:"跟进中"
- },
- {
- value:"已成交",
- label:"已成交"
- },
- {
- value:"已失败",
- label:"已失败"
- },
- {
- value:"已结案",
- label:"已结案"
- }
- ],
- stageList:[
- ],
- tagData:[],
- reportstatus:[
- {
- value:"未报备",
- label:"未报备"
- },
- {
- value:"报备中",
- label:"报备中"
- },
- {
- value:"已报备",
- label:"已报备"
- },
- ],
- },
- }
- },
- methods:{
- btnClick(data){
- this.dateType = data
- this.dataAllParam.content.dateType = data
- this.getdataAll()
- },
- detailSet(listqueryid,total,setName){
- this.detailDataSet[setName].listqueryid = listqueryid
- this.detailDataSet[setName].total = total
- },
- goDetail (data,refData,paramData,fieldname) {
- sessionStorage.setItem('listqueryid',this.$refs[refData].listqueryid)
- sessionStorage.setItem('isGo','1')
- this.$router.push({
- path:'/projectChangeDetail',
- query:{
- id:data.sa_projectid,
- rowindex:data.rowindex,
- listqueryid:this.$refs[refData].listqueryid,
- fieldname:fieldname
- }
- })
- this.$store.dispatch('saveListData',{listData:this.$refs[refData].list2,param:paramData,pageTotal:this.$refs[refData].pageTotal})
- this.$store.dispatch('changeDetailDrawer',true)
- },
- //获取数据总览
- async getdataAll () {
- let res = await this.$api.requested(this.dataAllParam)
- this.dataAll = res.data
- console.log(this.dataAll,'数据总览');
- },
- async departmentrtment() {
- const res = await this.$api.requested(this.depmentParam)
- this.deplist = this.createMenu(res.data.dep)
- this.personnelList = res.data.hr
- this.typeMapParamSalesman = res.data.hr
- this.gradMapParamSalesman = res.data.hr
- this.scoreMapParam1Salesman = res.data.hr
- this.addParamSalesman = res.data.hr
- this.baobeiParamSalesman = res.data.hr
- this.fllowParamSalesman = res.data.hr
- this.baojiaParamSalesman = res.data.hr
- this.fllowMapParamSalesman = res.data.hr
- this.contactMapParamSalesman = res.data.hr
- this.customerMapParamSalesman = res.data.hr
- this.scoreMapParamSalesman = res.data.hr
- this.unfllowMapParamSalesman = res.data.hr
- this.dateParamSalesman = res.data.hr
- this.person = JSON.parse(sessionStorage.getItem('accountinfo')).name
- },
- //12月跟进初始化
- async chart2Fun (init) {
- let res = await this.$api.requested(this.chartParam2)
- console.log(res.data,'近12月跟进');
- this.chartMapData = res.data
- if (init) {
- this.chartMap = new DualAxes(this.$refs.chart2, {
- data: [this.chartMapData.followup, this.chartMapData.tbzzl],
- xField: 'date',
- yField: ['value', 'value'],
- geometryOptions: [
- {
- geometry: 'line',
- seriesField:'key',
- color: '#5B8FF9',
- },
- {
- geometry: 'line',
- seriesField:'key',
- color: '#5AD8A6',
- },
- ],
- });
- this.chartMap.render();
- } else {
- this.chartMap.changeData([this.chartMapData.followup, this.chartMapData.tbzzl])
- }
- },
- //项目类型图初始化
- async typeInit (init,state) {
- if (state == '状态'){
- this.personData('typeMapParamSalesman',this.typeMapParam.content.where.isleave)
- this.typeMapParam.content.dataid = this.typeMapParam.content.type == 0 || this.typeMapParam.content.type == '' ? -1:this.typeMapParam.content.dataid
- }
- let res = await this.$api.requested(this.typeMapParam)
- this.typeData.map = res.data
- this.typeData.map = this.typeData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- qty:item.qty
- }
- })
- console.log(this.typeData.map,'项目类型数据');
- if (init) {
- this.typeMap = new Pie(this.$refs.typeEl, {
- appendPadding: 10,
- data:this.typeData.map,
- angleField: 'ratio',
- colorField: 'key',
- radius: 1,
- innerRadius: 0.64,
- label:{
- /*type: 'inner',
- offset: '-50%',
- style: {
- textAlign: 'center',
- },
- autoRotate: false,*/
- formatter: (datum) => `${datum.ratio}%`
- },
- tooltip:{
- formatter: (datum) => {
- return { name: datum.key, value: datum.ratio + '%' };
- },
- },
- statistic: {
- title: {
- offsetY: -4,
- style: {
- fontSize:'16px'
- },
- content:this.$t('项目总数')
- },
- content: {
- offsetY: 4,
- style: {
- whiteSpace: 'pre-wrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- fontSize:'16px'
- },
- customHtml: (container, view, datum, data) => {
- const text = data[0].totalqty
- return text
- },
- },
- },
- legend: {
- position:'bottom'
- },
- // 添加 中心统计文本 交互
- interactions: [{ type: 'element-single-selected' },{ type: 'element-active' }],
- });
- this.typeMap.on('element:click',(v) => {
- if (v.data.data.value != this.typeTableParam.content.where.projecttype) {
- this.typeTableParam.content.where.projecttype = v.data.data.value
- this.typeTableParam.content.pageNumber = 1
- this.$refs.typeTable.listData()
- } else {
- this.typeTableParam.content.where.projecttype = ''
- this.typeTableParam.content.pageNumber = 1
- this.$refs.typeTable.listData()
- }
- })
- this.typeMap.render();
- } else {
- this.typeMap.changeData(this.typeData.map)
- }
- },
- //项目等级图初始化
- async gradInit (init,state) {
- if (state == '状态'){
- this.personData('gradMapParamSalesman',this.gradMapParam.content.where.isleave)
- this.gradMapParam.content.dataid = this.gradMapParam.content.type == 0 || this.gradMapParam.content.type == '' ? -1:this.gradMapParam.content.dataid
- }
- let res = await this.$api.requested(this.gradMapParam)
- this.gradData.map = res.data
- this.gradData.map = this.gradData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- qty:item.qty
- }
- })
- console.log(this.gradData.map,'项目等级数据');
- if (init) {
- this.gradMap = new Pie(this.$refs.gradEl, {
- appendPadding: 10,
- data:this.gradData.map,
- angleField: 'ratio',
- colorField: 'key',
- radius: 1,
- innerRadius: 0.64,
- label:{
- formatter: (datum) => `${datum.ratio}%`
- },
- tooltip:{
- formatter: (datum) => {
- return { name: datum.key, value: datum.ratio + '%' };
- },
- },
- statistic: {
- title: {
- offsetY: -4,
- style: {
- fontSize:'16px'
- },
- content:this.$t('项目总数')
- },
- content: {
- offsetY: 4,
- style: {
- whiteSpace: 'pre-wrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- fontSize:'16px'
- },
- customHtml: (container, view, datum, data) => {
- const text = data[0].totalqty
- return text
- },
- },
- },
- legend: {
- position:'bottom'
- },
- // 添加 中心统计文本 交互
- interactions: [{ type: 'element-selected' },{ type: 'element-active' }],
- });
- this.gradMap.on('element:click',(v) => {
- if (v.data.data.key != this.gradTableParam.content.where.grade) {
- this.gradTableParam.content.where.grade = v.data.data.key
- this.gradTableParam.content.pageNumber = 1
- this.$refs.gradTable.listData()
- } else {
- this.gradTableParam.content.where.grade = ''
- this.gradTableParam.content.pageNumber = 1
- this.$refs.gradTable.listData()
- }
- })
- this.gradMap.render();
- } else {
- this.gradMap.changeData(this.gradData.map)
- }
- },
- //项目评估图初始化
- async scoreInit (init,state) {
- if (state == '状态'){
- this.personData('scoreMapParam1Salesman',this.scoreMapParam1.content.where.isleave)
- this.scoreMapParam1.content.dataid = this.scoreMapParam1.content.type == 0 || this.scoreMapParam1.content.type == '' ? -1:this.scoreMapParam1.content.dataid
- }
- let res = await this.$api.requested(this.scoreMapParam1)
- this.scoreData.map = res.data
- this.scoreData.map = this.scoreData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- qty:item.qty
- }
- })
- if (init) {
- this.scoreMap = new Bar(this.$refs.scoreEl, {
- data:this.scoreData.map,
- xField: 'value',
- yField: 'key',
- seriesField: 'key',
- minBarWidth: 20,
- maxBarWidth: 40,
- label:{
- position:top
- },
- legend: {
- position: 'top-left',
- },
- interactions: [{ type: 'element-single-selected' }],
- });
- this.scoreMap.on('element:click',(v) => {
- if (v.data.data.key != this.scoreTableParam1.content.occupancyratio) {
- this.scoreStatus = v.data.data.key
- this.scoreTableParam1.content.occupancyratio = v.data.data.key
- this.scoreTableParam1.content.pageNumber = 1
- this.$refs.scoreTable.listData()
- } else {
- this.scoreStatus = ''
- this.scoreTableParam1.content.occupancyratio = ''
- this.scoreTableParam1.content.pageNumber = 1
- this.$refs.scoreTable.listData()
- }
- })
- this.scoreMap.render();
- } else {
- this.scoreMap.changeData(this.scoreData.map)
- }
- },
- //12月新增初始化
- async addFun (init,state) {
- let param = JSON.parse(JSON.stringify(this.addParam))
- if (state == '状态'){
- this.personData('addParamSalesman',this.addParam.content.where.isleave)
- param.content.dataid = param.content.type == 0 || param.content.type == '' ? -1:param.content.dataid
- }
- if (param.content.dataid instanceof Array) {
- param.content.dataid = param.content.dataid[param.content.dataid.length - 1]
- }
- let res = await this.$api.requested(param)
- /*this.addData.arr1 = res.data.histogram*/
- let lastYear = []
- let nowYear = []
- let k=0
- for (var i=0;i<res.data.histogram.length;i++){
- if (res.data.histogram[i].key === '去年同期新增'){
- lastYear[k]=res.data.histogram[i]
- k++
- }
- }
- let x=0
- for (var i=0;i<res.data.histogram.length;i++){
- if (res.data.histogram[i].key === '本期新增'){
- nowYear[x]=res.data.histogram[i]
- x++
- }
- }
- this.addData.arr1 = lastYear.concat(nowYear)
- this.addData.arr1 = this.addData.arr1.map(item=>{
- return {
- date: item.date,
- key:this.$t(item.key),
- value: item.value,
- }
- })
- // res.data.lineChart.forEach(item => item[`同比增长率`] = item.value)
- this.addData.arr2 = res.data.lineChart
- this.addData.arr2 = this.addData.arr2.map(item=>{
- return {
- date: item.date,
- key:this.$t('同比增长率'),
- value: item.value,
- }
- })
- if (init) {
- this.addMap = new DualAxes(this.$refs.addEl, {
- data: [this.addData.arr1,this.addData.arr2],
- xField: 'date',
- yField: ['value', 'value'],
- geometryOptions: [
- {
- geometry: 'column',
- isGroup: true,
- seriesField: 'key',
- color:['#62daab','#6395fa'],
- label:{
- position:top
- }
- },
- {
- geometry: 'line',
- lineStyle: {
- lineWidth: 2,
- },
- color: '#F6903D',
- smooth: true,
- seriesField: 'key',
- label:{
- position:top,
- formatter: (datum) =>{
- return datum.value + '%'
- }
- }
- },
- ],
- tooltip: {
- formatter: (datum) => {
- return { name: datum.key, value: datum.key != this.$t('同比增长率')? datum.value : datum.value + '%'};
- },
- },
- });
- this.addMap.render()
- } else {
- this.addMap.changeData([this.addData.arr1,this.addData.arr2])
- }
- },
- //12月报备初始化
- async baobeiFun (init,state) {
- let param = JSON.parse(JSON.stringify(this.baobeiParam))
- if (state == '状态'){
- this.personData('baobeiParamSalesman',this.baobeiParam.content.where.isleave)
- param.content.dataid = param.content.type == 0 || param.content.type == '' ? -1:param.content.dataid
- }
- if (param.content.dataid instanceof Array) {
- param.content.dataid = param.content.dataid[param.content.dataid.length - 1]
- }
- let res = await this.$api.requested(param)
- /*this.baobeiData.arr1 = res.data.histogram*/
- let lastYear = []
- let nowYear = []
- let k=0
- for (var i=0;i<res.data.histogram.length;i++){
- if (res.data.histogram[i].key === '去年同期报备'){
- lastYear[k]=res.data.histogram[i]
- k++
- }
- }
- let x=0
- for (var i=0;i<res.data.histogram.length;i++){
- if (res.data.histogram[i].key === '本期报备'){
- nowYear[x]=res.data.histogram[i]
- x++
- }
- }
- this.baobeiData.arr1 = lastYear.concat(nowYear)
- this.baobeiData.arr1 = this.baobeiData.arr1.map(item=>{
- return {
- date: item.date,
- key:this.$t(item.key),
- value: item.value,
- }
- })
- // res.data.lineChart.forEach(item => item[`同比增长率`] = item.value)
- this.baobeiData.arr2 = res.data.lineChart
- this.baobeiData.arr2 = this.baobeiData.arr2.map(item=>{
- return {
- date: item.date,
- key:this.$t('同比增长率'),
- value: item.value,
- }
- })
- if (init) {
- this.baobeiMap = new DualAxes(this.$refs.baobeiEl, {
- data: [this.baobeiData.arr1,this.baobeiData.arr2],
- xField: 'date',
- yField: ['value', 'value'],
- geometryOptions: [
- {
- geometry: 'column',
- isGroup: true,
- seriesField: 'key',
- color:['#62daab','#6395fa'],
- label:{
- position:top
- }
- },
- {
- geometry: 'line',
- lineStyle: {
- lineWidth: 2,
- },
- color: '#F6903D',
- smooth: true,
- seriesField: 'key',
- label:{
- position:top,
- formatter: (datum) =>{
- return datum.value + '%'
- }
- }
- },
- ],
- tooltip: {
- formatter: (datum) => {
- return { name: datum.key, value: datum.key != this.$t(`同比增长率`)? datum.value : datum.value + '%'};
- },
- },
- });
- this.baobeiMap.render()
- } else {
- this.baobeiMap.changeData([this.baobeiData.arr1,this.baobeiData.arr2])
- }
- },
- //12月跟进初始化
- async fllowFun (init,state) {
- let param = JSON.parse(JSON.stringify(this.fllowParam))
- if (state == '状态'){
- this.personData('fllowParamSalesman',this.fllowParam.content.where.isleave)
- param.content.dataid = param.content.type == 0 || param.content.type == '' ? -1:param.content.dataid
- }
- if (param.content.dataid instanceof Array) {
- param.content.dataid = param.content.dataid[param.content.dataid.length - 1]
- }
- let res = await this.$api.requested(param)
- this.fllowData = res.data
- let lastYear = []
- let nowYear = []
- let k=0
- for (var i=0;i<res.data.followup.length;i++){
- if (res.data.followup[i].key === '去年同期跟进'){
- lastYear[k]=res.data.followup[i]
- k++
- }
- }
- let x=0
- for (var i=0;i<res.data.followup.length;i++){
- if (res.data.followup[i].key === '本期跟进'){
- nowYear[x]=res.data.followup[i]
- x++
- }
- }
- this.fllowData.followup = lastYear.concat(nowYear)
- this.fllowData.followup = this.fllowData.followup.map(item=>{
- return {
- date: item.date,
- key:this.$t(item.key),
- value: item.value,
- }
- })
- // this.fllowData.tbzzl.forEach(item => item.key = '同比增长率')
- this.fllowData.tbzzl = this.fllowData.tbzzl.map(item=>{
- return {
- date: item.date,
- key:this.$t(item.key),
- value: item.value,
- }
- })
- console.log(res.data,'跟进数据');
- if (init) {
- this.fllowMap = new DualAxes(this.$refs.fllowEl, {
- data: [this.fllowData.followup, this.fllowData.tbzzl],
- xField: 'date',
- yField: ['value', 'value'],
- geometryOptions: [
- {
- geometry: 'column',
- seriesField:'key',
- isGroup: 'true',
- color:['#62daab','#6395fa'],
- label:{
- position:top
- }
- },
- {
- geometry: 'line',
- seriesField:'key',
- color: '#F6903D',
- smooth: true,
- label:{
- formatter: (datum) =>{
- return datum.value + '%'
- }
- }
- },
- ],
- tooltip: {
- formatter: (datum) => {
- return { name: datum.key, value: datum.key == this.$t('同比增长率')? datum.value + '%' : datum.value };
- },
- },
- })
- this.fllowMap.render()
- } else {
- this.fllowMap.changeData([this.fllowData.followup, this.fllowData.tbzzl])
- }
- },
- //12月报价初始化
- async baojiaFun (init,state) {
- let param = JSON.parse(JSON.stringify(this.baojiaParam))
- if (state == '状态'){
- this.personData('baojiaParamSalesman',this.baojiaParam.content.where.isleave)
- param.content.dataid = param.content.type == 0 || param.content.type == '' ? -1:param.content.dataid
- }
- if (param.content.dataid instanceof Array) {
- param.content.dataid = param.content.dataid[param.content.dataid.length - 1]
- }
- let res = await this.$api.requested(param)
- this.baojiaData = res.data
- this.baojiaData = this.baojiaData.map(item=>{
- return {
- date: item.date,
- key:this.$t(item.key),
- value: item.value,
- }
- })
- if (init) {
- this.baojiaMap = new Line(this.$refs.baojiaEl, {
- data:this.baojiaData,
- xField: 'date',
- yField: 'value',
- seriesField: 'key',
- label:{
- layout: [],
- },
- xAxis: {
- /*type: 'time',*/
- },
- yAxis: {
- // label: {
- // // 数值格式化为千分位
- // formatter: (v) => `${v}`.replace(/\d{1,3}(?=(\d{3})+$)/g, (s) => `${s},`),
- // },
- },
- smooth: true,
- })
- this.baojiaMap.render()
- } else {
- this.baojiaMap.changeData(this.baojiaData)
- }
- },
- //项目跟进图初始化
- async fllowInit (init,state) {
- if (state == '状态'){
- this.personData('fllowMapParamSalesman',this.fllowMapParam.content.where.isleave)
- this.fllowMapParam.content.dataid = this.fllowMapParam.content.type == 0 || this.fllowMapParam.content.type == '' ? -1:this.fllowMapParam.content.dataid
- }
- let res = await this.$api.requested(this.fllowMapParam)
- this.projectFllowData.map = res.data
- this.projectFllowData.map = this.projectFllowData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- }
- })
- if (init) {
- this.projectFllowMap = new Pie(this.$refs.projectFllowEl, {
- appendPadding: 10,
- data:this.projectFllowData.map,
- angleField: 'ratio',
- colorField: 'key',
- radius: 1,
- innerRadius: 0.64,
- label:{
- formatter: (datum) => `${datum.ratio}%`
- },
- tooltip:{
- formatter: (datum) => {
- return { name: datum.key, value: datum.ratio + '%' };
- },
- },
- statistic: {
- title: {
- offsetY: -4,
- style: {
- fontSize:'16px'
- },
- content:this.$t('项目总数')
- },
- content: {
- offsetY: 4,
- style: {
- whiteSpace: 'pre-wrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- fontSize:'16px'
- },
- customHtml: (container, view, datum, data) => {
- const text = data[0].totalqty
- return text
- },
- },
- },
- legend: {
- position:'bottom'
- },
- // 添加 中心统计文本 交互
- interactions: [{ type: 'element-selected' },{ type: 'element-active' }],
- });
- this.projectFllowMap.on('element:click',(v) => {
- if (v.data.data.key != this.fllowTableParam.content.where.isfollowup) {
- this.fllowTableParam.content.where.isfollowup = v.data.data.key
- this.fllowTableParam.content.pageNumber = 1
- this.$refs.projectFllowTable.listData()
- } else {
- this.fllowTableParam.content.where.isfollowup = ''
- this.fllowTableParam.content.pageNumber = 1
- this.$refs.projectFllowTable.listData()
- }
- })
- this.projectFllowMap.render();
- } else {
- this.projectFllowMap.changeData(this.projectFllowData.map)
- }
- },
- //项目联系人图初始化
- async contactInit (init,state) {
- if (state == '状态'){
- this.personData('contactMapParamSalesman',this.contactMapParam.content.where.isleave)
- this.contactMapParam.content.dataid = this.contactMapParam.content.type == 0 || this.contactMapParam.content.type == '' ? -1:this.contactMapParam.content.dataid
- }
- let res = await this.$api.requested(this.contactMapParam)
- this.projectContactData.map = res.data
- this.projectContactData.map = this.projectContactData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- }
- })
- console.log(this.projectContactData.map,'项目联系人数据');
- if (init) {
- this.projectContactMap = new Pie(this.$refs.projectContactEl, {
- appendPadding: 10,
- data:this.projectContactData.map,
- angleField: 'ratio',
- colorField: 'key',
- radius: 1,
- innerRadius: 0.64,
- label:{
- formatter: (datum) => `${datum.ratio}%`
- },
- tooltip:{
- formatter: (datum) => {
- return { name: datum.key, value: datum.ratio + '%' };
- },
- },
- statistic: {
- title: {
- offsetY: -4,
- style: {
- fontSize:'16px'
- },
- content:this.$t('项目总数')
- },
- content: {
- offsetY: 4,
- style: {
- whiteSpace: 'pre-wrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- fontSize:'16px'
- },
- customHtml: (container, view, datum, data) => {
- const text = data[0].totalqty
- return text
- },
- },
- },
- legend: {
- position:'bottom'
- },
- // 添加 中心统计文本 交互
- interactions: [{ type: 'element-selected' },{ type: 'element-active' }],
- });
- this.projectContactMap.on('element:click',(v) => {
- if (v.data.data.key != this.contactTableParam.content.where.iscontacts) {
- this.contactTableParam.content.where.iscontacts = v.data.data.key
- this.contactTableParam.content.pageNumber = 1
- this.$refs.projectContactTable.listData()
- } else {
- this.contactTableParam.content.where.iscontacts = ''
- this.contactTableParam.content.pageNumber = 1
- this.$refs.projectContactTable.listData()
- }
- })
- this.projectContactMap.render();
- } else {
- this.projectContactMap.changeData(this.projectContactData.map)
- }
- },
- //项目关联客户图初始化
- async customerInit (init,state) {
- if (state == '状态'){
- this.personData('customerMapParamSalesman',this.customerMapParam.content.where.isleave)
- this.customerMapParam.content.dataid = this.customerMapParam.content.type == 0 || this.customerMapParam.content.type == '' ? -1:this.customerMapParam.content.dataid
- }
- let res = await this.$api.requested(this.customerMapParam)
- this.projectCustomerData.map = res.data
- this.projectCustomerData.map = this.projectCustomerData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- }
- })
- console.log(this.projectCustomerData.map,'项目关联客户数据');
- if (init) {
- this.projectCustomerMap = new Pie(this.$refs.projectCustomerEl, {
- appendPadding: 10,
- data:this.projectCustomerData.map,
- angleField: 'ratio',
- colorField: 'key',
- radius: 1,
- innerRadius: 0.64,
- label:{
- formatter: (datum) => `${datum.ratio}%`
- },
- tooltip:{
- formatter: (datum) => {
- return { name: datum.key, value: datum.ratio + '%' };
- },
- },
- statistic: {
- title: {
- offsetY: -4,
- style: {
- fontSize:'16px'
- },
- content:this.$t('项目总数')
- },
- content: {
- offsetY: 4,
- style: {
- whiteSpace: 'pre-wrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- fontSize:'16px'
- },
- customHtml: (container, view, datum, data) => {
- const text = data[0].totalqty
- return text
- },
- },
- },
- legend: {
- position:'bottom'
- },
- // 添加 中心统计文本 交互
- interactions: [{ type: 'element-selected' },{ type: 'element-active' }],
- });
- this.projectCustomerMap.on('element:click',(v) => {
- if (v.data.data.key != this.customerTableParam.content.where.iscustomers) {
- this.customerTableParam.content.where.iscustomers = v.data.data.key
- this.customerTableParam.content.pageNumber = 1
- this.$refs.projectCustomerTable.listData()
- } else {
- this.customerTableParam.content.where.iscustomers = ''
- this.customerTableParam.content.pageNumber = 1
- this.$refs.projectCustomerTable.listData()
- }
- })
- this.projectCustomerMap.render();
- } else {
- this.projectCustomerMap.changeData(this.projectCustomerData.map)
- }
- },
- //项目评估图初始化
- async projectScoreInit (init,state) {
- if (state == '状态'){
- this.personData('scoreMapParamSalesman',this.scoreMapParam.content.where.isleave)
- this.scoreMapParam.content.dataid = this.scoreMapParam.content.type == 0 || this.scoreMapParam.content.type == '' ? -1:this.scoreMapParam.content.dataid
- }
- let res = await this.$api.requested(this.scoreMapParam)
- this.projectScoreData.map = res.data
- this.projectScoreData.map = this.projectScoreData.map.map(item=>{
- return {
- ratio: item.ratio,
- key:this.$t(item.key),
- value: item.value,
- totalqty: item.totalqty,
- }
- })
- console.log(this.projectScoreData.map,'项目评估数据');
- if (init) {
- this.projectScoreMap = new Pie(this.$refs.projectScoreEl, {
- appendPadding: 10,
- data:this.projectScoreData.map,
- angleField: 'ratio',
- colorField: 'key',
- radius: 1,
- innerRadius: 0.64,
- label:{
- formatter: (datum) => `${datum.ratio}%`
- },
- tooltip:{
- formatter: (datum) => {
- return { name: datum.key, value: datum.ratio + '%' };
- },
- },
- statistic: {
- title: {
- offsetY: -4,
- style: {
- fontSize:'16px'
- },
- content:this.$t('项目总数')
- },
- content: {
- offsetY: 4,
- style: {
- whiteSpace: 'pre-wrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- fontSize:'16px'
- },
- customHtml: (container, view, datum, data) => {
- const text = data[0].totalqty
- return text
- },
- },
- },
- legend: {
- position:'bottom'
- },
- // 添加 中心统计文本 交互
- interactions: [{ type: 'element-highlight-by-x ' },{ type: 'element-selected' },{ type: 'element-active' }],
- });
- this.projectScoreMap.on('element:click',(v) => {
- if (v.data.data.key != this.scoreTableParam.content.where.istask) {
- this.scoreTableParam.content.where.istask = v.data.data.key
- this.scoreTableParam.content.pageNumber = 1
- this.$refs.projectScoreTable.listData()
- } else {
- this.scoreTableParam.content.where.istask = ''
- this.scoreTableParam.content.pageNumber = 1
- this.$refs.projectScoreTable.listData()
- }
- })
- this.projectScoreMap.render();
- } else {
- this.projectScoreMap.changeData(this.projectScoreData.map)
- }
- },
- async getDate (init,state) {
- if(init === true) this.dateParam.content.where.projecttype = this.projectType.length ? this.projectType[0].value : ''
- let param = JSON.parse(JSON.stringify(this.dateParam))
- if (state == '状态'){
- this.personData('dateParamSalesman',this.dateParam.content.where.isleave)
- param.content.dataid = param.content.type == 0 || param.content.type == '' ? -1:param.content.dataid
- }
- if (param.content.dataid instanceof Array) {
- param.content.dataid = param.content.dataid[param.content.dataid.length - 1]
- }
- let res = await this.$api.requested(param)
- this.dateList = res.data
- console.log(this.dateList,'周期数据');
- },
- //项目未跟进情况图初始化
- async customerUnfllowInit (init,state) {
- if (state == '状态'){
- this.personData('unfllowMapParamSalesman',this.unfllowMapParam.content.where.isleave)
- this.unfllowMapParam.content.dataid = this.unfllowMapParam.content.type == 0 || this.unfllowMapParam.content.type == '' ? -1:this.unfllowMapParam.content.dataid
- }
- let res = await this.$api.requested(this.unfllowMapParam)
- this.customerUnfllowData.map = res.data
- this.customerUnfllowData.map = this.customerUnfllowData.map.map(item=>{
- return {
- datetype: this.$t(item.datetype),
- key:this.$t(item.key),
- projecttype:this.$t(item.projecttype),
- value: item.value,
- sequence: item.sequence,
- }
- })
- if (init) {
- this.customerUnfllowMap = new Column(this.$refs.customerUnfllowEl, {
- data:this.customerUnfllowData.map,
- isGroup: true,
- xField: 'datetype',
- yField: 'value',
- seriesField: 'projecttype',
- label:{
- position:top
- },
- /** 设置颜色 */
- //color: ['#1ca9e6', '#f88c24'],
- /** 设置间距 */
- // marginRatio: 0.1,
- /*label: {
- // 可手动配置 label 数据标签位置
- position: 'top', // 'top', 'middle', 'bottom'
- // 可配置附加的布局方法
- layout: [
- // 柱形图数据标签位置自动调整
- { type: 'interval-adjust-position' },
- // 数据标签防遮挡
- { type: 'interval-hide-overlap' },
- // 数据标签文颜色自动调整
- { type: 'adjust-color' },
- ],
- },*/
- interactions: [{ type: 'element-highlight-by-x' }],
- });
- this.customerUnfllowMap.on('element:click',(v) => {
- console.log(v);
- if (v.data.data.datetype == this.unfllowTableParam.content.where.dateType) {
- this.unfllowStatus = ''
- this.unfllowTableParam.content.where.dateType = ''
- this.unfllowTableParam.content.pageNumber = 1
- } else {
- this.unfllowStatus = v.data.data.datetype
- this.unfllowTableParam.content.where.dateType = v.data.data.datetype
- this.unfllowTableParam.content.pageNumber = 1
- }
- this.$refs.customerUnfllowTable.listData()
- })
- this.customerUnfllowMap.render()
- } else {
- this.customerUnfllowMap.changeData(this.customerUnfllowData.map)
- }
- },
- renderStatistic(containerWidth, text, style) {
- const textWidth = measureTextWidth(text, style);
- const textHeight = style.lineHeight || style.fontSize
- const R = containerWidth / 2;
- // r^2 = (w / 2)^2 + (h - offsetY)^2
- let scale = 1;
- if (containerWidth < textWidth) {
- scale = Math.min(Math.sqrt(Math.abs(Math.pow(R, 2) / (Math.pow(textWidth / 2, 2) + Math.pow(textHeight, 2)))), 1);
- }
- const textStyleStr = `width:${containerWidth}px;`;
- return `<div style="${textStyleStr};font-size:${scale}em;line-height:${scale < 1 ? 1 : 'inherit'};">${text}</div>`;
- },
- async getProjectScoreDescript () {
- let res = await this.$api.requested({
- "id": 20231101091904,
- "content": {}
- })
- this.projectScoreDescript = res.data
- console.log(this.projectScoreDescript,'评估描述');
- },
- createMenu (array) {
- var that = this
- let arr = []
- function convertToElementTree(node) {
- // 新节点
- if (node.subdep.length === 0){
- var elNode = {
- label: node["depname"],
- parentid:node['parentid'],
- parentname:node['parentname'],
- departmentid:node["departmentid"],
- value:node["departmentid"],
- remarks:node["remarks"],
- isused:node["isused"],
- changedate:node['changedate'],
- changeby:node['changeby'],
- createdate:node['createdate'],
- createby:node['createby'],
- depno:node['depno'],
- disabled:that.pageOnlyRead,
- }
- }else {
- var elNode = {
- label: node["depname"],
- parentid:node['parentid'],
- parentname:node['parentname'],
- departmentid:node["departmentid"],
- value:node["departmentid"],
- remarks:node["remarks"],
- isused:node["isused"],
- changedate:node['changedate'],
- changeby:node['changeby'],
- createdate:node['createdate'],
- createby:node['createby'],
- depno:node['depno'],
- disabled:that.pageOnlyRead,
- children: []
- }
- }
- if (node.subdep && node.subdep.length > 0) {
- // 如果存在子节点
- for (var index = 0; index < node.subdep.length; index++) {
- // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
- elNode.children.push(convertToElementTree(node.subdep[index]));
- }
- }
- return elNode;
- }
- array.forEach((element) => {
- arr.push(convertToElementTree(element))
- });
- return arr
- },
- selectDep (val) {
- this.person = ''
- let id = val[val.length - 1]
- if (val.length) {
- /*数据总览*/
- this.dataAllParam.content.dataid = id
- this.dataAllParam.content.type = 1
- this.dataAllParam.content.username = ''
- this.dataAllParam.content.dateType = this.dateType
- this.getdataAll()
- /*项目类型分析*/
- this.typeMapParam.content.dataid = id
- this.typeMapParam.content.type = 1
- this.typeInit()
- this.typeTableParam.content.dataid = id
- this.typeTableParam.content.type = 1
- this.typeTableParam.content.username = ''
- this.$refs.typeTable.listData()
- /*项目等级分析*/
- this.gradMapParam.content.dataid = id
- this.gradMapParam.content.type = 1
- this.gradInit()
- this.gradTableParam.content.dataid = id
- this.gradTableParam.content.type = 1
- this.gradTableParam.content.username = ''
- this.$refs.gradTable.listData()
- /*项目评估分析*/
- this.scoreMapParam1.content.dataid = id
- this.scoreMapParam1.content.type = 1
- this.scoreInit()
- this.scoreTableParam1.content.dataid = id
- this.scoreTableParam1.content.type = 1
- this.scoreTableParam1.content.username = ''
- this.$refs.scoreTable.listData()
- /*近12月项目新增分析*/
- this.addParam.content.dataid = id
- this.addParam.content.type = 1
- this.addParam.content.username = ''
- this.addFun()
- /*近12月项目报备分析*/
- this.baobeiParam.content.dataid = id
- this.baobeiParam.content.type = 1
- this.baobeiParam.content.username = ''
- this.baobeiFun()
- /*近12月项目跟进分析*/
- this.fllowParam.content.dataid = id
- this.fllowParam.content.type = 1
- this.fllowParam.content.username = ''
- this.fllowFun()
- /*近12月项目报价分析*/
- this.baojiaParam.content.dataid = id
- this.baojiaParam.content.type = 1
- this.baojiaParam.content.username = ''
- this.baojiaFun()
- /*项目跟进情况统计*/
- this.fllowMapParam.content.dataid = id
- this.fllowMapParam.content.type = 1
- this.fllowMapParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.fllowInit()
- this.fllowTableParam.content.dataid = id
- this.fllowTableParam.content.type = 1
- this.fllowTableParam.content.username = ''
- this.fllowTableParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.$refs.projectFllowTable.listData()
- /*项目联系人情况统计*/
- this.contactMapParam.content.dataid = id
- this.contactMapParam.content.type = 1
- this.contactMapParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.contactInit()
- this.contactTableParam.content.dataid = id
- this.contactTableParam.content.type = 1
- this.contactTableParam.content.username = ''
- this.contactTableParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.$refs.projectContactTable.listData()
- /*项目关联客户情况统计*/
- this.customerMapParam.content.dataid = id
- this.customerMapParam.content.type = 1
- this.customerMapParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.customerInit()
- this.customerTableParam.content.dataid = id
- this.customerTableParam.content.type = 1
- this.customerTableParam.content.username = ''
- this.customerTableParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.$refs.projectCustomerTable.listData()
- /*项目评估情况统计*/
- this.scoreMapParam.content.dataid = id
- this.scoreMapParam.content.type = 1
- this.projectScoreInit()
- this.scoreTableParam.content.dataid = id
- this.scoreTableParam.content.type = 1
- this.scoreTableParam.content.username = ''
- this.$refs.projectScoreTable.listData()
- /*有效项目未跟进天数分析*/
- this.unfllowMapParam.content.dataid = id
- this.unfllowMapParam.content.type = 1
- this.unfllowMapParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.customerUnfllowInit()
- this.unfllowTableParam.content.dataid = id
- this.unfllowTableParam.content.type = 1
- this.unfllowTableParam.content.username = ''
- this.unfllowTableParam.content.where.status = this.siteid == 'HY' || this.siteid == 'YOSTEST1' ? ['跟进中'] : []
- this.$refs.customerUnfllowTable.listData()
- /*项目生命周期分析*/
- this.dateParam.content.dataid = id
- this.dateParam.content.type = 1
- this.dateParam.content.username = ''
- this.getDate()
- } else {
- /*项目类型分析*/
- let name = JSON.parse(sessionStorage.getItem('accountinfo')).name
- /*数据总览*/
- this.dataAllParam.content.dataid = ''
- this.dataAllParam.content.type = ''
- this.dataAllParam.content.username = name
- this.dataAllParam.content.dateType = this.dateType
- this.getdataAll()
- this.typeMapParam.content.dataid = ''
- this.typeMapParam.content.type = ''
- this.typeInit()
- this.typeTableParam.content.dataid = ''
- this.typeTableParam.content.type = ''
- this.typeTableParam.content.username = name
- this.$refs.typeTable.listData()
- /*项目等级分析*/
- this.gradMapParam.content.dataid = ''
- this.gradMapParam.content.type = ''
- this.gradInit()
- this.gradTableParam.content.dataid = ''
- this.gradTableParam.content.type = ''
- this.gradTableParam.content.username = name
- this.$refs.gradTable.listData()
- /*项目评估分析*/
- this.scoreMapParam1.content.dataid = ''
- this.scoreMapParam1.content.type = ''
- this.scoreInit()
- this.scoreTableParam1.content.dataid = ''
- this.scoreTableParam1.content.type = ''
- this.scoreTableParam1.content.username = name
- this.$refs.scoreTable.listData()
- /*近12月项目新增分析*/
- this.addParam.content.dataid = ''
- this.addParam.content.type = ''
- this.addParam.content.username = name
- this.addFun()
- /*近12月项目报备分析*/
- this.baobeiParam.content.dataid = ''
- this.baobeiParam.content.type = ''
- this.baobeiParam.content.username = name
- this.baobeiFun()
- /*近12月项目跟进分析*/
- this.fllowParam.content.dataid = ''
- this.fllowParam.content.type = ''
- this.fllowParam.content.username = name
- this.fllowFun()
- /*近12月项目报价分析*/
- this.baojiaParam.content.dataid = ''
- this.baojiaParam.content.type = ''
- this.baojiaParam.content.username = name
- this.baojiaFun()
- /*近12月项目跟进分析*/
- this.fllowMapParam.content.dataid = ''
- this.fllowMapParam.content.type = ''
- this.fllowInit()
- this.fllowTableParam.content.dataid = ''
- this.fllowTableParam.content.type = ''
- this.fllowTableParam.content.username = name
- this.$refs.projectFllowTable.listData()
- /*项目联系人情况统计*/
- this.contactMapParam.content.dataid = ''
- this.contactMapParam.content.type = ''
- this.contactInit()
- this.contactTableParam.content.dataid = ''
- this.contactTableParam.content.type = ''
- this.contactTableParam.content.username = name
- this.$refs.projectContactTable.listData()
- /*项目关联客户情况统计*/
- this.customerMapParam.content.dataid = ''
- this.customerMapParam.content.type = ''
- this.customerInit()
- this.customerTableParam.content.dataid = ''
- this.customerTableParam.content.type = ''
- this.customerTableParam.content.username = name
- this.$refs.projectCustomerTable.listData()
- /*项目评估情况统计*/
- this.scoreMapParam.content.dataid = ''
- this.scoreMapParam.content.type = ''
- this.projectScoreInit()
- this.scoreTableParam.content.dataid = ''
- this.scoreTableParam.content.type = ''
- this.scoreTableParam.content.username = name
- this.$refs.projectScoreTable.listData()
- /*有效项目未跟进天数分析*/
- this.unfllowMapParam.content.dataid = ''
- this.unfllowMapParam.content.type = ''
- this.customerUnfllowInit()
- this.unfllowTableParam.content.dataid = ''
- this.unfllowTableParam.content.type = ''
- this.unfllowTableParam.content.username = name
- this.$refs.customerUnfllowTable.listData()
- /*项目生命周期分析*/
- this.dateParam.content.dataid = ''
- this.dateParam.content.type = ''
- this.dateParam.content.username = name
- this.getDate()
- }
- },
- selectPerson(id){
- this.depment = ''
- /*数据总览*/
- this.dataAllParam.content.dataid = id
- this.dataAllParam.content.type = 0
- this.dataAllParam.content.username = this.person
- this.dataAllParam.content.dateType = this.dateType
- this.getdataAll()
- /*项目类型分析*/
- this.typeMapParam.content.dataid = id
- this.typeMapParam.content.type = 0
- this.typeInit()
- this.typeTableParam.content.dataid = id
- this.typeTableParam.content.type = 0
- this.typeTableParam.content.username = this.person
- this.$refs.typeTable.listData()
- /*项目等级分析*/
- this.gradMapParam.content.dataid = id
- this.gradMapParam.content.type = 0
- this.gradInit()
- this.gradTableParam.content.dataid = id
- this.gradTableParam.content.type = 0
- this.gradTableParam.content.username = this.person
- this.$refs.gradTable.listData()
- /*项目评估分析*/
- this.scoreMapParam1.content.dataid = id
- this.scoreMapParam1.content.type = 0
- this.scoreInit()
- this.scoreTableParam1.content.dataid = id
- this.scoreTableParam1.content.type = 0
- this.scoreTableParam1.content.username = this.person
- this.$refs.scoreTable.listData()
- /*近12月项目新增分析*/
- this.addParam.content.dataid = id
- this.addParam.content.type = 0
- this.addParam.content.username = this.person
- this.addFun()
- /*近12月项目报备分析*/
- this.baobeiParam.content.dataid = id
- this.baobeiParam.content.type = 0
- this.baobeiParam.content.username = this.person
- this.baobeiFun()
- /*近12月项目跟进分析*/
- this.fllowParam.content.dataid = id
- this.fllowParam.content.type = 0
- this.fllowParam.content.username = this.person
- this.fllowFun()
- /*近12月项目报价分析*/
- this.baojiaParam.content.dataid = id
- this.baojiaParam.content.type = 0
- this.baojiaParam.content.username = this.person
- this.baojiaFun()
- /*近12月项目跟进分析*/
- this.fllowMapParam.content.dataid = id
- this.fllowMapParam.content.type = 0
- this.fllowInit()
- this.fllowTableParam.content.dataid = id
- this.fllowTableParam.content.type = 0
- this.fllowTableParam.content.username = this.person
- this.$refs.projectFllowTable.listData()
- /*项目联系人情况统计*/
- this.contactMapParam.content.dataid = id
- this.contactMapParam.content.type = 0
- this.contactInit()
- this.contactTableParam.content.dataid = id
- this.contactTableParam.content.type = 0
- this.contactTableParam.content.username = this.person
- this.$refs.projectContactTable.listData()
- /*项目关联客户情况统计*/
- this.customerMapParam.content.dataid = id
- this.customerMapParam.content.type = 0
- this.customerInit()
- this.customerTableParam.content.dataid = id
- this.customerTableParam.content.type = 0
- this.customerTableParam.content.username = this.person
- this.$refs.projectCustomerTable.listData()
- /*项目评估情况统计*/
- this.scoreMapParam.content.dataid = id
- this.scoreMapParam.content.type = 0
- this.projectScoreInit()
- this.scoreTableParam.content.dataid = id
- this.scoreTableParam.content.type = 0
- this.scoreTableParam.content.username = this.person
- this.$refs.projectScoreTable.listData()
- /*有效项目未跟进天数分析*/
- this.unfllowMapParam.content.dataid = id
- this.unfllowMapParam.content.type = 0
- this.customerUnfllowInit()
- this.unfllowTableParam.content.dataid = id
- this.unfllowTableParam.content.type = 0
- this.unfllowTableParam.content.username = this.person
- this.$refs.customerUnfllowTable.listData()
- /*项目生命周期分析*/
- this.dateParam.content.dataid = id
- this.dateParam.content.type = 0
- this.dateParam.content.username = this.person
- this.getDate()
- },
- leaveChange(){
- /*数据总览*/
- this.dataAllParam.content.where.isleave = this.isleave
- this.dataAllParam.content.dateType = this.dateType
- this.person = ''
- this.dataAllParam.content.dataid = this.dataAllParam.content.type == 0?-1:this.dataAllParam.content.dataid
- this.getdataAll()
- /*项目类型分析*/
- this.typeMapParam.content.where.isleave = this.isleave
- this.typeMapParam.content.username = ''
- this.typeMapParam.content.dataid = this.typeMapParam.content.type == 0?-1:this.typeMapParam.content.dataid
- this.typeInit()
- this.typeTableParam.content.where.isleave = this.isleave
- this.typeTableParam.content.username = ''
- this.typeTableParam.content.dataid = this.typeTableParam.content.type == 0?-1:this.typeTableParam.content.dataid
- this.$refs.typeTable.listData()
- /*项目等级分析*/
- this.gradMapParam.content.where.isleave = this.isleave
- this.gradMapParam.content.username = ''
- this.gradMapParam.content.dataid = this.gradMapParam.content.type == 0?-1:this.gradMapParam.content.dataid
- this.gradInit()
- this.gradTableParam.content.where.isleave = this.isleave
- this.gradTableParam.content.username = ''
- this.gradTableParam.content.dataid = this.gradTableParam.content.type == 0?-1:this.gradTableParam.content.dataid
- this.$refs.gradTable.listData()
- /*项目评估分析*/
- this.scoreMapParam1.content.where.isleave = this.isleave
- this.scoreMapParam1.content.username = ''
- this.scoreMapParam1.content.dataid = this.scoreMapParam1.content.type == 0?-1:this.scoreMapParam1.content.dataid
- this.scoreInit()
- this.scoreTableParam1.content.where.isleave = this.isleave
- this.scoreTableParam1.content.username = ''
- this.scoreTableParam1.content.dataid = this.scoreTableParam1.content.type == 0?-1:this.scoreTableParam1.content.dataid
- this.$refs.scoreTable.listData()
- /*近12月项目新增分析*/
- this.addParam.content.where.isleave = this.isleave
- this.addParam.content.username = ''
- this.addParam.content.dataid = this.addParam.content.type == 0?-1:this.addParam.content.dataid
- this.addFun()
- /*近12月项目报备分析*/
- this.baobeiParam.content.where.isleave = this.isleave
- this.baobeiParam.content.username = ''
- this.baobeiParam.content.dataid = this.baobeiParam.content.type == 0?-1:this.baobeiParam.content.dataid
- this.baobeiFun()
- /*近12月项目跟进分析*/
- this.fllowParam.content.where.isleave = this.isleave
- this.fllowParam.content.username = ''
- this.fllowParam.content.dataid = this.fllowParam.content.type == 0?-1:this.fllowParam.content.dataid
- this.fllowFun()
- /*近12月项目报价分析*/
- this.baojiaParam.content.where.isleave = this.isleave
- this.baojiaParam.content.username = ''
- this.baojiaParam.content.dataid = this.baojiaParam.content.type == 0?-1:this.baojiaParam.content.dataid
- this.baojiaFun()
- /*近12月项目跟进分析*/
- this.fllowMapParam.content.where.isleave = this.isleave
- this.fllowMapParam.content.username = ''
- this.fllowMapParam.content.dataid = this.fllowMapParam.content.type == 0?-1:this.fllowMapParam.content.dataid
- this.fllowInit()
- this.fllowTableParam.content.where.isleave = this.isleave
- this.fllowTableParam.content.username = ''
- this.fllowTableParam.content.dataid = this.fllowTableParam.content.type == 0?-1:this.fllowTableParam.content.dataid
- this.$refs.projectFllowTable.listData()
- /*项目联系人情况统计*/
- this.contactMapParam.content.where.isleave = this.isleave
- this.contactMapParam.content.username = ''
- this.contactMapParam.content.dataid = this.contactMapParam.content.type == 0?-1:this.contactMapParam.content.dataid
- this.contactInit()
- this.contactTableParam.content.where.isleave = this.isleave
- this.contactTableParam.content.username = ''
- this.contactTableParam.content.dataid = this.contactTableParam.content.type == 0?-1:this.contactTableParam.content.dataid
- this.$refs.projectContactTable.listData()
- /*项目关联客户情况统计*/
- this.customerMapParam.content.where.isleave = this.isleave
- this.customerMapParam.content.username = ''
- this.customerMapParam.content.dataid = this.customerMapParam.content.type == 0?-1:this.customerMapParam.content.dataid
- this.customerInit()
- this.customerTableParam.content.where.isleave = this.isleave
- this.customerTableParam.content.username = ''
- this.customerTableParam.content.dataid = this.customerTableParam.content.type == 0?-1:this.customerTableParam.content.dataid
- this.$refs.projectCustomerTable.listData()
- /*项目评估情况统计*/
- this.scoreMapParam.content.where.isleave = this.isleave
- this.scoreMapParam.content.username = ''
- this.scoreMapParam.content.dataid = this.scoreMapParam.content.type == 0?-1:this.scoreMapParam.content.dataid
- this.projectScoreInit()
- this.scoreTableParam.content.where.isleave = this.isleave
- this.scoreTableParam.content.username = ''
- this.scoreTableParam.content.dataid = this.scoreTableParam.content.type == 0?-1:this.scoreTableParam.content.dataid
- this.$refs.projectScoreTable.listData()
- /*有效项目未跟进天数分析*/
- this.unfllowMapParam.content.where.isleave = this.isleave
- this.unfllowMapParam.content.username = ''
- this.unfllowMapParam.content.dataid = this.unfllowMapParam.content.type == 0?-1:this.unfllowMapParam.content.dataid
- this.customerUnfllowInit()
- this.unfllowTableParam.content.where.isleave = this.isleave
- this.unfllowTableParam.content.username = ''
- this.unfllowTableParam.content.dataid = this.unfllowTableParam.content.type == 0?-1:this.unfllowTableParam.content.dataid
- this.$refs.customerUnfllowTable.listData()
- /*项目生命周期分析*/
- this.dateParam.content.where.isleave = this.isleave
- this.dateParam.content.username = ''
- this.dateParam.content.dataid = this.dateParam.content.type == 0?-1:this.dateParam.content.dataid
- this.getDate()
- this.personDataAll()
- },
- selectRow (data) {
- this.projectname = data.projectname
- this.dateParam.content.where.sa_projectid = data.sa_projectid
- this.dateParam.content.type = ''
- this.dateParam.content.dataid = ''
- this.dateParam.content.where.projecttype = ''
- this.dateParam.content.where.grade = ''
- this.dateParam.content.where.tradefield = ''
- this.getDate()
- },
- clearSelect () {
- this.projectname=''
- this.dateParam.content.where.sa_projectid=''
- this.dateParam.content.where.projecttype = this.projectType.length ? this.projectType[0].value : ''
- this.getDate()
- },
- handleUnfllowParam (param) {
- console.log('触发',param,this.projectType);
- param.content.where.projecttype = this.projectType.length ? this.projectType[0].value : ''
- this.unfllowMapParam.content.where.projecttype = this.projectType.length ? this.projectType[0].value : ''
- },
- /*获取新的业务员列表*/
- async personDataAll(){
- let param = {
- id: 20230620102004,
- content: {
- isleave:this.isleave
- },
- }
- const res = await this.$api.requested(param)
- this.personnelList = res.data.hr
- this.typeMapParamSalesman = res.data.hr
- this.gradMapParamSalesman = res.data.hr
- this.scoreMapParam1Salesman = res.data.hr
- this.addParamSalesman = res.data.hr
- this.baobeiParamSalesman = res.data.hr
- this.fllowParamSalesman = res.data.hr
- this.baojiaParamSalesman = res.data.hr
- this.fllowMapParamSalesman = res.data.hr
- this.contactMapParamSalesman = res.data.hr
- this.customerMapParamSalesman = res.data.hr
- this.scoreMapParamSalesman = res.data.hr
- this.unfllowMapParamSalesman = res.data.hr
- this.dateParamSalesman = res.data.hr
- },
- /*获取新的业务员列表*/
- async personData(keyName,isleave){
- let param = {
- id: 20230620102004,
- content: {
- isleave:isleave
- },
- }
- const res = await this.$api.requested(param)
- this[keyName] = res.data.hr
- },
- /*全屏*/
- onFull(){
- this.isFull = true
- this.isAppend = false
- },
- /*退出全屏*/
- backFull(){
- this.isFull = false
- this.isAppend = true
- },
- /*级联*/
- format (labels, selectedData) {
- const index = labels.length - 1;
- return labels[index];
- },
- onClick(title){
- this.title = this.dateType + '_' + title
- this.paramDetail.content.dataid = this.person?this.person == this.userName?JSON.parse(sessionStorage.getItem('active_account')).userid:this.person:this.depment[0]
- this.paramDetail.content.type = this.person?'0':'1'
- this.paramDetail.content.typemx = title
- this.paramDetail.content.where.isleave = this.isleave
- this.paramDetail.content.dateType = this.dateType
- this.$refs.detailRef.onShow()
- },
- /*获取阶段*/
- async stageData(){
- const res = await this.$api.requested({
- "id": 20221128143604,
- "content": {
- "pageNumber": 1,
- "pageSize": 99,
- "where": {
- "condition": "",
- "allprojecttype":"",
- "projecttype":""
- }
- }
- })
- this.option.stageList = res.data
- },
- /*标签列表*/
- async tagList(){
- const res = await this.$api.requested({
- "id":20221013104401,
- "content":{
- "isExport":1,
- "pageNumber":1,
- "pageSize":100,
- "sys_systemtagid":1,
- "where":{
- "condition":""
- }
- }
- })
- this.option.tagData = this.unique(res.data)
- },
- /*去重*/
- unique(arr) {
- const res = new Map();
- return arr.filter((arr) => !res.has(arr.tag) && res.set(arr.tag, 1));
- },
- selectChange(){
- this.paramDetail.content.pageNumber = 1
- this.$refs.detailRef.listData()
- },
- },
- async mounted () {
- this.tagList()
- this.stageData()
- this.getProjectScoreDescript()
- this.departmentrtment()
- this.getdataAll()
- this.typeInit(true)
- this.gradInit(true)
- this.scoreInit(true)
- this.addFun(true)
- this.baobeiFun(true)
- this.fllowFun(true)
- this.baojiaFun(true)
- this.fllowInit(true)
- this.contactInit(true)
- this.projectScoreInit(true)
- this.customerInit(true)
- this.customerUnfllowInit(true)
- let baseWidth = 1920
- document.querySelector('html').style.fontSize = `${100 / baseWidth}vw`
- /* 获取项目类型 */
- let res = await this.$store.dispatch('optiontypeselect','projecttype')
- this.projectType = res.data
- this.getDate(true)
- /* 获取项目等级 */
- let res2 = await this.$store.dispatch('optiontypeselect','projectgrade')
- this.projectLead = res2.data
- let res3 = await this.$store.dispatch('optiontypeselect','tradefield')
- this.tradefieldSelect = res3.data
- var that = this;
- // <!--把window.onresize事件挂在到mounted函数上-->
- window.onresize = () => {
- return (() => {
- window.fullWidth = document.documentElement.clientWidth;
- that.windowWidth = window.fullWidth; // 宽
- console.log(that.windowWidth,'屏幕宽度')
- })()
- };
- },
- created() {
- this.tablecols = this.tool.tabelCol(this.$route.name).projectDetail.tablecols
- }
- }
- </script>
- <style>
- .basic__layout__panel {
- height: 100% !important;
- }
- </style>
- <style scoped>
- *{
- box-sizing: border-box;
- }
- .data-all {
- padding: 16px;
- width: 100%;
- border-radius: 5rem;
- border: 1rem;
- box-shadow: 0rem 2rem 5rem 0rem rgba(0, 0, 0, 0.15);
- background: #FFFFFF;
- margin-top: 16px;
- }
- .data-all .data-left {
- border-right: 1rem solid rgb(136,136,146);
- display: flex;
- flex-wrap: wrap;
- }
- .data-all .data-right {
- padding-left: 100rem;
- display: flex;
- flex-wrap: wrap;
- }
- .data-all .data-left,.data-right {
- display: flex;
- }
- .data-all .data-item {
- width: 186rem;
- margin-bottom: 20px;
- }
- .data-all .data-item p:nth-child(1) {
- font-size: 26px;
- font-weight: 5px;
- font-family: 'ArialMT', 'Arial', sans-serif;
- /*color: rgba(0, 0, 0, 0.85);*/
- }
- .data-all .data-item p:nth-child(2) {
- font-size: 14px;
- font-weight: 5px;
- font-family: 'PingFangSC-Regular', 'PingFang SC', sans-serif;
- color: rgba(0, 0, 0, 0.65)
- }
- .data-all .data-all-wrapper {
- display: flex;
- }
- .data-panel {
- padding: 16px;
- margin-top: 16px;
- height: 500px;
- border-radius: 5rem;
- border: 1rem;
- box-shadow: 0rem 2rem 5rem 0rem rgba(0, 0, 0, 0.15);
- background: #FFFFFF;
- }
- .panel-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 10px;
- }
- .title {
- min-width: 220px;
- }
- .title::before {
- content:'';
- border-left: 4px #3874f6 solid;
- padding-right: 10px;
- }
- .panel-content {
- display: flex;
- align-items: center;
- justify-content: space-between;
- background:#ffffff;
- height: calc(100% - 55px);
- }
- .panel-content-wrapper {
- height: 100%;
- background:#ffffff;
- }
- .panel-content div:first-child {
- padding: 0 5px;
- }
- .progress {
- display: flex;
- width: 100%;
- padding: 40rem 100rem;
- height: 50rem;
- margin-bottom: 60rem;
- }
- .progress::after {
- content:'';
- display: block;
- clear:both;
- }
- .progress .progress-item {
- flex:var(--width);
- min-width: 150rem;
- height: 50rem;
- position: relative;
- background:var(--bg);
- }
- .progress .progress-item .day {
- position: absolute;
- top: -40rem;
- left: 50%;
- font-size: 14rem;
- transform: translateX(-50%);
- white-space: nowrap;
- }
- .progress .progress-item .start {
- position: absolute;
- left: 0;
- bottom:-50rem;
- transform: translateX(-50%);
- }
- .progress .progress-item .end {
- position: absolute;
- right:0;
- bottom:-50rem;
- transform: translateX(50%);
- }
- .progress .progress-item .start,.end {
- display: flex;
- flex-direction: column;
- }
- .progress .progress-item .start,.end span {
- text-align: center;
- }
- .progress .progress-item .start span:first-child,.end span:first-child {
- font-size: 14rem;
- }
- .progress .progress-item .start span:last-child,.end span:last-child {
- margin-top: 10rem;
- color: #aaaaaa;
- font-size: 12rem;
- }
- .search__label {
- margin-right: 5px !important;
- }
- .mt-10 {
- margin-right: 16px !important;
- }
- .el-empty {
- padding: 0 !important;
- }
- .panel-table {
- height: 100%;
- }
- .div-hover-click:hover {
- color: #3874f6;
- }
- </style>
|