index.vue 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>
  5. 报表中心
  6. </h2>
  7. <div class="m-core">
  8. <el-collapse v-model="activeName" class="formCollapse">
  9. <el-collapse-item
  10. name="1"
  11. v-if="
  12. $helpers.permission('export/musicGroupRegister') ||
  13. $helpers.permission('export/musicGroupNormalStudentNum') ||
  14. $helpers.permission('export/exportStudentAttendances') ||
  15. $helpers.permission('export/cloudStudyStudentTrainData')
  16. "
  17. >
  18. <template slot="title">
  19. <p class="wrapTitle">教务信息</p>
  20. </template>
  21. <div class="m-wrap" v-permission="'export/musicGroupRegister'">
  22. <div class="title">乐团招生汇总:</div>
  23. <select-all
  24. v-model.trim="organIdList"
  25. class="organSelect"
  26. style="width: 100%"
  27. filterable
  28. placeholder="请选择分部"
  29. multiple
  30. clearable
  31. >
  32. <el-option
  33. v-for="(item, index) in selects.branchs"
  34. :key="index"
  35. :label="item.name"
  36. :value="item.id"
  37. ></el-option>
  38. </select-all>
  39. <!-- <el-button
  40. style="margin-left: 10px"
  41. type="primary"
  42. @click="exportMusicGroup"
  43. >导出</el-button
  44. > -->
  45. <ExportChiose
  46. style="margin-left: 10px"
  47. ExportEnum="MUSIC_GROUP_REGISTER"
  48. :exportData="{ organIds: this.organIdList.join(',') }"
  49. fileName="招生情况汇总表"
  50. errorMsg="请至少选择一个分部"
  51. :flag="this.organIdList.length < 1"
  52. />
  53. <el-tooltip placement="top" popper-class="mTooltip">
  54. <div slot="content">
  55. 请选择分部后,导出招生情况汇总表,分部可多选
  56. </div>
  57. <i
  58. class="el-icon-question micon el-tooltip"
  59. v-permission="'export/musicGroupRegister'"
  60. style="font-size: 18px; color: #f56c6c"
  61. ></i>
  62. </el-tooltip>
  63. </div>
  64. <div
  65. class="m-wrap"
  66. v-permission="'export/musicGroupNormalStudentNum'"
  67. >
  68. <div class="title">乐团在读人数:</div>
  69. <select-all
  70. v-model.trim="musicTeamNum"
  71. class="organSelect"
  72. style="width: 100%"
  73. filterable
  74. multiple
  75. placeholder="请选择分部"
  76. clearable
  77. >
  78. <el-option
  79. v-for="(item, index) in selects.branchs"
  80. :key="index"
  81. :label="item.name"
  82. :value="item.id"
  83. ></el-option>
  84. </select-all>
  85. <!-- <el-button
  86. style="margin-left: 10px"
  87. type="primary"
  88. @click="exportMusicTeamNum"
  89. >导出</el-button
  90. > -->
  91. <ExportChiose
  92. style="margin-left: 10px"
  93. ExportEnum="MUSIC_GROUP_NORMAL_STUDENT_NUM"
  94. :exportData="{ organIds: this.musicTeamNum.join(',') }"
  95. fileName="乐团在读人数"
  96. errorMsg="请至少选择一个分部"
  97. />
  98. <el-tooltip placement="top" popper-class="mTooltip">
  99. <div slot="content">请选择分部后,导出乐团在读人数信息</div>
  100. <i
  101. class="el-icon-question micon el-tooltip"
  102. style="font-size: 18px; color: #f56c6c"
  103. ></i>
  104. </el-tooltip>
  105. </div>
  106. <div class="m-wrap" v-permission="'export/exportStudentAttendances'">
  107. <div class="title">学生考勤:</div>
  108. <select-all
  109. v-model.trim="attendanceOrganId"
  110. class="organSelect"
  111. style="width: 100%"
  112. filterable
  113. multiple
  114. placeholder="请选择分部"
  115. clearable
  116. >
  117. <el-option
  118. v-for="(item, index) in selects.branchs"
  119. :key="index"
  120. :label="item.name"
  121. :value="item.id"
  122. ></el-option>
  123. </select-all>
  124. <el-select
  125. v-model.trim="attendanceCourseType"
  126. class="organSelect"
  127. style="margin-left: 15px; width: 100%"
  128. filterable
  129. placeholder="请选择课程类型"
  130. >
  131. <el-option
  132. v-for="(item, index) in courseListType"
  133. :key="index"
  134. :label="item.label"
  135. :value="item.value"
  136. ></el-option>
  137. </el-select>
  138. <el-date-picker
  139. v-model.trim="timer"
  140. style="width: 360px; margin-left: 15px"
  141. type="daterange"
  142. value-format="yyyy-MM-dd"
  143. range-separator="至"
  144. start-placeholder="上课开始日期"
  145. end-placeholder="上课结束日期"
  146. :picker-options="{
  147. firstDayOfWeek: 1,
  148. }"
  149. ></el-date-picker>
  150. <!-- <el-button
  151. style="margin-left: 10px"
  152. type="primary"
  153. @click="exportAttendance"
  154. >导出</el-button
  155. > -->
  156. <ExportChiose
  157. style="margin-left: 10px"
  158. ExportEnum="EXPORT_STUDENT_ATTENDANCES"
  159. :exportData="exportAttendance"
  160. fileName="学生考勤"
  161. errorMsg="请至少选择一个分部"
  162. />
  163. </div>
  164. <div
  165. class="m-wrap"
  166. v-permission="'export/cloudStudyStudentTrainData'"
  167. >
  168. <div class="title">云教练学员统计:</div>
  169. <el-select
  170. v-model.trim="trainOrganId"
  171. class="organSelect"
  172. style="width: 100%"
  173. filterable
  174. placeholder="请选择分部"
  175. clearable
  176. >
  177. <el-option
  178. v-for="(item, index) in selects.branchs"
  179. :key="index"
  180. :label="item.name"
  181. :value="item.id"
  182. ></el-option>
  183. </el-select>
  184. <el-date-picker
  185. v-model.trim="cloudTimer"
  186. style="width: 360px; margin-left: 15px"
  187. type="daterange"
  188. value-format="yyyy-MM-dd"
  189. range-separator="至"
  190. start-placeholder="开始日期"
  191. end-placeholder="结束日期"
  192. :picker-options="{
  193. firstDayOfWeek: 1,
  194. }"
  195. ></el-date-picker>
  196. <!-- <el-button
  197. style="margin-left: 10px"
  198. type="primary"
  199. @click="exportTrain"
  200. >导出</el-button
  201. > -->
  202. <ExportChiose
  203. style="margin-left: 10px"
  204. ExportEnum="CLOUD_STUDY_STUDENT_TRAIN_DATA"
  205. :exportData="exportTrain"
  206. fileName="云教练学员统计"
  207. errorMsg="请选择分部"
  208. :flag="!this.trainOrganId"
  209. />
  210. </div>
  211. </el-collapse-item>
  212. <el-collapse-item
  213. name="2"
  214. v-if="
  215. $helpers.permission('export/teacherDefaultSalary') ||
  216. $helpers.permission('export/studentOrder') ||
  217. $helpers.permission('studentInstrument/export') ||
  218. $helpers.permission('export/studentVipPractice') ||
  219. $helpers.permission('export/exercisesSituation') ||
  220. $helpers.permission('export/exportIndexErrData') ||
  221. $helpers.permission('export/exportMusicGroupCourseList') ||
  222. $helpers.permission('export/EXPORT_INDEX_HISTORY_ERR_DATA') ||
  223. $helpers.permission('export/EXPORT_STUDENT_SUBCOURSE') ||
  224. $helpers.permission('export/EXPORT_TRAINING_STATISTICS') ||
  225. $helpers.permission('export/EXPORT_OPERATING_VISIT_STATISTICS')
  226. "
  227. >
  228. <template slot="title">
  229. <p class="wrapTitle">运营数据</p>
  230. </template>
  231. <div class="m-wrap" v-permission="'export/teacherDefaultSalary'">
  232. <div class="title">老师默认课酬:</div>
  233. <select-all
  234. v-model.trim="teacherDefaultSalaryOrganId"
  235. class="organSelect"
  236. style="width: 100%"
  237. filterable
  238. placeholder="请选择分部"
  239. multiple
  240. clearable
  241. >
  242. <el-option
  243. v-for="(item, index) in selects.branchs"
  244. :key="index"
  245. :label="item.name"
  246. :value="item.id"
  247. ></el-option>
  248. </select-all>
  249. <!-- <el-button
  250. style="margin-left: 10px"
  251. type="primary"
  252. @click="exportDefaultSalary"
  253. >导出</el-button
  254. > -->
  255. <ExportChiose
  256. style="margin-left: 10px"
  257. ExportEnum="TEACHER_DEFAULT_SALARY"
  258. :exportData="exportDefaultSalary"
  259. fileName="老师默认课酬"
  260. errorMsg="请至少选择一个分部"
  261. />
  262. <el-tooltip placement="top" popper-class="mTooltip">
  263. <div slot="content">请选择分部后,导出老师列表及老师课酬信息</div>
  264. <i
  265. class="el-icon-question micon el-tooltip"
  266. style="font-size: 18px; color: #f56c6c"
  267. v-permission="'export/teacherDefaultSalary'"
  268. ></i>
  269. </el-tooltip>
  270. </div>
  271. <div class="m-wrap" v-permission="'export/studentOrder'">
  272. <div class="title">回款统计:</div>
  273. <select-all
  274. v-model.trim="studentOrganId"
  275. class="organSelect"
  276. style="width: 100%"
  277. filterable
  278. placeholder="请选择分部"
  279. multiple
  280. clearable
  281. >
  282. <el-option
  283. v-for="(item, index) in selects.branchs"
  284. :key="index"
  285. :label="item.name"
  286. :value="item.id"
  287. ></el-option>
  288. </select-all>
  289. <el-date-picker
  290. style="margin-left: 15px"
  291. v-model="studentMonth"
  292. type="month"
  293. placeholder="选择月"
  294. value-format="yyyy-MM-dd"
  295. ></el-date-picker>
  296. <!-- <el-button
  297. style="margin-left: 10px"
  298. type="primary"
  299. @click="exportStudent"
  300. >导出</el-button
  301. > -->
  302. <ExportChiose
  303. style="margin-left: 10px"
  304. ExportEnum="STUDENT_ORDER"
  305. :exportData="exportStudent"
  306. fileName="回款统计"
  307. errorMsg="请选择导出月份"
  308. :flag="!this.studentMonth"
  309. />
  310. <el-tooltip placement="top" popper-class="mTooltip">
  311. <div slot="content">请选择分部和月份,导出回款统计</div>
  312. <i
  313. class="el-icon-question micon el-tooltip"
  314. style="font-size: 18px; color: #f56c6c"
  315. v-permission="'export/studentOrder'"
  316. ></i>
  317. </el-tooltip>
  318. </div>
  319. <div class="m-wrap" v-permission="'studentInstrument/export'">
  320. <div class="title">乐保订单导出:</div>
  321. <el-date-picker
  322. v-model="leBaoTimer"
  323. style="width: 360px"
  324. type="monthrange"
  325. value-format="yyyy-MM-dd"
  326. range-separator="至"
  327. start-placeholder="开始月份"
  328. end-placeholder="结束月份"
  329. >
  330. </el-date-picker>
  331. <!-- <el-button
  332. style="margin-left: 10px"
  333. type="primary"
  334. @click="exportLeBao"
  335. >导出</el-button
  336. > -->
  337. <ExportChiose
  338. style="margin-left: 10px"
  339. ExportEnum="STUDENT_INSTRUMENT"
  340. :exportData="exportLeBao"
  341. fileName="乐保订单"
  342. errorMsg="请选择导出月份"
  343. :flag="!(leBaoTimer && leBaoTimer.length > 1)"
  344. />
  345. <!-- <el-tooltip placement="top"
  346. popper-class="mTooltip">
  347. <div slot="content">
  348. 请选择分部和月份,导出回款统计
  349. </div>
  350. <i class="el-icon-question micon el-tooltip"
  351. style="font-size: 18px; color: #F56C6C"
  352. v-permission="'export/studentOrder'"></i>
  353. </el-tooltip> -->
  354. </div>
  355. <div class="m-wrap" v-permission="'export/studentVipPractice'">
  356. <div class="title">VIP网管课耗导出:</div>
  357. <select-all
  358. v-model.trim="vipOrganId"
  359. class="organSelect"
  360. style="width: 100%"
  361. filterable
  362. placeholder="请选择分部"
  363. clearable
  364. >
  365. <el-option
  366. v-for="(item, index) in selects.branchs"
  367. :key="index"
  368. :label="item.name"
  369. :value="item.id"
  370. ></el-option>
  371. </select-all>
  372. <!-- <el-button
  373. style="margin-left: 10px"
  374. type="primary"
  375. @click="exportVip"
  376. >导出</el-button
  377. > -->
  378. <ExportChiose
  379. style="margin-left: 10px"
  380. ExportEnum="STUDENT_VIP_PRACTICE"
  381. :exportData="exportVip"
  382. fileName="VIP网管课耗"
  383. errorMsg="请选择分部"
  384. :flag="vipOrganId.length <= 0"
  385. :isDownList="true"
  386. />
  387. </div>
  388. <div class="m-wrap" v-permission="'export/VIP_STUDENT_COURSE_MANAGE'">
  389. <div class="title">VIP学员课程管理导出:</div>
  390. <select-all
  391. v-model.trim="VipStudentOrganId"
  392. class="organSelect"
  393. style="width: 100%"
  394. filterable
  395. placeholder="请选择分部"
  396. clearable
  397. >
  398. <el-option
  399. v-for="(item, index) in selects.branchs"
  400. :key="index"
  401. :label="item.name"
  402. :value="item.id"
  403. ></el-option>
  404. </select-all>
  405. <!-- <el-button
  406. style="margin-left: 10px"
  407. type="primary"
  408. @click="exportVipStudent"
  409. >导出</el-button
  410. > -->
  411. <ExportChiose
  412. style="margin-left: 10px"
  413. ExportEnum="VIP_STUDENT_COURSE_MANAGE"
  414. :exportData="exportVipStudent"
  415. fileName="VIP学员课程管理导出"
  416. errorMsg="请选择分部"
  417. :isDownList="true"
  418. />
  419. </div>
  420. <div class="m-wrap" v-permission="'export/exercisesSituation'">
  421. <div class="title">服务指标明细导出:</div>
  422. <select-all
  423. v-model.trim="serviceOrganId"
  424. class="organSelect"
  425. style="width: 100%"
  426. filterable
  427. multiple
  428. placeholder="请选择分部"
  429. clearable
  430. >
  431. <el-option
  432. v-for="(item, index) in selects.branchs"
  433. :key="index"
  434. :label="item.name"
  435. :value="item.id"
  436. ></el-option>
  437. </select-all>
  438. <el-date-picker
  439. v-model.trim="serviceTimer"
  440. style="width: 360px; margin-left: 15px"
  441. type="daterange"
  442. value-format="yyyy-MM-dd"
  443. range-separator="至"
  444. start-placeholder="开始日期"
  445. end-placeholder="结束日期"
  446. :picker-options="{
  447. firstDayOfWeek: 1,
  448. }"
  449. ></el-date-picker>
  450. <!-- <el-button
  451. style="margin-left: 10px"
  452. type="primary"
  453. @click="exportDetailService"
  454. >导出</el-button
  455. > -->
  456. <ExportChiose
  457. style="margin-left: 10px"
  458. ExportEnum="EXERCISES_SITUATION"
  459. :exportData="exportDetailService"
  460. fileName="服务指标明细"
  461. errorMsg="请选择导出月份"
  462. />
  463. </div>
  464. <div class="m-wrap" v-permission="'export/exportIndexErrData'">
  465. <div class="title">异常处理数据导出:</div>
  466. <select-all
  467. clearable
  468. filterable
  469. class="organSelect"
  470. v-model="Abnormal.organIds"
  471. multiple
  472. placeholder="请选择分部"
  473. >
  474. <el-option
  475. v-for="(item, index) in selects.branchs"
  476. :key="index"
  477. :label="item.name"
  478. :value="item.id + ''"
  479. ></el-option>
  480. </select-all>
  481. <!-- <el-button
  482. type="primary"
  483. style="margin-left: 10px"
  484. @click="exportAbnormal"
  485. >导出</el-button
  486. > -->
  487. <ExportChiose
  488. style="margin-left: 10px"
  489. ExportEnum="EXPORT_INDEX_HISTORY_ERR_DATA"
  490. :exportData="exportAbnormal"
  491. fileName="异常处理数据导出"
  492. errorMsg="请选择分部"
  493. />
  494. </div>
  495. <!-- <div class="m-wrap" v-permission="'export/STUDENT_VIP_COURSE_INFO'">
  496. <div class="title">VIP课学员课程导出:</div>
  497. <select-all
  498. v-model.trim="vipStudentCourseOrganId"
  499. class="organSelect"
  500. style="width: 100%"
  501. filterable
  502. multiple
  503. placeholder="请选择分部"
  504. clearable
  505. >
  506. <el-option
  507. v-for="(item, index) in selects.branchs"
  508. :key="index"
  509. :label="item.name"
  510. :value="item.id"
  511. ></el-option>
  512. </select-all>
  513. <ExportChiose
  514. style="margin-left: 10px"
  515. ExportEnum="STUDENT_VIP_COURSE_INFO"
  516. :exportData="exportAbnormal"
  517. fileName="VIP课学员课程信息导出"
  518. errorMsg="请选择分部"
  519. :flag="this.vipStudentCourseOrganId.length < 1"
  520. :isDownList="true"
  521. />
  522. </div> -->
  523. <div
  524. class="m-wrap"
  525. v-permission="'export/STUDENT_MUSIC_THEORY_COURSE_INFO'"
  526. >
  527. <div class="title">乐理课学员课程导出:</div>
  528. <select-all
  529. v-model.trim="musicStudentCourseOrganId"
  530. class="organSelect"
  531. style="width: 100%"
  532. filterable
  533. multiple
  534. placeholder="请选择分部"
  535. clearable
  536. >
  537. <el-option
  538. v-for="(item, index) in selects.branchs"
  539. :key="index"
  540. :label="item.name"
  541. :value="item.id"
  542. ></el-option>
  543. </select-all>
  544. <ExportChiose
  545. style="margin-left: 10px"
  546. ExportEnum="STUDENT_MUSIC_THEORY_COURSE_INFO"
  547. :exportData="exportAbnormal"
  548. fileName="乐理课学员课程信息导出"
  549. errorMsg="请选择分部"
  550. :flag="this.musicStudentCourseOrganId.length < 1"
  551. :isDownList="true"
  552. />
  553. </div>
  554. <div
  555. class="m-wrap"
  556. v-permission="'export/exportMusicGroupCourseList'"
  557. >
  558. <div class="title">乐团数据导出:</div>
  559. <select-all
  560. v-model.trim="teamOrganId"
  561. class="organSelect"
  562. style="width: 100%"
  563. filterable
  564. multiple
  565. placeholder="请选择分部"
  566. clearable
  567. >
  568. <el-option
  569. v-for="(item, index) in selects.branchs"
  570. :key="index"
  571. :label="item.name"
  572. :value="item.id"
  573. ></el-option>
  574. </select-all>
  575. <el-date-picker
  576. v-model.trim="teamTimer"
  577. style="width: 360px; margin-left: 15px"
  578. type="daterange"
  579. value-format="yyyy-MM-dd"
  580. range-separator="至"
  581. start-placeholder="开始日期"
  582. end-placeholder="结束日期"
  583. @change="getWeekTime"
  584. :picker-options="{
  585. firstDayOfWeek: 1,
  586. }"
  587. ></el-date-picker>
  588. <el-button
  589. style="margin-left: 10px"
  590. type="primary"
  591. @click="exportMusicGroup"
  592. >导出</el-button
  593. >
  594. <!-- <ExportChiose
  595. style="margin-left: 10px"
  596. ExportEnum="EXERCISES_SITUATION"
  597. :exportData="exportDetailService"
  598. fileName="服务指标明细"
  599. errorMsg="请选择导出月份"
  600. /> -->
  601. </div>
  602. <div class="m-wrap" v-permission="'export/EXPORT_STUDENT_SUBCOURSE'">
  603. <div class="title">活动资格导出:</div>
  604. <select-all
  605. v-model.trim="activeOrganId"
  606. class="organSelect"
  607. style="width: 100%"
  608. filterable
  609. multiple
  610. placeholder="请选择分部"
  611. clearable
  612. >
  613. <el-option
  614. v-for="(item, index) in selects.branchs"
  615. :key="index"
  616. :label="item.name"
  617. :value="item.id"
  618. ></el-option>
  619. </select-all>
  620. <ExportChiose
  621. style="margin-left: 10px"
  622. ExportEnum="EXPORT_STUDENT_SUBCOURSE"
  623. :exportData="exportActive"
  624. fileName="活动资格导出"
  625. errorMsg="请选择分部"
  626. :isDownList="true"
  627. />
  628. </div>
  629. <div class="m-wrap" v-permission="'export/EXPORT_STUDENT_SERVE_INFO'">
  630. <div class="title">乐团学生指标导出:</div>
  631. <select-all
  632. v-model.trim="studentServerOrganId"
  633. class="organSelect"
  634. style="width: 100%"
  635. filterable
  636. multiple
  637. placeholder="请选择分部"
  638. clearable
  639. >
  640. <el-option
  641. v-for="(item, index) in selects.branchs"
  642. :key="index"
  643. :label="item.name"
  644. :value="item.id"
  645. ></el-option>
  646. </select-all>
  647. <el-date-picker
  648. v-model.trim="studentServerTimer"
  649. style="width: 360px; margin-left: 15px"
  650. type="daterange"
  651. value-format="yyyy-MM-dd"
  652. range-separator="至"
  653. start-placeholder="开始日期"
  654. end-placeholder="结束日期"
  655. @change="getStudentWeekTime"
  656. :picker-options="{
  657. firstDayOfWeek: 1,
  658. }"
  659. ></el-date-picker>
  660. <ExportChiose
  661. style="margin-left: 10px"
  662. ExportEnum="EXPORT_STUDENT_SERVE_INFO"
  663. :exportData="exportStudentServer"
  664. fileName="乐团学生指标导出"
  665. errorMsg="请选择分部"
  666. :isDownList="false"
  667. />
  668. </div>
  669. <!-- -->
  670. <div
  671. class="m-wrap"
  672. v-permission="'export/EXPORT_TRAINING_STATISTICS'"
  673. >
  674. <div class="title">训练统计导出:</div>
  675. <select-all
  676. v-model.trim="trainingOrganId"
  677. class="organSelect"
  678. style="width: 100%"
  679. filterable
  680. multiple
  681. placeholder="请选择分部"
  682. clearable
  683. >
  684. <el-option
  685. v-for="(item, index) in selects.branchs"
  686. :key="index"
  687. :label="item.name"
  688. :value="item.id"
  689. ></el-option>
  690. </select-all>
  691. <el-date-picker
  692. v-model.trim="trainingTimer"
  693. style="width: 360px; margin-left: 15px"
  694. type="daterange"
  695. value-format="yyyy-MM-dd"
  696. range-separator="至"
  697. start-placeholder="开始日期"
  698. end-placeholder="结束日期"
  699. :picker-options="{
  700. firstDayOfWeek: 1,
  701. }"
  702. ></el-date-picker>
  703. <!-- @change="getStudentWeekTime" -->
  704. <ExportChiose
  705. style="margin-left: 10px"
  706. ExportEnum="EXPORT_TRAINING_STATISTICS"
  707. :exportData="exporTtraining"
  708. fileName="训练统计导出"
  709. errorMsg="请选择分部"
  710. :isDownList="true"
  711. />
  712. </div>
  713. <!-- 回访统计导出 -->
  714. <div
  715. class="m-wrap"
  716. v-permission="'export/EXPORT_OPERATING_VISIT_STATISTICS'"
  717. >
  718. <div class="title">回访统计导出:</div>
  719. <el-date-picker
  720. v-model="visitmouth"
  721. type="month"
  722. placeholder="选择月"
  723. value-format="yyyy-MM"
  724. class="organSelect"
  725. ></el-date-picker>
  726. <!-- <el-select v-model.trim="courseScheduleType"
  727. style="marginLeft:10px"
  728. filterable
  729. clearable
  730. multiple
  731. placeholder="课程类型">
  732. <el-option v-for="(item, index) in courseArray"
  733. :key="index"
  734. :label="item.label"
  735. :value="item.value"></el-option>
  736. </el-select> -->
  737. <!-- <el-button
  738. style="margin-left: 10px"
  739. type="primary"
  740. @click="exportSalar"
  741. >导出</el-button
  742. > -->
  743. <ExportChiose
  744. style="margin-left: 10px"
  745. ExportEnum="EXPORT_OPERATING_VISIT_STATISTICS"
  746. :exportData="exportVisit"
  747. fileName="回访统计导出"
  748. errorMsg="请选择月份"
  749. :flag="!this.visitmouth"
  750. />
  751. <!-- <el-tooltip placement="top" popper-class="mTooltip">
  752. <div slot="content">将只导出当前选择月份已结算的课程课酬。</div>
  753. <i
  754. class="el-icon-question micon el-tooltip"
  755. style="font-size: 18px; color: #f56c6c"
  756. v-permission="'export/teacherSalary'"
  757. ></i>
  758. </el-tooltip> -->
  759. </div>
  760. </el-collapse-item>
  761. <el-collapse-item
  762. name="3"
  763. v-if="
  764. $helpers.permission('export/teacherSalary') ||
  765. $helpers.permission('export/userCoursesAccount/4388') ||
  766. $helpers.permission('export/userCashAccountDetail/4389')
  767. "
  768. >
  769. <template slot="title">
  770. <p class="wrapTitle">财务数据</p>
  771. </template>
  772. <div
  773. class="m-wrap"
  774. v-permission="'export/EXPORT_OPERATING_REPORT_NEW'"
  775. >
  776. <div class="title">经营报表导出:</div>
  777. <el-date-picker
  778. v-model="operatingMouth"
  779. type="month"
  780. placeholder="选择月"
  781. value-format="yyyy-MM-dd"
  782. class="organSelect"
  783. ></el-date-picker>
  784. <!-- <el-select v-model.trim="courseScheduleType"
  785. style="marginLeft:10px"
  786. filterable
  787. clearable
  788. multiple
  789. placeholder="课程类型">
  790. <el-option v-for="(item, index) in courseArray"
  791. :key="index"
  792. :label="item.label"
  793. :value="item.value"></el-option>
  794. </el-select> -->
  795. <!-- <el-button
  796. style="margin-left: 10px"
  797. type="primary"
  798. @click="exportSalar"
  799. >导出</el-button
  800. > -->
  801. <ExportChiose
  802. style="margin-left: 10px"
  803. ExportEnum="EXPORT_OPERATING_REPORT_NEW"
  804. :exportData="exportOperating"
  805. fileName="经营报表"
  806. errorMsg="请选择月份"
  807. :flag="!this.operatingMouth"
  808. />
  809. <el-tooltip placement="top" popper-class="mTooltip">
  810. <div slot="content">将只导出当前选择月份的经营报表。</div>
  811. <i
  812. class="el-icon-question micon el-tooltip"
  813. style="font-size: 18px; color: #f56c6c"
  814. v-permission="'export/teacherSalary'"
  815. ></i>
  816. </el-tooltip>
  817. </div>
  818. <div class="m-wrap" v-permission="'export/teacherSalary'">
  819. <div class="title">课酬导出:</div>
  820. <el-date-picker
  821. v-model="mouth"
  822. type="month"
  823. placeholder="选择月"
  824. value-format="yyyy-MM-dd"
  825. class="organSelect"
  826. ></el-date-picker>
  827. <!-- <el-select v-model.trim="courseScheduleType"
  828. style="marginLeft:10px"
  829. filterable
  830. clearable
  831. multiple
  832. placeholder="课程类型">
  833. <el-option v-for="(item, index) in courseArray"
  834. :key="index"
  835. :label="item.label"
  836. :value="item.value"></el-option>
  837. </el-select> -->
  838. <!-- <el-button
  839. style="margin-left: 10px"
  840. type="primary"
  841. @click="exportSalar"
  842. >导出</el-button
  843. > -->
  844. <ExportChiose
  845. style="margin-left: 10px"
  846. ExportEnum="TEACHER_SALARY"
  847. :exportData="exportSalar"
  848. fileName="课酬导出"
  849. errorMsg="请选择月份"
  850. :flag="!this.mouth"
  851. />
  852. <el-tooltip placement="top" popper-class="mTooltip">
  853. <div slot="content">将只导出当前选择月份已结算的课程课酬。</div>
  854. <i
  855. class="el-icon-question micon el-tooltip"
  856. style="font-size: 18px; color: #f56c6c"
  857. v-permission="'export/teacherSalary'"
  858. ></i>
  859. </el-tooltip>
  860. </div>
  861. <div class="m-wrap" v-permission="'export/userCoursesAccount/4388'">
  862. <div class="title">课程余额明细:</div>
  863. <select-all
  864. v-model.trim="AccountOrganId"
  865. class="organSelect"
  866. style="width: 100%"
  867. filterable
  868. multiple
  869. placeholder="请选择分部"
  870. clearable
  871. >
  872. <el-option
  873. v-for="(item, index) in selects.branchs"
  874. :key="index"
  875. :label="item.name"
  876. :value="item.id"
  877. ></el-option>
  878. </select-all>
  879. <el-date-picker
  880. v-model.trim="AccountTimer"
  881. style="width: 360px; margin-left: 15px"
  882. type="daterange"
  883. value-format="yyyy-MM-dd"
  884. range-separator="至"
  885. start-placeholder="开始日期"
  886. end-placeholder="结束日期"
  887. :picker-options="{
  888. firstDayOfWeek: 1,
  889. }"
  890. ></el-date-picker>
  891. <!-- <el-button
  892. style="margin-left: 10px"
  893. type="primary"
  894. @click="exportAccount"
  895. >导出</el-button
  896. > -->
  897. <ExportChiose
  898. style="margin-left: 10px"
  899. ExportEnum="USER_COURSES_ACCOUNT"
  900. :exportData="exportAccount"
  901. fileName="课程余额明细"
  902. errorMsg="请选择月份"
  903. />
  904. </div>
  905. <div
  906. class="m-wrap"
  907. v-permission="'export/userCashAccountDetail/4389'"
  908. >
  909. <div class="title">账户余额明细:</div>
  910. <select-all
  911. v-model.trim="AccountDetailOrganId"
  912. class="organSelect"
  913. style="width: 100%"
  914. filterable
  915. multiple
  916. placeholder="请选择分部"
  917. clearable
  918. >
  919. <el-option
  920. v-for="(item, index) in selects.branchs"
  921. :key="index"
  922. :label="item.name"
  923. :value="item.id"
  924. ></el-option>
  925. </select-all>
  926. <el-date-picker
  927. v-model.trim="AccountDetailTimer"
  928. style="width: 360px; margin-left: 15px"
  929. type="daterange"
  930. value-format="yyyy-MM-dd"
  931. range-separator="至"
  932. start-placeholder="开始日期"
  933. end-placeholder="结束日期"
  934. :picker-options="{
  935. firstDayOfWeek: 1,
  936. }"
  937. ></el-date-picker>
  938. <!-- <el-button
  939. style="margin-left: 10px"
  940. type="primary"
  941. @click="exportDetailAccount"
  942. >导出</el-button
  943. > -->
  944. <ExportChiose
  945. style="margin-left: 10px"
  946. ExportEnum="USER_CASH_ACCOUNT_DETAIL"
  947. :exportData="exportAccount"
  948. fileName="课程余额明细"
  949. errorMsg="请选择月份"
  950. />
  951. </div>
  952. </el-collapse-item>
  953. <!-- <el-collapse-item
  954. name="4"
  955. v-if="$helpers.permission('questionnaireUserResult/export/report')"
  956. >
  957. <template slot="title">
  958. <p class="wrapTitle">其他数据</p>
  959. </template>
  960. <div
  961. class="m-wrap"
  962. v-if="$helpers.permission('questionnaireUserResult/export/report')"
  963. >
  964. <div class="title">问卷调查:</div>
  965. <el-select
  966. v-model.trim="questionActiveType"
  967. class="organSelect"
  968. style="width: 100%"
  969. filterable
  970. placeholder="请选择导出类型"
  971. clearable
  972. >
  973. <el-option
  974. label="云教练用户反馈"
  975. value="CLOUD_TEACHER_FEEDBACK"
  976. ></el-option>
  977. </el-select>
  978. <el-button
  979. style="margin-left: 10px"
  980. type="primary"
  981. @click="exportQuestion"
  982. >导出</el-button
  983. >
  984. <ExportChiose
  985. style="margin-left: 10px"
  986. ExportEnum="USER_CASH_ACCOUNT_DETAIL"
  987. :exportData="{ activeType: this.questionActiveType }"
  988. fileName="问卷调查"
  989. errorMsg="请选择月份"
  990. />
  991. </div>
  992. </el-collapse-item> -->
  993. </el-collapse>
  994. </div>
  995. </div>
  996. </template>
  997. <script>
  998. import { exportTeacherSalary } from "@/api/generalSettings";
  999. import { courseType, courseListType } from "@/utils/searchArray";
  1000. import ExportChiose from "@/components/Export-chiose";
  1001. import { Export } from "@/utils/downLoadFile";
  1002. import cleanDeep from "clean-deep";
  1003. import qs from "qs";
  1004. import dayjs from "dayjs";
  1005. import axios from "axios";
  1006. import { getToken, getTenantId } from "@/utils/auth";
  1007. import { getTimes } from "@/utils";
  1008. import load from "@/utils/loading";
  1009. export default {
  1010. name: "reportForm",
  1011. components: {
  1012. ExportChiose,
  1013. },
  1014. data() {
  1015. return {
  1016. mouth: "",
  1017. organIdList: [],
  1018. teacherDefaultSalaryOrganId: [],
  1019. courseArray: courseType,
  1020. courseListType,
  1021. courseScheduleType: [],
  1022. musicTeamNum: [],
  1023. studentOrganId: [],
  1024. studentMonth: "",
  1025. attendanceOrganId: [],
  1026. attendanceCourseType: "MUSIC",
  1027. timer: [],
  1028. leBaoTimer: [],
  1029. AccountOrganId: [],
  1030. AccountTimer: [],
  1031. AccountDetailOrganId: [],
  1032. AccountDetailTimer: [],
  1033. trainOrganId: null,
  1034. questionActiveType: "CLOUD_TEACHER_FEEDBACK",
  1035. vipOrganId: [],
  1036. serviceOrganId: [], // 服务报表
  1037. serviceTimer: [],
  1038. Abnormal: {
  1039. organIds: [],
  1040. },
  1041. activeName: ["1", "2", "3", "4"],
  1042. vipStudentCourseOrganId: [],
  1043. musicStudentCourseOrganId: [],
  1044. VipStudentOrganId: [],
  1045. teamOrganId: [],
  1046. teamTimer: [],
  1047. activeOrganId: [],
  1048. studentServerOrganId: [],
  1049. studentServerTimer: [],
  1050. trainingOrganId: [],
  1051. trainingTimer: [],
  1052. visitmouth: "",
  1053. operatingMouth: "",
  1054. cloudTimer: [],
  1055. };
  1056. },
  1057. mounted() {
  1058. this.$store.dispatch("setBranchs");
  1059. },
  1060. methods: {
  1061. // exportSalar() {
  1062. // if (!this.mouth) {
  1063. // this.$message.error("请选择导出月份");
  1064. // return;
  1065. // }
  1066. // // let courseTypeList = this.courseScheduleType.join(',')
  1067. // let url = "/api-web/export/teacherSalary";
  1068. // let data = { date: this.mouth };
  1069. // const options = {
  1070. // method: "POST",
  1071. // headers: {
  1072. // Authorization: getToken(),
  1073. // tenantId: getTenantId(),
  1074. // },
  1075. // data: qs.stringify(cleanDeep(data)),
  1076. // url,
  1077. // responseType: "blob",
  1078. // };
  1079. // this.$confirm("您确定导出课酬", "提示", {
  1080. // confirmButtonText: "确定",
  1081. // cancelButtonText: "取消",
  1082. // type: "warning",
  1083. // })
  1084. // .then(() => {
  1085. // load.startLoading();
  1086. // axios(options)
  1087. // .then((res) => {
  1088. // let blob = new Blob([res.data], {
  1089. // // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  1090. // type: "application/vnd.ms-excel;charset=utf-8",
  1091. // //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
  1092. // });
  1093. // let text = new Response(blob).text();
  1094. // text.then((res) => {
  1095. // // 判断是否报错
  1096. // if (res.indexOf("code") != -1) {
  1097. // let json = JSON.parse(res);
  1098. // if (json.code == 403) {
  1099. // this.$message.error(`登录过期,请重新登录!`);
  1100. // setTimeout(() => {
  1101. // this.$store.dispatch("user/resetToken").then(() => {
  1102. // location.reload();
  1103. // });
  1104. // }, 1000);
  1105. // return;
  1106. // }
  1107. // this.$message.error(json.msg);
  1108. // } else {
  1109. // let objectUrl = URL.createObjectURL(blob);
  1110. // let link = document.createElement("a");
  1111. // let nowTime = new Date();
  1112. // let ymd =
  1113. // nowTime.getFullYear() +
  1114. // "" +
  1115. // (nowTime.getMonth() + 1) +
  1116. // "" +
  1117. // nowTime.getDate();
  1118. // let fname = ymd + "课酬.xls"; //下载文件的名字
  1119. // link.href = objectUrl;
  1120. // link.setAttribute("download", fname);
  1121. // document.body.appendChild(link);
  1122. // link.click();
  1123. // }
  1124. // });
  1125. // load.endLoading();
  1126. // })
  1127. // .catch((error) => {
  1128. // this.$message.error("导出数据失败,请联系管理员");
  1129. // load.endLoading();
  1130. // });
  1131. // })
  1132. // .catch(() => {});
  1133. // },
  1134. exportMusicGroup() {
  1135. if (this.organIdList.length < 1) {
  1136. this.$message.error("请至少选择一个分部");
  1137. return;
  1138. }
  1139. let url = "/api-web/export/musicGroupRegister";
  1140. let data = { organIds: this.organIdList.join(",") };
  1141. const options = {
  1142. method: "POST",
  1143. headers: {
  1144. Authorization: getToken(),
  1145. tenantId: getTenantId(),
  1146. },
  1147. data: qs.stringify(cleanDeep(data)),
  1148. url,
  1149. responseType: "blob",
  1150. };
  1151. this.$confirm("您确定导出招生情况汇总表", "提示", {
  1152. confirmButtonText: "确定",
  1153. cancelButtonText: "取消",
  1154. type: "warning",
  1155. })
  1156. .then(() => {
  1157. load.startLoading();
  1158. axios(options)
  1159. .then((res) => {
  1160. let blob = new Blob([res.data], {
  1161. // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  1162. type: "application/vnd.ms-excel;charset=utf-8",
  1163. //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
  1164. });
  1165. let text = new Response(blob).text();
  1166. text.then((res) => {
  1167. // 判断是否报错
  1168. if (res.indexOf("code") != -1) {
  1169. let json = JSON.parse(res);
  1170. if (json.code == 403) {
  1171. this.$message.error(`登录过期,请重新登录!`);
  1172. setTimeout(() => {
  1173. this.$store.dispatch("user/resetToken").then(() => {
  1174. location.reload();
  1175. });
  1176. }, 1000);
  1177. return;
  1178. }
  1179. this.$message.error(json.msg);
  1180. } else {
  1181. let objectUrl = URL.createObjectURL(blob);
  1182. let link = document.createElement("a");
  1183. let nowTime = new Date();
  1184. let ymd =
  1185. nowTime.getFullYear() +
  1186. "" +
  1187. (nowTime.getMonth() + 1) +
  1188. "" +
  1189. nowTime.getDate();
  1190. let fname = ymd + "招生情况汇总表.xls"; //下载文件的名字
  1191. link.href = objectUrl;
  1192. link.setAttribute("download", fname);
  1193. document.body.appendChild(link);
  1194. link.click();
  1195. }
  1196. });
  1197. load.endLoading();
  1198. })
  1199. .catch((error) => {
  1200. this.$message.error("导出数据失败,请联系管理员");
  1201. load.endLoading();
  1202. });
  1203. })
  1204. .catch(() => {});
  1205. },
  1206. // exportDefaultSalary() {
  1207. // let organIdList = this.teacherDefaultSalaryOrganId.join(",");
  1208. // let url = "/api-web/export/teacherDefaultSalary";
  1209. // let data = { organIdList };
  1210. // return data;
  1211. // const options = {
  1212. // method: "POST",
  1213. // headers: {
  1214. // Authorization: getToken(),
  1215. // tenantId: getTenantId(),
  1216. // },
  1217. // data: qs.stringify(cleanDeep(data)),
  1218. // url,
  1219. // responseType: "blob",
  1220. // };
  1221. // this.$confirm("您确定导出老师默认课酬表", "提示", {
  1222. // confirmButtonText: "确定",
  1223. // cancelButtonText: "取消",
  1224. // type: "warning",
  1225. // })
  1226. // .then(() => {
  1227. // load.startLoading();
  1228. // axios(options)
  1229. // .then((res) => {
  1230. // let blob = new Blob([res.data], {
  1231. // // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  1232. // type: "application/vnd.ms-excel;charset=utf-8",
  1233. // //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
  1234. // });
  1235. // let text = new Response(blob).text();
  1236. // text.then((res) => {
  1237. // // 判断是否报错
  1238. // if (res.indexOf("code") != -1) {
  1239. // let json = JSON.parse(res);
  1240. // if (json.code == 403) {
  1241. // this.$message.error(`登录过期,请重新登录!`);
  1242. // setTimeout(() => {
  1243. // this.$store.dispatch("user/resetToken").then(() => {
  1244. // location.reload();
  1245. // });
  1246. // }, 1000);
  1247. // return;
  1248. // }
  1249. // this.$message.error(json.msg);
  1250. // } else {
  1251. // let objectUrl = URL.createObjectURL(blob);
  1252. // let link = document.createElement("a");
  1253. // let nowTime = new Date();
  1254. // let ymd =
  1255. // nowTime.getFullYear() +
  1256. // "" +
  1257. // (nowTime.getMonth() + 1) +
  1258. // "" +
  1259. // nowTime.getDate();
  1260. // let fname = ymd + "老师默认课酬表.xls"; //下载文件的名字
  1261. // link.href = objectUrl;
  1262. // link.setAttribute("download", fname);
  1263. // document.body.appendChild(link);
  1264. // link.click();
  1265. // }
  1266. // });
  1267. // load.endLoading();
  1268. // })
  1269. // .catch((error) => {
  1270. // this.$message.error("导出数据失败,请联系管理员");
  1271. // load.endLoading();
  1272. // });
  1273. // })
  1274. // .catch(() => {});
  1275. // },
  1276. exportMusicTeamNum() {
  1277. let organIds = this.musicTeamNum.join(",");
  1278. let url = "/api-web/export/musicGroupNormalStudentNum";
  1279. let data = { organIds };
  1280. const options = {
  1281. method: "POST",
  1282. headers: {
  1283. Authorization: getToken(),
  1284. tenantId: getTenantId(),
  1285. },
  1286. data: qs.stringify(cleanDeep(data)),
  1287. url,
  1288. responseType: "blob",
  1289. };
  1290. this.$confirm("您确定导出乐团在读人数", "提示", {
  1291. confirmButtonText: "确定",
  1292. cancelButtonText: "取消",
  1293. type: "warning",
  1294. })
  1295. .then(() => {
  1296. load.startLoading();
  1297. axios(options)
  1298. .then((res) => {
  1299. let blob = new Blob([res.data], {
  1300. // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  1301. type: "application/vnd.ms-excel;charset=utf-8",
  1302. //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
  1303. });
  1304. let text = new Response(blob).text();
  1305. text.then((res) => {
  1306. // 判断是否报错
  1307. if (res.indexOf("code") != -1) {
  1308. let json = JSON.parse(res);
  1309. if (json.code == 403) {
  1310. this.$message.error(`登录过期,请重新登录!`);
  1311. setTimeout(() => {
  1312. this.$store.dispatch("user/resetToken").then(() => {
  1313. location.reload();
  1314. });
  1315. }, 1000);
  1316. return;
  1317. }
  1318. this.$message.error(json.msg);
  1319. } else {
  1320. let objectUrl = URL.createObjectURL(blob);
  1321. let link = document.createElement("a");
  1322. let nowTime = new Date();
  1323. let ymd =
  1324. nowTime.getFullYear() +
  1325. "" +
  1326. (nowTime.getMonth() + 1) +
  1327. "" +
  1328. nowTime.getDate();
  1329. let fname = ymd + "乐团在读人数.xls"; //下载文件的名字
  1330. link.href = objectUrl;
  1331. link.setAttribute("download", fname);
  1332. document.body.appendChild(link);
  1333. link.click();
  1334. }
  1335. });
  1336. load.endLoading();
  1337. })
  1338. .catch((error) => {
  1339. this.$message.error("导出数据失败,请联系管理员");
  1340. load.endLoading();
  1341. });
  1342. })
  1343. .catch(() => {});
  1344. },
  1345. // exportStudent() {
  1346. // if (!this.studentMonth) {
  1347. // this.$message.error("请选择导出月份");
  1348. // return;
  1349. // }
  1350. // let studentOrganId = this.studentOrganId.join(",");
  1351. // let url = "/api-web/export/studentOrder";
  1352. // let data = { organIds: studentOrganId, date: this.studentMonth };
  1353. // const options = {
  1354. // method: "POST",
  1355. // headers: {
  1356. // Authorization: getToken(),
  1357. // tenantId: getTenantId(),
  1358. // },
  1359. // data: qs.stringify(cleanDeep(data)),
  1360. // url,
  1361. // responseType: "blob",
  1362. // };
  1363. // this.$confirm("您确定导出回款统计", "提示", {
  1364. // confirmButtonText: "确定",
  1365. // cancelButtonText: "取消",
  1366. // type: "warning",
  1367. // })
  1368. // .then(() => {
  1369. // load.startLoading();
  1370. // axios(options)
  1371. // .then((res) => {
  1372. // let blob = new Blob([res.data], {
  1373. // // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
  1374. // type: "application/vnd.ms-excel;charset=utf-8",
  1375. // //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
  1376. // });
  1377. // let text = new Response(blob).text();
  1378. // text.then((res) => {
  1379. // // 判断是否报错
  1380. // if (res.indexOf("code") != -1) {
  1381. // let json = JSON.parse(res);
  1382. // if (json.code == 403) {
  1383. // this.$message.error(`登录过期,请重新登录!`);
  1384. // setTimeout(() => {
  1385. // this.$store.dispatch("user/resetToken").then(() => {
  1386. // location.reload();
  1387. // });
  1388. // }, 1000);
  1389. // return;
  1390. // }
  1391. // this.$message.error(json.msg);
  1392. // } else {
  1393. // let objectUrl = URL.createObjectURL(blob);
  1394. // let link = document.createElement("a");
  1395. // let nowTime = new Date();
  1396. // let ymd =
  1397. // nowTime.getFullYear() +
  1398. // "" +
  1399. // (nowTime.getMonth() + 1) +
  1400. // "" +
  1401. // nowTime.getDate();
  1402. // let fname = ymd + "回款统计.xls"; //下载文件的名字
  1403. // link.href = objectUrl;
  1404. // link.setAttribute("download", fname);
  1405. // document.body.appendChild(link);
  1406. // link.click();
  1407. // }
  1408. // });
  1409. // load.endLoading();
  1410. // })
  1411. // .catch((error) => {
  1412. // this.$message.error("导出数据失败,请联系管理员");
  1413. // load.endLoading();
  1414. // });
  1415. // })
  1416. // .catch(() => {});
  1417. // },
  1418. // exportAttendance() {
  1419. // let classStartDate, classEndDate;
  1420. // if (this.timer && this.timer.length > 0) {
  1421. // classStartDate = this.timer[0];
  1422. // classEndDate = this.timer[1];
  1423. // } else {
  1424. // classStartDate = null;
  1425. // classEndDate = null;
  1426. // }
  1427. // return {
  1428. // organId: this.attendanceOrganId.join(","),
  1429. // groupType: this.attendanceCourseType,
  1430. // classStartDate,
  1431. // classEndDate,
  1432. // };
  1433. // Export(
  1434. // this,
  1435. // {
  1436. // url: "/api-web/export/exportStudentAttendances",
  1437. // fileName: "学生考勤.xls",
  1438. // method: "post",
  1439. // params: qs.stringify({
  1440. // organId: this.attendanceOrganId.join(","),
  1441. // groupType: this.attendanceCourseType,
  1442. // classStartDate,
  1443. // classEndDate,
  1444. // }),
  1445. // },
  1446. // "您确定导出学生考勤?"
  1447. // );
  1448. // },
  1449. // exportTrain() {
  1450. // if (!this.trainOrganId) {
  1451. // this.$message.error("请选择分部");
  1452. // return;
  1453. // }
  1454. // return {
  1455. // organId: this.trainOrganId,
  1456. // };
  1457. // Export(
  1458. // this,
  1459. // {
  1460. // url: "/api-web/export/cloudStudyStudentTrainData",
  1461. // fileName: "云教练学员统计.xls",
  1462. // method: "post",
  1463. // params: qs.stringify({
  1464. // organId: this.trainOrganId,
  1465. // }),
  1466. // },
  1467. // "您确定导出云教练学员统计?"
  1468. // );
  1469. // },
  1470. exportQuestion() {
  1471. Export(
  1472. this,
  1473. {
  1474. url: "/api-web/questionnaireUserResult/export",
  1475. fileName: "问卷调查.xls",
  1476. method: "get",
  1477. params: { activeType: this.questionActiveType },
  1478. },
  1479. "您确定导出问卷调查?"
  1480. );
  1481. },
  1482. // exportLeBao() {
  1483. // let endTime, startTime;
  1484. // if (this.leBaoTimer && this.leBaoTimer.length > 1) {
  1485. // startTime = this.leBaoTimer[0];
  1486. // let end = this.leBaoTimer[1];
  1487. // end = new Date(end);
  1488. // end = new Date(end.getFullYear(), end.getMonth() + 1, 0);
  1489. // endTime = dayjs(end).format("YYYY-MM-DD");
  1490. // } else {
  1491. // this.$message.error("请选择导出月份");
  1492. // return;
  1493. // }
  1494. // Export(
  1495. // this,
  1496. // {
  1497. // url: "/api-web/studentInstrument/export",
  1498. // fileName: "乐保订单.xls",
  1499. // method: "get",
  1500. // params: { startTime: startTime, endTime: endTime },
  1501. // },
  1502. // "您确定导出乐保订单?"
  1503. // );
  1504. // },
  1505. // exportAccount() {
  1506. // let endTime, startTime;
  1507. // if (this.AccountTimer && this.AccountTimer.length > 1) {
  1508. // startTime = this.AccountTimer[0];
  1509. // endTime = this.AccountTimer[1];
  1510. // } else {
  1511. // startTime = null;
  1512. // endTime = null;
  1513. // }
  1514. // Export(
  1515. // this,
  1516. // {
  1517. // url: "/api-web/export/userCoursesAccount",
  1518. // fileName: "课程余额明细.xls",
  1519. // method: "post",
  1520. // params: qs.stringify({
  1521. // startTime: startTime,
  1522. // endTime: endTime,
  1523. // organId: this.AccountOrganId.join(","),
  1524. // }),
  1525. // },
  1526. // "您确定导出课程余额明细?"
  1527. // );
  1528. // },
  1529. // exportDetailAccount() {
  1530. // let endTime, startTime;
  1531. // if (this.AccountDetailTimer && this.AccountDetailTimer.length > 1) {
  1532. // startTime = this.AccountDetailTimer[0];
  1533. // endTime = this.AccountDetailTimer[1];
  1534. // } else {
  1535. // startTime = null;
  1536. // endTime = null;
  1537. // }
  1538. // Export(
  1539. // this,
  1540. // {
  1541. // url: "/api-web/export/userCashAccountDetail",
  1542. // fileName: "账户余额明细.xls",
  1543. // method: "post",
  1544. // params: qs.stringify({
  1545. // startTime: startTime,
  1546. // endTime: endTime,
  1547. // organId: this.AccountDetailOrganId.join(","),
  1548. // }),
  1549. // },
  1550. // "您确定导出账户余额明细?"
  1551. // );
  1552. // },
  1553. // exportVip() {
  1554. // if (!this.vipOrganId.length < 0) {
  1555. // this.$message.error("请选择分部");
  1556. // return;
  1557. // }
  1558. // let data = {
  1559. // organId: this.vipOrganId.join(","),
  1560. // };
  1561. // let url = "/api-web/export/studentVipPractice";
  1562. // const options = {
  1563. // method: "get",
  1564. // headers: {
  1565. // Authorization: getToken(),
  1566. // tenantId: getTenantId(),
  1567. // },
  1568. // params: cleanDeep(data),
  1569. // url,
  1570. // responseType: "form",
  1571. // };
  1572. // this.$confirm("您确定导出VIP网管课耗", "提示", {
  1573. // confirmButtonText: "确定",
  1574. // cancelButtonText: "取消",
  1575. // type: "warning",
  1576. // })
  1577. // .then(() => {
  1578. // load.startLoading();
  1579. // axios(options)
  1580. // .then((res) => {
  1581. // load.endLoading();
  1582. // if (res.data.code == 200) {
  1583. // this.$message.info(res.data.msg);
  1584. // } else if (res.data.code == 403) {
  1585. // this.$message.error(`登录过期,请重新登录!`);
  1586. // setTimeout(() => {
  1587. // this.$store.dispatch("user/resetToken").then(() => {
  1588. // location.reload();
  1589. // });
  1590. // }, 1000);
  1591. // } else {
  1592. // this.$message.error(res.data.msg);
  1593. // }
  1594. // // this.$confirm(res.data.data, "提示", {
  1595. // // confirmButtonText: "确定",
  1596. // // cancelButtonText: "取消",
  1597. // // type: "warning",
  1598. // // }).then(() => {
  1599. // // }).catch(err => {
  1600. // // })
  1601. // })
  1602. // .catch((error) => {
  1603. // this.$message.error("导出数据失败,请联系管理员");
  1604. // load.endLoading();
  1605. // });
  1606. // })
  1607. // .catch(() => {});
  1608. // // Export(
  1609. // // this,
  1610. // // {
  1611. // // url: "/api-web/export/studentVipPractice",
  1612. // // fileName: "vip网管课.xls",
  1613. // // method: "post",
  1614. // // params: qs.stringify({
  1615. // // organId: this.vipOrganId.join(',')
  1616. // // }),
  1617. // // },
  1618. // // "您确定导出vip网管课?"
  1619. // // );
  1620. // },
  1621. // exportDetailService() {
  1622. // let sunday, monday;
  1623. // if (this.serviceTimer && this.serviceTimer.length > 1) {
  1624. // monday = this.serviceTimer[0];
  1625. // sunday = this.serviceTimer[1];
  1626. // } else {
  1627. // monday = null;
  1628. // sunday = null;
  1629. // }
  1630. // Export(
  1631. // this,
  1632. // {
  1633. // url: "/api-web/export/exercisesSituation",
  1634. // fileName: "服务指标明细.xls",
  1635. // method: "post",
  1636. // params: qs.stringify({
  1637. // monday: monday,
  1638. // sunday: sunday,
  1639. // organId: this.serviceOrganId.join(","),
  1640. // }),
  1641. // },
  1642. // "您确定导出服务指标明细?"
  1643. // );
  1644. // },
  1645. getNowDateAndMonday(time) {
  1646. let timestamp = new Date(time.replace(/-/g, "/")).getTime();
  1647. let serverDate = new Date(time);
  1648. if (serverDate.getDay() == 0) {
  1649. timestamp -= 7 * 24 * 60 * 60 * 1000;
  1650. }
  1651. let mondayTime =
  1652. timestamp - (serverDate.getDay() - 1) * 24 * 60 * 60 * 1000;
  1653. let mondayData = new Date(mondayTime);
  1654. //年
  1655. let mondayY = mondayData.getFullYear();
  1656. //月
  1657. let mondayM =
  1658. mondayData.getMonth() + 1 < 10
  1659. ? "0" + (mondayData.getMonth() + 1)
  1660. : mondayData.getMonth() + 1;
  1661. //日
  1662. let mondayD =
  1663. mondayData.getDate() < 10
  1664. ? "0" + mondayData.getDate()
  1665. : mondayData.getDate();
  1666. let str = mondayY + "-" + mondayM + "-" + mondayD;
  1667. return str;
  1668. },
  1669. getNowDateAndSunday(time) {
  1670. let timestamp = new Date(time.replace(/-/g, "/")).getTime();
  1671. let serverDate = new Date(time);
  1672. let num = 7 - serverDate.getDay();
  1673. if (num == 7) {
  1674. num = 0;
  1675. }
  1676. let sundayTiem = timestamp + num * 24 * 60 * 60 * 1000;
  1677. let SundayData = new Date(sundayTiem);
  1678. //年
  1679. let tomorrowY = SundayData.getFullYear(); //月
  1680. let tomorrowM =
  1681. SundayData.getMonth() + 1 < 10
  1682. ? "0" + (SundayData.getMonth() + 1)
  1683. : SundayData.getMonth() + 1;
  1684. //日
  1685. let tomorrowD =
  1686. SundayData.getDate() < 10
  1687. ? "0" + SundayData.getDate()
  1688. : SundayData.getDate();
  1689. let str = tomorrowY + "-" + tomorrowM + "-" + tomorrowD;
  1690. return str;
  1691. },
  1692. getWeekTime(val) {
  1693. if (val && val.length > 0) {
  1694. let start = this.getNowDateAndMonday(val[0]);
  1695. let end = this.getNowDateAndSunday(val[1]);
  1696. this.teamTimer.splice(0, 1, start);
  1697. this.teamTimer.splice(1, 1, end);
  1698. }
  1699. },
  1700. getStudentWeekTime(val) {
  1701. let start = this.getNowDateAndMonday(val[0]);
  1702. let end = this.getNowDateAndSunday(val[1]);
  1703. this.studentServerTimer.splice(0, 1, start);
  1704. this.studentServerTimer.splice(1, 1, end);
  1705. },
  1706. // exportVipStudent() {
  1707. // let data = {
  1708. // organIdList: this.VipStudentOrganId.join(","),
  1709. // };
  1710. // Export(
  1711. // this,
  1712. // {
  1713. // method: "post",
  1714. // url: "/api-web/export/vipCourseInfo",
  1715. // params: this.$helpers.qs.stringify({
  1716. // ...data,
  1717. // }),
  1718. // },
  1719. // "是否确认导出VIP学员课程管理?"
  1720. // );
  1721. // },
  1722. // exportAbnormal() {
  1723. // let params = this.Abnormal;
  1724. // Export(
  1725. // this,
  1726. // {
  1727. // method: "post",
  1728. // url: "/api-web/export/exportIndexErrData",
  1729. // params: this.$helpers.qs.stringify({
  1730. // ...params,
  1731. // }),
  1732. // },
  1733. // "是否确认导出报表?"
  1734. // );
  1735. // },
  1736. exportMusicGroup() {
  1737. let params = {
  1738. ...getTimes(this.teamTimer, ["startTime", "endTime"]),
  1739. organId: this.teamOrganId.join(","),
  1740. };
  1741. Export(
  1742. this,
  1743. {
  1744. method: "post",
  1745. url: "/api-web/export/exportMusicGroupCourseList",
  1746. params: this.$helpers.qs.stringify({
  1747. ...params,
  1748. }),
  1749. },
  1750. "是否确认导出报表?"
  1751. );
  1752. },
  1753. },
  1754. computed: {
  1755. exportAttendance() {
  1756. let classStartDate, classEndDate;
  1757. if (this.timer && this.timer.length > 0) {
  1758. classStartDate = this.timer[0];
  1759. classEndDate = this.timer[1];
  1760. } else {
  1761. classStartDate = null;
  1762. classEndDate = null;
  1763. }
  1764. return {
  1765. organId: this.attendanceOrganId.join(","),
  1766. groupType: this.attendanceCourseType,
  1767. classStartDate,
  1768. classEndDate,
  1769. };
  1770. },
  1771. exportTrain() {
  1772. let cloudTeacherTrainStartDate, cloudTeacherTrainEndDate;
  1773. if (this.cloudTimer && this.cloudTimer.length > 0) {
  1774. cloudTeacherTrainStartDate = this.cloudTimer[0];
  1775. cloudTeacherTrainEndDate = this.cloudTimer[1];
  1776. } else {
  1777. cloudTeacherTrainStartDate = null;
  1778. cloudTeacherTrainEndDate = null;
  1779. }
  1780. let obj = { organId: this.trainOrganId,cloudTeacherTrainStartDate, cloudTeacherTrainEndDate};
  1781. console.log(obj,'exportTrain')
  1782. return obj;
  1783. },
  1784. exportDefaultSalary() {
  1785. let organIdList = this.teacherDefaultSalaryOrganId.join(",");
  1786. let url = "/api-web/export/teacherDefaultSalary";
  1787. let data = { organIdList };
  1788. return data;
  1789. },
  1790. exportStudent() {
  1791. let studentOrganId = this.studentOrganId.join(",");
  1792. return { organIds: studentOrganId, date: this.studentMonth };
  1793. },
  1794. exportLeBao() {
  1795. let endTime, startTime;
  1796. if (this.leBaoTimer && this.leBaoTimer.length > 1) {
  1797. startTime = this.leBaoTimer[0];
  1798. let end = this.leBaoTimer[1];
  1799. end = new Date(end);
  1800. end = new Date(end.getFullYear(), end.getMonth() + 1, 0);
  1801. endTime = dayjs(end).format("YYYY-MM-DD");
  1802. }
  1803. return { startTime: startTime, endTime: endTime };
  1804. },
  1805. exportVip() {
  1806. // if (!this.vipOrganId.length < 0) {
  1807. // this.$message.error("请选择分部");
  1808. // return;
  1809. // }
  1810. let data = {
  1811. organId: this.vipOrganId.join(","),
  1812. };
  1813. return data;
  1814. },
  1815. exportVipStudent() {
  1816. let data = {
  1817. organId: this.VipStudentOrganId.join(","),
  1818. };
  1819. return data;
  1820. },
  1821. exportActive() {
  1822. let data = {
  1823. organId: this.activeOrganId.join(","),
  1824. };
  1825. return data;
  1826. },
  1827. exportStudentServer() {
  1828. let sunday, monday;
  1829. if (this.studentServerTimer && this.studentServerTimer.length > 1) {
  1830. monday = this.studentServerTimer[0];
  1831. sunday = this.studentServerTimer[1];
  1832. } else {
  1833. monday = null;
  1834. sunday = null;
  1835. }
  1836. return {
  1837. monday,
  1838. sunday,
  1839. organId: this.studentServerOrganId.join(","),
  1840. };
  1841. },
  1842. exportDetailService() {
  1843. let sunday, monday;
  1844. if (this.serviceTimer && this.serviceTimer.length > 1) {
  1845. monday = this.serviceTimer[0];
  1846. sunday = this.serviceTimer[1];
  1847. } else {
  1848. monday = null;
  1849. sunday = null;
  1850. }
  1851. return {
  1852. monday: monday,
  1853. sunday: sunday,
  1854. organId: this.serviceOrganId.join(","),
  1855. };
  1856. },
  1857. exportAbnormal() {
  1858. console.log(this.Abnormal);
  1859. return {
  1860. organIds: this.Abnormal.organIds.join(","),
  1861. };
  1862. },
  1863. exportSalar() {
  1864. // if (!this.mouth) {
  1865. // this.$message.error("请选择导出月份");
  1866. // return;
  1867. // }
  1868. // let courseTypeList = this.courseScheduleType.join(',')
  1869. // let url = "/api-web/export/teacherSalary";
  1870. let data = { date: this.mouth };
  1871. return data;
  1872. },
  1873. exportOperating() {
  1874. let data = { date: this.operatingMouth };
  1875. return data;
  1876. },
  1877. exportVisit() {
  1878. let data = { month: this.visitmouth };
  1879. return data;
  1880. },
  1881. exportAccount() {
  1882. let endTime, startTime;
  1883. if (this.AccountTimer && this.AccountTimer.length > 1) {
  1884. startTime = this.AccountTimer[0];
  1885. endTime = this.AccountTimer[1];
  1886. } else {
  1887. startTime = null;
  1888. endTime = null;
  1889. }
  1890. return {
  1891. startTime: startTime,
  1892. endTime: endTime,
  1893. organId: this.AccountOrganId.join(","),
  1894. };
  1895. },
  1896. exporTtraining() {
  1897. let endTime, startTime;
  1898. if (this.trainingTimer && this.trainingTimer.length > 1) {
  1899. startTime = this.trainingTimer[0];
  1900. endTime = this.trainingTimer[1];
  1901. } else {
  1902. startTime = null;
  1903. endTime = null;
  1904. }
  1905. return {
  1906. startDate: startTime,
  1907. endDate: endTime,
  1908. organId: this.trainingOrganId.join(","),
  1909. };
  1910. },
  1911. exportDetailAccount() {
  1912. let endTime, startTime;
  1913. if (this.AccountDetailTimer && this.AccountDetailTimer.length > 1) {
  1914. startTime = this.AccountDetailTimer[0];
  1915. endTime = this.AccountDetailTimer[1];
  1916. } else {
  1917. startTime = null;
  1918. endTime = null;
  1919. }
  1920. return {
  1921. startTime: startTime,
  1922. endTime: endTime,
  1923. organId: this.AccountDetailOrganId.join(","),
  1924. };
  1925. },
  1926. },
  1927. // AccountDetailTimer
  1928. };
  1929. </script>
  1930. <style lang="scss" scoped>
  1931. .m-container {
  1932. // margin-top: 20px;
  1933. .m-wrap {
  1934. display: flex;
  1935. flex-direction: row;
  1936. justify-content: flex-start;
  1937. width: 100%;
  1938. align-items: center;
  1939. margin-bottom: 16px;
  1940. .newBand {
  1941. margin: 0 5px 0 10px;
  1942. }
  1943. .title {
  1944. width: 150px;
  1945. // height: 40px;
  1946. // line-height: 40px;
  1947. text-align: right;
  1948. color: #212121;
  1949. font-weight: 600;
  1950. }
  1951. .organSelect {
  1952. width: 260px !important;
  1953. }
  1954. .el-tooltip.micon {
  1955. width: 20px;
  1956. height: 20px;
  1957. position: relative;
  1958. margin-left: 8px;
  1959. // top: 12px;
  1960. }
  1961. }
  1962. .formCollapse {
  1963. border: none;
  1964. ::v-deep .el-collapse-item__header {
  1965. padding: 0 15px;
  1966. border-bottom: none;
  1967. background-color: #f8f8f8;
  1968. }
  1969. ::v-deep .el-collapse-item__wrap {
  1970. padding: 15px;
  1971. border-bottom: none;
  1972. }
  1973. ::v-deep .el-collapse-item__arrow.is-active {
  1974. transform: rotate(-90deg);
  1975. }
  1976. // 默认方向
  1977. ::v-deep .el-collapse-item__arrow,
  1978. .el-tabs__nav {
  1979. transform: rotate(90deg);
  1980. }
  1981. ::v-deep .el-collapse-item__content {
  1982. padding-bottom: 0px !important;
  1983. }
  1984. .wrapTitle {
  1985. font-size: 18px;
  1986. position: relative;
  1987. font-weight: 600;
  1988. margin-left: 12px;
  1989. &::after {
  1990. position: absolute;
  1991. width: 4px;
  1992. height: 18px;
  1993. background: var(--color-primary);
  1994. border-radius: 2px;
  1995. left: -13px;
  1996. top: 14px;
  1997. content: "";
  1998. }
  1999. }
  2000. }
  2001. }
  2002. ::v-deep .el-input__icon.el-icon-date {
  2003. height: 40px !important;
  2004. }
  2005. </style>