processing.vue 68 KB

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