12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474 |
- <template>
- <div class="app-container">
- <el-collapse v-model="activeName" @change="handleChange">
- <el-collapse-item >
- <template slot="title" >
- <span style="font-size:20px; margin-left:20px;letter-spacing:2px;color:red">
- <i class="el-icon-warning"></i>
- <span> 当前节点:{{currentNode==null ?'???':currentNode.nodeName}}</span>
- <span> 项目编号:{{nodeBusinessInfo.businessSubId}}</span>
- </span>
- <span style="font-size:15px; margin-left:15px;letter-spacing:2px; color:RGB(168,168,168)">
- 点击展开查看实时流程图
- </span>
- </template>
- <WorkflowBoard ref='board' @workflowCommitVerify="workflowCommitVerify" :nodeBusinessInfo="nodeBusinessInfo"/>
- </el-collapse-item>
- </el-collapse>
- <div class="button-area">
- <el-button v-if="nodeBusinessInfo.currentNodePermission.commit" class="y-save" type="success" round @click="commit('PASS')" :disabled="!nodeBusinessInfo.doWorkflow">提交</el-button>
- <el-button v-if="nodeBusinessInfo.currentNodePermission.reversible" class="y-save" type="warning" round @click="commit('REVERSE')" :disabled="!nodeBusinessInfo.doWorkflow">退回</el-button>
- <el-button v-if="nodeBusinessInfo.currentNodePermission.skippable" class="y-save" type="warning" round @click="commit('SKIP')" :disabled="!nodeBusinessInfo.doWorkflow">跳过</el-button>
- <el-button v-if="nodeBusinessInfo.currentNodePermission.terminable" class="y-save" type="danger" round @click="commit('TERMINATE')" :disabled="!nodeBusinessInfo.doWorkflow">终止</el-button>
- <el-button v-if="nodeBusinessInfo.currentNodePermission.restartable" class="y-save" type="danger" round @click="commit('RESTART')" :disabled="!nodeBusinessInfo.doWorkflow">重置</el-button>
- <el-button class="y-save" round type="info" @click="goBack">返回</el-button>
- </div>
- <el-tabs v-model="activeTagName" @tab-click="handleClick" type="border-card">
- <el-tab-pane name="order" class="pane-class" :lazy=true>
- <span slot="label"><i class="el-icon-document"></i> 个贷订单</span>
- <y-detail-page-layout :name="'order'" :edit-status="false">
- <el-form ref="personalForm" :model="personal">
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">订单</div>
- <div class="icon-info">个贷订单</div>
- </h3>
- </el-divider>
- </div>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="项目编号:"
- prop="orderId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.orderId" class="filter-item" readonly style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="评估目的:"
- prop="evaluateAim"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-select v-model="personal.evaluateAim" placeholder="请选择">
- <el-option label="按揭" value="按揭"></el-option>
- <el-option label="抵押" value="抵押"></el-option>
- <el-option label="咨询" value="咨询"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="12" :span="6">
- <el-form-item
- label="房屋用途:"
- prop="purpose"
- label-width="160px"
- class="postInfo-container-item"
- >
- <el-checkbox-group v-model="personal.purpose">
- <el-checkbox-button label="HOUSE" name="purpose">住宅</el-checkbox-button>
- <el-checkbox-button label="BUSINESS" name="purpose">商业</el-checkbox-button>
- <el-checkbox-button label="OFFICE" name="purpose">办公</el-checkbox-button>
- <el-checkbox-button label="INDUSTRIAL" name="purpose">工业</el-checkbox-button>
- <el-checkbox-button label="OTHER" name="purpose">其他</el-checkbox-button>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="12" :sm="12" :lg="23" :span="6">
- <el-form-item
- label="坐落:"
- prop="location"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.location" class="filter-item" style=" width: 100%"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="客户类型:"
- prop="clienteleType"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-select v-model="personal.clienteleType" placeholder="请选择" >
- <el-option label="企业" value="企业"></el-option>
- <el-option label="个人" value="个人"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="客户名称:"
- prop="clienteleId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.clientName" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="业务来源:"
- prop="clienteleSubId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.clientSubName" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="客户联系人:"
- prop="clienteleContactId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.contactName" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="联系人电话:"
- prop="clienteleContactId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.contactTel" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="联系人部门:"
- prop="clienteleContactId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.cdepartment" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="联系人职务:"
- prop="clienteleContactId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.cduty" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="中介:"
- prop="agent"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.agent" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="贷款性质:"
- prop="loanNature"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.loanNature" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="贷款用途:"
- prop="loanAim"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.loanAim" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="贷款额度:"
- prop="loanLimit"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.loanLimit" class="filter-item" style=" width: 225px" >
- <template slot="append">万元</template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="贷款期限:"
- prop="loanPeriod"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.loanPeriod" class="filter-item" style=" width: 225px" >
- <template slot="append">年</template>
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="贷款是否到期:"
- prop="loanExpire"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-radio v-model="personal.loanExpire" :label="false" border >否</el-radio>
- <el-radio v-model="personal.loanExpire" :label="true" border >是</el-radio>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="12" :span="6">
- <el-form-item
- label="资料说明:"
- prop="credentials"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-checkbox-group v-model="personal.credentials">
- <el-checkbox-button label="HOUSE_CERTIFICATE" name="credentials">房产证</el-checkbox-button>
- <el-checkbox-button label="LAND_CERTIFICATE" name="credentials">国土证</el-checkbox-button>
- <el-checkbox-button label="IMMOVABLE_CERTIFICATE" name="credentials">不动产权证</el-checkbox-button>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="委托人1:"
- prop="bailorA"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.bailorA" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="委托人1电话:"
- prop="bailorATel"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.bailorATel" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="委托人2:"
- prop="bailorB"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.bailorB" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="委托人2电话:"
- prop="bailorBTel"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input v-model="personal.bailorBTel" class="filter-item" style=" width: 225px" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="终端客户类型:"
- prop="terminalClienteleType"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-select v-model="personal.terminalClienteleType" placeholder="请选择" style="width:205px">
- <el-option label="企业" value="企业"></el-option>
- <el-option label="个人" value="个人"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6" v-show="personal.terminalClienteleType==='企业'">
- <el-form-item
- label="终端客户名称:"
- prop="terminalClienteleId"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.tterminalClienteleName" class="filter-item" style="width:225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6" v-show="personal.terminalClienteleType==='个人'">
- <el-form-item
- label="终端联系人:"
- prop="terminalClienteleContactId"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.tterminalClienteleContactName" class="filter-item" style=" width: 225px"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="终端联系电话:"
- prop="clienteleType"
- label-width="130px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.tmobile" class="filter-item" style=" width: 215px"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="23" :span="12">
- <el-form-item
- label="订单备注:"
- prop="remark"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.remark" class="filter-item" type="text"/>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- </div>
- </el-form>
- </y-detail-page-layout>
- <el-form ref="personalMemberForm" :model="personal" :rules="rules">
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">人员</div>
- <div class="icon-info">项目人员</div>
- </h3>
- </el-divider>
- </div>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="客户经理:"
- prop="clientManager"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.clientManager" class="filter-item" readonly disabled style=" width: 225px" />
- </el-form-item>
- </el-col>
-
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="内业人员:"
- prop="inwardStaffName"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.inwardStaffName" class="filter-item" readonly disabled style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="外业人员:"
- prop="outwardStaff"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-tooltip v-if="currentNode.nodeCode==='DEPARTMENT_ALLOCATION'"
- placement="top-start"
- content="请确定外业人员"
- :manual=true
- v-model="outwardStaffTip"
- >
- <el-select v-model="personal.outwardStaff" filterable clearable>
- <el-option
- v-for="(item,id) in outwardStaffs" :key="item.id" :label="item.name" :value="item.id">
- </el-option>
- </el-select>
- </el-tooltip>
- <el-input :value="personal.outwardStaffName" class="filter-item" readonly disabled style=" width: 225px" v-else />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="定价内业:"
- prop="pricingStaffName"
- label-width="120px"
- class="postInfo-container-item"
- >
- <el-input :value="personal.pricingStaffName" class="filter-item" readonly disabled style=" width: 225px" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="4" :span="6">
- <el-form-item
- label-width="160px"
- >
- <el-button v-if="currentNode.nodeCode === 'DEPARTMENT_ALLOCATION'" type="primary" round @click="saveOutwardStaff()">保存</el-button>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- </div>
- </el-form>
- </el-tab-pane>
- <el-tab-pane id="evaluteObject" name="evaluate" class="pane-class" :lazy=true>
- <span slot="label"><i class="el-icon-office-building"></i> 评估对象</span>
- <el-form ref="targetForm" :model="target">
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">价格</div>
- <div class="icon-info">评估价格</div>
- </h3>
- </el-divider>
- </div>
- </div>
- </div>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="2" :span="6">
- <el-form-item
- label="线上计算:"
- prop="acreage"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-switch v-model="target.isOnline" active-color="#13ce66" inactive-color="#ff4949" @change="calculateSwith()" :readonly="currentNode.nodeCode!='DETERMINE_PRICE'" :disabled="currentNode.nodeCode!='DETERMINE_PRICE'"></el-switch>
- </el-form-item>
- </el-col>
- <el-col :xs="12" :sm="12" :lg="20" :span="6">
- <el-form-item
- label="坐落:"
- prop="location"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-input :value="target.location" class="filter-item" disabled readonly style=" width: 100%"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="评估面积(平):"
- prop="acreage"
- label-width="140px"
- :rules="{required: true, message: '评估面积不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-input-number v-model="target.acreage" size="medium" controls-position="right" :min="0" :step="0.1" :max="10000"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="评估单价(元):"
- prop="price"
- label-width="140px"
- :rules="{required: true, message: '评估单价不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-input-number v-model="target.price" size="medium" controls-position="right" :min="0"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6">
- <el-form-item
- label="评估总价(元):"
- prop="amount"
- label-width="140px"
- :rules="{required: true, message: '评估总价不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-input-number v-model="target.amount" size="medium" controls-position="right" :min="0"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6" >
- <el-button v-show="!target.isOnline" type="text" @click="savePrice()" v-if="currentNode.nodeCode==='DETERMINE_PRICE'">保存价格</el-button>
- </el-col>
- </el-row>
- </el-form>
- <el-form ref="compareToForm" :model="compareList" v-if="target.isOnline">
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">实例</div>
- <div class="icon-info">可比实例</div>
- </h3>
- </el-divider>
- </div>
- </div>
- </div>
- <el-card class="box-card" >
- <el-row class="row-style">
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="修正系数:"
- prop="fixValue"
- label-width="120px"
- :rules="{required: true, message: '修正系数不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-input-number v-model="compareList.fixValue" :step="0.1" :min="1" size="medium" controls-position="right"></el-input-number>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="是否划拨:"
- prop="rightsType"
- label-width="120px"
- :rules="{required: true, message: '是否划拨不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-select v-model="compareList.rightsType" placeholder="请选择" @change="selectRightsType()">
- <el-option label="划拨" value="ALLOT">划拨</el-option>
- <el-option label="出让" value="SELL">出让</el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="5" :span="6" v-if="compareList.rightsType==='ALLOT'">
- <el-form-item
- label="环线位置:"
- prop="rollingLevel"
- label-width="120px"
- :rules="{required: compareList.rightsType==='ALLOT', message: '是否划拨不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-select v-model="compareList.rollingLevel" placeholder="请选择" @change="selectRoll()">
- <el-option label="二环内" :value=1>二环内</el-option>
- <el-option label="二至三环" :value=2>二至三环</el-option>
- <el-option label="三环外" :value=3>三环外</el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="5" :span="6">
- <el-form-item
- label="计算方式:"
- prop="calculateType"
- label-width="120px"
- :rules="{required: true, message: '计算方式不能为空', trigger: 'blur'}"
- class="postInfo-container-item"
- >
- <el-select v-model="compareList.calculateType" clearable placeholder="请选择" @change="selectCalculateType()">
- <el-option label="简单算术平均" value="SIMPLE">简单算术平均</el-option>
- <el-option label="加权算术平均" value="WEIGHT">加权算术平均</el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="3" :span="6" style="float:right">
- <el-button type="text" @click="calulate()" v-if="currentNode.nodeCode==='DETERMINE_PRICE'">计算价格</el-button>
- <el-button type="text" @click="saveCalulateResult()" v-if="currentNode.nodeCode==='DETERMINE_PRICE'">保存价格</el-button>
- </el-col>
- </el-row>
- <el-table v-loading="calculating"
- element-loading-text="正在计算..."
- element-loading-spinner="el-icon-loading"
- element-loading-background="rgba(144, 147, 153, 0.5)" :data="compareList.analysisData" border="border" stripe :header-cell-style="{ color:'#606266'}">
- <el-table-column prop="index" label="指标" width="180" align="center">
- <template scope="scope">
- <span v-if="requiredIndex.includes(scope.row.index)" style="color:red">* </span>
- <span >{{ scope.row.index }}</span>
- </template>
- </el-table-column>
- <el-table-column prop="compareA" label="实例A" align="center">
- <template scope="scope" style="float:right">
- <div v-if="needWeight.includes(scope.row.index)">
- <el-input style="width:60%" v-model="scope.row.compareA.valueA"/>
- <el-input-number v-model="scope.row.compareA.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='市场状况'">
- <el-date-picker
- v-model="scope.row.compareA.valueA"
- type="month" style="width:60%"
- placeholder="选择月">
- </el-date-picker>
- <el-input-number v-model="scope.row.compareA.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='楼层/总楼层'">
- <el-input style="width:27%" v-model="scope.row.compareA.valueA"/>
- <span style="margin-left:2%;margin-right:2%">/</span>
- <el-input style="width:27%" v-model="scope.row.compareA.valueB"/>
- <el-input-number v-model="scope.row.compareA.weight"
- :min="1" :max="150" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='修正后价格'">
- <span v-if="scope.row.compareA.valueA" style="color:RGB(144,147,153);font-weight:bold;font-size:20px">¥{{parseFloat(scope.row.compareA.valueA).toLocaleString()}}</span>
- </div>
- <div v-else-if="scope.row.index==='权重' ">
- <el-input-number v-if="compareList.calculateType==='WEIGHT' " v-model="scope.row.compareA.valueA" style="width:100%;"
- :min="0" :max="1" size="small" :step="0.1" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='总价(元)' || scope.row.index==='单价(元)' ">
- <el-input-number v-model="scope.row.compareA.valueA" style="width:100%;"
- :min="0" size="small" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='总价(元)' || scope.row.index==='单价(元)' ">
- <el-input-number v-model="scope.row.compareA.valueA" style="width:100%;"
- :min="0" size="small" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='室内装饰'">
- <el-select v-model="scope.row.compareA.valueA" placeholder="请选择" style="width:60%">
- <el-option label="精装" value="精装">精装</el-option>
- <el-option label="中等装修" value="中等装修">中等装修</el-option>
- <el-option label="简装" value="简装">简装</el-option>
- <el-option label="清水" value="清水">清水</el-option>
- </el-select>
- <el-input-number v-model="scope.row.compareA.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else>
- <el-input style="width:100%" v-model="scope.row.compareA.valueA"/>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="compareB" label="实例B" align="center">
- <template scope="scope" style="float:right">
- <div v-if="needWeight.includes(scope.row.index)">
- <el-input style="width:60%" v-model="scope.row.compareB.valueA"/>
- <el-input-number v-model="scope.row.compareB.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='市场状况'">
- <el-date-picker
- v-model="scope.row.compareB.valueA"
- type="month" style="width:60%"
- placeholder="选择月">
- </el-date-picker>
- <el-input-number v-model="scope.row.compareB.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='楼层/总楼层'">
- <el-input style="width:27%" v-model="scope.row.compareB.valueA"/>
- <span style="margin-left:2%;margin-right:2%">/</span>
- <el-input style="width:27%" v-model="scope.row.compareB.valueB"/>
- <el-input-number v-model="scope.row.compareB.weight"
- :min="1" :max="150" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='修正后价格'">
- <span v-if="scope.row.compareB.valueA" style="color:RGB(144,147,153);font-weight:bold;font-size:20px">¥{{parseFloat(scope.row.compareB.valueA).toLocaleString()}}</span>
- </div>
- <div v-else-if="scope.row.index==='权重'">
- <el-input-number v-if="compareList.calculateType==='WEIGHT' " v-model="scope.row.compareB.valueA" style="width:100%;"
- :min="0" :max="1" size="small" :step="0.1" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='总价(元)' || scope.row.index==='单价(元)' ">
- <el-input-number v-model="scope.row.compareB.valueA" style="width:100%;"
- :min="0" size="small" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='室内装饰'">
- <el-select v-model="scope.row.compareB.valueA" placeholder="请选择" style="width:60%">
- <el-option label="精装" value="精装">精装</el-option>
- <el-option label="简装" value="简装">简装</el-option>
- <el-option label="清水" value="清水">清水</el-option>
- </el-select>
- <el-input-number v-model="scope.row.compareB.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else>
- <el-input style="width:100%" v-model="scope.row.compareB.valueA"/>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="compareC" label="实例C" align="center">
- <template scope="scope" style="float:right">
- <div v-if="needWeight.includes(scope.row.index)">
- <el-input style="width:60%" v-model="scope.row.compareC.valueA"/>
- <el-input-number v-model="scope.row.compareC.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='市场状况'">
- <el-date-picker
- v-model="scope.row.compareC.valueA"
- type="month" style="width:60%"
- placeholder="选择月">
- </el-date-picker>
- <el-input-number v-model="scope.row.compareC.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='楼层/总楼层'">
- <el-input style="width:27%" v-model="scope.row.compareC.valueA"/>
- <span style="margin-left:2%;margin-right:2%">/</span>
- <el-input style="width:27%" v-model="scope.row.compareC.valueB"/>
- <el-input-number v-model="scope.row.compareC.weight"
- :min="1" :max="150" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='修正后价格'">
- <span v-if="scope.row.compareC.valueA" style="color:RGB(144,147,153);font-weight:bold;font-size:20px">¥{{parseFloat(scope.row.compareC.valueA).toLocaleString()}}</span>
- </div>
- <div v-else-if="scope.row.index==='权重'">
- <el-input-number v-if="compareList.calculateType==='WEIGHT' " v-model="scope.row.compareC.valueA" style="width:100%;"
- :min="0" :max="1" size="small" :step="0.1" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='总价(元)' || scope.row.index==='单价(元)' ">
- <el-input-number v-model="scope.row.compareC.valueA" style="width:100%;"
- :min="0" size="small" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='室内装饰'">
- <el-select v-model="scope.row.compareC.valueA" placeholder="请选择" style="width:60%">
- <el-option label="精装" value="精装">精装</el-option>
- <el-option label="简装" value="简装">简装</el-option>
- <el-option label="清水" value="清水">清水</el-option>
- </el-select>
- <el-input-number v-model="scope.row.compareC.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else>
- <el-input style="width:100%" v-model="scope.row.compareC.valueA"/>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="target" label="评估对象" align="center">
- <template scope="scope" style="float:right">
- <div v-if="needWeight.includes(scope.row.index)">
- <el-input style="width:60%" v-model="scope.row.target.valueA"/>
- <el-input-number v-model="scope.row.target.weight"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='市场状况'">
- <el-date-picker
- v-model="scope.row.target.valueA"
- type="month" style="width:60%"
- placeholder="选择月">
- </el-date-picker>
- <el-input-number v-model="scope.row.target.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='楼层/总楼层'">
- <el-input style="width:27%" v-model="scope.row.target.valueA"/>
- <span style="margin-left:2%;margin-right:2%">/</span>
- <el-input style="width:27%" v-model="scope.row.target.valueB"/>
- <el-input-number v-model="scope.row.target.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='修正后价格'">
- <span v-if="scope.row.target.valueA" style="color:red;font-weight:bold;font-size:20px">¥{{parseFloat(scope.row.target.valueA).toLocaleString()}}</span>
- </div>
- <div v-else-if="scope.row.index==='权重'">
- <el-input-number v-if="false" v-model="scope.row.target.valueA" style="width:100%;"
- :min="0" :max="1" size="small" :step="0.1" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='总价(元)' || scope.row.index==='单价(元)' ">
- <el-input-number disabled readonly v-model="scope.row.target.valueA" style="width:100%;"
- :min="0" size="small" controls-position="right"></el-input-number>
- </div>
- <div v-else-if="scope.row.index==='室内装饰'">
- <el-select v-model="scope.row.target.valueA" placeholder="请选择" style="width:60%">
- <el-option label="精装" value="精装">精装</el-option>
- <el-option label="简装" value="简装">简装</el-option>
- <el-option label="清水" value="清水">清水</el-option>
- </el-select>
- <el-input-number v-model="scope.row.target.weight" :max="150"
- :min="1" size="small" controls-position="right" style="width:30%;margin-left:10%"></el-input-number>
- </div>
- <div v-else>
- <el-input style="width:100%" v-model="scope.row.target.valueA"/>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </el-card>
- </el-form>
- </el-tab-pane>
- <el-tab-pane name="certificateInfo" class="pane-class" :lazy=true>
- <span slot="label"><i class="el-icon-office-building"></i> 证件信息</span>
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">证件</div>
- <div class="icon-info">换证</div>
- </h3>
- </el-divider>
- <div style="margin-left:40px;margin-bottom:50px;margin-top:30px">
- <el-checkbox-group v-model="personal.credentials">
- <el-checkbox-button label="HOUSE_CERTIFICATE" name="credentials">房产证</el-checkbox-button>
- <el-checkbox-button label="LAND_CERTIFICATE" name="credentials" >国土证</el-checkbox-button>
- <el-checkbox-button label="IMMOVABLE_CERTIFICATE" name="credentials" >不动产权证</el-checkbox-button>
- </el-checkbox-group>
- </div>
- </div>
- <div>
- <el-divider content-position="left">
- <div>
- <h3 class="title">
- <div class="avatar-wrapper icon-title">证件</div>
- <div class="icon-info">证件详情</div>
- </h3>
- </div>
- </el-divider>
- </div>
- <el-card class="box-card">
- <el-collapse v-model="certificateName" accordion>
- <el-collapse-item name="1" v-show="showCred.showHouseCer">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">房产证</span>
- </template>
- <HouseCertificate :id="target.id" :linkAttributes="linkAttributes" :houseCertificateObject="target.houseCertificate" :editStatus="certificateCouldEdit"></HouseCertificate>
- </el-collapse-item>
- <el-collapse-item name="2" v-show="showCred.showLandCer">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">国土证</span>
- </template>
- <LandCertificate :id="target.id" :landCertificateObject="target.landCertificate" :editStatus="certificateCouldEdit"></LandCertificate>
- </el-collapse-item>
- <el-collapse-item name="3" v-show="showCred.showImmovableCer">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">不动产权证</span>
- </template>
- <ImmovableCertificate :id="target.id" :linkAttributes="linkAttributes" :immovableCertificateObject="target.immovableCertificate" :editStatus="certificateCouldEdit"></ImmovableCertificate>
- </el-collapse-item>
- <el-collapse-item name="4" v-show="showCred.showleaseCer">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">租赁合同</span>
- </template>
- </el-collapse-item>
- <el-collapse-item name="5" v-show="showCred.showIdCer">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">身份证</span>
- </template>
- </el-collapse-item>
- </el-collapse>
- </el-card>
- </div>
- </div>
- </el-tab-pane>
- <el-tab-pane name="otherInfo" class="pane-class" :lazy=true>
- <span slot="label"><i class="el-icon-office-building"></i> 附加信息</span>
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">附加</div>
- <div class="icon-info">附加信息</div>
- </h3>
- </el-divider>
- </div>
- <el-card class="box-card">
- <el-collapse v-model="otherInfo" accordion>
- <el-collapse-item name="4">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">实物状况</span>
- </template>
- <EntityInfo ref="entityCompent" :id="target.id" :linkAttributes="linkAttributes" :entityInfoObject="target.entityInfo" :editStatus="certificateCouldEdit"></EntityInfo>
- </el-collapse-item>
- <el-collapse-item name="5">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">区位状况</span>
- </template>
- <BackgroundInfo :id="target.id" :backgroundInfoObject="target.backgroundInfo" :editStatus="certificateCouldEdit"></BackgroundInfo>
- </el-collapse-item>
- <el-collapse-item name="6">
- <template slot="title">
- <span style="font-weight:bold;margin-left:30px;margin-right:10px" class="el-icon-document">变现能力分析</span>
- </template>
- <SellingAbilityInfo :id="target.id" :sellingAbilityInfoObject="target.sellingAbility" :editStatus="certificateCouldEdit"></SellingAbilityInfo>
- </el-collapse-item>
- </el-collapse>
- </el-card>
- </div>
- </div>
- </el-tab-pane>
- <el-tab-pane name="producution" class="pane-class" :lazy=true>
- <span slot="label"><i class="el-icon-document-checked"></i> 产品信息</span>
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">反馈</div>
- <div class="icon-info">客户反馈</div>
- </h3>
- </el-divider>
- </div>
- <el-form ref="feedbackFrom" class="form-container" style="margin-top:30px" :rules="rules">
- <el-row >
- <el-col :xs="24" :sm="12" :lg="8" :span="6">
- <el-form-item
- label="出具产品类型:"
- prop="production"
- label-width="160px"
- class="postInfo-container-item"
- >
- <el-checkbox-group v-model="feedback" style="width:300px">
- <el-checkbox-button label="STATEMENT" name="production">价值意见书</el-checkbox-button>
- <el-checkbox-button label="REPORT" name="production">报告</el-checkbox-button>
- <el-checkbox-button label="LETTER" name="production">复评函</el-checkbox-button>
- <el-tooltip class="item" effect="dark" content="只出具价值意见书,不再出具其他产品。" placement="top-start">
- <el-checkbox-button v-if="currentNode.nodeCode ==='STATEMENT_FEEDBACK'" label="NONE" name="production">不再出具</el-checkbox-button>
- </el-tooltip>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="currentNode.nodeCode==='QUOTATION_FEEDBACK' || currentNode.nodeCode==='STATEMENT_FEEDBACK'">
- <el-button type="primary" round plain @click="saveFeedback()">保存反馈</el-button>
- </el-col>
- </el-row>
- </el-form>
- </div>
- </div>
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">产品</div>
- <div class="icon-info">产品信息</div>
- </h3>
- </el-divider>
- </div>
- </div>
- </div>
- <div v-if="showProds" style="display: flex;margin-top: 100px; width: 100%;">
- <el-card :body-style="{ padding: '0px'}" shadow="always" style="margin-left: 5%; margin-right: 5%; width: 20%;" v-if="hasStatement">
- <img :src="statementCardPNG" class="image">
- <div style="padding: 14px;">
- <span>房地产意见书</span>
- <span class="checked">{{ statementProd.checkState }}<i v-if="statementProd.checkState" class="el-icon-circle-check"></i></span>
- <time class="time">{{ statementProd.modified }}</time>
- <div class="control" >
- <el-button type="text" class="button" @click="doStamp(statementProd.files)" :disabled="currentNode.nodeCode!='GENERATE_STATEMENT'">加盖公章</el-button>
- <el-button type="text" class="button" @click="warehouse()" :disabled="currentNode.nodeCode!='STATEMENT_IN' && currentNode.nodeCode!='STATEMENT_OUT'">出入库</el-button>
- <el-button type="text" class="button" @click="genProductionFile(1)" :disabled="currentNode.nodeCode!='GENERATE_STATEMENT'">系统生成</el-button>
- </div>
- </div>
- <el-upload style="position: relative; top: -10px; padding: 10px;"
- :action="'/api/personalProduction/upload/'+target.id+'/1'" :file-list="statementProd.files"
- :limit="1" :on-exceed="handleExceed" :on-preview="handleAttachmentPreview" :on-success="getProductions"
- :before-remove="handleRemoveFile" >
- <el-button type="text" style="position: relative; left: 10px;top: -4px;" :disabled="currentNode.nodeCode!='GENERATE_STATEMENT'">手动上传</el-button>
- </el-upload>
-
- </el-card>
- <el-card :body-style="{ padding: '0px' }" shadow="always" style="margin-left: 5%; margin-right: 5%;width: 20%;" v-if="hasReport">
- <img :src="technicCardPNG" class="image">
- <div style="padding: 14px;">
- <span>技术报告</span>
- <span class="checked">{{ technicReportProd.checkState }}<i v-if="technicReportProd.checkState" class="el-icon-circle-check"></i></span>
- <time class="time">{{ technicReportProd.modified }}</time>
- <div class="control">
- <el-button type="text" class="button" @click="doStamp(technicReportProd.files)" :disabled="currentNode.nodeCode!='WRITE_REPORT'">加盖公章</el-button>
- <el-button type="text" class="button" @click="warehouse()" :disabled="currentNode.nodeCode!='REPORT_IN' && currentNode.nodeCode!='REPORT_OUT'">出入库</el-button>
- <el-button type="text" class="button" @click="genProductionFile(2)" :disabled="currentNode.nodeCode!='WRITE_REPORT'">系统生成</el-button>
- </div>
- </div>
- <el-upload style="position: relative; top: -10px; padding: 10px;"
- :action="'/api/personalProduction/upload/'+target.id+'/2'" :file-list="technicReportProd.files"
- :limit="1" :on-exceed="handleExceed" :on-preview="handleAttachmentPreview" :on-success="getProductions"
- :before-remove="handleRemoveFile">
- <el-button type="text" style="position: relative; left: 10px;top: -4px;" :disabled="currentNode.nodeCode!='WRITE_REPORT'">手动上传</el-button>
- </el-upload>
- </el-card>
- <el-card :body-style="{ padding: '0px'}" shadow="always" style="margin-left: 5%; margin-right: 5%;width: 20%;" v-if="hasReport">
- <img :src="finalCardPNG" class="image">
- <div style="padding: 14px;">
- <span>结果报告</span>
- <span class="checked">{{ finalReprotProd.checkState }}<i v-if="finalReprotProd.checkState" class="el-icon-circle-check"></i></span>
- <time class="time">{{ finalReprotProd.modified }}</time>
- <div class="control" >
- <el-button type="text" class="button" @click="doStamp(finalReprotProd.files)" :disabled="currentNode.nodeCode!='WRITE_REPORT'">加盖公章</el-button>
- <el-button type="text" class="button" @click="warehouse()" :disabled="currentNode.nodeCode!='REPORT_IN' && currentNode.nodeCode!='REPORT_OUT'">出入库</el-button>
- <el-button type="text" class="button" @click="genProductionFile(3)" :disabled="currentNode.nodeCode!='WRITE_REPORT'">系统生成</el-button>
- </div>
- </div>
- <el-upload style="position: relative; top: -10px;padding: 10px;"
- :action="'/api/personalProduction/upload/'+target.id+'/3'" :file-list="finalReprotProd.files"
- :limit="1" :on-exceed="handleExceed" :on-preview="handleAttachmentPreview" :on-success="getProductions"
- :before-remove="handleRemoveFile">
- <el-button type="text" style="position: relative; left: 10px;top: -4px;" :disabled="currentNode.nodeCode!='WRITE_REPORT'">手动上传</el-button>
- </el-upload>
- </el-card>
- <el-card :body-style="{ padding: '0px'}" shadow="always" style="margin-left: 5%; margin-right: 5%;width: 20%;" v-if="hasLetter">
- <img :src="letterCardPNG" class="image">
- <div style="padding: 14px;">
- <span>复评函</span>
- <span class="checked">{{ letterReprotProd.checkState }}<i v-if="letterReprotProd.checkState" class="el-icon-circle-check"></i></span>
- <time class="time">{{ letterReprotProd.modified }}</time>
- <div class="control" >
- <el-button type="text" class="button" @click="warehouse()" :disabled="currentNode.nodeCode!='LETTER_IN' && currentNode.nodeCode!='LETTER_OUT'">出入库</el-button>
- </div>
- </div>
- <el-upload style="position: relative; top: -10px;padding: 10px;"
- :action="'/api/personalProduction/upload/'+target.id+'/4'" :file-list="letterReprotProd.files"
- :limit="1" :on-exceed="handleExceed" :on-preview="handleAttachmentPreview" :on-success="getProductions"
- :before-remove="handleRemoveFile">
- <el-button type="text" style="position: relative; left: 10px;top: -4px;" :disabled="currentNode.nodeCode!='WRITE_LETTER'">手动上传</el-button>
- </el-upload>
- </el-card>
- </div>
- <div v-else style="display: flex;margin-top: 100px; width: 100%;">
- <span style="color:rgb(144,147,153); margin-left: 2.2%; width: 20%; margin-top:-3%">还没有选择产品类型</span>
- </div>
- </el-tab-pane>
- <el-tab-pane name="workflowLog" class="pane-class" :lazy=true>
- <span slot="label"><i class="el-icon-date"></i> 流程日志</span>
- <div class="createMajor-main-container">
- <div class="postInfo-container">
- <div>
- <el-divider content-position="left">
- <h3 class="title">
- <div class="avatar-wrapper icon-title">日志</div>
- <div class="icon-info">流程审批日志</div>
- </h3>
- </el-divider>
- </div>
- </div>
- </div>
- <el-table
- :data="workflowLogs"
- stripe
- :header-row-style="{ color: '#333333' }"
- border
- style="width: 100%; margin-top:20px">
- <el-table-column
- prop="nodeName"
- label="节点名称"
- align="center">
- </el-table-column>
- <el-table-column
- prop="state"
- label="处理结果"
- align="center">
- </el-table-column>
- <el-table-column
- prop="handlerName"
- label="处理人"
- align="center">
- </el-table-column>
- <el-table-column
- prop="longTime"
- label="处理时长"
- align="center">
- </el-table-column>
- <el-table-column
- prop="created"
- label="处理时间"
- align="center">
- </el-table-column>
- <el-table-column
- prop="comments"
- label="处理意见"
- align="center"
- show-overflow-tooltip>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- <el-dialog :visible.sync="decideProductionTypeDialog" width="25%" center top="35vh" custom-class="doWarehouseClass">
- <div>
- <i class="el-icon-warning" style="color:RGB(230,162,60);font-size:22px;margin-right:10px;"></i>
- <span style="position:absolute;top:58px">在此节点是否确定产品类型?</span>
- </div>
- <div style="margin-top:30px;margin-left:20px">
- <el-radio-group v-model="target.feedback">
- <el-radio label="NONE" value="NONE">不确定</el-radio>
- <el-radio label="STATEMENT" value="STATEMENT">价值意见书</el-radio>
- <el-radio label="REPORT" value="REPORT">报告</el-radio>
- <el-radio label="LETTER" value="LETTER">复评函</el-radio>
- </el-radio-group>
- </div>
- <span slot="footer" class="dialog-footer">
- <el-button @click="decideProductionTypeDialog = false">取消</el-button>
- <el-button type="primary" @click="saveFeedbackWhenPrice()" >保存</el-button>
- </span>
- </el-dialog>
- <el-dialog :visible.sync="inWarehouseDialog" width="30%" center top="35vh" custom-class="doWarehouseClass">
- <div>
- <i class="el-icon-warning" style="color:RGB(230,162,60);font-size:22px;margin-right:10px;"></i>
- <span style="position:absolute;top:58px;padding-right:50px">{{ warehouseTip }}</span>
- </div>
- <span slot="footer" class="dialog-footer">
- <el-button @click="inWarehouseDialog = false">取 消</el-button>
- <el-button type="primary" @click="doInWareHouse()">确 定</el-button>
- </span>
- </el-dialog>
- <el-dialog :visible.sync="outWarehouseDialog" width="30%" center top="35vh" custom-class="doWarehouseClass">
- <div>
- <i class="el-icon-warning" style="color:RGB(230,162,60);font-size:22px;margin-right:10px;"></i>
- <span style="position:absolute;top:58px">{{ warehouseTip }}</span>
- </div>
- <span slot="footer" class="dialog-footer">
- <el-button @click="outWarehouseDialog = false">取 消</el-button>
- <el-button type="primary" @click="doOutWareHouse()">确 定</el-button>
- </span>
- </el-dialog>
- <el-dialog :visible.sync="checkDialog" width="50%" center top="25vh" custom-class="doWarehouseClass">
- <el-divider content-position="left">产品审核</el-divider>
- <el-form ref="targetForm" :model="target">
- <el-row>
- <el-col :xs="24" :sm="12" :lg="24" :span="6">
- <el-form-item
- label="坐落:"
- prop="location"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-input :value="target.location" class="filter-item" disabled readonly style=" width: 100%"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :xs="24" :sm="12" :lg="8" :span="6">
- <el-form-item
- label="评估面积(平):"
- prop="acreage"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-input v-model="target.acreage" disabled readonly ></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="8" :span="6">
- <el-form-item
- label="评估单价(元):"
- prop="price"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-input v-model="target.price" disabled readonly></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :lg="8" :span="6">
- <el-form-item
- label="评估总价(元):"
- prop="amount"
- label-width="140px"
- class="postInfo-container-item"
- >
- <el-input v-model="target.amount" disabled readonly></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :xs="24" :sm="12" :lg="24" :span="6">
- <el-form-item
- label="备注:"
- prop="amount"
- label-width="140px"
- class="postInfo-container-item"
- >
- <span style="font-weight: bolder; color: red;">本人已对评估结果信息及报告文档完成审核,已确认无误。</span>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :xs="24" :sm="12" :lg="24" :span="6">
- <el-button type="info" plain style="margin-left: 40%;" @click="checkDialog=false">取消</el-button>
- <el-button type="success" plain @click="checkPass()">确认</el-button>
- </el-col>
- </el-row>
- </el-form>
- </el-dialog>
- </div>
- </template>
- <script>
- import YDetailPageLayout from '@/components/YDetailPageLayout/index_detail'
- import WorkflowBoard from '@/components/workflowBoard'
- import {calculateTargetPrice,validateParams} from '@/utils/personalUtil'
- import HouseCertificate from '@/components/personalForms/houseCertificate'
- import LandCertificate from '@/components/personalForms/landCertificate'
- import ImmovableCertificate from '@/components/personalForms/immovableCertificate'
- import EntityInfo from '@/components/personalForms/entityInfo'
- import BackgroundInfo from '@/components/personalForms/backgroundInfo'
- import SellingAbilityInfo from '@/components/personalForms/sellingAbilityInfo'
- import existPNG from '@/assets/images/exist.png'
- import emptyPNG from '@/assets/images/empty.png'
- export default {
- name: 'personalTodoDetail',
- components: {
- YDetailPageLayout,
- WorkflowBoard,
- HouseCertificate,
- LandCertificate,
- ImmovableCertificate,
- EntityInfo,
- BackgroundInfo,
- SellingAbilityInfo
- },
- watch:{
- personal:{
- handler(newVal,oldVal){
- if (newVal.outwardStaff){
- this.outwardStaffTip = false;
- }else {
- this.outwardStaffTip = true;
- }
- this.showCredentials();
- },
- deep:true
- },
- activeTagName:{
- handler(newVal,oldVal){
- if(newVal!='order'){
- this.outwardStaffTip = false;
- }
- },
- },
- target:{
- handler(newVal,oldVal){
- if (newVal.acreage!=null && newVal.price!=null){
- newVal.amount = Math.round(newVal.acreage * newVal.price)
- }
- if (newVal.id){
- this.getProductions();
- }
- },
- deep:true
- },
- feedback:{
- handler(newVal,oldVal){
- if (newVal!=oldVal){
- this.nodeBusinessInfo.production = this.feedback;
- this.$refs.board.getInstanceQueue();
- if (this.feedback.includes("STATEMENT")){
- this.hasStatement = true;
- }else{
- this.hasStatement = false;
- }
- if (this.feedback.includes("REPORT")){
- this.hasReport = true;
- }else{
- this.hasReport = false;
- }
- if (this.feedback.includes("LETTER")){
- this.hasLetter = true;
- }else{
- this.hasLetter = false;
- }
- if (this.feedback.includes("REPORT") && this.feedback.includes("LETTER")){
- this.$message.error('报告和复评函只能选其一');
- this.feedback = oldVal;
- }
- }
- if (this.feedback.length>0){
- this.showProds = true
- }else{
- this.showProds = false;
- }
- },
- deep:true
- }
- },
- computed: {
- certificateCouldEdit(){
- let currentNodeCode = this.$route.query.currentNodeCode;
- if (currentNodeCode==='GENERATE_STATEMENT' || currentNodeCode==='WRITE_REPORT' || currentNodeCode==='WRITE_LETTER'){
- return true;
- }else{
- return false;
- }
- },
- },
-
- data() {
- return {
- rules:{
- outwardStaff: [
- { required: true, message: '外业人员不能为空', trigger: 'blur' },
- ],
- },
- workflowLogs:[],
- activeName:'workflowInfo',
- activeTagName:null,
- nodeBusinessInfo:{
- currentNodePermission:{
- commit:true,
- reversible:true,
- restartable:true,
- terminable:true,
- skippable:true,
- },
- mainBusiness:"PERSONAL_BUSINESS",
- doWorkflow:false,
- businessId:null,
- currentNodeInstanceId:null,
- currentNodeInstanceCode:null,
- production:[],
- businessSubId:null,
- ifFeedback:null,
- ccId:null
- },
- currentNode:{
- flowId:null,
- pnodeId:null,
- nodeId:null,
- flowCode:null,
- nodeName:"",
- nodeCode:null,
- state:"",
- instanceId:null,
- sequence:null,
- restartable:null,
- reversible:null,
- skippable:null,
- terminable:null,
- tasks:[]
- },
- personal:{
- id:null,
- clientManagerId:null,
- clientManager:null,
- evaluateAim:null,
- purpose:[],
- location:null,
- clienteleType:null,
- clienteleId:null,
- cclienteleName:null,
- cclienteleSubName:null,
- agent:null,
- cclienteleContactName:null,
- cmobile:null,
- cdepartment:null,
- cduty:null,
- loanNature:null,
- loanAim:null,
- loanLimit:null,
- loanPeriod:null,
- loanExpire:false,
- credentials:[],
- bailorA:null,
- bailorATel:null,
- bailorB:null,
- bailorBTel:null,
- terminalClienteleType:null,
- tterminalClienteleName:null,
- tterminalClienteleContactName:null,
- tmobile:null,
- remark:null,
- inwardStaffName:null,
- outwardStaff:null,
- outwardStaffName:null,
- pricingStaffName:null,
- inwardStaffName:null,
- },
- outwardStaffs:[],
- outwardStaffTip:true,
- certificateName:null,
- otherInfo:null,
- target:{
- id:null,
- personalId:null,
- location:null,
- acreage:null,
- amount:null,
- price:null,
- isOnline:false,
- feedback:null,
- houseCertificate:null,
- landCertificate:null,
- immovableCertificate:null,
- entityInfo:null,
- backgroundInfo:null,
- sellingAbility:null,
- sellMoney:null,
- sellMoneyBase:null,
- sellMoneyRate:null
- },
- compareList:{
- targetId:null,
- calculateId:null,
- fixValue:1,
- rightsType:'SELL',
- rollingLevel:1,
- calculateType:'SIMPLE',
- method:'COMPARE',
- analysisData:[
- {
- "sorted":null,
- "index":"坐落",
- "compareA":{valueA:null},
- "compareB":{valueA:null},
- "compareC":{valueA:null},
- "target":{valueA:null},
- },
- {
- "sorted":null,
- "index":"总价(元)",
- "compareA":{valueA:null},
- "compareB":{valueA:null},
- "compareC":{valueA:null},
- "target":{valueA:null},
- },
- {
- "sorted":null,
- "index":"单价(元)",
- "compareA":{valueA:null},
- "compareB":{valueA:null},
- "compareC":{valueA:null},
- "target":{valueA:null},
- },
- {
- "sorted":null,
- "index":"市场状况",
- "compareA":{valueA:null,weight:100},
- "compareB":{valueA:null,weight:100},
- "compareC":{valueA:null,weight:100},
- "target":{valueA:null,weight:100},
- },
- {
- "sorted":null,
- "index":"所在楼栋",
- "compareA":{valueA:'对中庭',weight:100},
- "compareB":{valueA:'对中庭',weight:100},
- "compareC":{valueA:'对中庭',weight:100},
- "target":{valueA:'对中庭',weight:100},
- },
- {
- "sorted":null,
- "index":"建筑面积(平)",
- "compareA":{valueA:0,weight:100},
- "compareB":{valueA:0,weight:100},
- "compareC":{valueA:0,weight:100},
- "target":{valueA:0,weight:100},
- },
- {
- "sorted":null,
- "index":"楼层/总楼层",
- "compareA":{valueA:null,valueb:null,weight:100},
- "compareB":{valueA:null,valueb:null,weight:100},
- "compareC":{valueA:null,valueb:null,weight:100},
- "target":{valueA:null,valueb:null,weight:100},
- },
- {
- "sorted":null,
- "index":"户型",
- "compareA":{valueA:null,weight:100},
- "compareB":{valueA:null,weight:100},
- "compareC":{valueA:null,weight:100},
- "target":{valueA:null,weight:100},
- },
- {
- "sorted":null,
- "index":"室内装饰",
- "compareA":{valueA:'精装',weight:100},
- "compareB":{valueA:'精装',weight:100},
- "compareC":{valueA:'精装',weight:100},
- "target":{valueA:'精装',weight:100},
- },
- {
- "sorted":null,
- "index":"其他",
- "compareA":{valueA:null,weight:100},
- "compareB":{valueA:null,weight:100},
- "compareC":{valueA:null,weight:100},
- "target":{valueA:null,weight:100},
- },
- {
- "sorted":null,
- "index":"修正后价格",
- "compareA":{valueA:null},
- "compareB":{valueA:null},
- "compareC":{valueA:null},
- "target":{valueA:null},
- }
- ],
- price:null,
- amount:null,
- acreage:null,
- sellMoney:null,
- sellMoneyBase:null,
- sellMoneyRate:null
- },
- needWeight:['所在楼栋','建筑面积(平)','户型','其他'],
- requiredIndex:['单价(元)','坐落','市场状况','所在楼栋','建筑面积(平)','户型','室内装饰','楼层/总楼层','权重'],
- calculateWeight:{
- "sorted":null,
- "index":"权重",
- "compareA":{valueA:null},
- "compareB":{valueA:null},
- "compareC":{valueA:null},
- "target":{valueA:null},
- },
- calculating:false,
- decideProductionTypeDialog:false,
- showCred:{
- showHouseCer:false,
- showLandCer:false,
- showImmovableCer:false,
- showleaseCer:false,
- showIdCer:false
- },
- linkAttributes:{
- location:null,
- bailor1:null,
- bailor1Tel:null,
- bailor2:null,
- bailor2Tel:null,
- acreage:null,
- allFloor:null,
- purpose:null,
- ownerName:null,
- atFloor:null
- },
- statementProd:{
- id:null,
- targetId:null,
- files:[],
- created:null,
- checkState:null
- },
- technicReportProd:{
- id:null,
- targetId:null,
- files:[],
- created:null,
- checkState:null
- },
- finalReprotProd:{
- id:null,
- targetId:null,
- files:[],
- created:null,
- checkState:null
- },
- letterReprotProd:{
- id:null,
- targetId:null,
- files:[],
- created:null,
- checkSatae:null
- },
- statementCardPNG:emptyPNG,
- technicCardPNG:emptyPNG,
- finalCardPNG:emptyPNG,
- letterCardPNG:emptyPNG,
- outWarehouseDialog:false,
- inWarehouseDialog:false,
- warehouseTip:null,
- productionId:null,
- hasStatement:false,
- hasReport:false,
- hasLetter:false,
- feedback:null,
- checkDialog:false,
- checkProDTO:{
- targetId:null,
- production:null
- },
- showProds:true
- }
- },
- created() {
- this.personalId = this.$route.query.id;
- this.businessSubId = this.$route.query.orderId;
- this.nodeBusinessInfo.currentNodeInstanceCode = this.$route.query.currentNodeCode;
- this.nodeBusinessInfo.doWorkflow = this.$route.query.doWorkflow ==='true';
- this.nodeBusinessInfo.businessId= this.$route.query.id;
- this.nodeBusinessInfo.businessSubId = this.$route.query.orderId;
- this.activeTagName = this.jumpTabs();
- this.getPersonalTarget();
- this.getPersonal();
- this.getOutWardStaffList();
- this.getWorkflowLogs();
- this.getCurrentNodeInfo();
- this.getProductions();
-
- },
-
- methods: {
- getPersonal(){
- if (this.personalId){
- this.$api.personal.detail(this.personalId).then(res=>{
- if (res.code ===200 ){
- res.data.credentials = JSON.parse(res.data.credentials);
- res.data.purpose = JSON.parse(res.data.purpose);
- this.personal = res.data;
- this.linkAttributes.location = this.personal.location;
- this.linkAttributes.bailor1 = this.personal.bailorA;
- this.linkAttributes.bailor1Tel = this.personal.bailoraTel;
- this.linkAttributes.bailor2 = this.personal.bailorB;
- this.linkAttributes.bailor2Tel = this.personal.bailorbTel;
- this.linkAttributes.purpose = this.personal.purpose;
- if (this.personal.evaluateAim==='抵押'){
- this.linkAttributes.ownerName = this.personal.bailorA;
- }
- this.nodeBusinessInfo.ccId = this.personal.clienteleId;
- }
- })
- }
- },
- getPersonalTarget(){
- if (this.personalId){
- this.$api.personalTarget.detail(this.personalId).then(res=>{
- if (res.code === 200){
- this.target = res.data;
- this.linkAttributes.acreage = this.target.acreage;
- if (res.data.isOnline){
- this.getCaluateTable(res.data.id)
- }
- if (res.data.houseCertificate){
- this.target.houseCertificate = JSON.parse(res.data.houseCertificate);
- }
- if (res.data.landCertificate){
- this.target.landCertificate = JSON.parse(res.data.landCertificate);
- }
- if (res.data.immovableCertificate){
- this.target.immovableCertificate = JSON.parse(res.data.immovableCertificate);
- }
- if (res.data.entityInfo){
- this.target.entityInfo = JSON.parse(res.data.entityInfo);
- }
- if (res.data.backgroundInfo){
- this.target.backgroundInfo = JSON.parse(res.data.backgroundInfo);
- }
- if (res.data.sellingAbility){
- this.target.sellingAbility = JSON.parse(res.data.sellingAbility);
- }
- if (res.data.feedback){
- this.feedback = JSON.parse(res.data.feedback);
- this.nodeBusinessInfo.production = this.feedback;
- }else{
- this.feedback = []
- }
-
-
- }
- })
- }
- },
- getCurrentNodeInfo(){
- if (this.personalId){
- this.$api.workNodeInstance.currentNode({"mainBusiness":"PERSONAL_BUSINESS","businessId":this.personalId,"businessSubId":this.businessSubId}).then(res=>{
- if (res.code === 200){
- if(res.data){
- this.currentNode = res.data;
- this.nodeBusinessInfo.currentInstanceNodeId = res.data.instanceId;
- this.nodeBusinessInfo.currentNodeInstanceCode = res.data.nodeCode;
- this.nodeBusinessInfo.currentNodePermission.restartable = res.data.restartable;
- this.nodeBusinessInfo.currentNodePermission.reversible = res.data.reversible;
- this.nodeBusinessInfo.currentNodePermission.skippable = res.data.skippable;
- this.nodeBusinessInfo.currentNodePermission.terminable = res.data.terminable;
- }
- }
- })
- }
- },
- handleClick(tab) {
- if ("producution" === tab && this.feedback==null){
- this.feedback=[];
- }
- },
- showCredentials(){
- this.showCred = {};
- this.personal.credentials.forEach(element => {
- if (element==='HOUSE_CERTIFICATE'){
- this.showCred.showHouseCer = true;
- }
- if (element==='LAND_CERTIFICATE'){
- this.showCred.showLandCer = true;
- }
- if (element==='IMMOVABLE_CERTIFICATE'){
- this.showCred.showImmovableCer = true;
- }
- if (element==='LEASE_CONTRACT'){
- this.showCred.showleaseCer = true;
- }
- if (element==='IDENTITY_CARD'){
- this.showCred.showIdCer = true;
- }
- });
- },
- getWorkflowLogs(){
- let param = {
- businessId:this.personalId,
- businessType:'PERSONAL_BUSINESS',
- businessSubId:this.businessSubId
- }
- this.$api.workflowLog.list(param).then(res=>{
- if (res.code === 200){
- this.workflowLogs = res.data;
- }
- })
- },
- workflowCommitVerify(val,callback){
- let commit = val.commit;
- let verify = new Object();
- verify.state = true;
- verify.productionType = this.feedback;
- if (commit.state ==='PASS'){
- let nodeCode = this.nodeBusinessInfo.currentNodeInstanceCode
- switch(nodeCode){
- case 'DEPARTMENT_ALLOCATION':
- if (!this.personal.outwardStaff){
- this.$notify({
- title: '提示',
- message: '请确定外业人员后,再提交流程。',
- type: 'error',
- duration: 3000
- });
- verify.state = false;
- }else{
- verify.nextHandlerId = this.personal.outwardStaff;
- }
- callback(verify);
- return ;
- case "DETERMINE_PRICE":
- if (!this.target.feedback){
- verify.state = false;
- callback(verify);
- this.decideProductionTypeDialog = true
- return ;
- }else{
- callback(verify);
- return ;
- }
- case "GENERATE_STATEMENT":
- if (this.statementProd==null || this.statementProd.files.length===0){
- this.$notify({
- title: '提示',
- message: '请生成或上传房地产意见书后,再提交流程',
- type: 'error',
- duration: 3000
- });
- verify.state = false;
- }
- callback(verify);
- return ;
- case "REVIEW_STATEMENT":
- if (this.statementProd.checkState==='待审核'){
- verify.state = false;
- callback(verify);
- this.checkProDTO.production = "STATEMENT";
- this.checkProDTO.targetId = this.target.id;
- this.checkDialog = true
- return ;
- }
- callback(verify);
- return ;
- case "WRITE_REPORT":
- if (this.technicReportProd==null || this.technicReportProd.files.length===0){
- this.$notify({
- title: '提示',
- message: '请生成或上传技术报告后,再提交流程',
- type: 'error',
- duration: 3000
- });
- verify.state = false;
- callback(verify);
- return
- }
- if (this.finalReprotProd==null || this.finalReprotProd.files.length===0){
- this.$notify({
- title: '提示',
- message: '请生成或上传结果报告后,再提交流程',
- type: 'error',
- duration: 3000
- });
- verify.state = false;
- callback(verify);
- return
- }
- callback(verify);
- return ;
- case "CHECK_REPORT":
- console.log(this.technicReportProd.checkState)
- if (this.technicReportProd.checkState==='待审核' || this.finalReprotProd.checkState==='待审核'){
- verify.state = false;
- callback(verify);
- this.checkProDTO.production = "REPORT";
- this.checkProDTO.targetId = this.target.id;
- this.checkDialog = true
- return ;
- }
- callback(verify);
- return ;
- case "CHECK_LETTER":
- if (!this.letterReprotProd.checkState){
- verify.state = false;
- callback(verify);
- this.checkProDTO.production = "LETTER";
- this.checkProDTO.targetId = this.target.id;
- this.checkDialog = true
- return ;
- }
- callback(verify);
- return ;
- }
- }
- },
- handleChange(){
- },
- goBack(){
- const back = this.$route.query.back
- if (back) {
- this.$router.push(back)
- }
- },
- getOutWardStaffList(){
- this.$api.user.postUser("个贷外业岗").then(res=>{
- if (res.code === 200){
- this.outwardStaffs = res.data;
- }
- })
- },
- saveOutwardStaff(){
- this.$refs.personalMemberForm.validate(valid=>{
- if (valid){
- if (this.personal.id){
- const personalMember = new Object();
- personalMember.id = this.personal.id;
- personalMember.outwardStaff = this.personal.outwardStaff
- const taskRecordDTO = this.buildTaskRecordDTO(personalMember);
- this.$api.personal.allotOutward(taskRecordDTO).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message: '保存成功,请提交节点继续流程。',
- type: 'success',
- duration: 2000
- });
- }else{
- this.$notify({
- title: '失败',
- message: '保存失败,请提联系系统管理员',
- type: 'success',
- duration: 2000
- });
- }
- })
- }
- }
- })
- },
- //构建任务处理对象
- buildTaskRecordDTO(data){
- const taskRecordDTO = new Object();
- taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
- taskRecordDTO.taskData = data;
- return taskRecordDTO;
- },
- //提交节点
- commit(state){
- this.$refs.board.commit(state);
- },
- jumpTabs(){
- const orderTag = ['OPENING_ORDER','DEPARTMENT_ALLOCATION'];
- const evaluate = ['SPOT_RECONNAISSANCE','DETERMINE_PRICE'];
- const certificates = ['GENERATE_STATEMENT','WRITE_REPORT','WRITE_LETTER']
- const nodeCode = this.$route.query.currentNodeCode;
- if (orderTag.includes(nodeCode)){
- return 'order';
- }
- if (evaluate.includes(nodeCode)){
- return 'evaluate'
- }
- if (certificates.includes(nodeCode)){
- return 'certificateInfo';
- }
- if (this.feedback==null){
- this.feedback = [];
- }
- return 'producution'
- },
- calulate(){
- this.calculating = true;
- this.$refs.compareToForm.validate(valid=>{
- if (valid){
- if (validateParams(this.compareList.analysisData)){
- this.compareList = calculateTargetPrice(this.compareList);
- }
- }
- })
- setTimeout(()=>{
- this.calculating = false;
- },500)
- },
- saveCalulateResult(){
- this.target.amount = this.compareList.amount;
- this.target.price = this.compareList.price;
- this.target.acreage = this.compareList.acreage;
- this.compareList.targetId= this.target.id;
- this.target.sellMoneyRate = this.compareList.sellMoneyRate;
- this.target.sellMoney = this.compareList.sellMoney;
- this.target.sellMoneyBase = this.compareList.sellMoneyBase;
- let taskRecord = this.buildTaskRecordDTO(this.compareList);
- this.$api.personalCalculate.calculate(taskRecord).then(res=>{
- if (res.code ===200 && res.data){
- this.getCaluateTable(this.target.id);
- this.$notify({
- title: '保存成功',
- type: 'success',
- duration: 2000
- });
- }else{
- this.$notify({
- title: '保存失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- },
- savePrice(){
- this.$refs.targetForm.validate(valid=>{
- if (valid){
- let taskRecord = this.buildTaskRecordDTO(this.target);
- this.$api.personalTarget.price(taskRecord).then(res=>{
- if (res.code === 200 && res.data){
- this.$notify({
- title: '保存成功',
- type: 'success',
- duration: 2000
- });
- }else{
- this.$notify({
- title: '保存失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- }
- })
- },
- getCaluateTable(targetId){
- if (targetId){
- this.$api.personalCalculate.getResult(targetId).then(res=>{
- if (res.code === 200 && res.data){
- this.compareList = res.data;
- this.linkAttributes.allFloor = this.compareList.analysisData[6].target.valueB;
- this.linkAttributes.atFloor = this.compareList.analysisData[6].target.valueA;
- this.linkAttributes.houseType = this.compareList.analysisData[7].target.valueA;
- this.selectCalculateType();
- }
- })
- }
- },
- calculateSwith(){
- this.$api.personalTarget.calculateSwith(this.target.isOnline,this.target.id);
- if (this.target.isOnline && !this.compareList.calculateId){
- this.getCaluateTable(this.target.id);
- }
- if (this.target.isOnline){
- setTimeout(() => {
- const element = document.getElementById("evaluteObject");
- element.scrollTop = element.scrollHeight;
- }, 500);
-
- }
- },
- selectCalculateType(){
- let data = this.compareList.analysisData
- if (this.compareList.calculateType==='SIMPLE'){
- let dataX = data.filter(function(item){
- return item.index !='权重'
- })
- this.compareList.analysisData = dataX;
- }else {
- if (!data.map(item=>item.index).includes("权重")){
- data.splice(10,0,this.calculateWeight)
- }
- }
- },
- saveFeedbackWhenPrice(){
- this.nodeBusinessInfo.ifFeedback = true;
- if (this.target.id && this.target.feedback && this.target.feedback!='NONE'){
- this.nodeBusinessInfo.ifFeedback = false;
- const feedbackReq = new Object();
- feedbackReq.feedback = this.target.feedback;
- feedbackReq.id = this.target.id;
- this.$api.personalTarget.feedback(feedbackReq);
- }
- this.decideProductionTypeDialog = false;
- this.commit("PASS");
- },
- selectHouse(){
- this.showCred.showHouseCer = !this.showCred.showHouseCer ;
- },
- selectLand(){
- this.showCred.showLandCer = !this.showCred.showLandCer ;
- },
- selectImmovable(){
- this.showCred.showImmovableCer = !this.showCred.showImmovableCer;
- },
- selectLease(){
- this.showCred.showleaseCer = !this.showCred.showleaseCer;
- },
- selectIdCard(){
- this.showCred.showIdCer = !this.showCred.showIdCer;
- },
- genProductionFile(tag){
- const certificates = this.personal.credentials
- for (let i in certificates){
- if (certificates[i]==='HOUSE_CERTIFICATE' && !this.target.houseCertificate){
- this.$message.error('房产证信息未完善');
- return;
- }
- if (certificates[i]==='LAND_CERTIFICATE' && !this.target.landCertificate){
- this.$message.error('国土证信息未完善');
- return;
- }
- if (certificates[i]==='IMMOVABLE_CERTIFICATE' && !this.target.immovableCertificate){
- this.$message.error('不动产权证信息未完善');
- return;
- }
- }
- if (!this.target.entityInfo){
- this.$message.error('实物状况信息未完善');
- return ;
- }
- if (!this.target.backgroundInfo){
- this.$message.error('区位状况信息未完善');
- return ;
- }
- if (!this.target.sellingAbility){
- this.$message.error('变现能力分析未完善');
- return ;
- }
- this.$confirm('系统生成将会覆盖原有文档,请确认是否继续?','提示',{
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning',
- center: true
- }).then(()=>{
- if (this.personal.id && this.target.id){
- this.$api.personalProduction.genFile(this.personal.id,tag).then(res=>{
- if (res.code === 200 && res.data){
- this.$notify({
- title: '成功',
- message:'生成文档成功',
- type: 'success',
- duration: 2000
- });
- this.getProductions();
- }else {
- this.$notify({
- title: '失败',
- message:'生成文档失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- }
- })
- },
- getProductions(){
- if (this.target.id){
- this.$api.personalProduction.getProductions(this.target.id).then(res=>{
- if (res.code ===200){
- const words = res.data
- words.forEach(word => {
- if (word.production==='STATEMENT'){
- this.statementProd = word;
- const fs = [];
- if (word.filePath){
- this.statementCardPNG = existPNG;
- const sta = JSON.parse(word.filePath)
- sta.id= word.id;
- fs.push(sta);
- }else{
- this.statementCardPNG =emptyPNG;
- }
- this.statementProd.files = fs;
- }
- if (word.production==='TECHNIC'){
- this.technicReportProd = word;
- const fs = [];
- if (word.filePath){
- const tec = JSON.parse(word.filePath)
- tec.id= word.id;
- this.technicCardPNG = existPNG;
- fs.push(tec);
- }else{
- this.technicCardPNG =emptyPNG;
- }
- this.technicReportProd.files = fs;
- }
- if (word.production==='FINAL'){
- this.finalReprotProd = word;
- const fs = [];
- if (word.filePath){
- const final = JSON.parse(word.filePath)
- final.id= word.id;
- this.finalCardPNG = existPNG;
- fs.push(final);
- }else{
- this.finalCardPNG =emptyPNG;
- }
- this.finalReprotProd.files = fs;
- }
- });
- }
- })
- }
- },
- handleExceed(files, fileList) {
- this.$message.warning(`当前限制选择 1个文件,本次选择了 ${files.length} 个文件`);
- },
- handleAttachmentPreview(file){
- window.open(file.url)
- },
- handleRemoveFile(file,fileList){
- this.$confirm('请确认是否移除已存在的报告?','提示',{
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning',
- center: true
- }).then(()=>{
- let pid = file.id;
- if (pid){
- this.$api.personalProduction.removeFile(pid).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message:'文档移除成功',
- type: 'success',
- duration: 2000
- });
- this.getProductions();
- }
- })
- }
- })
- },
- selectRoll(){
- let roll = this.compareList.rollingLevel;
- this.compareList.sellMoneyRate = 0.01;
- if (roll === 1){
- this.compareList.sellMoneyBase = 12000;
- this.compareList.sellMoney = 12000 * 0.01;
- }else if (roll === 2){
- this.compareList.sellMoneyBase = 10800;
- this.compareList.sellMoney = 10800 * 0.01;
- }else {
- this.compareList.sellMoneyBase = 10100;
- this.compareList.sellMoney = 10100 * 0.01;
- }
- },
- selectRightsType(){
- if (this.compareList.rightsType==='SELL'){
- this.compareList.sellMoneyRate = null;
- this.compareList.sellMoneyBase = null;
- this.compareList.sellMoney = null;
- this.target.sellMoneyRate = null;
- this.target.sellMoneyBase = null;
- this.target.sellMoney = null;
- }else {
- this.selectRoll();
- }
- },
- downloadPkg(){
- if (this.target.id){
- this.$api.personalProduction.downloadPkg(this.target.id);
- }
- },
- doStamp(files){
- const file = files[0];
- this.$api.businessProduction.doStamp(file).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message:'加盖公章成功',
- type: 'success',
- duration: 2000
- });
- }else{
- this.$notify({
- title: '失败',
- message:'加盖公章失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- },
- checkPass(){
- if (this.checkProDTO.targetId && this.checkProDTO.production){
- const taskRecordDTO = this.buildTaskRecordDTO(this.checkProDTO);
- this.$api.personalProduction.checkPass(taskRecordDTO).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message:'审核成功',
- type: 'success',
- duration: 2000
- });
- const prodType = this.checkProDTO.production;
- if (prodType==='REPORT'){
- this.technicReportProd.checkState = '已审核';
- this.finalReprotProd.checkState = '已审核';
- }
- if (prodType==='STATEMENT'){
- this.statementProd.checkState = '已审核';
- }
- if (prodType==='LETTER'){
- this.letterReprotProd.checkState = '已审核';
- }
- this.commit("PASS");
- }else{
- this.$notify({
- title: '失败',
- message:'审核失败',
- type: 'error',
- duration: 2000
- });
- }
- this.checkDialog = false;
- })
- }
-
- },
- warehouse(){
- const code = this.currentNode.nodeCode;
- if (code==='STATEMENT_IN'){
- const fileName = this.statementProd.files[0].name
- this.warehouseTip = "请确认将["+fileName+"]入库?";
- this.checkProDTO.production = "STATEMENT";
- this.checkProDTO.targetId = this.target.id;
- this.inWarehouseDialog = true;
- }
- if (code==='STATEMENT_OUT'){
- const fileName = this.statementProd.files[0].name
- this.warehouseTip = "请确认将["+fileName+"]出库?";
- this.checkProDTO.production = "STATEMENT";
- this.checkProDTO.targetId = this.target.id;
- this.outWarehouseDialog = true;
- }
- if (code==='REPORT_IN'){
- const technicName = this.technicReportProd.files[0].name;
- const fianlName = this.finalReprotProd.files[0].name;
- this.warehouseTip = "请确认将["+technicName+"],["+fianlName+"]入库?";
- this.checkProDTO.production = "REPORT";
- this.checkProDTO.targetId = this.target.id;
-
- this.inWarehouseDialog = true;
- }
- if (code==='REPORT_OUT'){
- const technicName = this.technicReportProd.files[0].name
- const fianlName = this.finalReprotProd.files[0].name;
- this.warehouseTip = "请确认将["+technicName+"],["+fianlName+"]出库?";
- this.checkProDTO.production = "REPORT";
- this.checkProDTO.targetId = this.target.id;
- this.outWarehouseDialog = true;
- }
-
- },
- doInWareHouse(){
- if (this.checkProDTO.targetId && this.checkProDTO.production){
- let taskRecordDTO = this.buildTaskRecordDTO(this.checkProDTO);
- this.$api.personalProduction.inWareHouse(taskRecordDTO).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message:'入库操作成功',
- type: 'success',
- duration: 2000
- });
- }else{
- this.$notify({
- title: '失败',
- message:'入库操作失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- }
- this.inWarehouseDialog = false;
-
- },
- doOutWareHouse(){
- if (this.checkProDTO.targetId && this.checkProDTO.production){
- let taskRecordDTO = this.buildTaskRecordDTO(this.checkProDTO);
- this.$api.personalProduction.outWareHouse(taskRecordDTO).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message:'出库操作成功',
- type: 'success',
- duration: 2000
- });
- }else{
- this.$notify({
- title: '失败',
- message:'出库操作失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- }
- this.outWarehouseDialog = false;
- },
- saveFeedback(){
- let flag = true;
- if (this.target.feedback){
- const oldFeedback = JSON.parse(this.target.feedback);
- oldFeedback.forEach(element => {
- if (!this.feedback.includes(element)){
- if (element==='STATEMENT' && this.statementProd.id){
- this.$notify({
- title: '提示',
- message:'不能移除已存在的产品类型',
- type: 'info',
- duration: 2000
- });
- flag =false;
- return;
- }
- if (element==='REPORT' && (this.technicReportProd.id || this.finalReprotProd.id)){
- this.$notify({
- title: '提示',
- message:'不能移除已存在的产品类型',
- type: 'info',
- duration: 2000
- });
- flag =false;
- return;
- }
- }
- });
- }
- if (flag){
- const feedbackDTO = new Object();
- feedbackDTO.id = this.target.id;
- feedbackDTO.feedback = JSON.stringify(this.feedback);
- const taskRecordDTO = this.buildTaskRecordDTO(feedbackDTO)
- this.$api.personalTarget.doFeedback(taskRecordDTO).then(res=>{
- if (res.code ===200 && res.data){
- this.$notify({
- title: '成功',
- message:'反馈客户信息成功',
- type: 'success',
- duration: 2000
- });
- this.getPersonalTarget();
- }else{
- this.$notify({
- title: '失败',
- message:'反馈客户信息失败',
- type: 'error',
- duration: 2000
- });
- }
- })
- }
- },
- }
- }
- </script>
- <style lang="scss" scoped>
-
- .row-style{
- margin-left:40px;
- margin-right:1%;
- }
-
- .major-radio{
- width:92px
- }
-
- .task-class{
- /deep/ .el-form-item__label {
- color: red;
- }
- }
- .evaluate-table{
- margin-left:40px;
- margin-top:35px;
- }
- .pane-class{
- height:800px;
- width:100%;
- overflow-y: scroll;
- }
- /deep/ .cell-class{
- font-size:13px;
- color:black;
- }
- .table {
- /deep/ thead {
- .el-table-column--selection {
- .cell {
- display: none;
- }
- }
- }
- }
-
- /deep/.doWarehouseClass {
- border-radius: 10px;
- }
- .button-area{
- position: absolute;
- top: 20px;
- right: 50px;
- }
- .error-type{
- margin-right:5px;
- }
- .error-type:hover{
- cursor:pointer;
- }
- .box-card{
- margin-top:40px
- }
- .time {
- font-size: 13px;
- color: #999;
- float:right;
- margin-top:5px;
- }
-
- .bottom {
- margin-top: 13px;
- line-height: 12px;
- }
- .button {
- float:left;
- }
- .image {
- width: 100%;
- padding: 0%;
- display: block;
- }
- .control{
- z-index: 999;
- position: relative;
- top: 10px;
- }
- .checked{
- margin-left:10px;
- font-size:12px;
- color:green;
- }
- </style>
-
|