index.vue 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516
  1. <template>
  2. <template-page
  3. ref="pageRef"
  4. :getList="getList"
  5. :exportList="exportList"
  6. :columnParsing="columnParsing"
  7. :optionsEvensGroup="optionsEvensGroup"
  8. :tableAttributes="tableAttributes"
  9. :tableEvents="tableEvents"
  10. :operation="operation()"
  11. :moreParameters="moreParameters"
  12. :expName="expName"
  13. :searchSelectDynamicData="searchSelectDynamicData"
  14. :searchSelectOnChanre="searchSelectOnChanre"
  15. >
  16. <div class="cartographer_big">
  17. <el-dialog title="配置" width="100%" :modal="false" :visible.sync="formBool" :before-close="handleClose">
  18. <zj-page-container v-if="formBool">
  19. <zj-page-fill class="neibuview">
  20. <zj-form-container
  21. ref="formRef"
  22. :form-data="formData"
  23. :form-rules="formRules"
  24. :form-attributes="{ size: 'mini' }"
  25. >
  26. <zj-form-module title="申请信息" label-width="140px" :form-data="formData" :form-items="items" />
  27. <zj-form-module
  28. v-if="~[2].indexOf(formType) || (~[3].indexOf(formType) && formData.confirmBy)"
  29. title="中心审批信息"
  30. label-width="140px"
  31. :form-data="formData"
  32. :form-items="items2"
  33. />
  34. <zj-form-module title="审批记录">
  35. <zj-table
  36. :columns="operationDetailColumns"
  37. :tableData="logList"
  38. :tableAttributes="{
  39. border: true
  40. }"
  41. ></zj-table>
  42. </zj-form-module>
  43. </zj-form-container>
  44. </zj-page-fill>
  45. <!-- 操作按钮 -->
  46. <div style="box-sizing: border-box; padding: 10px; text-align: right">
  47. <el-button size="mini" @click="handleClose">取 消</el-button>
  48. <el-button
  49. v-if="~[0, 1].indexOf(formType) && !formData.id"
  50. size="mini"
  51. @click="formConfirm('SAVE')"
  52. type="primary"
  53. >保 存</el-button
  54. >
  55. <el-button v-if="~[0, 1].indexOf(formType)" size="mini" @click="formConfirm('WAIT')" type="primary"
  56. >提 交</el-button
  57. >
  58. <el-button v-if="~[2].indexOf(formType)" size="mini" @click="formConfirmShenHe" type="primary"
  59. >确定</el-button
  60. >
  61. <el-button v-if="~[3].indexOf(formType)" size="mini" @click="xiazaifujian" type="primary"
  62. >下载附件</el-button
  63. >
  64. </div>
  65. </zj-page-container>
  66. </el-dialog>
  67. </div>
  68. </template-page>
  69. </template>
  70. <script>
  71. import TemplatePage from '@/components/template/template-page-1.vue'
  72. import import_mixin from '@/components/template/import_mixin.js'
  73. import operation_mixin from '@/components/template/operation_mixin.js'
  74. import ImageUpload from '@/components/file-upload'
  75. import { required, mobileRequired } from '@/components/template/rules_verify.js'
  76. import {
  77. qualityFeedbackList,
  78. qualityFeedbackListExport,
  79. qualityFeedbackDetail,
  80. qualityFeedbackAdd,
  81. qualityFeedbackUpdate,
  82. qualityFeedbackConfirm,
  83. qualityFeedbackCount,
  84. qualityFeedbackUpdateUpload,
  85. qualityFeedbackDownZip
  86. } from '@/api/qualityFeedback'
  87. import { lbsAmapRegion } from '@/api/common.js'
  88. import { getClassifyList } from '@/api/goods'
  89. import { getWebsit } from '@/api/customerManagement.js'
  90. export default {
  91. components: { TemplatePage, ImageUpload },
  92. mixins: [import_mixin, operation_mixin],
  93. data() {
  94. return {
  95. // 表格属性
  96. tableAttributes: {
  97. selectColumn: true
  98. },
  99. // 表格事件
  100. tableEvents: {
  101. 'selection-change': this.selectionChange
  102. },
  103. recordSelected: [],
  104. formBool: false,
  105. formType: 0,
  106. formData: {
  107. address: '',
  108. area: '',
  109. areaId: '',
  110. bugPartCode: '',
  111. bugPartName: '',
  112. bugRemark: '',
  113. city: '',
  114. cityId: '',
  115. companyWechatId: '',
  116. companyWechatName: '',
  117. confirmBy: '',
  118. confirmTime: '',
  119. createBy: '',
  120. createTime: '',
  121. customerMobile: '',
  122. customerName: '',
  123. insideCode: '',
  124. isNeedPlan: true,
  125. isPartSend: true,
  126. isSalesBefore: true,
  127. isUpload: true,
  128. items: [],
  129. mainId: '',
  130. mainName: '',
  131. num: '',
  132. orderNo: '',
  133. outCode: '',
  134. outDate: '',
  135. productName: '',
  136. province: '',
  137. provinceId: '',
  138. remark: '',
  139. repairDate: '',
  140. seriesName: '',
  141. smallId: '',
  142. smallName: '',
  143. status: '',
  144. street: '',
  145. streetId: '',
  146. submitBy: '',
  147. submitTime: '',
  148. supplyDate: '',
  149. title: '',
  150. useDate: '',
  151. websitAnalyse: '',
  152. websitHandleMethod: '',
  153. websitId: '',
  154. websitName: '',
  155. workerMobie: '',
  156. workerName: '',
  157. insideProductName: '',
  158. outProductName: '',
  159. fujian: [],
  160. neijitiaoma: [],
  161. waijitiaoma: [],
  162. qita: []
  163. },
  164. formRules: {},
  165. provinceList: [],
  166. cityList: [],
  167. areaList: [],
  168. streetList: [],
  169. classifyList: [],
  170. classifyListLv2: [],
  171. createWebsitList: [],
  172. statusTypeList: [],
  173. expName: '',
  174. kaiguan: true,
  175. searchSelectDynamicData: {
  176. PRODUCT_CATEGORY: [],
  177. PRODUCT_SUBCLASS: []
  178. },
  179. searchSelectOnChanre: {
  180. // 产品大类
  181. PRODUCT_CATEGORY: (v, data) => {
  182. data.queryData.find(item => item.param === 'a.small_id').value = ''
  183. this.searchSelectDynamicData.PRODUCT_SUBCLASS = this.PRODUCT_SUBCLASS.filter(item => item.parentId === v)
  184. },
  185. // 产品小类
  186. PRODUCT_SUBCLASS: (v, data) => {}
  187. },
  188. logList: []
  189. }
  190. },
  191. created() {
  192. getClassifyList({ type: 2, status: true }).then(res => {
  193. var classifyListLv2 = []
  194. this.searchSelectDynamicData.PRODUCT_CATEGORY = res.data.map(item => {
  195. var { children, ...data } = item
  196. classifyListLv2.push(
  197. ...(children || []).map(item => {
  198. return {
  199. label: item.name,
  200. value: item.categoryId,
  201. parentId: item.parentId
  202. }
  203. })
  204. )
  205. return {
  206. label: item.name,
  207. value: item.categoryId
  208. }
  209. })
  210. this.PRODUCT_SUBCLASS = classifyListLv2
  211. })
  212. },
  213. computed: {
  214. operationDetailColumns() {
  215. return [
  216. {
  217. columnAttributes: {
  218. label: '网点提交时间',
  219. prop: 'submitTime'
  220. }
  221. },
  222. {
  223. columnAttributes: {
  224. label: '网点提交人',
  225. prop: 'submitBy'
  226. }
  227. },
  228. {
  229. columnAttributes: {
  230. label: '审核结果',
  231. prop: 'status'
  232. },
  233. render: (h, { row, column, index }) => {
  234. return (
  235. <div style="padding: 0 10px">
  236. {{ OK: '通过', REJECT: '驳回可修改', FAIL: '驳回不可修改' }[row.status]}
  237. </div>
  238. )
  239. }
  240. },
  241. {
  242. columnAttributes: {
  243. label: '审核备注',
  244. prop: 'remark'
  245. }
  246. },
  247. {
  248. columnAttributes: {
  249. label: '中心审核人',
  250. prop: 'confirmBy'
  251. }
  252. },
  253. {
  254. columnAttributes: {
  255. label: '中心审核时间',
  256. prop: 'confirmTime'
  257. }
  258. }
  259. ]
  260. },
  261. moreParameters() {
  262. return [
  263. {
  264. name: '状态',
  265. key: 'status',
  266. value: '',
  267. conditions: [
  268. {
  269. label: '全部',
  270. value: ''
  271. },
  272. ...this.statusTypeList
  273. ]
  274. }
  275. ]
  276. },
  277. optionsEvensGroup() {
  278. return [
  279. [
  280. [
  281. this.optionsEvensAuth('add', {
  282. click: () => {
  283. this.getinitlbslist()
  284. this.getClassifyListData()
  285. this.formType = 0
  286. this.formBool = true
  287. }
  288. })
  289. ]
  290. ],
  291. [
  292. [
  293. this.optionsEvensAuth('recordedAtHeadquarters', {
  294. click: () => {
  295. if (this.recordSelected.length === 0) {
  296. this.$message.warning('请勾选数据')
  297. return
  298. }
  299. qualityFeedbackUpdateUpload({
  300. ids: this.recordSelected.map(item => item.id).join(',')
  301. }).then(res => {
  302. this.$message({
  303. type: 'success',
  304. message: '操作成功!'
  305. })
  306. this.$refs?.pageRef?.refreshList()
  307. })
  308. }
  309. })
  310. ]
  311. ]
  312. ]
  313. },
  314. items() {
  315. return [
  316. {
  317. name: 'el-input',
  318. md: 18,
  319. attributes: {
  320. disabled: [2, 3].includes(this.formType),
  321. placeholder: '请输入'
  322. },
  323. formItemAttributes: {
  324. label: '反馈主题',
  325. prop: 'title',
  326. rules: [...required]
  327. }
  328. },
  329. {
  330. md: 6,
  331. name: 'el-radio',
  332. options: [
  333. { label: '是', value: true },
  334. { label: '否', value: false }
  335. ],
  336. attributes: {
  337. disabled: [2, 3].includes(this.formType)
  338. },
  339. formItemAttributes: {
  340. label: '是否售前机',
  341. prop: 'isSalesBefore'
  342. }
  343. },
  344. {
  345. name: 'el-select',
  346. md: 12,
  347. options: this.createWebsitList.map(item => ({ ...item, label: `(${item.value})${item.label}` })),
  348. attributes: {
  349. disabled: [1, 2, 3].includes(this.formType),
  350. placeholder: '请选择',
  351. clearable: true,
  352. filterable: true
  353. },
  354. formItemAttributes: {
  355. label: '反馈网点',
  356. prop: 'websitId',
  357. rules: [...required]
  358. },
  359. events: {
  360. change: val => {
  361. this.formData.websitName = this.createWebsitList.find(item => item.value == val).label || ''
  362. }
  363. }
  364. },
  365. {
  366. name: 'el-input',
  367. md: 6,
  368. attributes: {
  369. disabled: true,
  370. placeholder: '请输入'
  371. },
  372. formItemAttributes: {
  373. label: '反馈时间',
  374. prop: 'submitTime'
  375. }
  376. },
  377. {
  378. name: 'el-input',
  379. md: 6,
  380. attributes: {
  381. disabled: [2, 3].includes(this.formType),
  382. placeholder: '请输入'
  383. },
  384. formItemAttributes: {
  385. label: '云售后4.0单号',
  386. prop: 'orderNo',
  387. rules: []
  388. }
  389. },
  390. {
  391. name: 'el-input',
  392. md: 6,
  393. attributes: {
  394. disabled: [2, 3].includes(this.formType),
  395. placeholder: '请输入'
  396. },
  397. formItemAttributes: {
  398. label: '工程师名称',
  399. prop: 'workerName',
  400. rules: [...required]
  401. }
  402. },
  403. {
  404. name: 'el-input',
  405. md: 6,
  406. attributes: {
  407. disabled: [2, 3].includes(this.formType),
  408. placeholder: '请输入'
  409. },
  410. formItemAttributes: {
  411. label: '工程师电话',
  412. prop: 'workerMobie',
  413. rules: [...mobileRequired]
  414. }
  415. },
  416. {
  417. name: 'el-input',
  418. md: 6,
  419. attributes: {
  420. disabled: [2, 3].includes(this.formType),
  421. placeholder: '请输入'
  422. },
  423. formItemAttributes: {
  424. label: '客户名称',
  425. prop: 'customerName',
  426. rules: [...required]
  427. }
  428. },
  429. {
  430. name: 'el-input',
  431. md: 6,
  432. attributes: {
  433. disabled: [2, 3].includes(this.formType),
  434. placeholder: '请输入'
  435. },
  436. formItemAttributes: {
  437. label: '客户电话',
  438. prop: 'customerMobile',
  439. rules: [...mobileRequired]
  440. }
  441. },
  442. {
  443. name: 'el-select',
  444. md: 6,
  445. formItemAttributes: {
  446. label: '省',
  447. prop: 'provinceId',
  448. rules: [...required]
  449. },
  450. options: this.provinceList.map((v, i) => ({ value: v.id, label: v.name })),
  451. attributes: {
  452. disabled: [2, 3].includes(this.formType),
  453. clearable: true,
  454. filterable: true,
  455. placeholder: '请选择'
  456. },
  457. events: {
  458. change: val => {
  459. // 获取省名称
  460. this.formData.province =
  461. this.provinceList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)
  462. ?.label || ''
  463. // 清除市区街道以及详细地址数据
  464. this.delDataK(1)
  465. lbsAmapRegion({ pid: val }).then(res => {
  466. this.cityList = res.data
  467. })
  468. }
  469. }
  470. },
  471. {
  472. name: 'el-select',
  473. md: 6,
  474. formItemAttributes: {
  475. label: '市',
  476. prop: 'cityId',
  477. rules: [...required]
  478. },
  479. options: this.cityList.map((v, i) => ({ value: v.id, label: v.name })),
  480. attributes: {
  481. disabled: [2, 3].includes(this.formType),
  482. clearable: true,
  483. filterable: true,
  484. placeholder: '请选择'
  485. },
  486. events: {
  487. change: val => {
  488. // 获取市名称
  489. this.formData.city =
  490. this.cityList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)?.label ||
  491. ''
  492. // 清除区街道以及详细地址数据
  493. this.delDataK(2)
  494. lbsAmapRegion({ pid: val }).then(res => {
  495. this.areaList = res.data
  496. })
  497. }
  498. }
  499. },
  500. {
  501. name: 'el-select',
  502. md: 6,
  503. formItemAttributes: {
  504. label: '区',
  505. prop: 'areaId',
  506. rules: [...required]
  507. },
  508. options: this.areaList.map((v, i) => ({ value: v.id, label: v.name })),
  509. attributes: {
  510. disabled: [2, 3].includes(this.formType),
  511. clearable: true,
  512. filterable: true,
  513. placeholder: '请选择'
  514. },
  515. events: {
  516. change: val => {
  517. // 获取区名称
  518. this.formData.area =
  519. this.areaList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)?.label ||
  520. ''
  521. // 清除街道以及详细地址数据
  522. this.delDataK(3)
  523. lbsAmapRegion({ pid: val }).then(res => {
  524. this.streetList = res.data
  525. })
  526. }
  527. }
  528. },
  529. {
  530. name: 'el-select',
  531. md: 6,
  532. formItemAttributes: {
  533. label: '街道', //
  534. prop: 'streetId',
  535. rules: [...required]
  536. },
  537. options: this.streetList.map((v, i) => ({ value: v.id, label: v.name })),
  538. attributes: {
  539. disabled: [2, 3].includes(this.formType),
  540. clearable: true,
  541. filterable: true,
  542. placeholder: '请选择'
  543. },
  544. events: {
  545. change: val => {
  546. // 获取街道名称
  547. this.formData.street =
  548. this.streetList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)
  549. ?.label || ''
  550. // 清除详细地址数据
  551. this.delDataK(4)
  552. }
  553. }
  554. },
  555. {
  556. name: 'el-input',
  557. md: 18,
  558. attributes: {
  559. disabled: [2, 3].includes(this.formType),
  560. placeholder: '请输入'
  561. },
  562. formItemAttributes: {
  563. label: '详细地址',
  564. prop: 'address',
  565. rules: [...required]
  566. }
  567. },
  568. {
  569. name: 'el-select',
  570. md: 6,
  571. formItemAttributes: {
  572. label: '产品大类',
  573. prop: 'mainId',
  574. rules: [...required]
  575. },
  576. options: this.classifyList.map((v, i) => ({ value: v.categoryId, label: v.name })),
  577. attributes: {
  578. disabled: [2, 3].includes(this.formType),
  579. clearable: true,
  580. filterable: true,
  581. placeholder: '请选择'
  582. },
  583. events: {
  584. change: val => {
  585. this.formData.mainName =
  586. this.classifyList
  587. .map((v, i) => ({ value: v.categoryId, label: v.name }))
  588. .find(item => item.value === val)?.label || ''
  589. this.formData.smallId = ''
  590. this.formData.smallName = ''
  591. }
  592. }
  593. },
  594. {
  595. name: 'el-select',
  596. md: 6,
  597. formItemAttributes: {
  598. label: '产品小类',
  599. prop: 'smallId',
  600. rules: [...required]
  601. },
  602. options: this.classifyListLv2
  603. .filter(item => item.parentId === this.formData.mainId)
  604. .map((v, i) => ({ value: v.categoryId, label: v.name })),
  605. attributes: {
  606. disabled: [2, 3].includes(this.formType),
  607. clearable: true,
  608. filterable: true,
  609. placeholder: '请选择'
  610. },
  611. events: {
  612. change: val => {
  613. this.formData.smallName =
  614. this.classifyListLv2
  615. .filter(item => item.parentId === this.formData.mainId)
  616. .map((v, i) => ({ value: v.categoryId, label: v.name }))
  617. .find(item => item.value === val)?.label || ''
  618. }
  619. }
  620. },
  621. {
  622. name: 'el-input',
  623. md: 6,
  624. attributes: {
  625. disabled: [2, 3].includes(this.formType),
  626. placeholder: '请输入'
  627. },
  628. formItemAttributes: {
  629. label: '系列名称',
  630. prop: 'seriesName',
  631. rules: [...required]
  632. }
  633. },
  634. // {
  635. // name: 'el-input',
  636. // md: 6,
  637. // attributes: {
  638. // disabled: [2, 3].includes(this.formType),
  639. // placeholder: '请输入'
  640. // },
  641. // formItemAttributes: {
  642. // label: '机型名称',
  643. // prop: 'productName',
  644. // rules: [...required]
  645. // }
  646. // },
  647. {
  648. name: 'el-input',
  649. md: 6,
  650. attributes: {
  651. disabled: [2, 3].includes(this.formType),
  652. placeholder: '请输入',
  653. maxlength: 13
  654. },
  655. formItemAttributes: {
  656. label: '内机条码',
  657. prop: 'insideCode',
  658. rules: [
  659. ...required,
  660. {
  661. validator: (rule, value, callback) => {
  662. if (~`${value}`.indexOf(' ')) {
  663. callback(new Error('存在空格'))
  664. } else if (`${value}`.length != 13) {
  665. callback(new Error('请输入13位条码'))
  666. } else {
  667. callback()
  668. }
  669. },
  670. trigger: 'blur'
  671. }
  672. ]
  673. }
  674. },
  675. {
  676. name: 'el-input',
  677. md: 6,
  678. attributes: {
  679. disabled: [2, 3].includes(this.formType),
  680. placeholder: '请输入'
  681. },
  682. formItemAttributes: {
  683. label: '内机型号',
  684. prop: 'insideProductName',
  685. rules: [...required]
  686. }
  687. },
  688. {
  689. name: 'el-input',
  690. md: 6,
  691. attributes: {
  692. disabled: [2, 3].includes(this.formType),
  693. placeholder: '请输入',
  694. maxlength: 13
  695. },
  696. formItemAttributes: {
  697. label: '外机条码',
  698. prop: 'outCode',
  699. rules: [101, 103, '101', '103'].includes(this.formData.mainId)
  700. ? [
  701. ...required,
  702. {
  703. validator: (rule, value, callback) => {
  704. if (~`${value}`.indexOf(' ')) {
  705. callback(new Error('存在空格'))
  706. } else if (`${value}`.length != 13) {
  707. callback(new Error('请输入13位条码'))
  708. } else {
  709. callback()
  710. }
  711. },
  712. trigger: 'blur'
  713. }
  714. ]
  715. : [
  716. {
  717. validator: (rule, value, callback) => {
  718. if (~`${value}`.indexOf(' ')) {
  719. callback(new Error('存在空格'))
  720. } else if (`${value}`.length != 13 && `${value}`.length != 0) {
  721. callback(new Error('请输入13位条码'))
  722. } else {
  723. callback()
  724. }
  725. },
  726. trigger: 'blur'
  727. }
  728. ]
  729. }
  730. },
  731. {
  732. name: 'el-input',
  733. md: 6,
  734. attributes: {
  735. disabled: [2, 3].includes(this.formType),
  736. placeholder: '请输入'
  737. },
  738. formItemAttributes: {
  739. label: '外机型号',
  740. prop: 'outProductName',
  741. rules: [101, 103, '101', '103'].includes(this.formData.mainId) ? [...required] : []
  742. }
  743. },
  744. {
  745. name: 'el-input',
  746. md: 6,
  747. attributes: {
  748. disabled: [2, 3].includes(this.formType),
  749. placeholder: '请输入'
  750. },
  751. formItemAttributes: {
  752. label: '发生数量',
  753. prop: 'num',
  754. rules: [...required]
  755. }
  756. },
  757. // {
  758. // isShow: this.formOptions.appointmentTime.isShow,
  759. // name: 'el-date-picker',
  760. // md: 6,
  761. // attributes: {
  762. // 'picker-options': 'pickerOptions11',
  763. // 'popper-class': 'custom-popper11',
  764. // 'append-to-body': true,
  765. // disabled: !this.formOptions.appointmentTime.isEdit,
  766. // style: { width: '100%' },
  767. // type: 'datetime',
  768. // placeholder: '请选择',
  769. // 'value-format': 'yyyy-MM-dd HH:mm:ss',
  770. // 'picker-options': {
  771. // disabledDate: time => {
  772. // var data = this.orderInfo?.appointmentTime?.split(' ')?.[0]
  773. // return (
  774. // time.getTime() < new Date(data ? `${data} 00:00:00` : '').getTime() ||
  775. // time.getTime() > new Date(data ? `${data} 23:59:59` : '').getTime()
  776. // )
  777. // }
  778. // }
  779. // },
  780. // events: {
  781. // change: value => {
  782. // if (value && new Date(value).getTime() < new Date().getTime() - 2000) {
  783. // this.orderInfo.appointmentEndTime = ''
  784. // this.$message.warning('必须大于当前时间')
  785. // } else if (value && new Date(value).getTime() < new Date(this.orderInfo?.appointmentTime).getTime()) {
  786. // this.orderInfo.appointmentTime = value
  787. // }
  788. // }
  789. // },
  790. // formItemAttributes: {
  791. // label: '预约上门结束时间',
  792. // prop: 'appointmentEndTime',
  793. // rules: this.formOptions.appointmentTime.isRules
  794. // }
  795. // },
  796. {
  797. name: 'el-date-picker',
  798. md: 6,
  799. attributes: {
  800. 'picker-options': 'pickerOptions11',
  801. 'popper-class': 'custom-popper11',
  802. 'append-to-body': true,
  803. 'value-format': 'yyyy-MM-dd HH:mm:ss',
  804. disabled: [2, 3].includes(this.formType),
  805. style: { width: '100%' },
  806. type: 'date',
  807. placeholder: '请选择',
  808. 'picker-options': {
  809. disabledDate: time => {
  810. if (time.getTime() > new Date()) {
  811. return true
  812. }
  813. if (this.formData.useDate) {
  814. var data = this.formData.useDate?.split(' ')?.[0]
  815. return time.getTime() >= new Date(data ? `${data} 00:00:00` : '')
  816. } else {
  817. return false
  818. }
  819. }
  820. }
  821. },
  822. formItemAttributes: {
  823. label: '出厂日期',
  824. prop: 'outDate'
  825. },
  826. events: {
  827. change: value => {
  828. if (!this.formData.useDate) {
  829. this.formData.repairDate = ''
  830. }
  831. }
  832. }
  833. },
  834. {
  835. name: 'el-date-picker',
  836. md: 6,
  837. attributes: {
  838. 'picker-options': 'pickerOptions11',
  839. 'popper-class': 'custom-popper11',
  840. 'append-to-body': true,
  841. 'value-format': 'yyyy-MM-dd HH:mm:ss',
  842. disabled: [2, 3].includes(this.formType),
  843. style: { width: '100%' },
  844. type: 'date',
  845. placeholder: '请选择',
  846. 'picker-options': {
  847. disabledDate: time => {
  848. if (time.getTime() > new Date()) {
  849. return true
  850. }
  851. var a = false
  852. var b = false
  853. if (this.formData.outDate) {
  854. let data = this.formData.outDate?.split(' ')?.[0]
  855. a = time.getTime() <= new Date(data ? `${data} 00:00:00` : '')
  856. }
  857. if (this.formData.repairDate) {
  858. let data = this.formData.repairDate?.split(' ')?.[0]
  859. b = time.getTime() > new Date(data ? `${data} 00:00:00` : '')
  860. }
  861. return a || b
  862. }
  863. }
  864. },
  865. formItemAttributes: {
  866. label: '安装或使用日期',
  867. prop: 'useDate',
  868. rules: [...required]
  869. }
  870. },
  871. {
  872. name: 'el-date-picker',
  873. md: 6,
  874. attributes: {
  875. 'picker-options': 'pickerOptions11',
  876. 'popper-class': 'custom-popper11',
  877. 'append-to-body': true,
  878. 'value-format': 'yyyy-MM-dd HH:mm:ss',
  879. disabled: [2, 3].includes(this.formType),
  880. style: { width: '100%' },
  881. type: 'date',
  882. placeholder: '请选择',
  883. 'picker-options': {
  884. disabledDate: time => {
  885. if (time.getTime() > new Date()) {
  886. return true
  887. }
  888. if (this.formData.useDate) {
  889. var data = this.formData.useDate?.split(' ')?.[0]
  890. return time.getTime() < new Date(data ? `${data} 00:00:00` : '')
  891. } else {
  892. return false
  893. }
  894. }
  895. }
  896. },
  897. formItemAttributes: {
  898. label: '报修或发生日期',
  899. prop: 'repairDate',
  900. rules: [...required]
  901. }
  902. },
  903. {
  904. md: 6,
  905. isShow: true,
  906. name: 'el-radio',
  907. options: [
  908. { label: '有', value: true },
  909. { label: '无', value: false }
  910. ],
  911. attributes: {
  912. disabled: [2, 3].includes(this.formType)
  913. },
  914. formItemAttributes: {
  915. label: '有无配件寄回',
  916. prop: 'isPartSend',
  917. rules: [...required]
  918. }
  919. },
  920. {
  921. name: 'el-input',
  922. md: 6,
  923. attributes: {
  924. disabled: [2, 3].includes(this.formType),
  925. placeholder: '请输入'
  926. },
  927. formItemAttributes: {
  928. label: '故障配件名称及规格',
  929. prop: 'bugPartName'
  930. }
  931. },
  932. {
  933. name: 'el-input',
  934. md: 24,
  935. attributes: {
  936. disabled: [2, 3].includes(this.formType),
  937. type: 'textarea',
  938. rows: 3,
  939. placeholder: '请输入'
  940. },
  941. formItemAttributes: {
  942. label: '故障代码(包含检测器检测)',
  943. prop: 'bugPartCode',
  944. rules: [...required]
  945. }
  946. },
  947. {
  948. md: 6,
  949. isShow: true,
  950. name: 'el-radio',
  951. options: [
  952. { label: '是', value: true },
  953. { label: '否', value: false }
  954. ],
  955. attributes: {
  956. disabled: [2, 3].includes(this.formType)
  957. },
  958. formItemAttributes: {
  959. label: '是否需要处理方案',
  960. prop: 'isNeedPlan',
  961. rules: [...required]
  962. }
  963. },
  964. {
  965. name: 'el-date-picker',
  966. md: 6,
  967. attributes: {
  968. 'picker-options': 'pickerOptions11',
  969. 'popper-class': 'custom-popper11',
  970. 'append-to-body': true,
  971. 'value-format': 'yyyy-MM-dd HH:mm:ss',
  972. disabled: [2, 3].includes(this.formType),
  973. style: { width: '100%' },
  974. type: 'date',
  975. placeholder: '请选择'
  976. },
  977. formItemAttributes: {
  978. label: '要求提供日期',
  979. prop: 'supplyDate',
  980. rules: this.formData.isNeedPlan ? [...required] : []
  981. }
  982. },
  983. {
  984. name: 'el-input',
  985. md: 24,
  986. attributes: {
  987. disabled: [2, 3].includes(this.formType),
  988. type: 'textarea',
  989. rows: 3,
  990. placeholder: '请输入'
  991. },
  992. formItemAttributes: {
  993. label: '故障描述',
  994. prop: 'bugRemark',
  995. rules: [...required]
  996. }
  997. },
  998. {
  999. name: 'el-input',
  1000. md: 24,
  1001. attributes: {
  1002. disabled: [2, 3].includes(this.formType),
  1003. type: 'textarea',
  1004. rows: 3,
  1005. placeholder: '请输入'
  1006. },
  1007. formItemAttributes: {
  1008. label: '网点分析',
  1009. prop: 'websitAnalyse',
  1010. rules: [...required]
  1011. }
  1012. },
  1013. {
  1014. name: 'el-input',
  1015. md: 24,
  1016. attributes: {
  1017. disabled: [2, 3].includes(this.formType),
  1018. type: 'textarea',
  1019. rows: 3,
  1020. placeholder: '请输入'
  1021. },
  1022. formItemAttributes: {
  1023. label: '网点处理方法',
  1024. prop: 'websitHandleMethod',
  1025. rules: [...required]
  1026. }
  1027. },
  1028. {
  1029. md: 5,
  1030. name: 'slot-component',
  1031. formItemAttributes: {
  1032. label: '内机条码',
  1033. prop: 'neijitiaoma',
  1034. rules: [...required]
  1035. },
  1036. render: (h, { props, onInput }) => {
  1037. return (
  1038. <ImageUpload
  1039. fileType={['image']}
  1040. fileList={this.formData.neijitiaoma}
  1041. limit={1}
  1042. isEdit={![2, 3].includes(this.formType)}
  1043. serialNumber="diyi"
  1044. />
  1045. )
  1046. }
  1047. },
  1048. {
  1049. md: 5,
  1050. name: 'slot-component',
  1051. formItemAttributes: {
  1052. label: '外机条码',
  1053. prop: 'waijitiaoma',
  1054. rules: [101, 103, '101', '103'].includes(this.formData.mainId) ? [...required] : []
  1055. },
  1056. render: (h, { props, onInput }) => {
  1057. return (
  1058. <ImageUpload
  1059. fileType={['image']}
  1060. fileList={this.formData.waijitiaoma}
  1061. limit={1}
  1062. isEdit={![2, 3].includes(this.formType)}
  1063. serialNumber="dier"
  1064. />
  1065. )
  1066. }
  1067. },
  1068. {
  1069. md: 14,
  1070. name: 'slot-component',
  1071. formItemAttributes: {
  1072. label: '其他',
  1073. prop: 'qita',
  1074. rules: []
  1075. },
  1076. render: (h, { props, onInput }) => {
  1077. return (
  1078. <div>
  1079. <ImageUpload
  1080. fileType={['image']}
  1081. fileList={this.formData.qita}
  1082. limit={3}
  1083. isEdit={![2, 3].includes(this.formType)}
  1084. serialNumber="disan"
  1085. />
  1086. <div style="color:orange">可上传最多3个图片</div>
  1087. </div>
  1088. )
  1089. }
  1090. },
  1091. {
  1092. md: 24,
  1093. name: 'slot-component',
  1094. formItemAttributes: {
  1095. label: '附件',
  1096. prop: 'fujian',
  1097. rules: []
  1098. },
  1099. render: (h, { props, onInput }) => {
  1100. return (
  1101. <div>
  1102. <ImageUpload
  1103. serialNumber="disi"
  1104. fileList={this.formData.fujian}
  1105. limit={9}
  1106. isEdit={![2, 3].includes(this.formType)}
  1107. />
  1108. <div style="color:orange">可上传最多9个文件,不限文件格式</div>
  1109. </div>
  1110. )
  1111. }
  1112. }
  1113. ]
  1114. },
  1115. items2() {
  1116. return [
  1117. {
  1118. name: 'el-input',
  1119. md: 6,
  1120. attributes: {
  1121. disabled: true,
  1122. placeholder: '请输入'
  1123. },
  1124. formItemAttributes: {
  1125. label: '网点提交人',
  1126. prop: 'submitBy'
  1127. }
  1128. },
  1129. {
  1130. name: 'el-input',
  1131. md: 6,
  1132. attributes: {
  1133. disabled: true,
  1134. placeholder: '请输入'
  1135. },
  1136. formItemAttributes: {
  1137. label: '网点提交时间',
  1138. prop: 'submitTime'
  1139. }
  1140. },
  1141. {
  1142. name: 'el-input',
  1143. md: 6,
  1144. attributes: {
  1145. disabled: true,
  1146. placeholder: '请输入'
  1147. },
  1148. formItemAttributes: {
  1149. label: '中心审核人',
  1150. prop: 'confirmBy'
  1151. }
  1152. },
  1153. {
  1154. name: 'el-input',
  1155. md: 6,
  1156. attributes: {
  1157. disabled: true,
  1158. placeholder: '请输入'
  1159. },
  1160. formItemAttributes: {
  1161. label: '审核时间',
  1162. prop: 'confirmTime'
  1163. }
  1164. },
  1165. {
  1166. md: 24,
  1167. name: 'el-radio',
  1168. options: [
  1169. { label: '通过', value: 'OK' },
  1170. { label: '驳回不可修改', value: 'FAIL' },
  1171. { label: '驳回可修改', value: 'REJECT' }
  1172. ],
  1173. attributes: {
  1174. disabled: [0, 1, 3].includes(this.formType)
  1175. },
  1176. formItemAttributes: {
  1177. label: '中心审核',
  1178. prop: 'status',
  1179. rules: [...required]
  1180. }
  1181. },
  1182. {
  1183. name: 'el-input',
  1184. md: 24,
  1185. attributes: {
  1186. disabled: [0, 1, 3].includes(this.formType),
  1187. type: 'textarea',
  1188. rows: 3,
  1189. placeholder: '请输入'
  1190. },
  1191. formItemAttributes: {
  1192. label: '审核备注',
  1193. prop: 'remark',
  1194. // rules: [...required]
  1195. rules: []
  1196. }
  1197. }
  1198. ]
  1199. }
  1200. },
  1201. methods: {
  1202. getClassifyListData() {
  1203. // 获取产品大类小类
  1204. getClassifyList({ type: 2, status: true }).then(res => {
  1205. var classifyListLv2 = []
  1206. this.classifyList = res.data.map(item => {
  1207. var { children, ...data } = item
  1208. classifyListLv2.push(...(children || []))
  1209. return {
  1210. ...data
  1211. }
  1212. })
  1213. this.classifyListLv2 = classifyListLv2
  1214. })
  1215. // 获取可选网点
  1216. getWebsit({ status: true }).then(res => {
  1217. this.createWebsitList = res.data.map(item => ({
  1218. value: item.websitId,
  1219. label: item.name
  1220. }))
  1221. })
  1222. },
  1223. getinitlbslist() {
  1224. // 初始化请求省市区街道下拉选项数据
  1225. lbsAmapRegion({ pid: 0 }).then(res => {
  1226. this.provinceList = res.data
  1227. if (this.formData.provinceId) {
  1228. lbsAmapRegion({ pid: this.formData.provinceId }).then(res => {
  1229. this.cityList = res.data
  1230. })
  1231. }
  1232. if (this.formData.cityId) {
  1233. lbsAmapRegion({ pid: this.formData.cityId }).then(res => {
  1234. this.areaList = res.data
  1235. })
  1236. }
  1237. if (this.formData.areaId) {
  1238. lbsAmapRegion({ pid: this.formData.areaId }).then(res => {
  1239. this.streetList = res.data
  1240. })
  1241. }
  1242. })
  1243. },
  1244. delDataK(num) {
  1245. if (num <= 1) {
  1246. // 删除市
  1247. this.formData.cityId = ''
  1248. this.formData.city = ''
  1249. // 删除市选项
  1250. this.cityList = []
  1251. }
  1252. if (num <= 2) {
  1253. // 删除区
  1254. this.formData.areaId = ''
  1255. this.formData.area = ''
  1256. // 删除区选项
  1257. this.areaList = []
  1258. }
  1259. if (num <= 3) {
  1260. // 删除街道
  1261. this.formData.streetId = ''
  1262. this.formData.street = ''
  1263. // 删除街道选项
  1264. this.streetList = []
  1265. }
  1266. // 删除地址
  1267. this.formData.address = ''
  1268. },
  1269. // 列表请求函数
  1270. getList(p, cb) {
  1271. var pam = JSON.parse(JSON.stringify(p))
  1272. try {
  1273. if (pam.status) {
  1274. pam.params.push({ param: 'a.status', compare: '=', value: pam.status })
  1275. this.expName = `${this.$route.meta.title}-${
  1276. { SAVE: '保存', WAIT: '待中心审核', OK: '通过', REJECT: '驳回可修改', FAIL: '驳回不可修改' }[pam.status]
  1277. }`
  1278. } else {
  1279. this.expName = ''
  1280. }
  1281. cb && cb(pam)
  1282. return qualityFeedbackList(pam)
  1283. } catch (err) {
  1284. } finally {
  1285. qualityFeedbackCount().then(res => {
  1286. this.statusTypeList = [
  1287. {
  1288. label: `保存`,
  1289. value: 'SAVE'
  1290. },
  1291. {
  1292. label: `待中心审核`,
  1293. value: 'WAIT'
  1294. },
  1295. {
  1296. label: `通过`,
  1297. value: 'OK'
  1298. },
  1299. {
  1300. label: `驳回可修改`,
  1301. value: 'REJECT'
  1302. },
  1303. {
  1304. label: `驳回不可修改`,
  1305. value: 'FAIL'
  1306. }
  1307. ].map(item => {
  1308. if (item.value === 'SAVE') {
  1309. item.label = `${item.label}(${res.data.saveCount || 0})`
  1310. } else if (item.value === 'WAIT') {
  1311. item.label = `${item.label}(${res.data.waitCount || 0})`
  1312. } else if (item.value === 'REJECT') {
  1313. item.label = `${item.label}(${res.data.rejectCount || 0})`
  1314. }
  1315. return { ...item }
  1316. })
  1317. })
  1318. }
  1319. },
  1320. // 导出
  1321. exportList: qualityFeedbackListExport,
  1322. // 表格列解析渲染数据更改
  1323. columnParsing(item, defaultData) {
  1324. return defaultData
  1325. },
  1326. // 获取勾选框数据
  1327. selectionChange(data) {
  1328. this.recordSelected = data
  1329. },
  1330. operation() {
  1331. return this.operationBtn({
  1332. edit: {
  1333. conditions: ({ row, index, column }) => {
  1334. return ['SAVE', 'REJECT'].includes(row.status)
  1335. },
  1336. click: ({ row, index, column }) => {
  1337. this.getClassifyListData()
  1338. qualityFeedbackDetail({
  1339. id: row.id
  1340. }).then(res => {
  1341. this.formData = {
  1342. ...res.data,
  1343. fujian: res.data.items.filter(item => item.type === 'FILE').map(item => ({ url: item.url })),
  1344. neijitiaoma: res.data.items
  1345. .filter(item => item.type === 'INSIDE_CODE')
  1346. .map(item => ({ url: item.url })),
  1347. waijitiaoma: res.data.items.filter(item => item.type === 'OUT_CODE').map(item => ({ url: item.url })),
  1348. qita: res.data.items.filter(item => item.type === 'OTHER').map(item => ({ url: item.url }))
  1349. }
  1350. this.logList = res.data.recordList
  1351. this.$nextTick(() => {
  1352. this.getinitlbslist()
  1353. this.formType = 1
  1354. this.formBool = true
  1355. })
  1356. })
  1357. }
  1358. },
  1359. centralAudit: {
  1360. conditions: ({ row, index, column }) => {
  1361. return row.status == 'WAIT'
  1362. },
  1363. click: ({ row, index, column }) => {
  1364. this.getClassifyListData()
  1365. qualityFeedbackDetail({
  1366. id: row.id
  1367. }).then(res => {
  1368. this.formData = {
  1369. ...res.data,
  1370. fujian: res.data.items.filter(item => item.type === 'FILE').map(item => ({ url: item.url })),
  1371. neijitiaoma: res.data.items
  1372. .filter(item => item.type === 'INSIDE_CODE')
  1373. .map(item => ({ url: item.url })),
  1374. waijitiaoma: res.data.items.filter(item => item.type === 'OUT_CODE').map(item => ({ url: item.url })),
  1375. qita: res.data.items.filter(item => item.type === 'OTHER').map(item => ({ url: item.url })),
  1376. status: ''
  1377. }
  1378. this.logList = res.data.recordList
  1379. this.$nextTick(() => {
  1380. this.getinitlbslist()
  1381. this.formType = 2
  1382. this.formBool = true
  1383. })
  1384. })
  1385. }
  1386. },
  1387. details: {
  1388. click: ({ row, index, column }) => {
  1389. this.getClassifyListData()
  1390. qualityFeedbackDetail({
  1391. id: row.id
  1392. }).then(res => {
  1393. this.formData = {
  1394. ...res.data,
  1395. fujian: res.data.items.filter(item => item.type === 'FILE').map(item => ({ url: item.url })),
  1396. neijitiaoma: res.data.items
  1397. .filter(item => item.type === 'INSIDE_CODE')
  1398. .map(item => ({ url: item.url })),
  1399. waijitiaoma: res.data.items.filter(item => item.type === 'OUT_CODE').map(item => ({ url: item.url })),
  1400. qita: res.data.items.filter(item => item.type === 'OTHER').map(item => ({ url: item.url }))
  1401. }
  1402. this.logList = res.data.recordList
  1403. this.$nextTick(() => {
  1404. this.getinitlbslist()
  1405. this.formType = 3
  1406. this.formBool = true
  1407. })
  1408. })
  1409. }
  1410. }
  1411. })
  1412. },
  1413. handleClose() {
  1414. this.$refs?.pageRef?.refreshList()
  1415. this.$data.formData = this.$options.data().formData
  1416. this.formType = 0
  1417. this.formBool = false
  1418. },
  1419. formConfirm(status) {
  1420. this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
  1421. if (valid) {
  1422. ;(this.formData.id ? qualityFeedbackUpdate : qualityFeedbackAdd)({
  1423. ...this.formData,
  1424. items: [
  1425. ...this.formData.neijitiaoma.map(item => ({
  1426. qualityFeedbckId: this.formData.id || undefined,
  1427. type: 'INSIDE_CODE',
  1428. url: item.url
  1429. })),
  1430. ...this.formData.waijitiaoma.map(item => ({
  1431. qualityFeedbckId: this.formData.id || undefined,
  1432. type: 'OUT_CODE',
  1433. url: item.url
  1434. })),
  1435. ...this.formData.qita.map(item => ({
  1436. qualityFeedbckId: this.formData.id || undefined,
  1437. type: 'OTHER',
  1438. url: item.url
  1439. })),
  1440. ...this.formData.fujian.map(item => ({
  1441. qualityFeedbckId: this.formData.id || undefined,
  1442. type: 'FILE',
  1443. url: item.url
  1444. }))
  1445. ],
  1446. status,
  1447. fujian: undefined,
  1448. neijitiaoma: undefined,
  1449. waijitiaoma: undefined,
  1450. qita: undefined
  1451. }).then(res => {
  1452. this.$message({ type: 'success', message: '提交成功!' })
  1453. this.$refs.pageRef.refreshList()
  1454. this.handleClose()
  1455. })
  1456. }
  1457. })
  1458. },
  1459. formConfirmShenHe() {
  1460. this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
  1461. if (valid) {
  1462. qualityFeedbackConfirm({
  1463. id: this.formData.id,
  1464. status: this.formData.status,
  1465. remark: this.formData.remark
  1466. }).then(res => {
  1467. this.$message({ type: 'success', message: '审核成功!' })
  1468. this.$refs.pageRef.refreshList()
  1469. this.handleClose()
  1470. })
  1471. }
  1472. })
  1473. },
  1474. xiazaifujian() {
  1475. if (this.kaiguan) {
  1476. this.kaiguan = false
  1477. qualityFeedbackDownZip(
  1478. {
  1479. id: this.formData.id
  1480. },
  1481. '',
  1482. `${this.formData.title}.zip`
  1483. )
  1484. .then(res => {
  1485. this.kaiguan = true
  1486. this.$message({ type: 'success', message: '下载成功!' })
  1487. })
  1488. .catch(() => {
  1489. this.kaiguan = true
  1490. })
  1491. } else {
  1492. this.$message({ type: 'success', message: '正在下载请稍等!' })
  1493. }
  1494. }
  1495. }
  1496. }
  1497. </script>
  1498. <style lang="scss" scoped>
  1499. .neibuview {
  1500. box-sizing: border-box;
  1501. padding-left: 16px;
  1502. ::v-deep & > .zj-page-fill-scroll {
  1503. box-sizing: border-box;
  1504. padding-right: 16px;
  1505. & > div:nth-child(1) {
  1506. margin-top: 20px;
  1507. }
  1508. }
  1509. }
  1510. </style>