processing.vue 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459
  1. <template>
  2. <div class="againAssign">
  3. <div class="conentBox">
  4. <div class="header">处理方案</div>
  5. <div v-if="modelData.incident.id" class="conent">
  6. <div class="navBar">
  7. <div
  8. class="fl"
  9. :class="{ p50: modelData.incident.handlerUser.id != loginUser.id }"
  10. >
  11. <a
  12. :class="{ active: actives == 'info' }"
  13. href="javascript:;"
  14. @click="toInfo('info')"
  15. >事件信息</a
  16. >
  17. </div>
  18. <!-- <div
  19. class="fl"
  20. :class="{ p50: modelData.incident.handlerUser.id != loginUser.id }"
  21. >
  22. <a
  23. :class="{ active: actives == 'handlerLog' }"
  24. href="javascript:;"
  25. @click="toInfo('handlerLog')"
  26. >维修记录</a>
  27. </div> -->
  28. <div
  29. class="fl"
  30. :class="{ p50: modelData.incident.handlerUser.id != loginUser.id }"
  31. >
  32. <a
  33. :class="{ active: actives == 'progress' }"
  34. href="javascript:;"
  35. @click="toInfo('progress')"
  36. >处理进度</a
  37. >
  38. </div>
  39. <div
  40. class="fl"
  41. v-if="modelData.incident.handlerUser.id == loginUser.id"
  42. >
  43. <a
  44. :class="{ active: actives == 'handlerInfo' }"
  45. href="javascript:;"
  46. @click="toInfo('handlerInfo')"
  47. >处理信息</a
  48. >
  49. </div>
  50. </div>
  51. <div class="label headtop" id="info">事件信息</div>
  52. <div class="info">
  53. <EventInformation :model="modelData" :id="id"></EventInformation>
  54. <p class="info_hide">
  55. <span class="fl hide" @click="hides()" v-if="!item_hides"
  56. >展开详情 >></span
  57. >
  58. <span class="fl hide" @click="hides()" v-if="item_hides"
  59. >隐藏详情<<</span
  60. >
  61. </p>
  62. <div class="imgs-container" v-if="imgs.length">
  63. <div class="imgs-cont" @click="showImgs(imgs)">
  64. <img
  65. v-if="
  66. img.suffix == 'jpeg' ||
  67. img.suffix == 'jpg' ||
  68. img.suffix == 'gif' ||
  69. img.suffix == 'png' ||
  70. img.suffix == 'svg' ||
  71. img.suffix == 'pdf'
  72. "
  73. :src="img.previewUrl"
  74. v-for="(img, index) in imgs"
  75. class="imgs"
  76. />
  77. <p v-else>
  78. <a :href="[img.previewUrl]">{{ img.name }}</a>
  79. </p>
  80. </div>
  81. </div>
  82. <!-- <HandlerLog :data="modelData.incident.handlerLogs" id="handlerLog"></HandlerLog> -->
  83. <div class="label" id="progress">处理进度</div>
  84. <div
  85. :class="{ progress: true, progressHide: !pro_hides }"
  86. id="progressBox"
  87. >
  88. <div class="progress_info" v-for="item in progressInfo">
  89. <div class="progress_info_L">{{ item.activityName }}</div>
  90. <div class="progress_info_R">
  91. <div class="time">
  92. <i
  93. :class="{
  94. iconfont: true,
  95. 'icon-icon_weizuo': item.endTime != '',
  96. 'icon-icon_zhengzaijinx': item.endTime == ''
  97. }"
  98. ></i>
  99. <span class="text1">
  100. {{ item.startTime | timeFormat("MM-dd HH:mm:ss") }}
  101. <template v-if="item.userName">
  102. ,{{ item.userName }}
  103. </template>
  104. </span>
  105. </div>
  106. <div :class="{ cont: true, blue: item.endTime != '' }">
  107. <p class="text2" v-if="item.desc" v-html="item.desc"></p>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <p class="info_hide">
  113. <span class="fl hide" @click="proHides()">{{
  114. pro_hides ? "隐藏详情 <<" : "展开详情 >>"
  115. }}</span>
  116. </p>
  117. <div v-if="modelData.incident.handlerUser.id == loginUser.id">
  118. <div class="label" id="handlerInfo">处理信息</div>
  119. <!-- 添加耗材 start -->
  120. <div style="margin-top:16px;margin-bottom:16px;">
  121. <div v-for="(item, i) in hcList" :key="i" class="hcList">
  122. <cube-select
  123. placeholder="请选择耗材"
  124. class="hcItem"
  125. v-model="item.assetConsumablesId"
  126. :options="hcs"
  127. ></cube-select>
  128. <cube-input
  129. type="number"
  130. v-model="item.extra1"
  131. placeholder="请输入价格"
  132. class="hcItem"
  133. ></cube-input>
  134. <cube-input
  135. type="number"
  136. v-model="item.consumablesSum"
  137. placeholder="请输入数量"
  138. class="hcItem"
  139. ></cube-input>
  140. <span
  141. class="icon iconfont icon-shanchu hcItemClose"
  142. @click="removeHc(item.id)"
  143. ></span>
  144. </div>
  145. </div>
  146. <div
  147. class="addHc"
  148. @click="addHc()"
  149. v-if="incidentWithConsumable == 1"
  150. >
  151. <i class="cubeic-add"></i>增加耗材
  152. </div>
  153. <!-- 添加耗材 end -->
  154. <div class="handlerInfo">
  155. <cube-form
  156. :model="model"
  157. @validate="validateHandler"
  158. @submit="submitHandler"
  159. >
  160. <cube-form-group>
  161. <!-- <cube-form-item :field="fields[12]" class="btn_plcaeholde"> -->
  162. <!-- <cube-button @click="showDatePicker">{{model.dateValue || 'Please select date'}}</cube-button> -->
  163. <!-- <date-picker ref="datePicker" :min="[2008, 8, 8]" :max="[2020, 10, 20]" @select="dateSelectHandler"></date-picker> -->
  164. <!-- </cube-form-item> -->
  165. <!-- <cube-form-item :field="fields[13]" class="btn_plcaeholde"></cube-form-item> -->
  166. <div class="handleRadio">
  167. <cube-radio-group
  168. v-model="order"
  169. :options="handleTypes"
  170. position="right"
  171. :hollow-style="true"
  172. @input="changeHandleTypes"
  173. />
  174. </div>
  175. <cube-form-item
  176. :field="fields[0]"
  177. v-if="order == 1"
  178. ></cube-form-item>
  179. <cube-form-item
  180. :field="fields[1]"
  181. class="btn_plcaeholde"
  182. v-if="order == 1"
  183. >
  184. <cube-button @click="showCategoryPicker()">{{
  185. selectedCategoryTxt
  186. ? selectedCategoryTxt
  187. : "请选择故障现象"
  188. }}</cube-button>
  189. </cube-form-item>
  190. <cube-form-item
  191. :field="fields[2]"
  192. v-if="order == 1"
  193. ></cube-form-item>
  194. <cube-form-item
  195. :field="fields[3]"
  196. class="incidentTitle"
  197. v-if="order == 1 && isShowDes"
  198. >
  199. <div class="titleRefer">
  200. <textarea
  201. class="titleTxtArea fl"
  202. placeholder="请输入处理方案"
  203. v-model="incidentTitle"
  204. @input="inpTitle()"
  205. ></textarea>
  206. <span class="abtn fl" @click="referKnowledge()"
  207. >引入知识库</span
  208. >
  209. </div>
  210. </cube-form-item>
  211. <div class="label formLabel" v-if="order == 1">
  212. 报修图片
  213. <span>(最多可上传3张JPG或PNG,每张不能超过10M)</span>
  214. </div>
  215. <div class="uplod" v-if="order == 1">
  216. <cube-upload
  217. ref="upload"
  218. :max="3"
  219. :action="action"
  220. :simultaneous-uploads="3"
  221. @files-added="filesAdded"
  222. @file-submitted="fileSubmitted"
  223. />
  224. </div>
  225. <cube-form-item
  226. :field="fields[4]"
  227. v-if="order == 1 && isShowDes"
  228. ></cube-form-item>
  229. <cube-form-item
  230. :field="fields[5]"
  231. class="btn_plcaeholde"
  232. v-if="order == 1 && !!model.knowledge"
  233. ></cube-form-item>
  234. <cube-form-item
  235. :field="fields[14]"
  236. v-if="order == 1"
  237. ></cube-form-item>
  238. <cube-form-item
  239. :field="fields[10]"
  240. v-if="order == 1 && !!model.isHelper"
  241. >
  242. <div class="synerBox">
  243. <cube-checkbox-group
  244. v-model="synergeticChecked"
  245. :options="synergeticList"
  246. />
  247. </div>
  248. </cube-form-item>
  249. <cube-form-item
  250. :field="fields[11]"
  251. v-if="order == 1 && !!model.isHelper"
  252. ></cube-form-item>
  253. <cube-form-item
  254. :field="fields[6]"
  255. v-if="order == 2"
  256. ></cube-form-item>
  257. <!-- <cube-form-item
  258. :field="fields[15]"
  259. v-if="order == 5"
  260. ></cube-form-item> -->
  261. <cube-form-item
  262. :field="fields[7]"
  263. v-if="order == 2"
  264. ></cube-form-item>
  265. <cube-form-item
  266. :field="fields[17]"
  267. v-if="order == 3"
  268. ></cube-form-item>
  269. <cube-form-item
  270. :field="fields[18]"
  271. v-if="model.transferMode == 2"
  272. ></cube-form-item>
  273. <cube-form-item
  274. :field="fields[19]"
  275. v-if="model.transferMode == 2"
  276. ></cube-form-item>
  277. <cube-form-item
  278. :field="fields[8]"
  279. v-if="order == 3"
  280. ></cube-form-item>
  281. <cube-form-item
  282. :field="fields[9]"
  283. v-if="order == 3"
  284. ></cube-form-item>
  285. <!-- <cube-form-item
  286. :field="fields[16]"
  287. class="incidentTitle"
  288. >
  289. <div class="titleRefer">
  290. <textarea
  291. style="margin-top:0.1rem;width:100%;"
  292. class="titleTxtArea fl"
  293. placeholder="请输入维修记录"
  294. v-model="handlerLog"
  295. ></textarea>
  296. </div>
  297. </cube-form-item> -->
  298. </cube-form-group>
  299. <cube-form-group class="sub">
  300. <cube-button type="submit" @click="subVali()"
  301. >提交</cube-button
  302. >
  303. </cube-form-group>
  304. </cube-form>
  305. </div>
  306. </div>
  307. </div>
  308. </div>
  309. <load-ing v-if="loadShow"></load-ing>
  310. <promp-ting
  311. :conents="promptingConent"
  312. :status="promptingStatus"
  313. ></promp-ting>
  314. </div>
  315. <seiminModel ref="seiminModel"></seiminModel>
  316. </div>
  317. </template>
  318. <script>
  319. import seiminModel from "./../custom/seiminModel";
  320. import CubePage from "./../components/cube-page.vue";
  321. import CubeButtonGroup from "./../components/cube-button-group.vue";
  322. import DatePicker from "./../components/date-picker.vue";
  323. import CubeExtendPopup from "./../components/extend-popup.vue";
  324. import LoadIng from "./../views/loading.vue";
  325. import PrompTing from "./../views/prompting.vue";
  326. import EventInformation from "./../components/EventInformation/index.vue";
  327. // import HandlerLog from "./../views/handlerLog.vue";
  328. // import host from '../request/host'
  329. // 知识库类型
  330. const solution = {
  331. props: {
  332. value: {
  333. default() {
  334. return [];
  335. }
  336. }
  337. },
  338. data() {
  339. return {
  340. selected: [],
  341. selectData: [],
  342. initVal: JSON.parse(localStorage.getItem("solution")) || [0, 0, 0]
  343. };
  344. },
  345. render(createElement) {
  346. return createElement(
  347. "cube-button",
  348. {
  349. on: {
  350. click: this.showPicker
  351. }
  352. },
  353. this.selected.length
  354. ? this.selected[this.selected.length - 1]
  355. : "请选择知识库类型"
  356. );
  357. },
  358. created() {
  359. this.getTree();
  360. },
  361. mounted() {},
  362. methods: {
  363. showPicker() {
  364. this.picker.show();
  365. },
  366. selectHandler(selectedVal, selectedIndex, selectedTxt) {
  367. var selected = [];
  368. selectedTxt.forEach(function(v, i) {
  369. if (v != "") {
  370. selected.push(v);
  371. }
  372. });
  373. this.selected = selected;
  374. this.$emit("input", selectedVal);
  375. localStorage.setItem("solution", JSON.stringify(selectedIndex));
  376. },
  377. // 获取故障现象数据
  378. getTree() {
  379. let that = this;
  380. that.$http
  381. .post("service/solution/fetchDataList/solutionType", {
  382. idx: 0,
  383. sum: 100
  384. })
  385. .then(function(res) {
  386. // console.log(res);
  387. var list = res.data.list;
  388. var tree = [];
  389. list.forEach((v, i) => {
  390. if (!v.parent) {
  391. tree[i] = {
  392. value: v.id,
  393. text: v.typeName,
  394. children: []
  395. };
  396. } else {
  397. tree.forEach((val, idx) => {
  398. if (
  399. v.parent &&
  400. !v.parent.parent &&
  401. val.text == v.parent.typeName
  402. ) {
  403. tree[idx].children.push({
  404. value: v.id,
  405. text: v.typeName,
  406. children: []
  407. });
  408. } else if (v.parent.parent) {
  409. tree[idx].children.forEach((value, index) => {
  410. if (value.text == v.parent.typeName) {
  411. tree[idx].children[index].children.push({
  412. value: v.id,
  413. text: v.typeName
  414. });
  415. }
  416. });
  417. }
  418. });
  419. }
  420. });
  421. that.selectData = tree;
  422. that.picker = that.$createCascadePicker({
  423. title: "知识库类型选择",
  424. data: that.selectData,
  425. selectedIndex: that.initVal,
  426. onSelect: that.selectHandler
  427. });
  428. });
  429. }
  430. }
  431. };
  432. export default {
  433. data() {
  434. return {
  435. initSjList: [], //原始事件列表
  436. integralMechanism: localStorage.getItem("integralMechanism"),
  437. loginUser: JSON.parse(localStorage.getItem("loginUser")),
  438. incidentWithConsumable: localStorage.getItem("incidentWithConsumable"), //是否绑定耗材
  439. id: "",
  440. resignComment: "", //重新指派原因
  441. item_hides: false,
  442. actives: "info",
  443. processInstanceId: "",
  444. progressInfo: [], //处理进度
  445. imgs: [], //图片
  446. model: {}, //提交数据
  447. validity: {},
  448. valid: undefined,
  449. action: {
  450. target:
  451. this.$host + "/service/common/common/uploadAttachment/incident/",
  452. data: {}
  453. },
  454. isUploading: false,
  455. loadShow: false,
  456. pro_hides: false, //展开/收起处理进度
  457. name: "",
  458. phone: "",
  459. label: "incidentInfo", //顶部快速定位
  460. modelData: {
  461. incident: {}
  462. }, //上传的model
  463. incidentTitle: "", //处理方案
  464. handlerLog: "", //维修记录
  465. referenceInfo: {}, //引用信息
  466. selectedCategoryTxt: "", //故障现象选中展示
  467. selectedAreaId: "", //区域选中id--seimin
  468. selectedAreaName: "", //区域选中名称--seimin
  469. selectedPlaceId: "", //地点选中id--seimin
  470. selectedPlaceName: "", //地点选中名称--seimin
  471. model: {
  472. handleCategory: "", //处理方式
  473. closecode: "", //关闭代码
  474. category: [], //确认故障现象
  475. handleDescription: "", //处理方案
  476. knowledge: false, //是否提交知识库
  477. isHelper: false, //是否需要协同
  478. solutionType: [], //知识库类型
  479. handlerUser: "", //升级/转派对象
  480. isupreason: "", //升级原因
  481. transferReason: "", //转派原因
  482. synergeticChecked: [], //选中协同人员
  483. synergeticReason: "", //协同原因
  484. selectArea: "",
  485. selectPlace: "",
  486. transferMode:'',//转派方式
  487. branch:'',//院区
  488. duty:'',//责任科室
  489. },
  490. // showPrompting:false,
  491. promptingConent: "",
  492. promptingStatus: "",
  493. order: 1, //处理方式 1:直接处理,2:升级,3:转派,4:协同
  494. handleCategoryArr: [], //处理方式数组
  495. closecodeArr: [], //关闭代码数组
  496. // handlerUserArr: [], //处理人数组
  497. synergeticList: [], //协同人员列表
  498. synergeticChecked: [], //选中协同人员
  499. handleTypes: [
  500. {
  501. label: "直接处理",
  502. value: 1
  503. },
  504. // {
  505. // label: "升级",
  506. // value: 2
  507. // },
  508. {
  509. label: "转派",
  510. value: 3
  511. }
  512. // {
  513. // label: "指派",
  514. // value: 5
  515. // }
  516. // {
  517. // label: "协同",
  518. // value: 4
  519. // }
  520. ],
  521. vali: false,
  522. fields: [
  523. {
  524. type: "select",
  525. modelKey: "handleCategory",
  526. label: "处理方式:",
  527. props: {
  528. options: this.handleCategoryArr,
  529. title: "请选择处理方式",
  530. placeholder: "请选择处理方式"
  531. },
  532. rules: {
  533. required: true
  534. }
  535. },
  536. {
  537. component: "button",
  538. modelKey: "category",
  539. label: "确认故障现象:",
  540. rules: {
  541. required: true
  542. }
  543. },
  544. {
  545. type: "select",
  546. modelKey: "closecode",
  547. label: "关闭代码:",
  548. props: {
  549. options: this.closecodeArr,
  550. title: "请选择关闭代码",
  551. placeholder: "请选择关闭代码"
  552. },
  553. rules: {
  554. required: true
  555. }
  556. },
  557. {
  558. type: "textarea",
  559. modelKey: "handleDescription",
  560. label: "处理方案:",
  561. props: {
  562. placeholder: "请填写处理方案"
  563. },
  564. rules: {
  565. required: true
  566. },
  567. debounce: 100
  568. },
  569. {
  570. type: "switch",
  571. modelKey: "knowledge",
  572. label: "是否提交知识库:",
  573. rules: {
  574. required: false
  575. }
  576. },
  577. {
  578. component: solution,
  579. modelKey: "solutionType",
  580. label: "知识库类型:",
  581. rules: {
  582. required: true
  583. },
  584. messages: {
  585. required: ""
  586. }
  587. },
  588. {
  589. type: "select",
  590. modelKey: "handlerUser",
  591. label: "升级对象:",
  592. props: {
  593. options: [],
  594. placeholder: "请选择升级对象"
  595. },
  596. rules: {
  597. required: true
  598. }
  599. },
  600. {
  601. type: "input",
  602. modelKey: "isupreason",
  603. label: "升级原因:",
  604. props: {
  605. placeholder: "请输入升级原因"
  606. },
  607. rules: {
  608. required: true
  609. }
  610. },
  611. {
  612. type: "select",
  613. modelKey: "handlerUser",
  614. label: "转派对象:",
  615. props: {
  616. options: [],
  617. placeholder: "请选择转派对象"
  618. },
  619. rules: {
  620. required: true
  621. }
  622. },
  623. {
  624. type: "input",
  625. modelKey: "transferReason",
  626. label: "转派原因:",
  627. props: {
  628. placeholder: "请输入转派原因"
  629. },
  630. rules: {
  631. required: true
  632. }
  633. },
  634. {
  635. type: "checkbox-group",
  636. modelKey: "synergeticChecked",
  637. label: "协同人员:",
  638. props: {
  639. options: [],
  640. placeholder: "请选择协同人员"
  641. },
  642. rules: {
  643. required: false
  644. }
  645. },
  646. {
  647. type: "input",
  648. modelKey: "synergeticReason",
  649. label: "协同原因:",
  650. props: {
  651. placeholder: "请输入协同原因"
  652. },
  653. rules: {
  654. required: false
  655. }
  656. },
  657. {
  658. type: "select",
  659. modelKey: "selectArea",
  660. label: "区域:",
  661. props: {
  662. options: [],
  663. title: "请选择区域:",
  664. placeholder: "请选择区域:"
  665. },
  666. events: {
  667. change: (id, index, text) => {
  668. // console.log(id,index,text,9999)
  669. this.getPlaceList(id).then(res => {
  670. this.selectedAreaId = id;
  671. this.selectedAreaName = text;
  672. // {{modelData.incident.place?modelData.incident.place.area.area:'--'}}
  673. console.log(this.modelData, "asad");
  674. if (this.modelData.incident.place) {
  675. this.$set(this.modelData.incident.place, "area", {
  676. id,
  677. area: text
  678. });
  679. } else {
  680. this.$set(this.modelData.incident, "place", {
  681. area: {
  682. id,
  683. area: text
  684. }
  685. });
  686. }
  687. });
  688. }
  689. },
  690. rules: {
  691. required: true
  692. }
  693. },
  694. {
  695. type: "select",
  696. modelKey: "selectPlace",
  697. label: "地点:",
  698. props: {
  699. options: [],
  700. title: "请选择地点:",
  701. placeholder: "请选择地点:"
  702. },
  703. events: {
  704. change: (id, index, text) => {
  705. this.selectedPlaceId = id;
  706. this.selectedPlaceName = text;
  707. this.$set(
  708. this.modelData.incident,
  709. "houseNumber",
  710. this.selectedAreaName + this.selectedPlaceName
  711. );
  712. if (this.modelData.incident.place) {
  713. this.$set(this.modelData.incident.place, "place", text);
  714. this.$set(this.modelData.incident.place, "id", id);
  715. } else {
  716. this.$set(this.modelData.incident, "place", {
  717. id,
  718. place: text
  719. });
  720. }
  721. }
  722. },
  723. rules: {
  724. required: true
  725. }
  726. },
  727. {
  728. type: "switch",
  729. modelKey: "isHelper",
  730. label: "是否需要协同:",
  731. rules: {
  732. required: false
  733. }
  734. },
  735. {
  736. type: "select",
  737. modelKey: "handlerUser",
  738. label: "指派对象:",
  739. props: {
  740. options: [],
  741. placeholder: "请选择指派对象"
  742. },
  743. rules: {
  744. required: true
  745. }
  746. },
  747. {
  748. type: "textarea",
  749. modelKey: "handlerLog",
  750. label: "维修记录:",
  751. props: {
  752. placeholder: "请填写维修记录"
  753. },
  754. rules: {
  755. required: false
  756. },
  757. debounce: 100
  758. },
  759. {
  760. type: "select",
  761. modelKey: "transferMode",
  762. label: "转派方式:",
  763. props: {
  764. options: [],
  765. placeholder: "请选择转派方式"
  766. },
  767. events: {
  768. change: (id, index, text) => {
  769. // console.log(id,index,text,9999);
  770. if(id == 1){
  771. this.getRotateUser(id);
  772. }else if(id == 2){
  773. this.getRotateBranch();
  774. }
  775. }
  776. },
  777. rules: {
  778. required: true
  779. }
  780. },
  781. {
  782. type: "select",
  783. modelKey: "branch",
  784. label: "院区:",
  785. props: {
  786. options: [],
  787. placeholder: "请选择院区"
  788. },
  789. events: {
  790. change: (id, index, text) => {
  791. // console.log(id,index,text,9999);
  792. this.getRotateDuty(id);
  793. }
  794. },
  795. rules: {
  796. required: true
  797. }
  798. },
  799. {
  800. type: "select",
  801. modelKey: "duty",
  802. label: "责任科室:",
  803. props: {
  804. options: [],
  805. placeholder: "请选择责任科室"
  806. },
  807. events: {
  808. change: (id, index, text) => {
  809. // console.log(id,index,text,9999);
  810. this.getRotateUser(this.model.transferMode);
  811. }
  812. },
  813. rules: {
  814. required: true
  815. }
  816. },
  817. ],
  818. isShowDes: false,
  819. hcList: [], //绑定的耗材列表
  820. idMock: 0, //自增id,mock
  821. hcs: [] //耗材列表
  822. };
  823. },
  824. watch: {
  825. // 监听synergeticChecked变化
  826. synergeticChecked: {
  827. handler: function(n, o) {
  828. this.model.synergeticChecked = n;
  829. }
  830. }
  831. },
  832. methods: {
  833. // 切换处理方式
  834. changeHandleTypes() {
  835. let reverseArr = this.model.category.filter(Boolean).reverse(); //数组翻转,取第一项不为空的
  836. let sjId = reverseArr[0]; //事件Id
  837. let sj = this.initSjList.filter(v => v.id == sjId)[0];
  838. console.log(this.order, sj);
  839. this.isShowDes = !(this.order == 1 && sj && sj.hasSimple == 1);
  840. },
  841. // 获取耗材列表
  842. getHcs() {
  843. this.$http
  844. .post("service/bpm/data/fetchDataList/consumable", {
  845. idx: 0,
  846. sum: 1000,
  847. consumable: { isInventory: 1 }
  848. })
  849. .then(res => {
  850. if (res.data.status == 200) {
  851. this.hcs = res.data.list.map(v => ({
  852. value: v.id,
  853. text:
  854. v.name +
  855. "【" +
  856. v.brandModel +
  857. "】" +
  858. "【" +
  859. v.specification +
  860. "】"
  861. }));
  862. }
  863. });
  864. },
  865. // 增加耗材
  866. addHc() {
  867. let sourceId = this.modelData.incident.id;
  868. // consumablesSum 耗材数量
  869. // assetConsumablesId 耗材id
  870. // sourceId 事件id
  871. this.hcList.push({
  872. id: ++this.idMock,
  873. type: 2,
  874. consumablesSum: null,
  875. assetConsumablesId: null,
  876. sourceId,
  877. extra1: null,
  878. source: 1627
  879. });
  880. },
  881. // 删除耗材
  882. removeHc(id) {
  883. this.hcList = this.hcList.filter(v => v.id != id);
  884. },
  885. //获取区域
  886. getAreaList() {
  887. return new Promise((resolve, reject) => {
  888. this.$http
  889. .post("service/user/data/fetchDataList/area", { idx: 0, sum: 1000 })
  890. .then(res => {
  891. if (res.data.status == 200) {
  892. let arr = res.data.list.map(item => {
  893. return { value: item.id, text: item.area };
  894. });
  895. // console.log(arr,2222)
  896. // this.selectedAreaArr = arr;
  897. this.fields.forEach(item => {
  898. if (item.modelKey === "selectArea") {
  899. item.props.options = arr;
  900. }
  901. });
  902. resolve(res);
  903. }
  904. });
  905. });
  906. },
  907. //根据区域获取地点
  908. getPlaceList(id) {
  909. return new Promise((resolve, reject) => {
  910. this.$http
  911. .post("service/user/data/fetchDataList/place", {
  912. idx: 0,
  913. sum: 1000,
  914. place: { area: { id } }
  915. })
  916. .then(res => {
  917. if (res.data.status == 200) {
  918. let arr = res.data.list.map(item => {
  919. return { value: item.id, text: item.place };
  920. });
  921. // console.log(arr,2222)
  922. // this.selectedAreaArr = arr;
  923. this.fields.forEach(item => {
  924. if (item.modelKey === "selectPlace") {
  925. item.props.options = arr;
  926. }
  927. });
  928. resolve(res);
  929. }
  930. });
  931. });
  932. },
  933. // 获取事件数据
  934. getParamsData() {
  935. this.loadShow = true;
  936. this.$http
  937. .get(
  938. "/service/form/renderForm/handlerform/" +
  939. this.processInstanceId +
  940. "/" +
  941. this.loginUser.id +
  942. "/" +
  943. this.id,
  944. {}
  945. )
  946. .then(res => {
  947. this.loadShow = false;
  948. console.log(res.data, 666);
  949. this.modelData = res.data.model;
  950. if (
  951. this.modelData.incident.category.hasSimple == 1 &&
  952. this.order == 1
  953. ) {
  954. this.isShowDes = false;
  955. } else {
  956. this.isShowDes = true;
  957. }
  958. localStorage.setItem("modelData", JSON.stringify(this.modelData));
  959. // 获取页面数据
  960. this.getMessage();
  961. // 故障现象
  962. this.getIncidentcategory();
  963. });
  964. },
  965. //展示图片
  966. showImgs(imgs) {
  967. this.$createImagePreview({
  968. imgs: imgs.map(v => v.previewUrl)
  969. }).show();
  970. },
  971. // 获取图片
  972. getImgs() {
  973. var that = this;
  974. that.$http
  975. .get(
  976. "service/common/common/listAttachment/incident/" +
  977. that.processInstanceId,
  978. {}
  979. )
  980. .then(function(res) {
  981. that.imgs = res.data.data.splice(0, 3);
  982. });
  983. },
  984. // 故障现象回显
  985. setCategory() {
  986. let that = this;
  987. // console.log(898);
  988. // console.log(that.modelData.incident.category);
  989. // let cate = that.modelData.incident.category;
  990. if (localStorage.getItem("referenceInfo")) {
  991. that.referenceInfo = JSON.parse(localStorage.getItem("referenceInfo"));
  992. // that.incidentTitle = that.model.handleDescription =
  993. // that.referenceInfo.content;
  994. //baba
  995. var selectedVal = []; //存id,对应value
  996. var selectedIndex = []; //存索引
  997. var selectedTxt = []; //存名称
  998. if (this.referenceInfo.category) {
  999. console.log(this.selectData, "所有故障现象");
  1000. console.log(this.referenceInfo.category, "返回的数据");
  1001. var category = this.referenceInfo.category;
  1002. selectedVal = [category.id]; //存id,对应value
  1003. // selectedVal
  1004. if (category.parentCategory) {
  1005. //上级
  1006. selectedVal.unshift(category.parentCategory.id);
  1007. if (category.parentCategory.parentCategory) {
  1008. //上上级
  1009. selectedVal.unshift(category.parentCategory.parentCategory.id);
  1010. }
  1011. }
  1012. // selectedIndex selectedTxt
  1013. //一级
  1014. if (selectedVal[0]) {
  1015. this.selectData.forEach(function(v, i) {
  1016. if (v.value == selectedVal[0]) {
  1017. selectedIndex.push(i);
  1018. selectedTxt.push(v.text);
  1019. }
  1020. });
  1021. // 二级
  1022. if (selectedVal[1]) {
  1023. this.selectData[selectedIndex[0].toString()].children.forEach(
  1024. function(v, i) {
  1025. if (v.value == selectedVal[1]) {
  1026. selectedIndex.push(i);
  1027. selectedTxt.push(v.text);
  1028. }
  1029. }
  1030. );
  1031. // 三级
  1032. if (selectedVal[2]) {
  1033. this.selectData[selectedIndex[0].toString()].children[
  1034. selectedIndex[1].toString()
  1035. ].children.forEach(function(v, i) {
  1036. if (v.value == selectedVal[2]) {
  1037. selectedIndex.push(i);
  1038. selectedTxt.push(v.text);
  1039. }
  1040. });
  1041. }
  1042. }
  1043. }
  1044. console.log(selectedVal, selectedIndex, selectedTxt, "获取的数据");
  1045. }
  1046. //回显
  1047. var selected = [];
  1048. selectedTxt.forEach(function(v, i) {
  1049. if (v != "") {
  1050. selected.push(v);
  1051. }
  1052. });
  1053. this.selected = selected;
  1054. this.selectedCategoryTxt = selected.length
  1055. ? selected[selected.length - 1]
  1056. : "";
  1057. this.model.category = selectedVal;
  1058. // localStorage.setItem("category", JSON.stringify(selectedIndex));
  1059. // localStorage.setItem("categoryVal", JSON.stringify(selectedVal));
  1060. // localStorage.setItem(
  1061. // "selectedCategoryTxt",
  1062. // JSON.stringify(this.selectedCategoryTxt)
  1063. // );
  1064. }
  1065. },
  1066. // 获取处理进度
  1067. getProgressInfo() {
  1068. var that = this;
  1069. that.$http
  1070. .post(
  1071. "/service/bpm/bpm/flowTracingCustom/" + that.processInstanceId,
  1072. {}
  1073. )
  1074. .then(function(res) {
  1075. console.log(res.data);
  1076. that.progressInfo = res.data.data;
  1077. //维修记录startcaca
  1078. if (that.modelData.incident.handlerLogs) {
  1079. //添加日志
  1080. that.modelData.incident.handlerLogs.forEach(v => {
  1081. that.progressInfo.push({
  1082. startTime: v.opTime,
  1083. endTime: 1,
  1084. desc: v.opValue,
  1085. userName: v.userName,
  1086. activityName: "事件处理"
  1087. });
  1088. });
  1089. }
  1090. //处理数据
  1091. that.progressInfo.forEach(v => {
  1092. if (!v.endTime) {
  1093. v.endTime = 1;
  1094. }
  1095. v.startTime = new Date(v.startTime).getTime();
  1096. });
  1097. var kaishi = that.progressInfo.shift();
  1098. var jiedan = that.progressInfo.shift();
  1099. that.progressInfo.sort(function(o, c) {
  1100. return c.startTime - o.startTime;
  1101. });
  1102. that.progressInfo.length && (that.progressInfo[0].endTime = "");
  1103. that.progressInfo.push(jiedan);
  1104. that.progressInfo.push(kaishi);
  1105. console.log(that.progressInfo);
  1106. //维修记录end
  1107. });
  1108. },
  1109. //隐藏显示详情
  1110. hides() {
  1111. this.item_hides = !this.item_hides;
  1112. $("#shows").slideToggle();
  1113. },
  1114. // 处理进度隐藏/展开
  1115. proHides() {
  1116. if (!this.pro_hides) {
  1117. $("#progressBox").animate({
  1118. height: $("#progressBox")[0].scrollHeight
  1119. });
  1120. } else {
  1121. $("#progressBox").animate({ height: "1.7rem" });
  1122. }
  1123. this.pro_hides = !this.pro_hides;
  1124. },
  1125. // 快速定位
  1126. toInfo(id) {
  1127. this.actives = id;
  1128. $("body,html").animate(
  1129. {
  1130. scrollTop:
  1131. $("#" + id).offset().top -
  1132. $(".header")[0].offsetHeight -
  1133. $(".navBar")[0].offsetHeight
  1134. },
  1135. 260
  1136. );
  1137. },
  1138. // 输入处理方案
  1139. inpTitle() {
  1140. this.model.handleDescription = this.incidentTitle;
  1141. },
  1142. subVali() {
  1143. this.vali = true;
  1144. },
  1145. // 获取处理方式
  1146. getHandleCategory() {
  1147. var that = this;
  1148. this.$http
  1149. .post("service/common/common/getDictionary", {
  1150. key: "incident_handleCategory",
  1151. type: "list"
  1152. })
  1153. .then(function(res) {
  1154. res.data.forEach(function(v, i) {
  1155. that.handleCategoryArr.push({
  1156. text: v.name,
  1157. value: v.id
  1158. });
  1159. });
  1160. that.fields[0].props.options = that.handleCategoryArr;
  1161. that.model.handleCategory = 1565;
  1162. });
  1163. },
  1164. // 获取关闭代码
  1165. getClosecode() {
  1166. var that = this;
  1167. this.$http
  1168. .post("service/common/common/getDictionary", {
  1169. key: "incident_closecode",
  1170. type: "list"
  1171. })
  1172. .then(function(res) {
  1173. res.data.forEach(function(v, i) {
  1174. that.closecodeArr.push({
  1175. text: v.desc,
  1176. value: v.id
  1177. });
  1178. });
  1179. that.fields[2].props.options = that.closecodeArr;
  1180. that.model.closecode = 1572;//设计如此,默认“完全解决”
  1181. });
  1182. },
  1183. // 获取指派对象baba
  1184. getZpUser() {
  1185. var that = this;
  1186. var postData = {
  1187. idx: 0,
  1188. sum: 1000,
  1189. user: {
  1190. roledata: { rolecode: "first-line support" },
  1191. roledata2: { rolecode: "second-line support" },
  1192. selectType: "1"
  1193. }
  1194. };
  1195. this.$http
  1196. .post("service/user/data/fetchDataList/user", postData)
  1197. .then(function(res) {
  1198. var handlerUserArr = [];
  1199. res.data.list.forEach(function(v, i) {
  1200. handlerUserArr.push({
  1201. text: v.name,
  1202. value: v.id
  1203. });
  1204. });
  1205. that.fields[15].props.options = handlerUserArr;
  1206. });
  1207. },
  1208. // 获取升级对象
  1209. getUpUser() {
  1210. var that = this;
  1211. var postData = {
  1212. idx: 0,
  1213. sum: 1000,
  1214. user: {
  1215. roledata: { rolecode: "second-line support" },
  1216. selectType: "1"
  1217. }
  1218. };
  1219. this.$http
  1220. .post("service/user/data/fetchDataList/user", postData)
  1221. .then(function(res) {
  1222. var handlerUserArr = [];
  1223. res.data.list.forEach(function(v, i) {
  1224. handlerUserArr.push({
  1225. text: v.name,
  1226. value: v.id
  1227. });
  1228. });
  1229. that.fields[6].props.options = handlerUserArr;
  1230. });
  1231. },
  1232. // 获取转派对象
  1233. getRotateUser(transferModeId) {
  1234. console.log(transferModeId,this.model);
  1235. this.fields[8].props.options = [];
  1236. this.model.handlerUser = '';
  1237. const postData = {
  1238. idx: 0,
  1239. sum: 1000,
  1240. user: {
  1241. roledata: { rolecode: "first-line support" },
  1242. selectType: "1"
  1243. }
  1244. };
  1245. if(transferModeId == 1){
  1246. // 判断当前是责任科室还是院区
  1247. if (this.loginUser.duty) {
  1248. // 当前的所属责任科室
  1249. postData.user.currentDuty = this.loginUser.duty.id;
  1250. } else if (this.loginUser.branch) {
  1251. // 当前的所属院区
  1252. this.fields[8].props.options = [];
  1253. return;
  1254. }
  1255. }else if(transferModeId == 2){
  1256. // 跨科室转派
  1257. postData.user.duty = {id:this.model.duty};
  1258. }
  1259. this.$http
  1260. .post("service/user/data/fetchDataList/user", postData)
  1261. .then((res) => {
  1262. const handlerUserArr = [];
  1263. res.data.list.forEach(function(v, i) {
  1264. handlerUserArr.push({
  1265. text: v.name,
  1266. value: v.id
  1267. });
  1268. });
  1269. this.fields[8].props.options = handlerUserArr;
  1270. });
  1271. },
  1272. // 获取院区
  1273. getRotateBranch() {
  1274. console.log(this.model);
  1275. this.fields[8].props.options = [];
  1276. this.model.handlerUser = '';
  1277. this.fields[19].props.options = [];
  1278. this.model.duty = '';
  1279. const postData = {
  1280. idx: 0,
  1281. sum: 1000,
  1282. };
  1283. this.$http
  1284. .post("service/user/data/fetchDataList/branch", postData)
  1285. .then((res) => {
  1286. const branchs = [];
  1287. res.data.list.forEach(function(v, i) {
  1288. branchs.push({
  1289. text: v.hosName,
  1290. value: v.id
  1291. });
  1292. });
  1293. this.fields[18].props.options = branchs;
  1294. if(this.loginUser.duty){
  1295. this.model.branch = this.loginUser.duty.branch;
  1296. }else if(this.loginUser.branch){
  1297. this.model.branch = this.loginUser.branch?this.loginUser.branch.id:undefined;
  1298. }
  1299. this.getRotateDuty(this.model.branch);
  1300. });
  1301. },
  1302. // 获取责任科室
  1303. getRotateDuty(branchId) {
  1304. console.log(this.model);
  1305. this.fields[8].props.options = [];
  1306. this.model.handlerUser = '';
  1307. const postData = {
  1308. idx: 0,
  1309. sum: 1000,
  1310. dutyDepartment:{
  1311. branch:branchId
  1312. }
  1313. };
  1314. this.$http
  1315. .post("service/user/data/fetchDataList/dutyDepartment", postData)
  1316. .then((res) => {
  1317. const dutys = [];
  1318. res.data.list.forEach(function(v, i) {
  1319. dutys.push({
  1320. text: v.dept,
  1321. value: v.id
  1322. });
  1323. });
  1324. this.fields[19].props.options = dutys;
  1325. });
  1326. },
  1327. // 获取协同人员
  1328. getSynerUser() {
  1329. console.log(this.modelData.incident.duty);
  1330. var that = this;
  1331. var postData = {
  1332. idx: 0,
  1333. sum: 1000,
  1334. user: {
  1335. currentDuty: this.modelData ? this.modelData.incident.duty.id : undefined
  1336. }
  1337. };
  1338. this.$http
  1339. .post("service/user/data/fetchDataList/user", postData)
  1340. .then((res) => {
  1341. var handlerUserArr = [];
  1342. res.data.list.forEach((v, i) => {
  1343. if(v.id != this.loginUser.id){
  1344. handlerUserArr.push({
  1345. label: v.name,
  1346. value: v.id
  1347. });
  1348. }
  1349. });
  1350. that.fields[10].props.options = handlerUserArr;
  1351. that.synergeticList = handlerUserArr;
  1352. });
  1353. },
  1354. // 获取页面数据
  1355. getMessage() {
  1356. var that = this;
  1357. if (localStorage.getItem("model")) {
  1358. that.model = JSON.parse(localStorage.getItem("model"));
  1359. }
  1360. if (localStorage.getItem("modelData")) {
  1361. that.modelData = JSON.parse(localStorage.getItem("modelData"));
  1362. }
  1363. if (localStorage.getItem("referenceInfo")) {
  1364. that.referenceInfo = JSON.parse(localStorage.getItem("referenceInfo"));
  1365. that.incidentTitle = that.model.handleDescription =
  1366. that.referenceInfo.content;
  1367. }
  1368. if (localStorage.getItem("order")) {
  1369. that.order = localStorage.getItem("order") - 0;
  1370. }
  1371. // if (localStorage.getItem("selectedCategoryTxt")) {
  1372. // that.selectedCategoryTxt = JSON.parse(
  1373. // localStorage.getItem("selectedCategoryTxt")
  1374. // );
  1375. // }
  1376. that.getProgressInfo();
  1377. // 协同人员
  1378. that.getSynerUser();
  1379. },
  1380. // 故障现象
  1381. showCategoryPicker() {
  1382. this.categoryPicker.show();
  1383. },
  1384. selectCategoryHandler(selectedVal, selectedIndex, selectedTxt) {
  1385. console.log(selectedVal, selectedIndex, selectedTxt);
  1386. let reverseArr = selectedVal.filter(Boolean).reverse(); //数组翻转,取第一项不为空的
  1387. let sjId = reverseArr[0]; //事件Id baba
  1388. let sj = this.initSjList.filter(v => v.id == sjId)[0];
  1389. var selected = [];
  1390. selectedTxt.forEach(function(v, i) {
  1391. if (v != "") {
  1392. selected.push(v);
  1393. }
  1394. });
  1395. this.selected = selected;
  1396. this.selectedCategoryTxt = selected.length
  1397. ? selected[selected.length - 1]
  1398. : "";
  1399. this.model.category = selectedVal;
  1400. // localStorage.setItem("category", JSON.stringify(selectedIndex));
  1401. // localStorage.setItem("categoryVal", JSON.stringify(selectedVal));
  1402. // localStorage.setItem(
  1403. // "selectedCategoryTxt",
  1404. // JSON.stringify(this.selectedCategoryTxt)
  1405. // );
  1406. if (this.order == 1 && sj.hasSimple == 1) {
  1407. this.isShowDes = false;
  1408. } else {
  1409. this.isShowDes = true;
  1410. }
  1411. },
  1412. getIncidentcategory() {
  1413. this.loadShow = true;
  1414. var that = this;
  1415. let postData = {
  1416. idx: 0,
  1417. sum: 9999,
  1418. };
  1419. // 当前所属院区或责任科室
  1420. if(this.loginUser.duty){
  1421. postData.incidentcategory = { duty: this.loginUser.duty.id };
  1422. }else if(this.loginUser.branch){
  1423. postData.incidentcategory = { branch: this.loginUser.branch.id }
  1424. }
  1425. this.$http
  1426. .post("service/bpm/data/fetchDataList/incidentcategory", postData)
  1427. .then(function(res) {
  1428. that.initSjList = JSON.parse(JSON.stringify(res.data.list));
  1429. var list = res.data.list;
  1430. var tree = [];
  1431. list.forEach((v, i) => {
  1432. if (!v.parent) {
  1433. tree[i] = {
  1434. value: v.id,
  1435. text: v.category,
  1436. children: []
  1437. };
  1438. } else {
  1439. tree.forEach((val, idx) => {
  1440. if (
  1441. v.parent &&
  1442. !v.parent.parent &&
  1443. val.text == v.parent.category
  1444. ) {
  1445. tree[idx].children.push({
  1446. value: v.id,
  1447. text: v.category,
  1448. children: []
  1449. });
  1450. } else if (v.parent.parent) {
  1451. tree[idx].children.forEach((value, index) => {
  1452. if (value.text == v.parent.category) {
  1453. tree[idx].children[index].children.push({
  1454. value: v.id,
  1455. text: v.category
  1456. });
  1457. }
  1458. });
  1459. }
  1460. });
  1461. }
  1462. });
  1463. // if (!localStorage.getItem("category")) {
  1464. if (true) {
  1465. let cate = that.modelData.incident.category;
  1466. let cateGrand =
  1467. cate.parentCategory &&
  1468. cate.parentCategory.parentCategory &&
  1469. cate.parentCategory.parentCategory.id;
  1470. let cateFa = cate.parentCategory && cate.parentCategory.id;
  1471. let cateSelf = cate.id;
  1472. console.log(cate, tree);
  1473. var i1 = 0,
  1474. i2 = 0,
  1475. i3 = 0;
  1476. var selectedVal = [];
  1477. var selectedIndex = [];
  1478. var selectedTxt = [];
  1479. tree.forEach((v, i) => {
  1480. if (v.value == cateGrand) {
  1481. selectedVal.push(v.value);
  1482. selectedIndex.push(i);
  1483. selectedTxt.push(v.text);
  1484. v.children.forEach((va, ind) => {
  1485. if (va.value == cateFa) {
  1486. selectedVal.push(va.value);
  1487. selectedIndex.push(ind);
  1488. selectedTxt.push(va.text);
  1489. va.children.forEach((val, idx) => {
  1490. if (val.value == cateSelf) {
  1491. selectedVal.push(val.value);
  1492. selectedIndex.push(idx);
  1493. selectedTxt.push(val.text);
  1494. }
  1495. });
  1496. }
  1497. });
  1498. }
  1499. });
  1500. console.log(selectedVal, selectedIndex, selectedTxt);
  1501. // console.log(i1,i2,i3);
  1502. // var cateData=[i1,i2,i3]
  1503. that.selectData = tree;
  1504. // 获取故障现象并设置
  1505. that.setCategory();
  1506. that.categoryPicker = that.$createCascadePicker({
  1507. title: "故障现象选择",
  1508. data: that.selectData,
  1509. selectedIndex: selectedIndex,
  1510. onSelect: that.selectCategoryHandler
  1511. });
  1512. setTimeout(() => {
  1513. that.selectCategoryHandler(
  1514. selectedVal,
  1515. selectedIndex,
  1516. selectedTxt
  1517. );
  1518. }, 500);
  1519. } else {
  1520. // that.selectData = tree;
  1521. // // 获取故障现象并设置
  1522. // that.setCategory();
  1523. // that.categoryPicker = that.$createCascadePicker({
  1524. // title: "故障现象选择",
  1525. // data: that.selectData,
  1526. // selectedIndex: JSON.parse(localStorage.getItem("category")) || [
  1527. // 0,
  1528. // 0,
  1529. // 0
  1530. // ],
  1531. // onSelect: that.selectCategoryHandler
  1532. // });
  1533. // that.model.category = JSON.parse(
  1534. // localStorage.getItem("categoryVal")
  1535. // );
  1536. }
  1537. that.loadShow = false;
  1538. });
  1539. },
  1540. // 暂时存值
  1541. setLocalStroageData() {
  1542. var that = this;
  1543. var a1 = [],
  1544. a2 = [],
  1545. a3 = [],
  1546. category = [],
  1547. solutionType = [],
  1548. synergeticChecked = [];
  1549. that.model.category.forEach(function(v, i) {
  1550. if (v) {
  1551. a1.push(v);
  1552. }
  1553. });
  1554. category = a1;
  1555. that.model.solutionType.forEach(function(v, i) {
  1556. if (v) {
  1557. a2.push(v);
  1558. }
  1559. });
  1560. solutionType = a2;
  1561. that.synergeticChecked.forEach(function(v, i) {
  1562. a3.push({ id: v });
  1563. });
  1564. synergeticChecked = a3;
  1565. that.modelData.incident.category = {
  1566. id: category[category.length - 1]
  1567. };
  1568. that.modelData.loginUser = that.loginUser;
  1569. if (that.order == 1) {
  1570. // 直接处理
  1571. that.modelData.handler_code = "resolve";
  1572. that.modelData.msgflag = "申请关闭";
  1573. that.modelData.submit = "申请关闭";
  1574. that.modelData.incident.handleDescription =
  1575. that.model.handleDescription;
  1576. that.modelData.incident.handleCategory = {
  1577. id: that.model.handleCategory
  1578. };
  1579. that.modelData.incident.closecode = { id: that.model.closecode };
  1580. that.modelData.isSolution = that.model.knowledge;
  1581. that.modelData.bpm_activiti = {
  1582. solutionType: {
  1583. id: solutionType[solutionType.length - 1]
  1584. }
  1585. };
  1586. // 协同
  1587. that.modelData.incident.synergeticReason = that.model.synergeticReason;
  1588. delete that.modelData.isupreason;
  1589. delete that.modelData.examine;
  1590. delete that.modelData.assignee;
  1591. delete that.modelData.transferReason;
  1592. that.modelData.incident.synergetic = synergeticChecked;
  1593. } else if (that.order == 2) {
  1594. // 升级
  1595. that.modelData.handler_code = "function";
  1596. that.modelData.msgflag = "升级";
  1597. that.modelData.submit = "升级";
  1598. that.modelData.isupreason = that.model.isupreason;
  1599. that.modelData.assignee = that.model.handlerUser;
  1600. that.modelData.examine = {
  1601. upgradeAuditor: { id: that.modelData.assignee }
  1602. };
  1603. delete that.modelData.transferReason;
  1604. delete that.modelData.incident.synergetic;
  1605. delete that.modelData.incident.synergeticReason;
  1606. if (that.modelData.isSolution) {
  1607. delete that.modelData.isSolution;
  1608. }
  1609. } else if (that.order == 3) {
  1610. // 转派
  1611. that.modelData.handler_code = "forward";
  1612. that.modelData.msgflag = "转派";
  1613. that.modelData.submit = "转派";
  1614. that.modelData.transferReason = that.model.transferReason;
  1615. that.modelData.assignee = that.model.handlerUser;
  1616. delete that.modelData.isupreason;
  1617. delete that.modelData.examine;
  1618. delete that.modelData.incident.synergetic;
  1619. delete that.modelData.incident.synergeticReason;
  1620. if (that.modelData.isSolution) {
  1621. delete that.modelData.isSolution;
  1622. }
  1623. }
  1624. that.model.fileUrl = "url";
  1625. that.loadShow = true;
  1626. },
  1627. // 处理方案引入知识库
  1628. referKnowledge() {
  1629. var that = this;
  1630. if (!that.model.handleDescription) {
  1631. alert("请输入处理方案");
  1632. return;
  1633. }
  1634. that.setLocalStroageData();
  1635. localStorage.setItem("modelData", JSON.stringify(that.modelData));
  1636. localStorage.setItem("model", JSON.stringify(that.model));
  1637. localStorage.setItem("order", that.order);
  1638. this.$router.push({
  1639. name: "ReferenceList",
  1640. params: { data: that.model.handleDescription }
  1641. });
  1642. },
  1643. // 新增耗材
  1644. addHcPost() {
  1645. //添加耗材发送请求 start
  1646. let data = JSON.parse(JSON.stringify(this.hcList));
  1647. data.forEach(v => {
  1648. delete v.id;
  1649. });
  1650. return this.$http.post("service/cmdb/inOutStore/out", { data });
  1651. //添加耗材发送请求 end
  1652. },
  1653. async basePost() {
  1654. if (this.hcList.length) {
  1655. let flag = this.hcList.every(
  1656. v => v.consumablesSum && v.assetConsumablesId && v.extra1
  1657. );
  1658. if (!flag) {
  1659. this.$createDialog({
  1660. type: "alert",
  1661. title: "请填写必填项",
  1662. content: "耗材信息填写不完整",
  1663. icon: "cubeic-wrong"
  1664. }).show();
  1665. return;
  1666. }
  1667. console.log(this.hcList);
  1668. let re = await this.addHcPost();
  1669. if (re.data.status != 200) {
  1670. this.$createDialog({
  1671. type: "alert",
  1672. title: "提示",
  1673. content: re.data.msg,
  1674. icon: "cubeic-wrong"
  1675. }).show();
  1676. return;
  1677. }
  1678. }
  1679. let that = this;
  1680. if (this.order == 5) {
  1681. that.$http
  1682. .post(
  1683. "service/bpm/bpm/delegateTask/" + that.modelData.incident.taskId,
  1684. { assginee: that.model.handlerUser }
  1685. )
  1686. .then(function(res) {
  1687. if (res.data) {
  1688. $("#fade").fadeIn();
  1689. that.promptingConent = "恭喜您,提交成功!";
  1690. that.promptingStatus = true;
  1691. that.dialog = that
  1692. .$createDialog({
  1693. type: "alert",
  1694. title: "提交成功",
  1695. content: "点击返回首页",
  1696. icon: "cubeic-right",
  1697. onConfirm: (e, promptValue) => {
  1698. that.$router.push({ path: "/main" });
  1699. }
  1700. })
  1701. .show();
  1702. // localStorage.removeItem("category");
  1703. localStorage.removeItem("model");
  1704. localStorage.removeItem("modelData");
  1705. localStorage.removeItem("referenceInfo");
  1706. localStorage.removeItem("solution");
  1707. localStorage.removeItem("order");
  1708. setTimeout(function() {
  1709. $("#fade").fadeOut();
  1710. }, 2000);
  1711. } else {
  1712. $("#fade").fadeIn();
  1713. that.promptingConent = "系统错误,请稍后再试!";
  1714. that.promptingStatus = false;
  1715. that.loadShow = false;
  1716. that.dialog = that
  1717. .$createDialog({
  1718. type: "alert",
  1719. title: "系统错误,请稍后再试!",
  1720. content: "点击返回首页",
  1721. icon: "cubeic-wrong",
  1722. onConfirm: (e, promptValue) => {
  1723. that.$router.push({ path: "/main" });
  1724. }
  1725. })
  1726. .show();
  1727. setTimeout(function() {
  1728. $("#fade").fadeOut();
  1729. }, 2000);
  1730. }
  1731. });
  1732. } else {
  1733. that.$http
  1734. .post(
  1735. "service/bpm/bpm/completeTask/" +
  1736. that.modelData.incident.taskId +
  1737. "/" +
  1738. that.loginUser.id,
  1739. that.modelData
  1740. )
  1741. .then(function(res) {
  1742. if (res.data) {
  1743. setTimeout(function() {
  1744. that.$refs.upload.start();
  1745. }, 100);
  1746. $("#fade").fadeIn();
  1747. that.promptingConent = "恭喜您,提交成功!";
  1748. that.promptingStatus = true;
  1749. that.dialog = that
  1750. .$createDialog({
  1751. type: "alert",
  1752. title: "提交成功",
  1753. content: "点击返回首页",
  1754. icon: "cubeic-right",
  1755. onConfirm: (e, promptValue) => {
  1756. that.$router.push({ path: "/main" });
  1757. }
  1758. })
  1759. .show();
  1760. // localStorage.removeItem("category");
  1761. localStorage.removeItem("model");
  1762. localStorage.removeItem("modelData");
  1763. localStorage.removeItem("referenceInfo");
  1764. localStorage.removeItem("solution");
  1765. localStorage.removeItem("order");
  1766. setTimeout(function() {
  1767. $("#fade").fadeOut();
  1768. }, 2000);
  1769. } else {
  1770. $("#fade").fadeIn();
  1771. that.promptingConent = "系统错误,请稍后再试!";
  1772. that.promptingStatus = false;
  1773. that.loadShow = false;
  1774. that.dialog = that
  1775. .$createDialog({
  1776. type: "alert",
  1777. title: "系统错误,请稍后再试!",
  1778. content: "点击返回首页",
  1779. icon: "cubeic-wrong",
  1780. onConfirm: (e, promptValue) => {
  1781. that.$router.push({ path: "/main" });
  1782. }
  1783. })
  1784. .show();
  1785. setTimeout(function() {
  1786. $("#fade").fadeOut();
  1787. }, 2000);
  1788. }
  1789. });
  1790. }
  1791. },
  1792. handlerFn() {
  1793. let that = this;
  1794. //填写了维修记录,并且是处理中状态
  1795. if (
  1796. that.handlerLog &&
  1797. that.handlerLog.trim() &&
  1798. that.modelData.incident.state.value == "handler"
  1799. ) {
  1800. that.$http
  1801. .post("service/bpm/data/addData/operationLog", {
  1802. operationLog: {
  1803. opType: "handlerLog",
  1804. opValue: that.handlerLog,
  1805. extra1: that.modelData.incident.id
  1806. }
  1807. })
  1808. .then(function(result1) {
  1809. that.basePost();
  1810. });
  1811. } else {
  1812. that.basePost();
  1813. }
  1814. },
  1815. // 提交
  1816. submitHandler() {
  1817. var that = this;
  1818. that.setLocalStroageData();
  1819. // that.modelData.incident.place = {
  1820. // area:{
  1821. // id:this.selectedAreaId,
  1822. // area:this.selectedAreaName
  1823. // },
  1824. // id:this.selectedPlaceId,
  1825. // place:this.selectedPlaceName
  1826. // };//增加区域地点
  1827. console.log(that.model, that.modelData, 11111);
  1828. // console.log(this.selectedPlaceId,this.selectedAreaId,8888);//2020年4月25日16:12:55
  1829. that.model.fileUrl = "url";
  1830. that.loadShow = true;
  1831. //处理中,积分机制
  1832. if (
  1833. this.order == 1 &&
  1834. (this.integralMechanism == 1 ||
  1835. (this.integralMechanism == 2 && this.loginUser.userType.value == 2))
  1836. ) {
  1837. let category = this.initSjList.find(
  1838. v => v.id == this.modelData.incident.category.id
  1839. );
  1840. this.$refs.seiminModel.show({
  1841. category,
  1842. type: "handler",
  1843. btns: [
  1844. {
  1845. click: () => {
  1846. this.loadShow = false;
  1847. this.$refs.seiminModel.close();
  1848. }
  1849. },
  1850. {
  1851. click: () => {
  1852. if (!this.$refs.seiminModel.complexity) {
  1853. this.$createDialog({
  1854. type: "alert",
  1855. title: "操作失败",
  1856. content: "请选择工时!",
  1857. icon: "cubeic-wrong"
  1858. }).show();
  1859. return;
  1860. }
  1861. console.log(this.$refs.seiminModel);
  1862. if (
  1863. this.$refs.seiminModel.complexitySource !=
  1864. this.$refs.seiminModel.complexity &&
  1865. !this.$refs.seiminModel.updateReason.trim()
  1866. ) {
  1867. this.$createDialog({
  1868. type: "alert",
  1869. title: "操作失败",
  1870. content: "请填写升级原因!",
  1871. icon: "cubeic-wrong"
  1872. }).show();
  1873. return;
  1874. }
  1875. this.$http
  1876. .post("service/common/common/getDictionary", {
  1877. key: "incident_integral_state",
  1878. type: "list"
  1879. })
  1880. .then(result => {
  1881. result = result.data;
  1882. // let auditState =
  1883. // this.$refs.seiminModel.complexitySource ==
  1884. // this.$refs.seiminModel.complexity
  1885. // ? result.find(v => v.value == 1)
  1886. // : result.find(v => v.value == 0);
  1887. let auditState = result.find(v => v.value == 0);
  1888. let postData = {
  1889. incidentIntegral: {
  1890. incidentId: this.modelData.incident.id,
  1891. auditState: auditState,
  1892. handlerUser: this.loginUser.id,
  1893. handlerUserName: this.loginUser.name,
  1894. sourceScore: this.$refs.seiminModel.complexitySource,
  1895. currentScore: this.$refs.seiminModel.complexity,
  1896. updateReason:
  1897. this.$refs.seiminModel.updateReason.trim() ||
  1898. undefined
  1899. }
  1900. };
  1901. this.$http
  1902. .post(
  1903. "service/bpm/data/addData/incidentIntegral",
  1904. postData
  1905. )
  1906. .then(result1 => {
  1907. if (result1.data.status == 200) {
  1908. this.$refs.seiminModel.close();
  1909. this.handlerFn();
  1910. } else {
  1911. this.$createDialog({
  1912. type: "alert",
  1913. title: "系统错误,请稍后再试!",
  1914. content: "",
  1915. icon: "cubeic-wrong"
  1916. }).show();
  1917. }
  1918. });
  1919. });
  1920. }
  1921. }
  1922. ]
  1923. });
  1924. } else {
  1925. this.handlerFn();
  1926. }
  1927. event.preventDefault();
  1928. },
  1929. validateHandler(result) {
  1930. // console.log(result);
  1931. this.validity = result.validity;
  1932. this.valid = result.valid;
  1933. // if (this.vali == true) {
  1934. // $("#fade").fadeIn();
  1935. // this.promptingConent = "提交失败,请填写必填信息!";
  1936. // this.promptingStatus = false;
  1937. // setTimeout(function() {
  1938. // $("#fade").fadeOut();
  1939. // }, 2000);
  1940. // }
  1941. // this.vali = false;
  1942. },
  1943. dateSelectHandler(selectedVal) {
  1944. this.model.dateValue = new Date(
  1945. selectedVal[0],
  1946. selectedVal[1] - 1,
  1947. selectedVal[2]
  1948. ).toDateString();
  1949. },
  1950. filesAdded(files) {
  1951. let hasIgnore = false;
  1952. const maxSize = 1000 * 1024 * 1024; // 1M
  1953. for (let k in files) {
  1954. const file = files[k];
  1955. if (file.size > maxSize) {
  1956. file.ignore = true;
  1957. hasIgnore = true;
  1958. }
  1959. }
  1960. hasIgnore &&
  1961. this.$createToast({
  1962. type: "warn",
  1963. time: 1000,
  1964. txt: "不能上传超过100M的文件"
  1965. }).show();
  1966. // 暂停上传
  1967. this.$refs.upload.pause();
  1968. },
  1969. fileSubmitted(files) {
  1970. this.action.data = { fileName: files.name };
  1971. }
  1972. },
  1973. created() {
  1974. this.processInstanceId = this.$route.params.data
  1975. ? this.$route.params.data.processInstanceId
  1976. : JSON.parse(localStorage.getItem("modelData")).incident
  1977. .processInstanceId;
  1978. this.id = this.$route.params.data
  1979. ? this.$route.params.data.id
  1980. : JSON.parse(localStorage.getItem("modelData")).incident.id;
  1981. this.action.target += this.processInstanceId;
  1982. this.getParamsData();
  1983. this.getHcs();
  1984. this.getImgs();
  1985. // 处理方式
  1986. this.getHandleCategory();
  1987. // 关闭代码
  1988. this.getClosecode();
  1989. // 升级对象
  1990. this.getUpUser();
  1991. // 指派对象
  1992. this.getZpUser();
  1993. // 获取转派方式
  1994. this.fields[17].props.options = [{text:'科室内转派',value:1},{text:'跨科室转派',value:2}];
  1995. this.model.transferMode = 1;
  1996. this.getRotateUser(this.model.transferMode);
  1997. // 转派对象
  1998. // this.getRotateUser();
  1999. // 协同人员
  2000. // this.getSynerUser();
  2001. // 获取页面数据
  2002. // this.getMessage();
  2003. // 故障现象
  2004. // this.getIncidentcategory();
  2005. },
  2006. mounted() {
  2007. console.log(this.modelData, this.model, 999);
  2008. // 获取区域列表
  2009. // this.getAreaList().then(res=>{
  2010. // if(this.modelData.incident.place){
  2011. // // 获取地点列表
  2012. // this.getPlaceList(this.modelData.incident.place.area.id)
  2013. // .then(res1=>{
  2014. // this.selectedAreaId = this.modelData.incident.place.area.id;
  2015. // this.selectedAreaName = this.modelData.incident.place.area.area;
  2016. // this.model.selectArea = this.modelData.incident.place.area.id;
  2017. // this.selectedPlaceId = this.modelData.incident.place.id;
  2018. // this.selectedPlaceName = this.modelData.incident.place.place;
  2019. // this.model.selectPlace = this.modelData.incident.place.id;
  2020. // });
  2021. // }
  2022. // })
  2023. },
  2024. components: {
  2025. seiminModel,
  2026. CubePage,
  2027. CubeButtonGroup,
  2028. DatePicker,
  2029. // JsonView
  2030. CubeExtendPopup,
  2031. LoadIng,
  2032. PrompTing,
  2033. EventInformation
  2034. // HandlerLog
  2035. }
  2036. };
  2037. </script>
  2038. <style>
  2039. .hcList {
  2040. display: flex;
  2041. align-items: center;
  2042. margin-top: 0.1rem;
  2043. }
  2044. .hcItem {
  2045. flex: 4;
  2046. margin: 0 0.05rem;
  2047. }
  2048. .hcItemClose {
  2049. flex: 1;
  2050. font-size: 0.4rem;
  2051. }
  2052. .addHc {
  2053. width: 90%;
  2054. height: 1rem;
  2055. margin: 0 auto;
  2056. border: 0.02rem solid #ccc;
  2057. display: flex;
  2058. justify-content: center;
  2059. align-items: center;
  2060. }
  2061. .addHc .cubeic-add {
  2062. font-size: 0.8rem;
  2063. }
  2064. .newIncident .cube-form-group {
  2065. border-bottom: 0.02rem solid rgb(245, 245, 245);
  2066. }
  2067. .newIncident .sub .cube-btn {
  2068. margin-top: 1.1rem;
  2069. }
  2070. .btn_plcaeholde .cube-btn {
  2071. padding-left: 0;
  2072. padding-right: 0;
  2073. text-align: left;
  2074. color: inherit;
  2075. background: none;
  2076. border: none;
  2077. }
  2078. .btn_plcaeholde .cube-btn:active {
  2079. background-color: #fff;
  2080. }
  2081. .btn_plcaeholde .cube-btn::after {
  2082. content: ">";
  2083. float: right;
  2084. margin-right: 0.15rem;
  2085. }
  2086. .cube-form_standard .cube-upload-def .cube-upload-btn,
  2087. .cube-form_standard .cube-upload-def .cube-upload-file {
  2088. margin-left: 3% !important;
  2089. }
  2090. .sub .cube-btn {
  2091. background-color: #005395 !important;
  2092. width: 90%;
  2093. margin: 0 auto;
  2094. border-radius: 8px;
  2095. }
  2096. .cube-picker-wheel-item {
  2097. text-overflow: ellipsis;
  2098. }
  2099. </style>
  2100. <style lang="less" scoped>
  2101. .header {
  2102. width: 100%;
  2103. height: 0.88rem;
  2104. line-height: 0.88rem;
  2105. text-align: center;
  2106. color: #fff;
  2107. font-size: 0.37rem;
  2108. background: linear-gradient(#2e2f32, #414246);
  2109. position: fixed;
  2110. top: 0;
  2111. z-index: 6;
  2112. }
  2113. .incidentTitle {
  2114. .titleRefer {
  2115. display: flex;
  2116. align-items: center;
  2117. justify-content: space-between;
  2118. .titleTxtArea {
  2119. font-size: 0.3rem;
  2120. color: #333;
  2121. height: 2rem;
  2122. width: 62%;
  2123. &:focus {
  2124. outline: none;
  2125. }
  2126. }
  2127. .abtn {
  2128. display: inline-block;
  2129. width: 37%;
  2130. text-align: center;
  2131. height: 0.48rem;
  2132. color: #005395;
  2133. font-size: 0.28rem;
  2134. }
  2135. }
  2136. }
  2137. .form-custom {
  2138. .cube-form-item {
  2139. .cube-btn {
  2140. padding-left: 0;
  2141. padding-right: 0;
  2142. text-align: left;
  2143. color: inherit;
  2144. background: none;
  2145. border: none;
  2146. }
  2147. }
  2148. }
  2149. .label {
  2150. background-color: rgb(238, 238, 238);
  2151. height: 0.6rem;
  2152. line-height: 0.6rem;
  2153. padding-left: 0.2rem;
  2154. font-size: 0.24rem;
  2155. color: #666666;
  2156. span {
  2157. font-size: 0.2rem;
  2158. display: inline-block;
  2159. margin-left: 0.08rem;
  2160. color: #999999;
  2161. }
  2162. &.formLabel {
  2163. background-color: #fff;
  2164. }
  2165. }
  2166. .zhidu {
  2167. display: flex;
  2168. height: 0.7rem;
  2169. line-height: 0.7rem;
  2170. border-bottom: 0.02rem solid rgb(245, 245, 245);
  2171. div:nth-child(1) {
  2172. width: 27.5%;
  2173. padding-left: 6%;
  2174. }
  2175. }
  2176. .bgColor {
  2177. background-color: white;
  2178. &.newIncident {
  2179. padding-top: 1.84rem;
  2180. }
  2181. }
  2182. .uplod {
  2183. padding: 0 0.24rem;
  2184. border-bottom: 0.02rem solid rgb(245, 245, 245);
  2185. }
  2186. .handleRadio {
  2187. border-bottom: 0.02rem solid rgb(245, 245, 245);
  2188. }
  2189. .synerBox {
  2190. height: 3rem;
  2191. overflow: scroll;
  2192. }
  2193. i.iconfont.blue {
  2194. color: #005395;
  2195. // &::after {
  2196. // content: "";
  2197. // width: 0.01rem;
  2198. // height: 0.4rem;
  2199. // background: #005395;
  2200. // position: relative;
  2201. // display: block;
  2202. // left: 0.14rem;
  2203. // }
  2204. }
  2205. .againAssign {
  2206. .header {
  2207. width: 100%;
  2208. height: 0.88rem;
  2209. line-height: 0.88rem;
  2210. text-align: center;
  2211. color: #fff;
  2212. font-size: 0.37rem;
  2213. background: linear-gradient(#2e2f32, #414246);
  2214. position: fixed;
  2215. top: 0;
  2216. z-index: 6;
  2217. }
  2218. .navBar {
  2219. width: 100%;
  2220. height: 0.96rem;
  2221. line-height: 0.96rem;
  2222. background-color: #fafafa;
  2223. font-size: 0.28rem;
  2224. position: fixed;
  2225. top: 0.88rem;
  2226. z-index: 9;
  2227. div {
  2228. width: 33.33%;
  2229. text-align: center;
  2230. &.p50 {
  2231. width: 49.99%;
  2232. }
  2233. a {
  2234. display: inline-block;
  2235. height: 0.9rem;
  2236. width: 1.7rem;
  2237. padding: 0 0.1rem;
  2238. &.active {
  2239. color: #005395;
  2240. border-bottom: 0.06rem solid #005395;
  2241. }
  2242. }
  2243. }
  2244. }
  2245. .headtop {
  2246. margin-top: 1.84rem;
  2247. }
  2248. .label {
  2249. background-color: #eeeeee;
  2250. height: 0.6rem;
  2251. line-height: 0.58rem;
  2252. padding-left: 0.2rem;
  2253. font-size: 0.24rem;
  2254. color: #666666;
  2255. span {
  2256. font-size: 0.2rem;
  2257. display: inline-block;
  2258. margin-left: 0.08rem;
  2259. color: #999999;
  2260. }
  2261. &.formLabel {
  2262. background-color: #fff;
  2263. }
  2264. }
  2265. .conentBox {
  2266. width: 100%;
  2267. .conent {
  2268. font-size: 0.32rem;
  2269. font-weight: 400;
  2270. line-height: 0.45rem;
  2271. // border-bottom: 0.16rem solid #e5e5e5;
  2272. .shows {
  2273. display: none;
  2274. }
  2275. .boeder_B {
  2276. border-bottom: 0.01rem solid #ccc;
  2277. }
  2278. p {
  2279. &.desc {
  2280. overflow: hidden;
  2281. }
  2282. .grayFont {
  2283. width: 75%;
  2284. text-align: right;
  2285. overflow-x: scroll;
  2286. }
  2287. }
  2288. .bottom {
  2289. overflow: hidden;
  2290. line-height: 0.86rem;
  2291. border-bottom: 0.01rem solid #e6e6e6;
  2292. font-size: 0.24rem;
  2293. color: #999;
  2294. padding: 0 0.24rem 0 0.48rem;
  2295. }
  2296. .info {
  2297. color: #999;
  2298. font-size: 0.28rem;
  2299. overflow: hidden;
  2300. .head {
  2301. border-bottom: 0.01rem solid #e6e6e6;
  2302. p {
  2303. padding: 0.24rem 0.3rem;
  2304. i {
  2305. color: #00559d;
  2306. }
  2307. }
  2308. }
  2309. p {
  2310. line-height: 0.4rem;
  2311. padding: 0.1rem 0.24rem;
  2312. overflow: hidden;
  2313. .overflowEllipsis2 {
  2314. margin-left: 1.96rem;
  2315. }
  2316. }
  2317. .info_hide {
  2318. padding: 0.2rem 0.24rem;
  2319. border-bottom: 0.01rem solid #e6e6e6;
  2320. .hide {
  2321. color: #00559d;
  2322. }
  2323. }
  2324. .imgs-container {
  2325. a {
  2326. color: #03c !important;
  2327. &:visited {
  2328. color: #551a8b !important;
  2329. }
  2330. }
  2331. img {
  2332. width: 1.5rem;
  2333. height: 1.5rem;
  2334. margin-right: 0.7rem;
  2335. &:nth-child(1) {
  2336. margin-left: 0.75rem;
  2337. }
  2338. }
  2339. }
  2340. .progress {
  2341. padding: 0.2rem 0.2rem;
  2342. overflow: hidden;
  2343. transition-duration: 0.2s;
  2344. transition-timing-function: linear;
  2345. &.progressHide {
  2346. height: 1.7rem;
  2347. }
  2348. .progress_info {
  2349. overflow: hidden;
  2350. margin-bottom: 0.1rem;
  2351. &:nth-last-child(1) {
  2352. .cont {
  2353. border: none !important;
  2354. }
  2355. }
  2356. .progress_info_L {
  2357. float: left;
  2358. color: #333;
  2359. max-width: 18%;
  2360. }
  2361. .progress_info_R {
  2362. float: right;
  2363. margin-left: 0.09rem;
  2364. width: 80%;
  2365. font-size: 0.25rem;
  2366. .time {
  2367. i {
  2368. margin-left: -0.15rem;
  2369. &.icon-icon_weizuo {
  2370. color: #005495;
  2371. }
  2372. &.icon-icon_zhengzaijinx {
  2373. color: #48a843;
  2374. font-size: 0.37rem;
  2375. }
  2376. }
  2377. span {
  2378. margin-left: 0.15rem;
  2379. }
  2380. }
  2381. .cont {
  2382. border-left: 1px solid #999;
  2383. padding-left: 0.4rem;
  2384. min-height: 0.4rem;
  2385. &.blue {
  2386. border-left: 1px solid #005395;
  2387. }
  2388. }
  2389. .text1 {
  2390. font-size: 0.15rem;
  2391. }
  2392. .text2 {
  2393. color: #666;
  2394. word-break: break-all;
  2395. }
  2396. p {
  2397. padding: 0;
  2398. }
  2399. }
  2400. }
  2401. }
  2402. }
  2403. .txtLabel {
  2404. width: 100%;
  2405. overflow: hidden;
  2406. padding: 0.32rem 0.24rem 0.32rem 0.32rem;
  2407. .txt {
  2408. width: 30%;
  2409. color: #666;
  2410. }
  2411. .cube-textarea-wrapper {
  2412. width: 62%;
  2413. }
  2414. }
  2415. .sub {
  2416. background: #ececec;
  2417. .cube-btn {
  2418. background-color: #005395 !important;
  2419. width: 90%;
  2420. margin: 0.2rem auto;
  2421. border-radius: 8px;
  2422. }
  2423. }
  2424. }
  2425. }
  2426. .showwrap {
  2427. width: 75%;
  2428. text-align: right;
  2429. }
  2430. }
  2431. </style>