mainPointsDetail.vue 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722
  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.isZichaDucha?this.departmentId:this.deptId}&checkId=${this.id}&isZichaDucha=${this.isZichaDucha}`,
  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. this.Index = this.isZichaDucha?res.checkResultName:res.checkResult;
  426. this.totalScore = this.isZichaDucha ? res.itemTotalScore : res.totalScore;
  427. this.currentScore = this.isZichaDucha ? (res.checkResult ? res.checkScore : res
  428. .itemTotalScore) : (res.checkResult ? res.score : res.totalScore);
  429. this.deductPoint = res.deductPoint;
  430. this.moreDeduction = res.moreDeduction;
  431. //this.iOrder=res.checkOrder;
  432. if (res.checkResultRequestList && res.checkResultRequestList.length > 0) {
  433. if (res.checkModelName == '访谈') {
  434. this.talkList = res.checkResultRequestList.map((item, currentIndex) => {
  435. const arr = item.checkResultDescribe.split(',');
  436. const tempResult = this.checkItemResultList.filter(v => arr.includes(v
  437. .resultName));
  438. if (!Array.isArray(this.checkedSelectResultListIds[currentIndex])) this
  439. .checkedSelectResultListIds[currentIndex] = [];
  440. if (!Array.isArray(this.checkedSelectResultList[currentIndex])) this
  441. .checkedSelectResultList[currentIndex] = [];
  442. if (!Array.isArray(this.checkedSelectResultListData[currentIndex])) this
  443. .checkedSelectResultListData[currentIndex] = [];
  444. const tempIdsArr = this.checkedSelectResultListIds[currentIndex].concat(
  445. tempResult.map(item => item.id));
  446. const tempArr = this.checkedSelectResultList[currentIndex].concat(
  447. tempResult.map(item => item.resultName));
  448. this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
  449. this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
  450. this.checkedSelectResultListData.splice(currentIndex, 1, tempResult);
  451. const tempArrFull = this.checkedSelectResultListData[currentIndex].map(
  452. item => item.percentScore);
  453. const tempScore = tempArrFull.reduce((prev, cur) => {
  454. return prev + cur;
  455. }, 0);
  456. this.multiSelectScore[currentIndex] = tempScore;
  457. return {
  458. talkResult: item.checkResultDescribe,
  459. filePath: item.checkResultUrl != '' ? item.checkResultUrl.split(',') :
  460. []
  461. }
  462. });
  463. //设置回显分数
  464. // this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
  465. } else {
  466. let filePath = res.checkResultTxt ? JSON.parse(res.checkResultTxt) : [];
  467. this.filePath = filePath[0] && filePath[0].checkResultUrl != '' ? filePath[0]
  468. .checkResultUrl
  469. .split(',') : [];
  470. if (this.isZichaDucha) {
  471. //自查督查回显图片
  472. this.filePath = res.checkResultRequestList[0].checkResultUrl.length>0?res.checkResultRequestList[0].checkResultUrl.split(','):[];
  473. }
  474. const arr = res.checkResultRequestList[0].checkResultDescribe ? res
  475. .checkResultRequestList[0].checkResultDescribe.split(',') : [];
  476. const tempResult = this.checkItemResultList.filter(v => arr.includes(v.resultName));
  477. const tempIds = tempResult.map(item => item.id);
  478. const scores = tempResult.map(item => item.percentScore);
  479. const tempScore = scores.reduce((prev, cur) => (prev + cur), 0);
  480. this.recordList[0].seeResult = res.checkResultRequestList[0].checkResultDescribe;
  481. this.checkedSelectResultListIds = tempIds;
  482. this.checkedSelectResultList = res.checkResultRequestList[0].checkResultDescribe ? res
  483. .checkResultRequestList[0].checkResultDescribe.split(',') : [];
  484. this.checkedSelectResultListData = tempResult;
  485. }
  486. }
  487. //用于当时人页面回显
  488. if (res.responsibleUserName || res.responseUserName) {
  489. //同时适配自查督查
  490. const tempResponsibleUserName = res.responsibleUserName ? res.responsibleUserName.split(
  491. ',') : res.responseUserName.split(',');
  492. const tempResponsibleUserId = res.responsibleUserId ? res.responsibleUserId.split(',') :
  493. res.responseUserId.split(',');
  494. this.checkedResponsibleList = tempResponsibleUserName;
  495. const arr = tempResponsibleUserName.map((item, index) => ({
  496. main: item,
  497. id: parseInt(tempResponsibleUserId[index])
  498. }));
  499. this.$store.commit('responsibleList/updateCheckedResponsibleList', arr);
  500. } else {
  501. this.checkedResponsibleList = [];
  502. this.$store.commit('responsibleList/updateCheckedResponsibleList', []);
  503. }
  504. if (res) {
  505. console.log({
  506. res
  507. });
  508. this.data = this.isZichaDucha ? {
  509. ...res,
  510. lastResult: res.lastResultName,
  511. checkResult: res.checkResultName
  512. } : res;
  513. console.log('this.data',this.data);
  514. if (res && res.lastResult == "不适用") {
  515. // this.lastIndex = 1;
  516. this.lastIndex = res.lastResult;
  517. } else if (res && res.lastResult == "无缺失") {
  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 {
  526. this.lastIndex = 0;
  527. }
  528. }
  529. });
  530. },
  531. getPeizhiList() {
  532. this.$store.dispatch({
  533. type: "configure/commActions",
  534. payload: {
  535. key: "getResultConfig",
  536. },
  537. }).then((res) => {
  538. this.resultConfigList = res ? res : [];
  539. });
  540. },
  541. //查核点击回调
  542. checkedOne(data) {
  543. const parsedData = JSON.parse(JSON.stringify(data));
  544. this.currentCheckedTab = data;
  545. this.Index = parsedData.attr;
  546. this.data.checkResult = parsedData.attr;
  547. this.checkItemScore = parsedData.itemGetScore;
  548. this.checkItemValue = parsedData.value;
  549. this.calScore = parsedData.calScore;
  550. if (!this.inputScore) { //没有手输调整过的才可以修改
  551. this.checkItemScore = parsedData.itemGetScore;
  552. }
  553. },
  554. /**
  555. * @param {{
  556. files
  557. index,
  558. }} fileInfo
  559. files:文件集合
  560. index:当前编辑的下标
  561. */
  562. changeFilePaths({
  563. files,
  564. index
  565. }) {
  566. let _recordList = [...this.recordList];
  567. _recordList[index].filePath = files;
  568. this.filePath = _recordList[0].filePath;
  569. },
  570. insert() {
  571. let list = [...this.talkList];
  572. if (list.length < 10) {
  573. list.push({
  574. talkResult: "",
  575. filePath: []
  576. });
  577. this.talkList = list;
  578. }
  579. },
  580. del(index) {
  581. let list = [...this.talkList];
  582. let list2 = [];
  583. //清空该项数据
  584. this.clearResult(true, index);
  585. for (let i = 0; i < list.length; i++) {
  586. if (i != index) {
  587. list2.push(list[i]);
  588. }
  589. }
  590. this.talkList = list2;
  591. },
  592. /**
  593. * @param {{
  594. files
  595. index,
  596. }} fileInfo
  597. files:文件集合
  598. index:当前编辑的下标
  599. */
  600. changeFilePaths2(fileInfo) {
  601. const {
  602. files,
  603. index
  604. } = fileInfo;
  605. for (let j = 0; j < this.talkList.length; j++) {
  606. this.talkList[index].filePath = files;
  607. }
  608. },
  609. changeTextarea(e, i) {
  610. for (let j = 0; j < this.talkList.length; j++) {
  611. this.talkList[i].talkResult = e.detail.value;
  612. }
  613. },
  614. changeTextarea2(e) {
  615. this.recordList[0].seeResult = e.target.value;
  616. },
  617. imgClick(i) {
  618. this.editIndex = i;
  619. },
  620. sureDetail(key) {
  621. console.log('commit check');
  622. return new Promise((resolve) => {
  623. const _commitCheck = () => {
  624. //console.log('checkedResponsibleList',this.checkedResponsibleList,'checkedResponsibleData',this.checkedResponsibleData);
  625. let resultIndex = this.resultConfigList.findIndex(item => item.name == this.data
  626. .checkResult);
  627. try {
  628. if (this.Index) {
  629. let params = !this.isZichaDucha ? {
  630. id: this.data.id,
  631. checkResult: this.data.checkResult,
  632. checkResultRequestList: [],
  633. checkItemScore: this.checkItemScore,
  634. value: this.checkItemValue,
  635. situationType: this.situationType,
  636. calScore: this.calScore,
  637. score: this.currentScore,
  638. deductPoint: this.deductPoint,
  639. } : {
  640. //自查督查保存
  641. id: this.data.id,
  642. responsibleUser: this.checkedResponsibleData.map(item => ({
  643. responsibleUserId: item.id,
  644. responsibleUserName: item.main
  645. })),
  646. checkResult: resultIndex != -1 ? this.resultConfigList[resultIndex]
  647. .code : '',
  648. checkResultRequestList: [],
  649. checkItemScore: this.checkItemScore,
  650. value: this.checkItemValue,
  651. situationType: this.systemSituationType,
  652. calScore: this.calScore,
  653. score: this.currentScore,
  654. deductPoint: this.deductPoint,
  655. };
  656. if (this.data.checkModelName == "访谈") {
  657. let list = [];
  658. for (let i = 0; i < this.talkList.length; i++) {
  659. let path = "";
  660. for (let j = 0; j < this.talkList[i].filePath.length; j++) {
  661. if (j == 0) {
  662. path += `${this.talkList[i].filePath[j]}`;
  663. } else {
  664. path += `,${this.talkList[i].filePath[j]}`;
  665. }
  666. }
  667. let item = {
  668. checkResultId: i,
  669. checkResultDescribe: this.talkList[i].talkResult,
  670. checkResultUrl: path,
  671. };
  672. list.push(item);
  673. }
  674. params.checkResultRequestList = list;
  675. } else {
  676. let item = {
  677. checkResultId: 1,
  678. checkResultDescribe: this.recordList[0].seeResult,
  679. checkResultUrl: this.filePath.join(','),
  680. };
  681. params.checkResultRequestList = [item];
  682. }
  683. const checkConfiglist = JSON.parse(JSON.stringify(this.checkConfiglist));
  684. this.$store.dispatch({
  685. type: "mainPointsDetail/commActions",
  686. payload: {
  687. key: this.isZichaDucha ? "saveZichaduchaCheckTaskDetail" :
  688. "saveCheckTaskDetail",
  689. data: {
  690. ...params,
  691. },
  692. },
  693. }).then((res) => {
  694. if (res) {
  695. resolve(true);
  696. // const resultIndex = this.resultConfigList.findIndex(item => item.name == this.data.checkResult);
  697. // console.log({resultIndex,'this.resultConfigList':this.resultConfigList});
  698. for (let i = 0; i < checkConfiglist.length; i++) {
  699. const index = this.resultConfigList.findIndex(item => item
  700. .code == params.checkResult);
  701. let name = '';
  702. if (index != -1) {
  703. name = this.resultConfigList[index].name
  704. }
  705. // if (
  706. // checkConfiglist[i].attr == (this.isZichaDucha ? name :
  707. // params.checkResult) &&
  708. // (checkConfiglist[i].resultType == 2 ||
  709. // checkConfiglist[i].resultType == 3)
  710. // )
  711. let configResultType=false;
  712. //if (this.isZichaDucha){
  713. if (this.resultConfigList[resultIndex].resultType==2||this.resultConfigList[resultIndex].resultType==3)
  714. configResultType=true;
  715. // }else{
  716. // if (checkConfiglist[i].resultType == 2 ||
  717. // checkConfiglist[i].resultType == 3)
  718. // configResultType=true;
  719. // }
  720. if (
  721. checkConfiglist[i].attr == (this.isZichaDucha ? this.resultConfigList[index].name:
  722. params.checkResult ) &&
  723. configResultType
  724. ) {
  725. //当主要缺失和次要缺失时发起改善任务
  726. console.log('开始提交改善前准备');
  727. let improveType = undefined;
  728. if (this.nowPermission == 6 || this.nowPermission ==
  729. 7) {
  730. improveType = 1
  731. }
  732. if (this.nowPermission == 4 || this.nowPermission ==
  733. 8) {
  734. improveType = 2
  735. }
  736. let param = this.isZichaDucha ? {
  737. situationId: this.data.situationId,
  738. situationName: this.data.situationName,
  739. checkGroupId: this.data.checkGroupId,
  740. checkGroupName: this.data.checkGroupName,
  741. checkItemId: this.data.checkItemId,
  742. checkItemName: this.data.checkItemName,
  743. checkPointId: this.data.checkPointId,
  744. checkPointName: this.data.checkPointName,
  745. deptName: this.data.checkGroupName,
  746. deptId: this.data.checkGroupId,
  747. appointFlag: false,
  748. desicion: 0,
  749. taskType: "1",
  750. checkId: this.data.functionId,
  751. checkResult: 0,
  752. // newResultType: Number(resultIndex != -1 ? this
  753. // .resultConfigList[resultIndex].code : 0
  754. // ),
  755. newResultType:checkConfiglist[i].resultType,
  756. receiveEmpId: this.data.receiveEmpId,
  757. receiveEmpName: this.data.receiveEmpName,
  758. checkDetailId: this.data.id,
  759. improveType: improveType, //0 普通 1督查 2自查 nowpermission 67 督查 48 自查
  760. } : {
  761. situationId: this.data.situationId,
  762. situationName: this.data.situationName,
  763. checkGroupId: this.data.checkGroupId,
  764. checkGroupName: this.data.checkGroupName,
  765. checkItemId: this.data.checkItemId,
  766. checkItemName: this.data.checkItemName,
  767. checkPointId: this.data.checkPointId,
  768. checkPointName: this.data.checkPointName,
  769. deptName: this.data.deptName,
  770. deptId: this.data.deptId,
  771. appointFlag: false,
  772. desicion: 0,
  773. taskType: "1",
  774. checkId: this.data.checkId,
  775. checkResult: 0,
  776. newResultType: checkConfiglist[i].resultType,
  777. // checkResult: this.resultConfigList[i].id,
  778. receiveEmpId: this.data.receiveEmpId,
  779. receiveEmpName: this.data.receiveEmpName,
  780. checkDetailId: this.data.id,
  781. };
  782. this.$store.dispatch({
  783. type: "mission/commActions",
  784. payload: {
  785. key: "comTaskCirculation",
  786. data: {
  787. ...param,
  788. },
  789. },
  790. });
  791. } else {
  792. console.log('改善条件为false');
  793. }
  794. }
  795. if (key == 'back') {
  796. //点完成时返回
  797. this.$store.commit('checkMainPoints/comChangeState', {
  798. 'key': 'ifUpdate',
  799. 'data': true
  800. });
  801. _goBackFresh('pages/checkMainPoints/checkMainPoints');
  802. }
  803. } else {
  804. console.log('res为false');
  805. resolve(false);
  806. }
  807. });
  808. } else {
  809. uni.showToast({
  810. title: '请先选择查核结果!',
  811. duration: 2000,
  812. icon: 'none'
  813. });
  814. resolve(false);
  815. }
  816. } catch (err) {
  817. resolve(err);
  818. }
  819. }
  820. if (this.data.checkResult == '无缺失' && this.deductPoint != 0) {
  821. //查核结果为‘无缺失’且扣分为非0
  822. uni.showModal({
  823. title: '提示',
  824. content: `当前选择无缺失结果,但扣分数为${this.deductPoint},确认继续提交么?`,
  825. success: function(res) {
  826. if (res.confirm) {
  827. _commitCheck();
  828. } else if (res.cancel) {
  829. console.log('用户点击取消操作');
  830. resolve(false);
  831. }
  832. }
  833. });
  834. } else {
  835. _commitCheck();
  836. }
  837. })
  838. },
  839. toTuLi() {
  840. uni.navigateTo({
  841. url: `/pages/legendDetails/legendDetails?checkItemId=${this.data.checkItemId}&checkPointId=${this.checkPointId}`,
  842. });
  843. },
  844. toHistory() {
  845. const situationId = this.data.situationId;
  846. this.$store.dispatch({
  847. type: 'mission/commActions',
  848. payload: {
  849. key: "getMissionList",
  850. data: {
  851. situationId
  852. }
  853. }
  854. }).then(data => {
  855. if (data) {
  856. if (data.improvingTaskResponses.length > 0) {
  857. uni.navigateTo({
  858. url: `/pages/improve-mission-list/improve-mission-list?situationId=${this.data.situationId}`,
  859. });
  860. } else {
  861. uni.showModal({
  862. content: '暂无改善历史',
  863. showCancel: false
  864. });
  865. }
  866. }
  867. });
  868. },
  869. clearForm(index) {
  870. //清除上一项的查核信息
  871. this.Index = '';
  872. // this.deductPoint = 0;
  873. this.currentScore = 0;
  874. this.inputScore = 0;
  875. if (this.data.checkModelName == '访谈') {
  876. if (index) {
  877. this.talkList[index].talkResult = '';
  878. } else {
  879. for (let i = 0; i < this.talkList.length; i++) {
  880. this.talkList[i].talkResult = '';
  881. }
  882. }
  883. } else {
  884. this.recordList[0].talkResult = '';
  885. }
  886. this.checkedSelectResultListIds = [];
  887. this.checkedSelectResultList = [];
  888. this.checkedSelectResultListData = [];
  889. this.filePath=[];
  890. },
  891. goToPrevPage() {
  892. _goBackFresh('pages/checkMainPoints/checkMainPoints');
  893. },
  894. switchItem: async function(num) {
  895. if (!this.data.checkResult) {
  896. uni.showToast({
  897. title: '请先选择查核结果!',
  898. duration: 2000,
  899. icon: 'none'
  900. });
  901. return;
  902. }
  903. const result = await this.sureDetail();
  904. if (result) {
  905. let current = this.itemBelongGroup.filter(item => {
  906. return item.id == this.id;
  907. });
  908. if (num < 0) {
  909. if (current[0].index == 0) {
  910. uni.showToast({
  911. title: '已经没有上一项',
  912. duration: 2000,
  913. icon: 'none'
  914. });
  915. return;
  916. }
  917. }
  918. if (num > 0) {
  919. if (current[0].index == this.itemBelongGroup.length - 1) {
  920. uni.showToast({
  921. title: '已经没有下一项',
  922. duration: 2000,
  923. icon: 'none'
  924. });
  925. return;
  926. }
  927. }
  928. let needItemIndex = num > 0 ? current[0].index + 1 : current[0].index - 1;
  929. let needItemId = this.itemBelongGroup[needItemIndex].id;
  930. let needItemCheckId = this.itemBelongGroup[needItemIndex].checkItemId;
  931. this.clearForm();
  932. this.clearResult();
  933. this.checkTaskDetail(needItemId);
  934. this.getCheckItemResultList(needItemCheckId); //获取缺陷项列表数据
  935. };
  936. },
  937. // 获取查核项可配置列表
  938. getCheckConfigList(checkItemId) {
  939. this.$store.dispatch({
  940. type: 'mainPointsDetail/commActions',
  941. payload: {
  942. key: 'getCheckItemAttr',
  943. data: checkItemId
  944. }
  945. }).then(data => {
  946. this.checkConfiglist = data
  947. })
  948. },
  949. // 获取查核项结果说明下拉列表
  950. getCheckItemResultList(checkItemId) {
  951. this.$store.dispatch({
  952. type: 'mainPointsDetail/commActions',
  953. payload: {
  954. key: 'getCheckItemResultList',
  955. data: checkItemId
  956. }
  957. }).then(data => {
  958. this.checkItemResultList = data;
  959. })
  960. },
  961. },
  962. onLoad({
  963. id,
  964. checkPointId,
  965. checkItemId,
  966. situationType,
  967. isZichaDucha,
  968. departmentId,
  969. checkGroupName,
  970. checkOrder,
  971. systemSituationType,
  972. }) {
  973. this.iOrder= checkOrder;
  974. this.id = id;
  975. this.checkPointId = checkPointId;
  976. this.situationType = situationType;
  977. this.checkItemId = checkItemId;
  978. this.departmentId = departmentId; //用于自查督查作为科室id
  979. this.getCheckConfigList(checkItemId);
  980. this.getCheckItemResultList(checkItemId);
  981. this.isZichaDucha = isZichaDucha? JSON.parse(isZichaDucha) : false; //是否为自查督查
  982. this.systemSituationType=systemSituationType;
  983. //console.log('2023062604 situationType',this.systemSituationType);
  984. //接收来自上个页面所传过来的数据
  985. const eventChannel = this.getOpenerEventChannel();
  986. eventChannel.on('acceptDataFromOpenerPage', (data) => {
  987. if (this.iOrder==1){
  988. this.itemBelongGroup = data.data[0].responseList.map((item, index) => {
  989. return ({
  990. index: index,
  991. id: item['id'],
  992. checkItemId: item['checkItemId']
  993. })
  994. });
  995. }else if (this.iOrder==2){
  996. var Tindex=0;
  997. let itemList=[];
  998. data.data.filter(parentItem=>{
  999. var tmp =parentItem.responseList.map((item) => {
  1000. return ({
  1001. index: Tindex++,
  1002. id: item['id'],
  1003. checkItemId: item['checkItemId']
  1004. })
  1005. });
  1006. itemList=itemList.concat(tmp);
  1007. });
  1008. this.itemBelongGroup=itemList;
  1009. }
  1010. //重新导航进页面,删除缓存并设置最新数据
  1011. uni.removeStorageSync('itemBelongGroup');
  1012. uni.setStorageSync('itemBelongGroup', this.itemBelongGroup);
  1013. });
  1014. //手动刷新页面,获取本地缓存
  1015. const itemBelongGroup = uni.getStorageSync('itemBelongGroup');
  1016. this.itemBelongGroup = itemBelongGroup;
  1017. },
  1018. };
  1019. </script>
  1020. <style lang="less">
  1021. .mainPointsDetailPage {
  1022. position: relative;
  1023. // min-height: 75rpx;
  1024. // overflow-y: auto;
  1025. height: 100%;
  1026. .checkItemResultModal {
  1027. display: flex;
  1028. height: 100%;
  1029. justify-content: center;
  1030. align-items: center;
  1031. .modalContent {
  1032. width: 90%;
  1033. height: 600rpx;
  1034. border-radius: 10rpx;
  1035. overflow: hidden;
  1036. background-color: #FFFFFF;
  1037. .modalBar {
  1038. display: flex;
  1039. justify-content: center;
  1040. align-items: center;
  1041. height: 80rpx;
  1042. color: #4E78FF;
  1043. font-size: 22.5rpx;
  1044. box-shadow: 0 6rpx 6rpx #E5E5E5;
  1045. border-bottom: 0.1rpx solid #E5E5E5;
  1046. }
  1047. .comfirmBtn {
  1048. font-size: 22rpx;
  1049. color: #FFFFFF;
  1050. height: 85rpx;
  1051. line-height: 85rpx;
  1052. text-align: center;
  1053. background-color: #3377FF;
  1054. }
  1055. .scroll {
  1056. height: calc(100% - 160rpx);
  1057. .list {
  1058. position: relative;
  1059. display: flex;
  1060. height: 80rpx;
  1061. justify-content: center;
  1062. align-items: center;
  1063. border-bottom: 0.1rpx solid #E5E5E5;
  1064. .checkIcon {
  1065. display: none;
  1066. position: absolute;
  1067. left: 5%;
  1068. width: 25rpx;
  1069. height: 25rpx;
  1070. }
  1071. &.on {
  1072. color: #3377FF;
  1073. .checkIcon {
  1074. display: block;
  1075. }
  1076. }
  1077. }
  1078. }
  1079. }
  1080. }
  1081. .scroll-y {
  1082. height: calc(100% - 75rpx);
  1083. }
  1084. .checkItem {
  1085. padding-top: 47.5rpx;
  1086. width: 100%;
  1087. min-height: 450rpx;
  1088. background-color: #fff;
  1089. position: relative;
  1090. .chBg {
  1091. position: absolute;
  1092. top: 0;
  1093. left: 0;
  1094. width: 125rpx;
  1095. height: 37.5rpx;
  1096. .img {
  1097. width: 125rpx;
  1098. height: 37.5rpx;
  1099. }
  1100. .title {
  1101. position: absolute;
  1102. top: 8.75rpx;
  1103. left: 25rpx;
  1104. font-size: 20rpx;
  1105. color: #fff;
  1106. font-weight: 500;
  1107. line-height: 20rpx;
  1108. }
  1109. }
  1110. .tlImg {
  1111. width: 40rpx;
  1112. height: 40rpx;
  1113. position: absolute;
  1114. right: 25rpx;
  1115. top: 25rpx;
  1116. }
  1117. .chContent {
  1118. width: 100%;
  1119. .checkItemName {
  1120. margin-left: 31.25rpx;
  1121. font-size: 25rpx;
  1122. line-height: 55rpx;
  1123. color: #292c33;
  1124. }
  1125. .checkPointName {
  1126. margin-left: 31.25rpx;
  1127. font-size: 17.5rpx;
  1128. line-height: 17.5rpx;
  1129. color: #7a8599;
  1130. }
  1131. .cont {
  1132. height: 135rpx;
  1133. .floatLeft {
  1134. float: left;
  1135. }
  1136. .borderLine {
  1137. margin-top: 56.25rpx;
  1138. width: 0.62rpx;
  1139. height: 25rpx;
  1140. background-color: #dadee6;
  1141. }
  1142. .other {
  1143. padding: 40rpx 0rpx;
  1144. height: 95rpx;
  1145. width: 187.18rpx;
  1146. text-align: center;
  1147. .letterTitle {
  1148. font-size: 17.5rpx;
  1149. color: #7a8599;
  1150. line-height: 17.5rpx;
  1151. }
  1152. .letterTitle2 {
  1153. height: 22.5rpx;
  1154. font-size: 22.5rpx;
  1155. line-height: 22.5rpx;
  1156. color: #292c33;
  1157. margin-bottom: 15rpx;
  1158. font-weight: 500;
  1159. overflow: hidden;
  1160. word-break: break-all;
  1161. /* break-all(允许在单词内换行。) */
  1162. text-overflow: ellipsis;
  1163. /* 超出部分省略号 */
  1164. display: -webkit-box;
  1165. /** 对象作为伸缩盒子模型显示 **/
  1166. -webkit-box-orient: vertical;
  1167. /** 设置或检索伸缩盒对象的子元素的排列方式 **/
  1168. -webkit-line-clamp: 1;
  1169. /** 显示的行数 **/
  1170. }
  1171. }
  1172. }
  1173. .checked {
  1174. margin-bottom: 40rpx;
  1175. padding: 0rpx 15.62rpx;
  1176. height: 75rpx;
  1177. .checked-checkItem {
  1178. margin: 0rpx 9.37rpx;
  1179. padding: 0;
  1180. width: 125rpx;
  1181. height: 75rpx;
  1182. background: #ebeff7;
  1183. float: left;
  1184. line-height: 75rpx;
  1185. text-align: center;
  1186. color: #292c33;
  1187. border-radius: 20rpx;
  1188. position: relative;
  1189. .img {
  1190. width: 51.25rpx;
  1191. height: 25rpx;
  1192. position: absolute;
  1193. right: -6.25rpx;
  1194. top: -6.25rpx;
  1195. }
  1196. .lastName {
  1197. color: #fff;
  1198. font-size: 13.75rpx;
  1199. line-height: 13.75rpx;
  1200. position: absolute;
  1201. right: 5rpx;
  1202. top: -1.87rpx;
  1203. }
  1204. }
  1205. }
  1206. .more {
  1207. margin: 0rpx 25rpx 0rpx 25rpx;
  1208. text-align: center;
  1209. border-top: 0.62rpx solid #dadee6;
  1210. text {
  1211. padding: 29.37rpx 0rpx 27.5rpx;
  1212. margin-right: 10rpx;
  1213. line-height: 22.5rpx;
  1214. font-size: 22.5rpx;
  1215. color: #3377ff;
  1216. display: inline-block;
  1217. vertical-align: top;
  1218. }
  1219. .moreImg {
  1220. margin-top: 28.75rpx;
  1221. width: 12.37rpx;
  1222. height: 21.21rpx;
  1223. display: inline-block;
  1224. }
  1225. .moreImg2 {
  1226. width: 12.37rpx;
  1227. height: 21.21rpx;
  1228. }
  1229. }
  1230. .multipleResponsible {
  1231. padding-top: 15rpx;
  1232. background-color: #F5F6FA;
  1233. .inner {
  1234. position: relative;
  1235. display: flex;
  1236. height: 87.5rpx;
  1237. z-index: 10;
  1238. flex-direction: row;
  1239. justify-content: flex-start;
  1240. align-items: center;
  1241. padding: 0 25rpx;
  1242. background-color: #FFFFFF;
  1243. .label {
  1244. display: inline-block;
  1245. font-size: 22.5rpx;
  1246. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1247. font-weight: 400;
  1248. color: #525866;
  1249. margin-right: 105rpx;
  1250. }
  1251. .value {
  1252. flex: 0.9;
  1253. font-size: 22.5rpx;
  1254. overflow: hidden; //超出的文本隐藏
  1255. text-overflow: ellipsis; //溢出用省略号显示
  1256. white-space: nowrap; //溢出不换行
  1257. }
  1258. .valuePlaceholder {
  1259. font-size: 22.5rpx;
  1260. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1261. font-weight: 400;
  1262. color: #B8BECC;
  1263. }
  1264. .arrow {
  1265. position: absolute;
  1266. right: 25rpx;
  1267. width: 12.5rpx;
  1268. height: 20rpx;
  1269. }
  1270. }
  1271. }
  1272. .score {
  1273. display: flex;
  1274. height: 87.5rpx;
  1275. flex-direction: row;
  1276. justify-content: space-between;
  1277. align-items: center;
  1278. padding: 0 25rpx;
  1279. background: #F5F6FA;
  1280. .box {
  1281. text-align: center;
  1282. vertical-align: bottom;
  1283. .lable {
  1284. display: inline-block;
  1285. font-size: 22.5rpx;
  1286. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1287. font-weight: 400;
  1288. color: #525866;
  1289. margin-right: 10rpx;
  1290. }
  1291. .totalScore {
  1292. font-size: 30rpx;
  1293. font-family: SourceHanSansCN-Bold, SourceHanSansCN;
  1294. font-weight: bold;
  1295. color: #292C33;
  1296. }
  1297. .currentScore {
  1298. font-size: 30rpx;
  1299. font-family: SourceHanSansCN-Bold, SourceHanSansCN;
  1300. font-weight: bold;
  1301. color: #3377FF;
  1302. }
  1303. }
  1304. }
  1305. .textValue {
  1306. display: flex;
  1307. flex-direction: row;
  1308. justify-content: flex-start;
  1309. align-items: center;
  1310. width: 70%;
  1311. height: 100%;
  1312. }
  1313. .inputScore {
  1314. display: flex;
  1315. flex-direction: row;
  1316. justify-content: flex-start;
  1317. align-items: center;
  1318. height: 87.5rpx;
  1319. padding: 0 25rpx;
  1320. background-color: #FFFFFF;
  1321. .label {
  1322. display: inline-block;
  1323. font-size: 22.5rpx;
  1324. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1325. font-weight: 400;
  1326. color: #525866;
  1327. margin-right: 81.25rpx;
  1328. }
  1329. .value {
  1330. font-size: 22.5rpx;
  1331. }
  1332. .placeholder {
  1333. font-size: 22.5rpx;
  1334. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1335. font-weight: 400;
  1336. color: #525866;
  1337. }
  1338. }
  1339. }
  1340. }
  1341. .see {
  1342. margin-top: 15rpx;
  1343. height: 287.5rpx;
  1344. background-color: #fff;
  1345. // padding-left: 25rpx;
  1346. .seeResult {
  1347. position: relative;
  1348. margin-left: 25rpx;
  1349. padding-top: 32.5rpx;
  1350. // height: 200rpx;
  1351. border-bottom: 1px solid #dadee6;
  1352. .clear {
  1353. position: absolute;
  1354. z-index: 10;
  1355. right: 25rpx;
  1356. bottom: 25rpx;
  1357. font-size: 22.5rpx;
  1358. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1359. font-weight: 400;
  1360. color: #FF3355;
  1361. }
  1362. .seeResultFloorOne {
  1363. display: flex;
  1364. flex-direction: row;
  1365. justify-content: space-between;
  1366. align-items: center;
  1367. margin-bottom: 25rpx;
  1368. padding-right: 25rpx;
  1369. .plusAction {
  1370. display: flex;
  1371. flex-direction: row;
  1372. justify-content: center;
  1373. align-items: center;
  1374. .plusIcon {
  1375. width: 25rpx;
  1376. height: 25rpx;
  1377. margin-right: 10rpx;
  1378. }
  1379. .threePoint {
  1380. font-size: 22.5rpx;
  1381. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1382. font-weight: 400;
  1383. color: #7A8599;
  1384. }
  1385. }
  1386. }
  1387. .seeName {
  1388. width: 175rpx;
  1389. font-size: 22.5rpx;
  1390. color: #525866;
  1391. line-height: 22.5rpx;
  1392. display: inline-block;
  1393. }
  1394. .seeTextarea {
  1395. width: 97%;
  1396. height: 155rpx;
  1397. display: inline-block;
  1398. font-size: 22.5rpx;
  1399. line-height: 27.5rpx;
  1400. }
  1401. }
  1402. .seeImg {
  1403. min-height: 87.5rpx;
  1404. .seeName2 {
  1405. width: 175rpx;
  1406. font-size: 22.5rpx;
  1407. color: #525866;
  1408. line-height: 87.5rpx;
  1409. display: inline-block;
  1410. }
  1411. }
  1412. }
  1413. .talk {
  1414. .talkTitle {
  1415. padding: 25rpx 25rpx 15rpx;
  1416. font-size: 22.5rpx;
  1417. line-height: 22.5rpx;
  1418. color: #666f80;
  1419. .del {
  1420. float: right;
  1421. color: #3377ff;
  1422. }
  1423. }
  1424. .talkResult {
  1425. position: relative;
  1426. padding-left: 25rpx;
  1427. padding-top: 32.5rpx;
  1428. border-bottom: 1px solid #dadee6;
  1429. background-color: #fff;
  1430. .clear {
  1431. position: absolute;
  1432. z-index: 10;
  1433. right: 25rpx;
  1434. bottom: 25rpx;
  1435. font-size: 22.5rpx;
  1436. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1437. font-weight: 400;
  1438. color: #FF3355;
  1439. }
  1440. .seeResultFloorOne {
  1441. display: flex;
  1442. flex-direction: row;
  1443. justify-content: space-between;
  1444. align-items: center;
  1445. margin-bottom: 25rpx;
  1446. padding-right: 25rpx;
  1447. .plusAction {
  1448. display: flex;
  1449. flex-direction: row;
  1450. justify-content: center;
  1451. align-items: center;
  1452. .plusIcon {
  1453. width: 25rpx;
  1454. height: 25rpx;
  1455. margin-right: 10rpx;
  1456. }
  1457. .threePoint {
  1458. font-size: 22.5rpx;
  1459. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1460. font-weight: 400;
  1461. color: #7A8599;
  1462. }
  1463. }
  1464. }
  1465. .seeName {
  1466. width: 175rpx;
  1467. font-size: 22.5rpx;
  1468. color: #525866;
  1469. line-height: 22.5rpx;
  1470. display: inline-block;
  1471. }
  1472. .seeTextarea {
  1473. width: 531.25rpx;
  1474. height: 155rpx;
  1475. display: inline-block;
  1476. font-size: 22.5rpx;
  1477. line-height: 27.5rpx;
  1478. }
  1479. }
  1480. .talkImg {
  1481. min-height: 87.5rpx;
  1482. .seeName2 {
  1483. width: 175rpx;
  1484. font-size: 22.5rpx;
  1485. color: #525866;
  1486. line-height: 87.5rpx;
  1487. display: inline-block;
  1488. }
  1489. }
  1490. }
  1491. .insert {
  1492. background-color: #fff;
  1493. font-size: 22.5rpx;
  1494. line-height: 22.5rpx;
  1495. color: #3377ff;
  1496. padding: 26.25rpx;
  1497. }
  1498. .sureDetail {
  1499. width: 100%;
  1500. height: 75rpx;
  1501. font-size: 22.5rpx;
  1502. background-color: #3377ff;
  1503. line-height: 75rpx;
  1504. position: absolute;
  1505. bottom: 0rpx;
  1506. }
  1507. .bottomMenuGroup {
  1508. position: fixed;
  1509. bottom: 0;
  1510. width: 100%;
  1511. height: 75rpx;
  1512. display: flex;
  1513. flex-direction: row;
  1514. background: #FFFFFF;
  1515. border-top: 0.62rpx solid #DADEE6;
  1516. .menuBtn {
  1517. display: flex;
  1518. width: 75rpx;
  1519. height: 75rpx;
  1520. justify-content: center;
  1521. align-items: center;
  1522. border-right: 0.62rpx solid #DADEE6;
  1523. .threeLineMenuIcon {
  1524. width: 26.25rpx;
  1525. height: 21.25rpx;
  1526. }
  1527. }
  1528. .prevBtn,
  1529. .nextBtn {
  1530. display: flex;
  1531. flex: 1;
  1532. justify-content: center;
  1533. height: 75rpx;
  1534. line-height: 75rpx;
  1535. font-size: 22.5rpx;
  1536. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  1537. font-weight: 400;
  1538. color: #3377FF;
  1539. }
  1540. .prevBtn {
  1541. border-right: 0.62rpx solid #DADEE6;
  1542. }
  1543. .nextBtn {
  1544. color: #FFFFFF;
  1545. background: #3377FF;
  1546. }
  1547. }
  1548. }
  1549. </style>