mainPointsDetail.vue 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732
  1. <template>
  2. <view class="mainPointsDetailPage">
  3. <tm-modal v-if="showSelectModal" @click="clickModalhandle">
  4. <view class="checkItemResultModal">
  5. <view class="modalContent">
  6. <view class="modalBar">请选择查核结果</view>
  7. <scroll-view v-if="data.checkModelName != '访谈'" class="scroll" scroll-y="true">
  8. <view v-for="item in checkItemResultList"
  9. :class="[checkedSelectResultListIds.includes(item.id)?'list on':'list']" :key="item.id"
  10. @click.stop="selectResultHandle(item)">
  11. <image class="checkIcon"
  12. :src="`../../static/${!moreDeduction?'check-radio.png':'check-checkbox.png'}`" mode="">
  13. </image>
  14. {{item.resultName}}
  15. </view>
  16. </scroll-view>
  17. <scroll-view v-if="data.checkModelName == '访谈'" class="scroll" scroll-y="true">
  18. <view v-for="item in checkItemResultList"
  19. :class="[checkedSelectResultListIds[currentEditTextAreaIndex]&&checkedSelectResultListIds[currentEditTextAreaIndex].includes(item.id)?'list on':'list']"
  20. :key="item.id" @click.stop="selectResultHandle(item)">
  21. <image class="checkIcon"
  22. :src="`../../static/${!moreDeduction?'check-radio.png':'check-checkbox.png'}`" mode="">
  23. </image>
  24. {{item.resultName}}
  25. </view>
  26. </scroll-view>
  27. <view class="comfirmBtn" @click="commitSelectResult">确定</view>
  28. </view>
  29. </view>
  30. </tm-modal>
  31. <scroll-view scroll-y="true" class="scroll-y">
  32. <view class="checkItem">
  33. <view class="chBg">
  34. <image src="../../static/chahexiang-bg.png" mode="" class="img"></image>
  35. <text class="title">查核项</text>
  36. </view>
  37. <image src="../../static/tuli.png" mode="" class="tlImg" @click="toTuLi"></image>
  38. <view class="chContent">
  39. <view class="checkItemName">{{ data.checkItemName ? data.checkItemName : "" }}</view>
  40. <view class="checkPointName">{{ data.checkPointName ? data.checkPointName : "" }}</view>
  41. <view class="cont">
  42. <view class="floatLeft other">
  43. <view class="letterTitle2">{{ data.deptName ? data.deptName : "" }}</view>
  44. <view class="letterTitle">查核单位</view>
  45. </view>
  46. <view class="floatLeft borderLine"></view>
  47. <view class="floatLeft other">
  48. <view class="letterTitle2">{{ data.checkModelName ? data.checkModelName : "" }}</view>
  49. <view class="letterTitle">查核方式</view>
  50. </view>
  51. <view class="floatLeft borderLine"></view>
  52. <view class="floatLeft other">
  53. <view class="letterTitle2">{{ data.lastResult ? data.lastResult : "" }}</view>
  54. <view class="letterTitle">上次结果</view>
  55. </view>
  56. <view class="floatLeft borderLine"></view>
  57. <view class="floatLeft other">
  58. <view class="letterTitle2">{{ data.checkResult ? data.checkResult : "" }}</view>
  59. <view class="letterTitle">本次结果</view>
  60. </view>
  61. </view>
  62. <view class="checked">
  63. <view class="checked-checkItem" v-for="item in checkConfiglist" :key="item.attr"
  64. @click="checkedOne(item)" :style="
  65. Index == item.attr
  66. ? { backgroundColor: '#3377FF', color: '#fff' }
  67. : { backgroundColor: '#EBEFF7' }
  68. ">{{item.attr}}
  69. <view v-if="lastIndex == item.attr">
  70. <image src="../../static/shangci.png" mode="" class="img"></image>
  71. <text class="lastName">上次</text>
  72. </view>
  73. </view>
  74. </view>
  75. <view class="more" @click="toHistory">
  76. <text>查看改善历史</text>
  77. <view class="moreImg">
  78. <image src="../../static/blue-arrow.png" mode="" class="moreImg2"></image>
  79. </view>
  80. </view>
  81. <view class="multipleResponsible">
  82. <view class="inner" @click="toSelectResponsible">
  83. <text class="label">当事人</text>
  84. <input type="text" disabled v-model="checkedResponsibleList.join(',')"
  85. placeholder="请选择当事人(可多选)" class="value" placeholder-class="valuePlaceholder" />
  86. <image class="arrow" src="../../static/incon-more.png" mode=""></image>
  87. </view>
  88. </view>
  89. <view class="score">
  90. <view class="box">
  91. <text class="lable">总分</text>
  92. <text class="totalScore">{{totalScore}}</text>
  93. </view>
  94. <view class="box">
  95. <text class="lable">本次得分</text>
  96. <text class="currentScore">{{currentScore>0?currentScore:0}}</text>
  97. </view>
  98. </view>
  99. <view class="inputScore">
  100. <text class="label">本项扣分</text>
  101. <view class="textValue" v-if="!ifInputScore" @click='changeToInputScore'>{{deductPoint}}</view>
  102. <input class="value" v-if="ifInputScore" @input="onInputScore" focus='true' auto-blur='true'
  103. @blur='inputOnBlur' type="number" v-model="inputScore" placeholder-class="placeholder" />
  104. </view>
  105. </view>
  106. </view>
  107. <view v-if="data.checkModelName == '访谈'" class="talk">
  108. <view v-for="(item, i) in talkList">
  109. <view class="talkTitle">
  110. <text>访谈内容{{ i + 1 }}{{ i == 0 ? "" : "(访谈人员:护士、医生)" }}</text>
  111. <text v-if="i != 0" class="del" @click="del(i)">删除</text>
  112. </view>
  113. <view>
  114. <view class="talkResult">
  115. <view class="seeResultFloorOne">
  116. <text class="seeName">查核结果</text>
  117. <view class="plusAction" v-if="checkItemResultList.length>0"
  118. @click="openSelectModal(i)">
  119. <image class="plusIcon" src="../../static/icon-add.png" mode=""></image>
  120. <text class="threePoint">缺陷</text>
  121. </view>
  122. </view>
  123. <text class="clear" @click="clearResult(true,i)">清空</text>
  124. <textarea maxlength="300" class="seeTextarea" value="" placeholder="请输入"
  125. v-model="item.talkResult" @blur="changeTextarea($event, i)"></textarea>
  126. </view>
  127. <view class="talkImg" @click="imgClick(i)">
  128. <tm-upload-img label="上传图片" :filePaths="item.filePath" :isMultiple="true" :pickIndex="i"
  129. @changeFilePaths="changeFilePaths2" />
  130. </view>
  131. </view>
  132. </view>
  133. </view>
  134. <view v-else class="see">
  135. <view class="seeResult">
  136. <view class="seeResultFloorOne">
  137. <text class="seeName">查核结果</text>
  138. <view class="plusAction" v-if="checkItemResultList.length>0" @click="openSelectModal">
  139. <image class="plusIcon" src="../../static/icon-add.png" mode=""></image>
  140. <text class="threePoint">缺陷</text>
  141. </view>
  142. </view>
  143. <text class="clear" @click="clearResult(false)">清空</text>
  144. <textarea maxlength="300" class="seeTextarea" placeholder="请输入" v-model="recordList[0].seeResult"
  145. @blur="changeTextarea2"></textarea>
  146. </view>
  147. <view class="seeImg">
  148. <tm-upload-img label="上传图片" :filePaths="filePath" :isMultiple="true"
  149. @changeFilePaths="changeFilePaths" />
  150. </view>
  151. </view>
  152. <button class="insert" @click="insert" v-if="data.checkModelName == '访谈'">
  153. + 增加一条记录
  154. </button>
  155. </scroll-view>
  156. <!-- <button type="primary" class="sureDetail" @click="sureDetail" v-if="data.display?data.display:false">完成</button> -->
  157. <view class="bottomMenuGroup">
  158. <view class="menuBtn" @click="goToPrevPage">
  159. <image class="threeLineMenuIcon" src="/static/threeLineMenu.png"></image>
  160. </view>
  161. <view class="prevBtn" @click="switchItem(1)">下一项</view>
  162. <view class="nextBtn" @click="sureDetail('back')" v-if="data.display?data.display:false">完成</view>
  163. </view>
  164. </view>
  165. </template>
  166. <script>
  167. import {
  168. _goBackFresh
  169. } from '../../utils/compatible.js';
  170. import situationPreviewVue from '../creatingSituations/components/situationPreview.vue';
  171. export default {
  172. data() {
  173. return {
  174. value: '',
  175. showSelectModal: false,
  176. data: {}, //详情数据
  177. lastIndex: null, //上次选中的结果
  178. Index: null, //点击修改本次选中样式
  179. filePath: [],
  180. recordList: [{
  181. seeResult: "",
  182. filePath: []
  183. }],
  184. talkLength: 1,
  185. talkList: [{
  186. talkResult: "",
  187. filePath: []
  188. }],
  189. editIndex: null,
  190. resultConfigList: [],
  191. id: "",
  192. checkPointId: "",
  193. itemBelongGroup: [],
  194. itemId: '',
  195. currentEditTextAreaIndex: -1, //当前编辑的查核结果下标
  196. checkItemResultList: [], //查核结果说明下拉列表
  197. checkedSelectResultList: [], //下拉结果选中集合
  198. checkedSelectResultListIds: [],
  199. currentSelect: '',
  200. checkItemScore: null, //查核选中的分数
  201. checkItemValue: null, //查核选中的分数占比
  202. checkConfiglist: [], //查核情况可配置列表
  203. totalScore: 0, //总分
  204. currentScore: 0, //当前得分
  205. inputScore: null, //手动填写分值
  206. selectedScore: 0, //缺失项分值
  207. checkedResponsibleList: [],
  208. deptId: '', //病区id
  209. checkedResponsibleData: [],
  210. checkedSelectResultListData: [],
  211. multiSelectScore: [],
  212. deductPoint: 0, //本次扣分
  213. currentCheckedTab: null, //当前选中的查核tab
  214. moreDeduction: false, //缺陷项是否多选
  215. ifInputScore: false, //是否手动干预分值
  216. iOrder:1, //查核项明细中,下一步顺序是否按要点结束,1:按要点结束;2:按顺序结束
  217. situationType:0,
  218. };
  219. },
  220. created() {
  221. this.nowPermission = uni.getStorageSync('nowPermission');
  222. },
  223. onShow() {
  224. const {
  225. responsibleList
  226. } = this.$store.state;
  227. this.checkedResponsibleData = responsibleList.checkedResponsibleList;
  228. this.checkedResponsibleList = responsibleList.checkedResponsibleList.map(item => item.main);
  229. },
  230. computed: {},
  231. watch: {
  232. checkedResponsibleList: function() {
  233. const {
  234. responsibleList
  235. } = this.$store.state;
  236. return responsibleList.checkedResponsibleList.map(item => item.main);
  237. },
  238. checkedResponsibleData() {
  239. const {
  240. responsibleList
  241. } = this.$store.state;
  242. return responsibleList.checkedResponsibleList;
  243. },
  244. selectedScore: function(newVal, oldVal) {
  245. this.scoreCounter()
  246. },
  247. checkItemScore: function(newVal) {
  248. this.scoreCounter()
  249. },
  250. deductPoint: function(newVal, oldVal) {
  251. this.currentScore = this.totalScore - newVal
  252. }
  253. },
  254. mounted() {
  255. this.checkTaskDetail(this.id);
  256. this.getPeizhiList();
  257. },
  258. onBackPress() {
  259. this.$store.commit('checkMainPoints/comChangeState', { //刷新前一页数据
  260. key: 'ifReloadPageData',
  261. data: true
  262. });
  263. },
  264. methods: {
  265. scoreCounter() {
  266. if (this.checkItemValue == -1) {
  267. //清空分数
  268. this.deductPoint = 0;
  269. return
  270. }
  271. if (this.inputScore) {
  272. this.deductPoint = Number(this.inputScore) + this.selectedScore
  273. } else {
  274. this.deductPoint = this.selectedScore + this.checkItemValue
  275. }
  276. },
  277. changeToInputScore() {
  278. this.ifInputScore = true;
  279. },
  280. inputOnBlur() {
  281. this.ifInputScore = false;
  282. // this.inputScore = null;
  283. },
  284. onInputScore(e) {
  285. this.deductPoint = e.target.value;
  286. },
  287. //查核结果清空操作
  288. clearResult(ifMulti, index) {
  289. if (ifMulti) {
  290. //多个查核结果组件时
  291. this.talkList[index].talkResult = '';
  292. if (this.multiSelectScore[index]) {
  293. this.selectedScore = this.selectedScore - this.multiSelectScore[index];
  294. }
  295. this.checkedSelectResultListIds.splice(index, 1, []);
  296. this.checkedSelectResultList.splice(index, 1, []);
  297. this.checkedSelectResultListData.splice(index, 1, []);
  298. this.multiSelectScore[index] = 0;
  299. this.currentEditTextAreaIndex = -1;
  300. } else {
  301. this.recordList[0].seeResult = '';
  302. this.checkedSelectResultListIds = [];
  303. this.checkedSelectResultList = [];
  304. this.checkedSelectResultListData = [];
  305. this.selectedScore = 0;
  306. }
  307. },
  308. clickModalhandle() {
  309. this.showSelectModal = false;
  310. this.currentEditTextAreaIndex = -1;
  311. },
  312. openSelectModal(index) {
  313. if (index >= 0) {
  314. this.currentEditTextAreaIndex = index;
  315. }
  316. this.showSelectModal = true;
  317. },
  318. //跳转选择当事人
  319. toSelectResponsible() {
  320. uni.navigateTo({
  321. url: `/pages/responsibleList/responsibleList?deptId=${this.deptId}&checkId=${this.id}`,
  322. });
  323. },
  324. selectResultHandle(item) {
  325. if (this.data.checkModelName == '访谈') {
  326. const currentIndex = this.currentEditTextAreaIndex;
  327. if (!this.moreDeduction) {
  328. //缺陷项单选
  329. this.checkedSelectResultListIds.splice(currentIndex, 1, [item.id]);
  330. this.checkedSelectResultList.splice(currentIndex, 1, [item.resultName]);
  331. this.checkedSelectResultListData.splice(currentIndex, 1, [item]);
  332. return;
  333. }
  334. if (this.checkedSelectResultListIds[currentIndex] && this.checkedSelectResultListIds[currentIndex]
  335. .includes(item.id)) {
  336. const tempIdsArr = JSON.parse(JSON.stringify(this.checkedSelectResultListIds[currentIndex]));
  337. const tempArr = JSON.parse(JSON.stringify(this.checkedSelectResultList[currentIndex]));
  338. const tempArrData = JSON.parse(JSON.stringify(this.checkedSelectResultListData[currentIndex]));
  339. tempIdsArr.splice(tempIdsArr.indexOf(item.id), 1);
  340. tempArr.splice(tempArr.indexOf(item.resultName), 1);
  341. tempArrData.splice(tempArrData.indexOf(item.id), 1);
  342. this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
  343. this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
  344. this.checkedSelectResultListData.splice(currentIndex, 1, tempArrData);
  345. } else {
  346. if (!Array.isArray(this.checkedSelectResultListIds[currentIndex])) this.checkedSelectResultListIds[
  347. currentIndex] = [];
  348. if (!Array.isArray(this.checkedSelectResultList[currentIndex])) this.checkedSelectResultList[
  349. currentIndex] = [];
  350. if (!Array.isArray(this.checkedSelectResultListData[currentIndex])) this
  351. .checkedSelectResultListData[currentIndex] = [];
  352. const tempIdsArr = this.checkedSelectResultListIds[currentIndex].concat([item.id]);
  353. const tempArr = this.checkedSelectResultList[currentIndex].concat([item.resultName]);
  354. const tempArrData = this.checkedSelectResultListData[currentIndex].concat([item]);
  355. this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
  356. this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
  357. this.checkedSelectResultListData.splice(currentIndex, 1, tempArrData);
  358. }
  359. } else {
  360. if (!this.moreDeduction) {
  361. //缺陷项单选
  362. this.checkedSelectResultListIds = [item.id];
  363. this.checkedSelectResultList = [item.resultName];
  364. this.checkedSelectResultListData = [item];
  365. return;
  366. }
  367. // 缺陷项多选
  368. if (this.checkedSelectResultListIds.includes(item.id)) {
  369. const tempIdsArr = this.checkedSelectResultListIds;
  370. const tempArr = this.checkedSelectResultList;
  371. const tempArrData = this.checkedSelectResultListData;
  372. tempIdsArr.splice(tempIdsArr.indexOf(item.id), 1);
  373. tempArr.splice(tempArr.indexOf(item.resultName), 1);
  374. tempArrData.splice(tempArrData.findIndex(t => t.id == item.id), 1);
  375. this.checkedSelectResultListIds = tempIdsArr;
  376. this.checkedSelectResultList = tempArr;
  377. this.checkedSelectResultListData = tempArrData;
  378. } else {
  379. this.checkedSelectResultListIds.push(item.id);
  380. this.checkedSelectResultList.push(item.resultName);
  381. this.checkedSelectResultListData.push(item);
  382. }
  383. }
  384. },
  385. commitSelectResult() {
  386. const _commitFunc = () => {
  387. if (this.data.checkModelName == '访谈') {
  388. const tempArr = this.checkedSelectResultListData[this.currentEditTextAreaIndex].map(item =>
  389. item.percentScore);
  390. const tempScore = tempArr.reduce((prev, cur) => {
  391. return prev + cur;
  392. }, 0);
  393. this.talkList[this.currentEditTextAreaIndex].talkResult = this.checkedSelectResultList[this
  394. .currentEditTextAreaIndex].join(',');
  395. this.multiSelectScore[this.currentEditTextAreaIndex] = tempScore;
  396. this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
  397. } else {
  398. const tempArr = this.checkedSelectResultListData.map(item => item.percentScore);
  399. const tempScore = tempArr.reduce((prev, cur) => {
  400. return prev + cur;
  401. }, 0);
  402. this.recordList[0].seeResult = this.checkedSelectResultList.join(',');
  403. this.selectedScore = tempScore;
  404. }
  405. }
  406. _commitFunc();
  407. this.showSelectModal = false;
  408. },
  409. checkTaskDetail(id) {
  410. this.$store.dispatch({
  411. type: "mainPointsDetail/commActions",
  412. payload: {
  413. key: this.isZichaDucha ? "zichaduchaCheckTaskDetail" : "checkTaskDetail",
  414. data: {
  415. id: id,
  416. },
  417. },
  418. }).then((res) => {
  419. uni.$once('未在查核规定时间内', function(data) {
  420. uni.navigateBack();
  421. });
  422. this.id = id;
  423. this.deptId = res.deptId;
  424. //再次编辑回显
  425. const filePath = res.checkResultTxt ? JSON.parse(res.checkResultTxt) : [];
  426. this.filePath = filePath[0] && filePath[0].checkResultUrl != '' ? filePath[0].checkResultUrl
  427. .split(',') : [];
  428. this.Index = res.checkResult;
  429. this.totalScore = res.totalScore;
  430. this.currentScore = res.checkResult?res.score:res.totalScore;
  431. this.deductPoint = res.deductPoint;
  432. this.moreDeduction = res.moreDeduction;
  433. //this.iOrder=res.checkOrder;
  434. if (res.checkResultRequestList && res.checkResultRequestList.length > 0) {
  435. if (res.checkModelName == '访谈') {
  436. this.talkList = res.checkResultRequestList.map((item, currentIndex) => {
  437. const arr = item.checkResultDescribe.split(',');
  438. const tempResult = this.checkItemResultList.filter(v => arr.includes(v
  439. .resultName));
  440. if (!Array.isArray(this.checkedSelectResultListIds[currentIndex])) this
  441. .checkedSelectResultListIds[currentIndex] = [];
  442. if (!Array.isArray(this.checkedSelectResultList[currentIndex])) this
  443. .checkedSelectResultList[currentIndex] = [];
  444. if (!Array.isArray(this.checkedSelectResultListData[currentIndex])) this
  445. .checkedSelectResultListData[currentIndex] = [];
  446. const tempIdsArr = this.checkedSelectResultListIds[currentIndex].concat(
  447. tempResult.map(item => item.id));
  448. const tempArr = this.checkedSelectResultList[currentIndex].concat(
  449. tempResult.map(item => item.resultName));
  450. this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
  451. this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
  452. this.checkedSelectResultListData.splice(currentIndex, 1, tempResult);
  453. const tempArrFull = this.checkedSelectResultListData[currentIndex].map(
  454. item => item.percentScore);
  455. const tempScore = tempArrFull.reduce((prev, cur) => {
  456. return prev + cur;
  457. }, 0);
  458. this.multiSelectScore[currentIndex] = tempScore;
  459. return {
  460. talkResult: item.checkResultDescribe,
  461. filePath: item.checkResultUrl != '' ? item.checkResultUrl.split(',') :
  462. []
  463. }
  464. });
  465. //设置回显分数
  466. // this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
  467. } else {
  468. let filePath = res.checkResultTxt ? JSON.parse(res.checkResultTxt) : [];
  469. this.filePath = filePath[0] && filePath[0].checkResultUrl != '' ? filePath[0]
  470. .checkResultUrl
  471. .split(',') : [];
  472. if (this.isZichaDucha) {
  473. //自查督查回显图片
  474. this.filePath = res.checkResultRequestList[0].checkResultUrl.length>0?res.checkResultRequestList[0].checkResultUrl.split(','):[];
  475. }
  476. const arr = res.checkResultRequestList[0].checkResultDescribe ? res
  477. .checkResultRequestList[0].checkResultDescribe.split(',') : [];
  478. const tempResult = this.checkItemResultList.filter(v => arr.includes(v.resultName));
  479. const tempIds = tempResult.map(item => item.id);
  480. const scores = tempResult.map(item => item.percentScore);
  481. const tempScore = scores.reduce((prev, cur) => (prev + cur), 0);
  482. this.recordList[0].seeResult = res.checkResultRequestList[0].checkResultDescribe;
  483. this.checkedSelectResultListIds = tempIds;
  484. this.checkedSelectResultList = res.checkResultRequestList[0].checkResultDescribe ? res
  485. .checkResultRequestList[0].checkResultDescribe.split(',') : [];
  486. this.checkedSelectResultListData = tempResult;
  487. }
  488. }
  489. //用于当时人页面回显
  490. if (res.responsibleUserName || res.responseUserName) {
  491. //同时适配自查督查
  492. const tempResponsibleUserName = res.responsibleUserName ? res.responsibleUserName.split(
  493. ',') : res.responseUserName.split(',');
  494. const tempResponsibleUserId = res.responsibleUserId ? res.responsibleUserId.split(',') :
  495. res.responseUserId.split(',');
  496. this.checkedResponsibleList = tempResponsibleUserName;
  497. const arr = tempResponsibleUserName.map((item, index) => ({
  498. main: item,
  499. id: parseInt(tempResponsibleUserId[index])
  500. }));
  501. this.$store.commit('responsibleList/updateCheckedResponsibleList', arr);
  502. } else {
  503. this.checkedResponsibleList = [];
  504. this.$store.commit('responsibleList/updateCheckedResponsibleList', []);
  505. }
  506. if (res) {
  507. console.log({
  508. res
  509. });
  510. this.data = this.isZichaDucha ? {
  511. ...res,
  512. lastResult: res.lastResultName,
  513. checkResult: res.checkResultName
  514. } : res;
  515. console.log('this.data',this.data);
  516. if (res && res.lastResult == "不适用") {
  517. // this.lastIndex = 1;
  518. this.lastIndex = res.lastResult;
  519. } else if (res && res.lastResult == "无缺失") {
  520. this.lastIndex = res.lastResult;
  521. } else if (res && res.lastResult == "主要缺失") {
  522. this.lastIndex = res.lastResult;
  523. } else if (res && res.lastResult == "次要缺失") {
  524. this.lastIndex = res.lastResult;
  525. } else if (res && res.lastResult == "观察事项") {
  526. this.lastIndex = res.lastResult;
  527. } else {
  528. this.lastIndex = 0;
  529. }
  530. }
  531. });
  532. },
  533. getPeizhiList() {
  534. this.$store.dispatch({
  535. type: "configure/commActions",
  536. payload: {
  537. key: "getResultConfig",
  538. },
  539. }).then((res) => {
  540. if (Array.isArray(res)) {
  541. // 接口可能返回同一 code 的多条,这里仅保留每个 code 的第一条(通常是默认配置)
  542. const seen = new Set();
  543. const unique = [];
  544. res.forEach((item) => {
  545. if (!seen.has(item.code)) {
  546. seen.add(item.code);
  547. unique.push(item);
  548. }
  549. });
  550. this.resultConfigList = unique;
  551. } else {
  552. this.resultConfigList = [];
  553. }
  554. });
  555. },
  556. //查核点击回调
  557. checkedOne(data) {
  558. const parsedData = JSON.parse(JSON.stringify(data));
  559. this.currentCheckedTab = data;
  560. this.Index = parsedData.attr;
  561. this.data.checkResult = parsedData.attr;
  562. this.checkItemScore = parsedData.itemGetScore;
  563. this.checkItemValue = parsedData.value;
  564. this.calScore = parsedData.calScore;
  565. if (!this.inputScore) { //没有手输调整过的才可以修改
  566. this.checkItemScore = parsedData.itemGetScore;
  567. }
  568. },
  569. /**
  570. * @param {{
  571. files
  572. index,
  573. }} fileInfo
  574. files:文件集合
  575. index:当前编辑的下标
  576. */
  577. changeFilePaths({
  578. files,
  579. index
  580. }) {
  581. let _recordList = [...this.recordList];
  582. _recordList[index].filePath = files;
  583. this.filePath = _recordList[0].filePath;
  584. },
  585. insert() {
  586. let list = [...this.talkList];
  587. if (list.length < 10) {
  588. list.push({
  589. talkResult: "",
  590. filePath: []
  591. });
  592. this.talkList = list;
  593. }
  594. },
  595. del(index) {
  596. let list = [...this.talkList];
  597. let list2 = [];
  598. //清空该项数据
  599. this.clearResult(true, index);
  600. for (let i = 0; i < list.length; i++) {
  601. if (i != index) {
  602. list2.push(list[i]);
  603. }
  604. }
  605. this.talkList = list2;
  606. },
  607. /**
  608. * @param {{
  609. files
  610. index,
  611. }} fileInfo
  612. files:文件集合
  613. index:当前编辑的下标
  614. */
  615. changeFilePaths2(fileInfo) {
  616. const {
  617. files,
  618. index
  619. } = fileInfo;
  620. for (let j = 0; j < this.talkList.length; j++) {
  621. this.talkList[index].filePath = files;
  622. }
  623. },
  624. changeTextarea(e, i) {
  625. for (let j = 0; j < this.talkList.length; j++) {
  626. this.talkList[i].talkResult = e.detail.value;
  627. }
  628. },
  629. changeTextarea2(e) {
  630. this.recordList[0].seeResult = e.target.value;
  631. },
  632. imgClick(i) {
  633. this.editIndex = i;
  634. },
  635. sureDetail(key) {
  636. console.log('commit check');
  637. return new Promise((resolve) => {
  638. const _commitCheck = () => {
  639. //console.log('checkedResponsibleList',this.checkedResponsibleList,'checkedResponsibleData',this.checkedResponsibleData);
  640. let resultIndex = this.resultConfigList.findIndex(item => item.name == this.data
  641. .checkResult);
  642. try {
  643. if (this.Index) {
  644. let params = !this.isZichaDucha ? {
  645. id: this.data.id,
  646. checkResult: this.data.checkResult,
  647. checkResultRequestList: [],
  648. checkItemScore: this.checkItemScore,
  649. value: this.checkItemValue,
  650. situationType: this.situationType,
  651. calScore: this.calScore,
  652. score: this.currentScore,
  653. deductPoint: this.deductPoint,
  654. } : {
  655. //自查督查保存
  656. id: this.data.id,
  657. responsibleUser: this.checkedResponsibleData.map(item => ({
  658. responsibleUserId: item.id,
  659. responsibleUserName: item.main
  660. })),
  661. checkResult: resultIndex != -1 ? this.resultConfigList[resultIndex]
  662. .code : '',
  663. checkResultRequestList: [],
  664. checkItemScore: this.checkItemScore,
  665. value: this.checkItemValue,
  666. situationType: this.systemSituationType,
  667. calScore: this.calScore,
  668. score: this.currentScore,
  669. deductPoint: this.deductPoint,
  670. };
  671. if (this.data.checkModelName == "访谈") {
  672. let list = [];
  673. for (let i = 0; i < this.talkList.length; i++) {
  674. let path = "";
  675. for (let j = 0; j < this.talkList[i].filePath.length; j++) {
  676. if (j == 0) {
  677. path += `${this.talkList[i].filePath[j]}`;
  678. } else {
  679. path += `,${this.talkList[i].filePath[j]}`;
  680. }
  681. }
  682. let item = {
  683. checkResultId: i,
  684. checkResultDescribe: this.talkList[i].talkResult,
  685. checkResultUrl: path,
  686. };
  687. list.push(item);
  688. }
  689. params.checkResultRequestList = list;
  690. } else {
  691. let item = {
  692. checkResultId: 1,
  693. checkResultDescribe: this.recordList[0].seeResult,
  694. checkResultUrl: this.filePath.join(','),
  695. };
  696. params.checkResultRequestList = [item];
  697. }
  698. const checkConfiglist = JSON.parse(JSON.stringify(this.checkConfiglist));
  699. this.$store.dispatch({
  700. type: "mainPointsDetail/commActions",
  701. payload: {
  702. key: this.isZichaDucha ? "saveZichaduchaCheckTaskDetail" :
  703. "saveCheckTaskDetail",
  704. data: {
  705. ...params,
  706. },
  707. },
  708. }).then((res) => {
  709. if (res) {
  710. resolve(true);
  711. // const resultIndex = this.resultConfigList.findIndex(item => item.name == this.data.checkResult);
  712. // console.log({resultIndex,'this.resultConfigList':this.resultConfigList});
  713. for (let i = 0; i < checkConfiglist.length; i++) {
  714. // 兼容 code 或 name 两种返回,确保能拿到配置
  715. const index = this.resultConfigList.findIndex(item => (item
  716. .code == params.checkResult || item.name == params.checkResult));
  717. let name = '';
  718. if (index != -1) {
  719. name = this.resultConfigList[index].name
  720. }
  721. const resultName = index != -1 ? this.resultConfigList[index].name : params.checkResult;
  722. // if (
  723. // checkConfiglist[i].attr == (this.isZichaDucha ? name :
  724. // params.checkResult) &&
  725. // (checkConfiglist[i].resultType == 2 ||
  726. // checkConfiglist[i].resultType == 3)
  727. // )
  728. let configResultType=false;
  729. const currentResultType = index != -1 ? this.resultConfigList[index].resultType : undefined;
  730. if (currentResultType==2||currentResultType==3)
  731. configResultType=true;
  732. if (
  733. checkConfiglist[i].attr == (this.isZichaDucha ? resultName :
  734. params.checkResult ) &&
  735. configResultType
  736. ) {
  737. //当主要缺失和次要缺失时发起改善任务
  738. console.log('开始提交改善前准备');
  739. let improveType = undefined;
  740. if (this.nowPermission == 6 || this.nowPermission ==
  741. 7) {
  742. improveType = 1
  743. }
  744. if (this.nowPermission == 4 || this.nowPermission ==
  745. 8) {
  746. improveType = 2
  747. }
  748. let param = this.isZichaDucha ? {
  749. situationId: this.data.situationId,
  750. situationName: this.data.situationName,
  751. checkGroupId: this.data.checkGroupId,
  752. checkGroupName: this.data.checkGroupName,
  753. checkItemId: this.data.checkItemId,
  754. checkItemName: this.data.checkItemName,
  755. checkPointId: this.data.checkPointId,
  756. checkPointName: this.data.checkPointName,
  757. deptName: this.data.checkGroupName,
  758. deptId: this.data.checkGroupId,
  759. appointFlag: false,
  760. desicion: 0,
  761. taskType: "1",
  762. checkId: this.data.functionId,
  763. checkResult: 0,
  764. // newResultType: Number(resultIndex != -1 ? this
  765. // .resultConfigList[resultIndex].code : 0
  766. // ),
  767. newResultType: currentResultType,
  768. receiveEmpId: this.data.receiveEmpId,
  769. receiveEmpName: this.data.receiveEmpName,
  770. checkDetailId: this.data.id,
  771. improveType: improveType, //0 普通 1督查 2自查 nowpermission 67 督查 48 自查
  772. } : {
  773. situationId: this.data.situationId,
  774. situationName: this.data.situationName,
  775. checkGroupId: this.data.checkGroupId,
  776. checkGroupName: this.data.checkGroupName,
  777. checkItemId: this.data.checkItemId,
  778. checkItemName: this.data.checkItemName,
  779. checkPointId: this.data.checkPointId,
  780. checkPointName: this.data.checkPointName,
  781. deptName: this.data.deptName,
  782. deptId: this.data.deptId,
  783. appointFlag: false,
  784. desicion: 0,
  785. taskType: "1",
  786. checkId: this.data.checkId,
  787. checkResult: 0,
  788. newResultType: currentResultType,
  789. // checkResult: this.resultConfigList[i].id,
  790. receiveEmpId: this.data.receiveEmpId,
  791. receiveEmpName: this.data.receiveEmpName,
  792. checkDetailId: this.data.id,
  793. };
  794. this.$store.dispatch({
  795. type: "mission/commActions",
  796. payload: {
  797. key: "comTaskCirculation",
  798. data: {
  799. ...param,
  800. },
  801. },
  802. });
  803. } else {
  804. console.log('改善条件为false');
  805. }
  806. }
  807. if (key == 'back') {
  808. //点完成时返回
  809. this.$store.commit('checkMainPoints/comChangeState', {
  810. 'key': 'ifUpdate',
  811. 'data': true
  812. });
  813. _goBackFresh('pages/checkMainPoints/checkMainPoints');
  814. }
  815. } else {
  816. console.log('res为false');
  817. resolve(false);
  818. }
  819. });
  820. } else {
  821. uni.showToast({
  822. title: '请先选择查核结果!',
  823. duration: 2000,
  824. icon: 'none'
  825. });
  826. resolve(false);
  827. }
  828. } catch (err) {
  829. resolve(err);
  830. }
  831. }
  832. if (this.data.checkResult == '无缺失' && this.deductPoint != 0) {
  833. //查核结果为‘无缺失’且扣分为非0
  834. uni.showModal({
  835. title: '提示',
  836. content: `当前选择无缺失结果,但扣分数为${this.deductPoint},确认继续提交么?`,
  837. success: function(res) {
  838. if (res.confirm) {
  839. _commitCheck();
  840. } else if (res.cancel) {
  841. console.log('用户点击取消操作');
  842. resolve(false);
  843. }
  844. }
  845. });
  846. } else {
  847. _commitCheck();
  848. }
  849. })
  850. },
  851. toTuLi() {
  852. uni.navigateTo({
  853. url: `/pages/legendDetails/legendDetails?checkItemId=${this.data.checkItemId}&checkPointId=${this.checkPointId}`,
  854. });
  855. },
  856. toHistory() {
  857. const situationId = this.data.situationId;
  858. this.$store.dispatch({
  859. type: 'mission/commActions',
  860. payload: {
  861. key: "getMissionList",
  862. data: {
  863. situationId
  864. }
  865. }
  866. }).then(data => {
  867. if (data) {
  868. if (data.improvingTaskResponses.length > 0) {
  869. uni.navigateTo({
  870. url: `/pages/improve-mission-list/improve-mission-list?situationId=${this.data.situationId}`,
  871. });
  872. } else {
  873. uni.showModal({
  874. content: '暂无改善历史',
  875. showCancel: false
  876. });
  877. }
  878. }
  879. });
  880. },
  881. clearForm(index) {
  882. //清除上一项的查核信息
  883. this.Index = '';
  884. // this.deductPoint = 0;
  885. this.currentScore = 0;
  886. this.inputScore = 0;
  887. if (this.data.checkModelName == '访谈') {
  888. if (index) {
  889. this.talkList[index].talkResult = '';
  890. } else {
  891. for (let i = 0; i < this.talkList.length; i++) {
  892. this.talkList[i].talkResult = '';
  893. }
  894. }
  895. } else {
  896. this.recordList[0].talkResult = '';
  897. }
  898. this.checkedSelectResultListIds = [];
  899. this.checkedSelectResultList = [];
  900. this.checkedSelectResultListData = [];
  901. this.filePath=[];
  902. },
  903. goToPrevPage() {
  904. _goBackFresh('pages/checkMainPoints/checkMainPoints');
  905. },
  906. switchItem: async function(num) {
  907. if (!this.data.checkResult) {
  908. uni.showToast({
  909. title: '请先选择查核结果!',
  910. duration: 2000,
  911. icon: 'none'
  912. });
  913. return;
  914. }
  915. const result = await this.sureDetail();
  916. if (result) {
  917. let current = this.itemBelongGroup.filter(item => {
  918. return item.id == this.id;
  919. });
  920. if (num < 0) {
  921. if (current[0].index == 0) {
  922. uni.showToast({
  923. title: '已经没有上一项',
  924. duration: 2000,
  925. icon: 'none'
  926. });
  927. return;
  928. }
  929. }
  930. if (num > 0) {
  931. if (current[0].index == this.itemBelongGroup.length - 1) {
  932. uni.showToast({
  933. title: '已经没有下一项',
  934. duration: 2000,
  935. icon: 'none'
  936. });
  937. return;
  938. }
  939. }
  940. let needItemIndex = num > 0 ? current[0].index + 1 : current[0].index - 1;
  941. let needItemId = this.itemBelongGroup[needItemIndex].id;
  942. let needItemCheckId = this.itemBelongGroup[needItemIndex].checkItemId;
  943. this.clearForm();
  944. this.clearResult();
  945. this.checkTaskDetail(needItemId);
  946. this.getCheckItemResultList(needItemCheckId); //获取缺陷项列表数据
  947. };
  948. },
  949. // 获取查核项可配置列表
  950. getCheckConfigList(checkItemId) {
  951. this.$store.dispatch({
  952. type: 'mainPointsDetail/commActions',
  953. payload: {
  954. key: 'getCheckItemAttr',
  955. data: checkItemId
  956. }
  957. }).then(data => {
  958. this.checkConfiglist = data
  959. })
  960. },
  961. // 获取查核项结果说明下拉列表
  962. getCheckItemResultList(checkItemId) {
  963. this.$store.dispatch({
  964. type: 'mainPointsDetail/commActions',
  965. payload: {
  966. key: 'getCheckItemResultList',
  967. data: checkItemId
  968. }
  969. }).then(data => {
  970. this.checkItemResultList = data;
  971. })
  972. },
  973. },
  974. onLoad({
  975. id,
  976. checkPointId,
  977. checkItemId,
  978. situationType,
  979. isZichaDucha,
  980. departmentId,
  981. checkGroupName,
  982. checkOrder,
  983. systemSituationType,
  984. }) {
  985. this.iOrder= checkOrder;
  986. this.id = id;
  987. this.checkPointId = checkPointId;
  988. this.situationType = situationType;
  989. this.checkItemId = checkItemId;
  990. this.departmentId = departmentId; //用于自查督查作为科室id
  991. this.getCheckConfigList(checkItemId);
  992. this.getCheckItemResultList(checkItemId);
  993. this.isZichaDucha = isZichaDucha? JSON.parse(isZichaDucha) : false; //是否为自查督查
  994. this.systemSituationType=systemSituationType;
  995. //console.log('2023062604 situationType',this.systemSituationType);
  996. //接收来自上个页面所传过来的数据
  997. const eventChannel = this.getOpenerEventChannel();
  998. eventChannel.on('acceptDataFromOpenerPage', (data) => {
  999. if (this.iOrder==1){
  1000. this.itemBelongGroup = data.data[0].responseList.map((item, index) => {
  1001. return ({
  1002. index: index,
  1003. id: item['id'],
  1004. checkItemId: item['checkItemId']
  1005. })
  1006. });
  1007. }else if (this.iOrder==2){
  1008. var Tindex=0;
  1009. let itemList=[];
  1010. data.data.filter(parentItem=>{
  1011. var tmp =parentItem.responseList.map((item) => {
  1012. return ({
  1013. index: Tindex++,
  1014. id: item['id'],
  1015. checkItemId: item['checkItemId']
  1016. })
  1017. });
  1018. itemList=itemList.concat(tmp);
  1019. });
  1020. this.itemBelongGroup=itemList;
  1021. }
  1022. //重新导航进页面,删除缓存并设置最新数据
  1023. uni.removeStorageSync('itemBelongGroup');
  1024. uni.setStorageSync('itemBelongGroup', this.itemBelongGroup);
  1025. });
  1026. //手动刷新页面,获取本地缓存
  1027. const itemBelongGroup = uni.getStorageSync('itemBelongGroup');
  1028. this.itemBelongGroup = itemBelongGroup;
  1029. },
  1030. };
  1031. </script>
  1032. <style lang="less">
  1033. .mainPointsDetailPage {
  1034. position: relative;
  1035. // min-height: 75rpx;
  1036. // overflow-y: auto;
  1037. height: 100%;
  1038. .checkItemResultModal {
  1039. display: flex;
  1040. height: 100%;
  1041. justify-content: center;
  1042. align-items: center;
  1043. .modalContent {
  1044. width: 90%;
  1045. height: 600rpx;
  1046. border-radius: 10rpx;
  1047. overflow: hidden;
  1048. background-color: #FFFFFF;
  1049. .modalBar {
  1050. display: flex;
  1051. justify-content: center;
  1052. align-items: center;
  1053. height: 80rpx;
  1054. color: #4E78FF;
  1055. font-size: 22.5rpx;
  1056. box-shadow: 0 6rpx 6rpx #E5E5E5;
  1057. border-bottom: 0.1rpx solid #E5E5E5;
  1058. }
  1059. .comfirmBtn {
  1060. font-size: 22rpx;
  1061. color: #FFFFFF;
  1062. height: 85rpx;
  1063. line-height: 85rpx;
  1064. text-align: center;
  1065. background-color: #3377FF;
  1066. }
  1067. .scroll {
  1068. height: calc(100% - 160rpx);
  1069. .list {
  1070. position: relative;
  1071. display: flex;
  1072. height: 80rpx;
  1073. justify-content: center;
  1074. align-items: center;
  1075. border-bottom: 0.1rpx solid #E5E5E5;
  1076. .checkIcon {
  1077. display: none;
  1078. position: absolute;
  1079. left: 5%;
  1080. width: 25rpx;
  1081. height: 25rpx;
  1082. }
  1083. &.on {
  1084. color: #3377FF;
  1085. .checkIcon {
  1086. display: block;
  1087. }
  1088. }
  1089. }
  1090. }
  1091. }
  1092. }
  1093. .scroll-y {
  1094. height: calc(100% - 75rpx);
  1095. }
  1096. .checkItem {
  1097. padding-top: 47.5rpx;
  1098. width: 100%;
  1099. min-height: 450rpx;
  1100. background-color: #fff;
  1101. position: relative;
  1102. .chBg {
  1103. position: absolute;
  1104. top: 0;
  1105. left: 0;
  1106. width: 125rpx;
  1107. height: 37.5rpx;
  1108. .img {
  1109. width: 125rpx;
  1110. height: 37.5rpx;
  1111. }
  1112. .title {
  1113. position: absolute;
  1114. top: 8.75rpx;
  1115. left: 25rpx;
  1116. font-size: 20rpx;
  1117. color: #fff;
  1118. font-weight: 500;
  1119. line-height: 20rpx;
  1120. }
  1121. }
  1122. .tlImg {
  1123. width: 40rpx;
  1124. height: 40rpx;
  1125. position: absolute;
  1126. right: 25rpx;
  1127. top: 25rpx;
  1128. }
  1129. .chContent {
  1130. width: 100%;
  1131. .checkItemName {
  1132. margin-left: 31.25rpx;
  1133. font-size: 25rpx;
  1134. line-height: 55rpx;
  1135. color: #292c33;
  1136. }
  1137. .checkPointName {
  1138. margin-left: 31.25rpx;
  1139. font-size: 17.5rpx;
  1140. line-height: 17.5rpx;
  1141. color: #7a8599;
  1142. }
  1143. .cont {
  1144. height: 135rpx;
  1145. .floatLeft {
  1146. float: left;
  1147. }
  1148. .borderLine {
  1149. margin-top: 56.25rpx;
  1150. width: 0.62rpx;
  1151. height: 25rpx;
  1152. background-color: #dadee6;
  1153. }
  1154. .other {
  1155. padding: 40rpx 0rpx;
  1156. height: 95rpx;
  1157. width: 187.18rpx;
  1158. text-align: center;
  1159. .letterTitle {
  1160. font-size: 17.5rpx;
  1161. color: #7a8599;
  1162. line-height: 17.5rpx;
  1163. }
  1164. .letterTitle2 {
  1165. height: 22.5rpx;
  1166. font-size: 22.5rpx;
  1167. line-height: 22.5rpx;
  1168. color: #292c33;
  1169. margin-bottom: 15rpx;
  1170. font-weight: 500;
  1171. overflow: hidden;
  1172. word-break: break-all;
  1173. /* break-all(允许在单词内换行。) */
  1174. text-overflow: ellipsis;
  1175. /* 超出部分省略号 */
  1176. display: -webkit-box;
  1177. /** 对象作为伸缩盒子模型显示 **/
  1178. -webkit-box-orient: vertical;
  1179. /** 设置或检索伸缩盒对象的子元素的排列方式 **/
  1180. -webkit-line-clamp: 1;
  1181. /** 显示的行数 **/
  1182. }
  1183. }
  1184. }
  1185. .checked {
  1186. margin-bottom: 40rpx;
  1187. padding: 0rpx 15.62rpx;
  1188. height: 75rpx;
  1189. .checked-checkItem {
  1190. margin: 0rpx 9.37rpx;
  1191. padding: 0;
  1192. width: 125rpx;
  1193. height: 75rpx;
  1194. background: #ebeff7;
  1195. float: left;
  1196. line-height: 75rpx;
  1197. text-align: center;
  1198. color: #292c33;
  1199. border-radius: 20rpx;
  1200. position: relative;
  1201. .img {
  1202. width: 51.25rpx;
  1203. height: 25rpx;
  1204. position: absolute;
  1205. right: -6.25rpx;
  1206. top: -6.25rpx;
  1207. }
  1208. .lastName {
  1209. color: #fff;
  1210. font-size: 13.75rpx;
  1211. line-height: 13.75rpx;
  1212. position: absolute;
  1213. right: 5rpx;
  1214. top: -1.87rpx;
  1215. }
  1216. }
  1217. }
  1218. .more {
  1219. margin: 0rpx 25rpx 0rpx 25rpx;
  1220. text-align: center;
  1221. border-top: 0.62rpx solid #dadee6;
  1222. text {
  1223. padding: 29.37rpx 0rpx 27.5rpx;
  1224. margin-right: 10rpx;
  1225. line-height: 22.5rpx;
  1226. font-size: 22.5rpx;
  1227. color: #3377ff;
  1228. display: inline-block;
  1229. vertical-align: top;
  1230. }
  1231. .moreImg {
  1232. margin-top: 28.75rpx;
  1233. width: 12.37rpx;
  1234. height: 21.21rpx;
  1235. display: inline-block;
  1236. }
  1237. .moreImg2 {
  1238. width: 12.37rpx;
  1239. height: 21.21rpx;
  1240. }
  1241. }
  1242. .multipleResponsible {
  1243. padding-top: 15rpx;
  1244. background-color: #F5F6FA;
  1245. .inner {
  1246. position: relative;
  1247. display: flex;
  1248. height: 87.5rpx;
  1249. z-index: 10;
  1250. flex-direction: row;
  1251. justify-content: flex-start;
  1252. align-items: center;
  1253. padding: 0 25rpx;
  1254. background-color: #FFFFFF;
  1255. .label {
  1256. display: inline-block;
  1257. font-size: 22.5rpx;
  1258. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1259. font-weight: 400;
  1260. color: #525866;
  1261. margin-right: 105rpx;
  1262. }
  1263. .value {
  1264. flex: 0.9;
  1265. font-size: 22.5rpx;
  1266. overflow: hidden; //超出的文本隐藏
  1267. text-overflow: ellipsis; //溢出用省略号显示
  1268. white-space: nowrap; //溢出不换行
  1269. }
  1270. .valuePlaceholder {
  1271. font-size: 22.5rpx;
  1272. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1273. font-weight: 400;
  1274. color: #B8BECC;
  1275. }
  1276. .arrow {
  1277. position: absolute;
  1278. right: 25rpx;
  1279. width: 12.5rpx;
  1280. height: 20rpx;
  1281. }
  1282. }
  1283. }
  1284. .score {
  1285. display: flex;
  1286. height: 87.5rpx;
  1287. flex-direction: row;
  1288. justify-content: space-between;
  1289. align-items: center;
  1290. padding: 0 25rpx;
  1291. background: #F5F6FA;
  1292. .box {
  1293. text-align: center;
  1294. vertical-align: bottom;
  1295. .lable {
  1296. display: inline-block;
  1297. font-size: 22.5rpx;
  1298. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1299. font-weight: 400;
  1300. color: #525866;
  1301. margin-right: 10rpx;
  1302. }
  1303. .totalScore {
  1304. font-size: 30rpx;
  1305. font-family: SourceHanSansCN-Bold, SourceHanSansCN;
  1306. font-weight: bold;
  1307. color: #292C33;
  1308. }
  1309. .currentScore {
  1310. font-size: 30rpx;
  1311. font-family: SourceHanSansCN-Bold, SourceHanSansCN;
  1312. font-weight: bold;
  1313. color: #3377FF;
  1314. }
  1315. }
  1316. }
  1317. .textValue {
  1318. display: flex;
  1319. flex-direction: row;
  1320. justify-content: flex-start;
  1321. align-items: center;
  1322. width: 70%;
  1323. height: 100%;
  1324. }
  1325. .inputScore {
  1326. display: flex;
  1327. flex-direction: row;
  1328. justify-content: flex-start;
  1329. align-items: center;
  1330. height: 87.5rpx;
  1331. padding: 0 25rpx;
  1332. background-color: #FFFFFF;
  1333. .label {
  1334. display: inline-block;
  1335. font-size: 22.5rpx;
  1336. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1337. font-weight: 400;
  1338. color: #525866;
  1339. margin-right: 81.25rpx;
  1340. }
  1341. .value {
  1342. font-size: 22.5rpx;
  1343. }
  1344. .placeholder {
  1345. font-size: 22.5rpx;
  1346. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1347. font-weight: 400;
  1348. color: #525866;
  1349. }
  1350. }
  1351. }
  1352. }
  1353. .see {
  1354. margin-top: 15rpx;
  1355. height: 287.5rpx;
  1356. background-color: #fff;
  1357. // padding-left: 25rpx;
  1358. .seeResult {
  1359. position: relative;
  1360. margin-left: 25rpx;
  1361. padding-top: 32.5rpx;
  1362. // height: 200rpx;
  1363. border-bottom: 1px solid #dadee6;
  1364. .clear {
  1365. position: absolute;
  1366. z-index: 10;
  1367. right: 25rpx;
  1368. bottom: 25rpx;
  1369. font-size: 22.5rpx;
  1370. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1371. font-weight: 400;
  1372. color: #FF3355;
  1373. }
  1374. .seeResultFloorOne {
  1375. display: flex;
  1376. flex-direction: row;
  1377. justify-content: space-between;
  1378. align-items: center;
  1379. margin-bottom: 25rpx;
  1380. padding-right: 25rpx;
  1381. .plusAction {
  1382. display: flex;
  1383. flex-direction: row;
  1384. justify-content: center;
  1385. align-items: center;
  1386. .plusIcon {
  1387. width: 25rpx;
  1388. height: 25rpx;
  1389. margin-right: 10rpx;
  1390. }
  1391. .threePoint {
  1392. font-size: 22.5rpx;
  1393. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1394. font-weight: 400;
  1395. color: #7A8599;
  1396. }
  1397. }
  1398. }
  1399. .seeName {
  1400. width: 175rpx;
  1401. font-size: 22.5rpx;
  1402. color: #525866;
  1403. line-height: 22.5rpx;
  1404. display: inline-block;
  1405. }
  1406. .seeTextarea {
  1407. width: 97%;
  1408. height: 155rpx;
  1409. display: inline-block;
  1410. font-size: 22.5rpx;
  1411. line-height: 27.5rpx;
  1412. }
  1413. }
  1414. .seeImg {
  1415. min-height: 87.5rpx;
  1416. .seeName2 {
  1417. width: 175rpx;
  1418. font-size: 22.5rpx;
  1419. color: #525866;
  1420. line-height: 87.5rpx;
  1421. display: inline-block;
  1422. }
  1423. }
  1424. }
  1425. .talk {
  1426. .talkTitle {
  1427. padding: 25rpx 25rpx 15rpx;
  1428. font-size: 22.5rpx;
  1429. line-height: 22.5rpx;
  1430. color: #666f80;
  1431. .del {
  1432. float: right;
  1433. color: #3377ff;
  1434. }
  1435. }
  1436. .talkResult {
  1437. position: relative;
  1438. padding-left: 25rpx;
  1439. padding-top: 32.5rpx;
  1440. border-bottom: 1px solid #dadee6;
  1441. background-color: #fff;
  1442. .clear {
  1443. position: absolute;
  1444. z-index: 10;
  1445. right: 25rpx;
  1446. bottom: 25rpx;
  1447. font-size: 22.5rpx;
  1448. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1449. font-weight: 400;
  1450. color: #FF3355;
  1451. }
  1452. .seeResultFloorOne {
  1453. display: flex;
  1454. flex-direction: row;
  1455. justify-content: space-between;
  1456. align-items: center;
  1457. margin-bottom: 25rpx;
  1458. padding-right: 25rpx;
  1459. .plusAction {
  1460. display: flex;
  1461. flex-direction: row;
  1462. justify-content: center;
  1463. align-items: center;
  1464. .plusIcon {
  1465. width: 25rpx;
  1466. height: 25rpx;
  1467. margin-right: 10rpx;
  1468. }
  1469. .threePoint {
  1470. font-size: 22.5rpx;
  1471. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1472. font-weight: 400;
  1473. color: #7A8599;
  1474. }
  1475. }
  1476. }
  1477. .seeName {
  1478. width: 175rpx;
  1479. font-size: 22.5rpx;
  1480. color: #525866;
  1481. line-height: 22.5rpx;
  1482. display: inline-block;
  1483. }
  1484. .seeTextarea {
  1485. width: 531.25rpx;
  1486. height: 155rpx;
  1487. display: inline-block;
  1488. font-size: 22.5rpx;
  1489. line-height: 27.5rpx;
  1490. }
  1491. }
  1492. .talkImg {
  1493. min-height: 87.5rpx;
  1494. .seeName2 {
  1495. width: 175rpx;
  1496. font-size: 22.5rpx;
  1497. color: #525866;
  1498. line-height: 87.5rpx;
  1499. display: inline-block;
  1500. }
  1501. }
  1502. }
  1503. .insert {
  1504. background-color: #fff;
  1505. font-size: 22.5rpx;
  1506. line-height: 22.5rpx;
  1507. color: #3377ff;
  1508. padding: 26.25rpx;
  1509. }
  1510. .sureDetail {
  1511. width: 100%;
  1512. height: 75rpx;
  1513. font-size: 22.5rpx;
  1514. background-color: #3377ff;
  1515. line-height: 75rpx;
  1516. position: absolute;
  1517. bottom: 0rpx;
  1518. }
  1519. .bottomMenuGroup {
  1520. position: fixed;
  1521. bottom: 0;
  1522. width: 100%;
  1523. height: 75rpx;
  1524. display: flex;
  1525. flex-direction: row;
  1526. background: #FFFFFF;
  1527. border-top: 0.62rpx solid #DADEE6;
  1528. .menuBtn {
  1529. display: flex;
  1530. width: 75rpx;
  1531. height: 75rpx;
  1532. justify-content: center;
  1533. align-items: center;
  1534. border-right: 0.62rpx solid #DADEE6;
  1535. .threeLineMenuIcon {
  1536. width: 26.25rpx;
  1537. height: 21.25rpx;
  1538. }
  1539. }
  1540. .prevBtn,
  1541. .nextBtn {
  1542. display: flex;
  1543. flex: 1;
  1544. justify-content: center;
  1545. height: 75rpx;
  1546. line-height: 75rpx;
  1547. font-size: 22.5rpx;
  1548. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1549. font-weight: 400;
  1550. color: #3377FF;
  1551. }
  1552. .prevBtn {
  1553. border-right: 0.62rpx solid #DADEE6;
  1554. }
  1555. .nextBtn {
  1556. color: #FFFFFF;
  1557. background: #3377FF;
  1558. }
  1559. }
  1560. }
  1561. </style>