index.vue 66 KB

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