signApproval.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901
  1. <template>
  2. <div class="signApproval">
  3. <div class="navBarTOP">
  4. <!-- 顶部条-->
  5. <van-nav-bar class="navBar" title="审批详情" left-arrow @click-left="onClickLeft">
  6. <template #right>
  7. <span style="color: #0057ba" v-if="edit && userShow" @click="onSubmit">编辑</span>
  8. <!-- v-if="list.updatable"-->
  9. </template>
  10. </van-nav-bar>
  11. </div>
  12. <!-- 主体内容-->
  13. <div class="lineGrey"></div>
  14. <div class="lineGrey"></div>
  15. <div class="lineGrey"></div>
  16. <div class="lineGrey"></div>
  17. <div class="lineGrey"></div>
  18. <div class="lineGrey"></div>
  19. <div
  20. class="container"
  21. style="width: 94%; margin: 0 auto; border-radius: 6px; padding-bottom: 12px">
  22. <div class="card mt10">
  23. <div class="title">
  24. {{ list.storeName }}(<span style="color: #1989fa">{{ list.storeCode }}</span
  25. >)
  26. </div>
  27. <div class="subtitle">地址:{{ list.addressLine }}</div>
  28. <div class="subtitle">拜访人:{{ list.nickName }}</div>
  29. <div class="subtitle">拜访日期:{{ list.startTime }}~{{ list.stopTime }}</div>
  30. <!-- 分销店 -->
  31. <template
  32. v-if="
  33. verifyStoreType(list.storeCategory) && verifyStoreType(list.storeCategory).type == 'fxd'
  34. ">
  35. <div class="subtitle" style="display: flex">
  36. <div class="label" style="width: 75px">经销商:</div>
  37. <div class="valuue TCFXList">
  38. <div
  39. class="sfaStoreChainsContactList"
  40. v-for="(item, index) in list.sfaStoreChainsContactList"
  41. :key="index">
  42. {{ item.categoryDescribe }}
  43. {{ item.chainCode }}
  44. {{ item.chainName }}
  45. </div>
  46. </div>
  47. </div>
  48. </template>
  49. <template v-else>
  50. <div class="subtitle">经销商:{{ list.chainName }}</div>
  51. </template>
  52. </div>
  53. <div class="card appreval">
  54. <div style="padding: 0 10px 10px; font-size: 16px; font-weight: bold">任务</div>
  55. <van-collapse v-model="activeNames" v-if="list.sfaTaskList">
  56. <van-collapse-item
  57. v-for="(item1, index1) in list.sfaTaskList"
  58. :name="index1"
  59. :title="item1.taskName">
  60. <div class="deviceCode" v-if="item1.deviceCode && item1.putInCode">
  61. <div class="vertical"></div>
  62. <p class="mg0">
  63. <span>设备编号:{{ item1.deviceCode }}</span>
  64. </p>
  65. <p class="mg0">
  66. <span>投放编号:{{ item1.putInCode }}</span>
  67. </p>
  68. </div>
  69. <div
  70. class="container containert"
  71. style="width: 100%; margin: 0 auto; padding: 10px 0"
  72. v-if="item1.taskType == 2">
  73. <!-- <p v-if="checkShow" style=" padding: 0 10px; font-size: 14px;">全部不经营</p>-->
  74. <el-table
  75. :data="item1.collectionItemList"
  76. border
  77. style="width: 100%"
  78. class="table-headermd">
  79. <el-table-column prop="collectionName" label="产品名称" width="180">
  80. <template slot-scope="scope">
  81. <span class="tipTitle" @click="tipTitle(scope.row.collectionName)">{{
  82. scope.row.collectionName
  83. }}</span>
  84. </template>
  85. </el-table-column>
  86. <el-table-column prop="name" width="180">
  87. <template slot="header">
  88. <span>进货原价</span>
  89. </template>
  90. <template slot-scope="scope">
  91. <p class="f-right">{{ scope.row.collectionOptionList[0].answerValue }}</p>
  92. </template>
  93. </el-table-column>
  94. <el-table-column prop="address">
  95. <template slot="header">
  96. <span>促后净价</span>
  97. </template>
  98. <template slot-scope="scope">
  99. <p class="f-right">{{ scope.row.collectionOptionList[1].answerValue }}</p>
  100. </template>
  101. </el-table-column>
  102. <el-table-column prop="address">
  103. <template slot="header">
  104. <span>油工拿货价</span>
  105. </template>
  106. <template slot-scope="scope">
  107. <p class="f-right">{{ scope.row.collectionOptionList[2].answerValue }}</p>
  108. </template>
  109. </el-table-column>
  110. </el-table>
  111. </div>
  112. <van-form ref="tabstoreVal" v-if="item1.taskType == 1">
  113. <div v-for="(item, index) in item1.collectionItemList" :key="index">
  114. <div class="formLabel z-cell z-cells" v-if="item.answerType == 'sz'">
  115. <van-cell>
  116. <template #title> {{ index + 1 }}.{{ item.collectionName }} </template>
  117. </van-cell>
  118. <p class="mg0">{{ item.collectionOptionList[0].answerValue }}</p>
  119. <p
  120. style="
  121. color: #444;
  122. font-size: 12px;
  123. margin: 0;
  124. padding: 10px 0;
  125. text-align: right;
  126. ">
  127. <van-field
  128. class="mobile-input"
  129. v-model="item.collectionOptionList[0].collectionOption"
  130. autosize
  131. readonly
  132. type="textarea" />
  133. </p>
  134. <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
  135. </div>
  136. <div class="formLabel z-cell z-cells" v-if="item.answerType == 'zp'">
  137. <van-cell>
  138. <template #title> {{ index + 1 }}.{{ item.collectionName }} </template>
  139. </van-cell>
  140. <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
  141. </div>
  142. <div class="formLabel z-cell z-cells" v-if="item.answerType == 'wb'">
  143. <van-cell>
  144. <template #title> {{ index + 1 }}.{{ item.collectionName }} </template>
  145. </van-cell>
  146. <div class="selesetText">
  147. <p class="mg0">{{ item.collectionOptionList[0].answerValue }}</p>
  148. </div>
  149. <p style="color: #999; font-size: 12px; margin: 0; text-align: right">
  150. <van-field
  151. class="mobile-input"
  152. v-model="item.collectionOptionList[0].collectionOption"
  153. autosize
  154. readonly
  155. type="textarea" />
  156. </p>
  157. <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
  158. </div>
  159. <div class="formLabel z-cell z-cells" v-if="item.answerType == 'duox'">
  160. <van-cell>
  161. <template #title> {{ index + 1 }}.{{ item.collectionName }} </template>
  162. </van-cell>
  163. <div class="selesetText">
  164. <p
  165. class="mg0"
  166. v-for="(item1, index1) in item.collectionOptionList"
  167. :key="index1">
  168. <span v-if="item1.isCheck == 1">{{ item1.collectionOption }}</span>
  169. </p>
  170. </div>
  171. <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
  172. </div>
  173. <div class="formLabel z-cell z-cells" v-if="item.answerType == 'dx'">
  174. <van-cell>
  175. <template #title> {{ index + 1 }}.{{ item.collectionName }} </template>
  176. </van-cell>
  177. <div class="selesetText">
  178. <p
  179. class="mg0"
  180. v-for="(item2, index2) in item.collectionOptionList"
  181. :key="index2">
  182. <span v-if="item2.isCheck == 1">{{ item2.collectionOption }}</span>
  183. </p>
  184. </div>
  185. <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
  186. </div>
  187. </div>
  188. </van-form>
  189. </van-collapse-item>
  190. </van-collapse>
  191. </div>
  192. <div style="padding: 10px 16px; font-size: 16px; font-weight: bold" v-if="list.visitsMore">
  193. 更多记录
  194. </div>
  195. <van-cell-group v-if="list.visitsMore">
  196. <van-cell v-for="(item1, index1) in list.visitsMore" :key="index1">
  197. <template #title>
  198. <van-row>
  199. <van-col span="6">拜访人:</van-col>
  200. <van-col span="18" class="custom-titles">{{ item1.userName }}</van-col>
  201. </van-row>
  202. </template>
  203. <template #right-icon>
  204. <span>{{ item1.visitTime }}</span>
  205. </template>
  206. </van-cell>
  207. </van-cell-group>
  208. <p
  209. style="padding: 0 16px; font-size: 16px; font-weight: bold"
  210. v-if="ListHistoryList.length > 0">
  211. 审批历史
  212. </p>
  213. <van-steps direction="vertical" :active="ListHistoryTOTLE">
  214. <van-step v-for="(item, index) in ListHistoryList" :key="index">
  215. <h3 style="font-size: 14px">{{ item.activityName }} &nbsp;{{ item.assigneeName }}</h3>
  216. <p>{{ item.comment }}</p>
  217. </van-step>
  218. </van-steps>
  219. </div>
  220. <div v-if="approvalShow">
  221. <div class="contentContainersign">
  222. <p class="contentContainerTitlesign">审批意见</p>
  223. <div style="padding: 10px 0">
  224. <van-field
  225. v-model="Content"
  226. rows="4"
  227. autosize
  228. maxlength="800"
  229. show-word-limit
  230. :formatter="formatter"
  231. type="textarea"
  232. placeholder="请输入审批意见" />
  233. </div>
  234. </div>
  235. <br />
  236. <van-row>
  237. <van-col span="12">
  238. <van-button
  239. type="info"
  240. size="small"
  241. plain
  242. class="BtnBorder BtnBorderRed"
  243. @click="refuseFn"
  244. >拒绝</van-button
  245. >
  246. </van-col>
  247. <!-- <van-col span="8">-->
  248. <!-- <van-button type="info" size="small" plain class="BtnBorder" @click="reject">退回修改</van-button>-->
  249. <!-- </van-col>-->
  250. <van-col span="12">
  251. <van-button type="info" size="small" plain class="Btn" @click="submit">通过</van-button>
  252. </van-col>
  253. </van-row>
  254. <br />
  255. <br />
  256. </div>
  257. </div>
  258. </template>
  259. <script>
  260. import {
  261. getCustomerSignDetail,
  262. addComplete,
  263. getListHistoryaList,
  264. getVisitsDetail,
  265. } from '@/api/index';
  266. import deleteUploadImg from '@/components/deleteUploadImg';
  267. export default {
  268. name: 'abnormalVisit',
  269. components: { deleteUploadImg },
  270. data() {
  271. return {
  272. activeNames: [],
  273. value: '',
  274. sdsd: false,
  275. showPicker: false,
  276. approvalShow: false,
  277. logshow: false,
  278. edit: false,
  279. imgs: [],
  280. checkboxGroup: [],
  281. radio: '',
  282. uploadid2: 'uploadid2',
  283. collectionItemList: [],
  284. rdId: '',
  285. show: false,
  286. PhotoTypeList: [],
  287. PhotoType: '',
  288. PhotoTypeText: '',
  289. indexselect: 0,
  290. visitId: '',
  291. storeGroupId: '',
  292. taskId: '',
  293. collectionId: '',
  294. storeId: '',
  295. collectionAnswerlisd: [],
  296. tableData1: [],
  297. taskType: 1,
  298. flag: false,
  299. Content: '',
  300. indeximg: '',
  301. dataList: {},
  302. ListHistoryList: [],
  303. ListHistoryTOTLE: 0,
  304. list: '',
  305. userShow: false,
  306. };
  307. },
  308. watch: {
  309. $route(to, from) {
  310. if (this.$route.query.type == 1 || this.$route.query.type == 2) {
  311. this.approvalShow = false;
  312. } else {
  313. this.approvalShow = true;
  314. }
  315. if (to.path == '/signApproval' && from.path == '/signApprovalList') {
  316. this.signId = this.$route.query.signId + '';
  317. // if(this.$route.query.itemType=="dkhqy"){
  318. // this.info()
  319. // this.KJshow=false
  320. // }else{
  321. // this.KJshow=true
  322. // this.infoKJ()
  323. // }
  324. }
  325. },
  326. },
  327. activated() {
  328. this.infoKJ();
  329. },
  330. created() {
  331. if (this.$route.query.type == 1 || this.$route.query.type == 2) {
  332. this.approvalShow = false;
  333. } else {
  334. this.approvalShow = true;
  335. }
  336. this.signId = this.$route.query.signId + '';
  337. // this.infoKJ();
  338. },
  339. methods: {
  340. getListHistoryList() {
  341. var form = { processInstanceId: this.$route.query.instanceId, pageNum: 1, pageSize: 999 };
  342. getListHistoryaList(form).then((res) => {
  343. this.ListHistoryList = res.rows;
  344. this.ListHistoryTOTLE = res.total;
  345. });
  346. },
  347. onSubmit() {
  348. localStorage.setItem('storeName', this.dataList.storeName);
  349. localStorage.setItem('ORGName', this.dataList.deptName);
  350. localStorage.setItem('chainNameR', this.dataList.storeName);
  351. this.$router.push({
  352. path: '/sign',
  353. query: {
  354. id: this.dataList.storeId,
  355. signId: this.dataList.signId,
  356. taskId: this.$route.query.taskId,
  357. edit: true,
  358. },
  359. });
  360. },
  361. submit() {
  362. var formData = {
  363. taskId: this.$route.query.taskId,
  364. instanceId: this.dataList.instanceId,
  365. variables: JSON.stringify({
  366. comment: this.Content,
  367. pass: true,
  368. refuse: true,
  369. }),
  370. };
  371. this.$dialog
  372. .confirm({
  373. message: '确认提交审批?',
  374. })
  375. .then(() => {
  376. addComplete(formData).then((res) => {
  377. if (res.code == 200) {
  378. this.$dialog
  379. .alert({
  380. title: '系统提示',
  381. message: '审批成功',
  382. })
  383. .then(() => {
  384. this.$router.go(-1);
  385. });
  386. } else {
  387. this.$toast(res.msg);
  388. }
  389. });
  390. });
  391. },
  392. reject() {
  393. if (this.Content.trim() == '') {
  394. this.$toast('请输入驳回原因!');
  395. return;
  396. }
  397. var formData = {
  398. taskId: this.$route.query.taskId,
  399. instanceId: this.dataList.instanceId,
  400. refuse: true,
  401. variables: JSON.stringify({
  402. comment: this.Content,
  403. pass: false,
  404. refuse: true,
  405. }),
  406. };
  407. this.$dialog
  408. .confirm({
  409. message: '确认提交审批?',
  410. })
  411. .then(() => {
  412. addComplete(formData).then((res) => {
  413. if (res.code == 200) {
  414. this.$dialog
  415. .alert({
  416. title: '系统提示',
  417. message: '审批成功',
  418. })
  419. .then(() => {
  420. this.$router.go(-1);
  421. });
  422. } else {
  423. this.$toast(res.msg);
  424. }
  425. });
  426. });
  427. },
  428. refuseFn() {
  429. if (this.Content.trim() == '') {
  430. this.$toast('请输入拒绝原因!');
  431. return;
  432. }
  433. var formData = {
  434. taskId: this.$route.query.taskId,
  435. instanceId: this.dataList.instanceId,
  436. refuse: false,
  437. variables: JSON.stringify({
  438. comment: this.Content,
  439. refuse: false,
  440. pass: false,
  441. }),
  442. };
  443. this.$dialog
  444. .confirm({
  445. message: '确认提交审批?',
  446. })
  447. .then(() => {
  448. addComplete(formData).then((res) => {
  449. if (res.code == 200) {
  450. this.$dialog
  451. .alert({
  452. title: '系统提示',
  453. message: '审批成功',
  454. })
  455. .then(() => {
  456. this.$router.go(-1);
  457. });
  458. } else {
  459. this.$toast(res.msg);
  460. }
  461. });
  462. });
  463. },
  464. formatter(value) {
  465. return value.replace(
  466. /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,
  467. ''
  468. );
  469. },
  470. checkFn(val) {
  471. var arrc = [];
  472. for (var cl = 0; cl < val.length; cl++) {
  473. if (val[cl].isCheck == '1') {
  474. arrc.push(val[cl].collectionOption);
  475. }
  476. }
  477. return arrc.join(',');
  478. },
  479. infoKJ() {
  480. this.getListHistoryList();
  481. let loading1 = this.$toast.loading({
  482. duration: 0,
  483. message: '加载中...',
  484. forbidClick: true,
  485. });
  486. if (this.$route.query.edit == 'true') {
  487. this.edit = true;
  488. } else {
  489. this.edit = false;
  490. }
  491. getVisitsDetail({
  492. visitsId: this.$route.query.visitsId,
  493. instanceId: this.$route.query.instanceId,
  494. }).then((res) => {
  495. if (res.code == 200) {
  496. this.list = res.data;
  497. if (res.data.sfaTaskList) {
  498. for (var p = 0; p < res.data.sfaTaskList.length; p++) {
  499. if (res.data.sfaTaskList[p].processKey != null) {
  500. this.activeNames.push(p);
  501. }
  502. }
  503. }
  504. this.dataList.instanceId = res.data.instanceId;
  505. if (res.data.stopTime != res.data.updateTime) {
  506. this.updateTimeShow = true;
  507. } else {
  508. this.updateTimeShow = false;
  509. }
  510. if (res.data.taskId != null) {
  511. this.CWShow = true;
  512. } else {
  513. this.CWShow = false;
  514. }
  515. this.sameDay = res.data.sameDay;
  516. if (localStorage.getItem('userId') == res.data.userId) {
  517. this.remarkShow = true;
  518. } else {
  519. this.remarkShow = false;
  520. }
  521. if (res.data.visitRemarks != null) {
  522. if (res.data.visitRemarks.length > 0) {
  523. this.managerRemarkContents = res.data.visitRemarks;
  524. } else {
  525. this.managerRemarkContents = null;
  526. }
  527. }
  528. if (res.data.visitSource == 2) {
  529. this.imgs = res.data.sysFileInfos;
  530. }
  531. } else {
  532. this.$toast.fail(res.msg);
  533. }
  534. loading1.clear();
  535. });
  536. },
  537. info() {
  538. this.getListHistoryList();
  539. let loading1 = this.$toast.loading({
  540. duration: 0,
  541. message: '加载中...',
  542. forbidClick: true,
  543. });
  544. if (this.$route.query.edit == 'true') {
  545. this.edit = true;
  546. } else {
  547. this.edit = false;
  548. }
  549. getCustomerSignDetail({ signId: this.signId }).then((res) => {
  550. if (localStorage.getItem('userId') == res.data.userId) {
  551. this.userShow = true;
  552. } else {
  553. this.userShow = false;
  554. }
  555. loading1.clear();
  556. this.dataList = res.data;
  557. var collectionItemLists = res.data.sfaTaskList
  558. ? res.data.sfaTaskList[0].collectionItemList
  559. : 'res.data.sfaTaskList';
  560. for (var q = 0; q < collectionItemLists.length; q++) {
  561. if (
  562. collectionItemLists[q].answerType == 'sz' ||
  563. collectionItemLists[q].answerType == 'wb'
  564. ) {
  565. collectionItemLists[q].answerValue =
  566. collectionItemLists[q].collectionOptionList[0].answerValue;
  567. }
  568. if (
  569. collectionItemLists[q].answerType == 'duox' ||
  570. collectionItemLists[q].answerType == 'dx'
  571. ) {
  572. collectionItemLists[q].answerValue = [];
  573. for (var qq = 0; qq < collectionItemLists[q].collectionOptionList.length; qq++) {
  574. if (collectionItemLists[q].collectionOptionList[qq].isCheck == 1) {
  575. collectionItemLists[q].answerValue.push(
  576. collectionItemLists[q].collectionOptionList[qq].collectionOptionId
  577. );
  578. collectionItemLists[q].collectionOptionList[qq].code =
  579. collectionItemLists[q].collectionCode;
  580. collectionItemLists[q].collectionOptionList[qq].answerType =
  581. collectionItemLists[q].answerType;
  582. this.collectionAnswerlisd.push(collectionItemLists[q].collectionOptionList[qq]);
  583. }
  584. }
  585. collectionItemLists[q].answerValue = collectionItemLists[q].answerValue.join();
  586. }
  587. }
  588. this.collectionItemList = collectionItemLists;
  589. });
  590. },
  591. historiStoreVisit(val, index, kyType) {
  592. this.$router.push({
  593. path: '/historiStoreVisit',
  594. query: {
  595. visitId: this.$route.query.visitsId,
  596. ids: index,
  597. taskType: val.taskType,
  598. kyType: kyType,
  599. },
  600. });
  601. sessionStorage.setItem('collectionItemList', JSON.stringify(val.collectionItemList));
  602. },
  603. onClickLeft() {
  604. this.$router.go(-1);
  605. },
  606. tipTitle(val) {
  607. this.$toast(val);
  608. },
  609. },
  610. };
  611. </script>
  612. <style lang="scss" scoped>
  613. .container {
  614. padding-bottom: 50px;
  615. }
  616. .container .custom-titles {
  617. white-space: break-spaces;
  618. }
  619. .card {
  620. background: #fff;
  621. padding: 10px 15px;
  622. box-sizing: border-box;
  623. .title {
  624. line-height: 30px;
  625. font-size: 16px;
  626. font-weight: bold;
  627. color: #333;
  628. }
  629. .subtitle {
  630. line-height: 24px;
  631. font-size: 14px;
  632. color: #7b7b7b;
  633. }
  634. .info {
  635. font-size: 16px;
  636. color: #484848;
  637. line-height: 40px;
  638. border-bottom: 1px solid #dedede;
  639. position: relative;
  640. &:last-child {
  641. border-bottom: 0;
  642. }
  643. .arrow {
  644. float: right;
  645. display: inline-block;
  646. height: 20px;
  647. width: 20px;
  648. line-height: 20px;
  649. text-align: center;
  650. border-radius: 50%;
  651. background: #1989fa;
  652. color: #fff;
  653. font-weight: bold;
  654. font-size: 14px;
  655. margin-top: 9px;
  656. }
  657. .arrowdetils1 {
  658. background: #fff;
  659. position: absolute;
  660. top: 50%;
  661. color: #444;
  662. right: 0;
  663. margin-top: -22px;
  664. }
  665. }
  666. }
  667. .TCFXList {
  668. .van-field__control--custom {
  669. flex-direction: column;
  670. align-items: self-start;
  671. .TCFXListTreeSelec {
  672. padding: 3px;
  673. }
  674. }
  675. }
  676. .signApproval {
  677. .deviceCode {
  678. p {
  679. color: #4a4a4a;
  680. }
  681. }
  682. }
  683. </style>
  684. <style>
  685. .fontWeit .van-cell__title {
  686. font-weight: bold;
  687. font-size: 16px;
  688. }
  689. .fontWeit .van-cell__title p {
  690. margin: 0;
  691. }
  692. .comment .van-field__control {
  693. background-color: #ebf4ff;
  694. border-radius: 6px;
  695. }
  696. .contern .van-cell {
  697. background-color: #ebf4ff;
  698. border-radius: 6px;
  699. overflow: hidden;
  700. }
  701. </style>
  702. <style scoped>
  703. .container {
  704. background-color: white;
  705. }
  706. .van-f-red {
  707. color: red;
  708. width: 8px;
  709. display: inline-block;
  710. line-height: 26px;
  711. }
  712. .formLabel {
  713. margin: 0 16px;
  714. border-bottom: 1px solid #f1f1f1;
  715. }
  716. .formLabel .van-cell {
  717. padding: 10px 0;
  718. }
  719. .formLabel .van-cell::after {
  720. border: 0;
  721. }
  722. .formLabel .van-field {
  723. border: 1px solid #f1f1f1;
  724. padding: 6px;
  725. width: 100%;
  726. border-radius: 4px;
  727. overflow: hidden;
  728. }
  729. .formLabel .van-field__control {
  730. padding: 0 10px;
  731. }
  732. .formLabel .formLabeltitle {
  733. position: absolute;
  734. top: 8px;
  735. }
  736. .z-checkbox .van-radio {
  737. padding: 6px 0;
  738. }
  739. .ztext-cell .van-cell__title {
  740. font-size: 14px;
  741. }
  742. </style>
  743. <style>
  744. .table-headermd {
  745. font-size: 1.2rem;
  746. text-align: center;
  747. position: initial;
  748. width: 94% !important;
  749. margin: 0 auto;
  750. border-right: 0;
  751. }
  752. .table-headermd .el-table__header,
  753. .table-headermd .el-table__body {
  754. width: 100% !important;
  755. }
  756. .table-headermd col {
  757. width: 5.8rem;
  758. }
  759. .table-headermd col:nth-child(2),
  760. .table-headermd col:nth-child(4),
  761. .table-headermd col:nth-child(3) {
  762. width: 5rem;
  763. }
  764. .table-headermd .van-cell {
  765. padding: 0 4px;
  766. height: 100%;
  767. }
  768. .table-headermd th.el-table__cell > .cell {
  769. padding: 0 4px;
  770. }
  771. .table-headermd th.el-table__cell {
  772. background-color: #1989fa;
  773. color: #fff;
  774. }
  775. .table-headermd .el-table__cell {
  776. padding: 4px 0;
  777. }
  778. .table-headermd .tipTitle {
  779. overflow: hidden;
  780. text-overflow: ellipsis;
  781. display: -webkit-box;
  782. -webkit-box-orient: vertical;
  783. -webkit-line-clamp: 2;
  784. }
  785. .table-headermd::before {
  786. height: 0;
  787. }
  788. .f-right {
  789. text-align: right;
  790. margin: 0;
  791. }
  792. .mg0 {
  793. margin: 6px 10px;
  794. color: #909090;
  795. font-size: 14px;
  796. }
  797. .selesetText {
  798. margin-bottom: 16px;
  799. }
  800. .z-cells .van-cell__title {
  801. font-weight: bold;
  802. color: #4a4a4a;
  803. }
  804. .z-cells .van-cell {
  805. padding-bottom: 0;
  806. }
  807. .Btn {
  808. margin: 0 auto 10px;
  809. display: block;
  810. width: 90%;
  811. border-radius: 5px;
  812. color: #fff !important;
  813. background-color: #0057ba;
  814. border: 1px solid #0057ba;
  815. height: 36px;
  816. }
  817. .BtnBorder {
  818. margin: 0 auto 10px;
  819. display: block;
  820. width: 90%;
  821. border-radius: 5px;
  822. border: 1px solid #0057ba;
  823. color: #0057ba !important;
  824. height: 36px;
  825. }
  826. .BtnBorderRed {
  827. border: 1px solid orangered !important;
  828. color: orangered !important;
  829. }
  830. .contentContainersign {
  831. background-color: white;
  832. border-radius: 8px;
  833. padding: 10px 16px;
  834. margin: 10px;
  835. }
  836. .contentContainersign .contentContainerTitlesign {
  837. color: #222;
  838. font-size: 14px;
  839. margin: 0;
  840. }
  841. .contentContainersign .van-cell {
  842. background-color: #ebf4ff;
  843. }
  844. .appreval {
  845. border: 1px solid #f5f5f5;
  846. border-radius: 6px;
  847. overflow: hidden;
  848. padding: 10px 0 0 !important;
  849. margin: 16px;
  850. }
  851. .appreval .van-collapse-item__content {
  852. padding: 0;
  853. }
  854. .appreval .z-cells .van-cell__title {
  855. font-weight: normal;
  856. color: #4a4a4a;
  857. }
  858. .appreval .van-cell {
  859. padding: 10px 12px;
  860. }
  861. .mobile-input .van-field__control {
  862. font-size: 12px;
  863. color: #999;
  864. border: 0;
  865. }
  866. .formLabel .mobile-input {
  867. border: 0 !important;
  868. }
  869. </style>