createLiveClass.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <el-page-header @back="onCancel" :content="name"></el-page-header>
  5. </h2>
  6. <div class="m-core">
  7. <el-form ref="liveForm" :model="form" label-position="top">
  8. <el-alert title="课程规划" :closable="false" type="info" style="margin: 0 0 20px" />
  9. <el-row :gutter="20">
  10. <el-col :span="10">
  11. <el-form-item label="直播课标题" prop="roomTitle" :rules="[{ required: true, message: '请输入直播课标题' }]">
  12. <el-input v-model="form.roomTitle" placeholder="请输入直播课标题" maxlength="10"></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="10">
  16. <el-form-item label="直播课内容" prop="liveRemark" :rules="[{ required: true, message: '请输入直播课内容' }]">
  17. <el-input type="textarea" v-model="form.liveRemark" placeholder="请输入直播课内容" maxlength="200"
  18. show-word-limit></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="10">
  22. <el-form-item label="分部" prop="organIds" :rules="[{ required: true, message: '请选择分部' }]">
  23. <select-all v-model.trim="form.organIds" filterable placeholder="请选择分部" multiple clearable>
  24. <el-option v-for="(item, index) in selects.branchs" :key="index" :label="item.name"
  25. :value="item.id"></el-option>
  26. </select-all>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="10">
  30. <el-form-item label="声部" prop="subjectIdList" :rules="[{ required: true, message: '请选择声部' }]">
  31. <el-select v-model.trim="form.subjectIdList" filterable clearable @change="onChangeSubject"
  32. placeholder="请选择声部" style="width: 100% !important">
  33. <el-option v-for="(item, index) in subjectList" :key="index" :value="item.id" :label="item.name" />
  34. </el-select>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="10">
  38. <el-form-item label="指导老师" prop="teacher" :rules="[{ required: true, message: '请选择指导老师' }]">
  39. <el-select v-model.trim="form.teacher" filterable clearable placeholder="请选择指导老师"
  40. style="width: 100% !important" :disabled="!form.subjectIdList">
  41. <el-option v-for="(item, index) in teacherList" :key="index" :label="item.realName" :value="item.id" />
  42. </el-select>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="10">
  46. <el-form-item label="乐团主管" prop="educationalTeacherId" :rules="[{ required: true, message: '请选择乐团主管' }]">
  47. <el-select v-model.trim="form.educationalTeacherId" filterable clearable style="width: 100% !important"
  48. :rules="[{ required: true, message: '请选择乐团主管' }]">
  49. <el-option v-for="(item, key) in educationList" :key="key" :label="item.userName" :value="item.userId" />
  50. </el-select>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="10">
  54. <el-form-item label="课程购买时间" prop="signUpTimeList" :rules="[{ required: true, message: '请选择课程购买时间' }]">
  55. <el-date-picker style="width: 100%" v-model="form.signUpTimeList" :picker-options="pickerOptions"
  56. type="daterange" :default-time="['00:00:00', '23:59:59']" range-separator="-" start-placeholder="购买开始日期"
  57. end-placeholder="购买结束日期">
  58. </el-date-picker>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="10">
  62. <el-form-item label="课时数" prop="onlineClassesNum" :rules="[{ required: true, message: '请输入课时数' }]">
  63. <el-input v-model="form.onlineClassesNum" placeholder="请输入课时数" maxlength="2"
  64. @input="(val) => { form.onlineClassesNum = val.replace(/[^\d]/g, '') }" @change="() => {
  65. form.timeTable = []; // 课表重置
  66. }
  67. "></el-input>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="10">
  71. <el-form-item label="课程时长" prop="singleClassMinuteId" :rules="[{ required: true, message: '请选择课程时长' }]">
  72. <el-select v-model.trim="form.singleClassMinuteId" filterable clearable style="width: 100% !important"
  73. placeholder="请选择课程时长" @change="onSingleClassChange">
  74. <el-option v-for="(item, key) in liveGroupList" :key="key" :label="item.singleClassMinutes"
  75. :value="item.id" />
  76. </el-select>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="10">
  80. <el-form-item label="现单价" prop="onlineClassesUnitPrice" :rules="[{ required: true, message: '请输入现单价' }]">
  81. <el-input v-model="form.onlineClassesUnitPrice" placeholder="请输入现单价" maxlength="9"
  82. @input="(val) => { form.onlineClassesUnitPrice = val.replace(/[^\d]/g, '') }"></el-input>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="10">
  86. <el-form-item label="原单价" prop="offlineClassesUnitPrice" :rules="[{ required: true, message: '请输入原单价' }]">
  87. <el-input v-model="form.offlineClassesUnitPrice" placeholder="请输入原单价" maxlength="9"
  88. @input="(val) => { form.offlineClassesUnitPrice = val.replace(/[^\d]/g, '') }"></el-input>
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="10">
  92. <el-form-item label="总原价" prop="countOnlineClassesUnitPrice">
  93. <el-input v-model="countOnlineClassesUnitPrice" placeholder="请输入总原价" maxlength="9" disabled></el-input>
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="10">
  97. <el-form-item label="总现价" prop="countOfflineClassesUnitPrice">
  98. <el-input v-model="countOfflineClassesUnitPrice" placeholder="请输入总现价" maxlength="9" disabled></el-input>
  99. </el-form-item>
  100. </el-col>
  101. </el-row>
  102. <el-button type="danger" @click="onTimeTable">点击排课</el-button>
  103. <el-table style="width: 100%; margin-top: 20px;" :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  104. :data="form.timeTable">
  105. <el-table-column align="center" label="课时">
  106. <template slot-scope="scope">
  107. 第{{ scope.$index + 1 }}课
  108. </template>
  109. </el-table-column>
  110. <el-table-column align="center" label="内容" width="150px" prop="teachingContent" key="teachingContent">
  111. <template slot-scope="scope">
  112. <!-- v-model="form.eclass[scope.$index].courseCurrentPrice" -->
  113. <el-form-item :prop="'timeTable.' + scope.$index + '.teachingContent'"
  114. :rules="[{ required: true, message: '请输入内容' }]" style="margin-bottom: 0;">
  115. <el-input v-model="scope.row.teachingContent" placeholder="请输入内容">
  116. </el-input>
  117. </el-form-item>
  118. </template>
  119. </el-table-column>
  120. <el-table-column align="center" label="技能/知识点掌握" width="220px" prop="teachingPoint" key="teachingPoint">
  121. <template slot-scope="scope">
  122. <el-form-item :prop="'timeTable.' + scope.$index + '.teachingPoint'"
  123. :rules="[{ required: true, message: '请输入技能/知识点掌握' }]" style="margin-bottom: 0;">
  124. <!-- v-model="scope.row.teachingPoint" -->
  125. <el-input v-model="form.timeTable[scope.$index].teachingPoint" placeholder="请输入技能/知识点掌握">
  126. </el-input>
  127. </el-form-item>
  128. </template>
  129. </el-table-column>
  130. <el-table-column align="center" prop="singleClassMinutes" label="时长"></el-table-column>
  131. <el-table-column align="center" label="课程日期">
  132. <template slot-scope="scope">
  133. <div>{{ scope.row.classDate | formatTimer }}</div>
  134. </template>
  135. </el-table-column>
  136. <el-table-column align="center" prop="startClassTimeStr" label="开始时间"></el-table-column>
  137. <el-table-column align="center" prop="endClassTimeStr" label="结束时间"></el-table-column>
  138. <el-table-column align="center" label="课程类型">
  139. <template slot-scope="scope">
  140. <div>{{ scope.row.teachMode | teachMode }}</div>
  141. </template>
  142. </el-table-column>
  143. </el-table>
  144. <el-alert title="直播课信息" :closable="false" type="info" style="margin: 20px 0" />
  145. <el-row :gutter="20">
  146. <el-col :span="6">
  147. <el-form-item label="直播设备" prop="os" :rules="[{ required: true, message: '请选择推广类型' }]">
  148. <el-radio-group v-model="form.os">
  149. <!-- 根据不同的模式,显示不同的直播设备 -->
  150. <el-radio v-if="serviceProvider === 'rongCloud'" label="pc">web</el-radio>
  151. <el-radio v-if="serviceProvider === 'tencentCloud'" label="client">乐直播</el-radio>
  152. <el-radio label="mobile">手机</el-radio>
  153. </el-radio-group>
  154. </el-form-item>
  155. </el-col>
  156. <el-col :span="6">
  157. <el-form-item label="直播场景" prop="useScene" :rules="[{ required: true, message: '请选择直播场景' }]">
  158. <el-radio-group v-model="form.useScene">
  159. <el-radio label="NORMAL">普通场景</el-radio>
  160. <el-radio label="MUSIC">音乐场景</el-radio>
  161. </el-radio-group>
  162. </el-form-item>
  163. </el-col>
  164. <el-col :span="6">
  165. <el-form-item prop="roomConfig.whether_video" label="保存直播回放"
  166. :rules="[{ required: true, message: '是否保存直播回放' }]">
  167. <el-radio-group v-model="form.roomConfig.whether_video">
  168. <el-radio :label="0">是</el-radio>
  169. <el-radio :label="1">否</el-radio>
  170. </el-radio-group>
  171. </el-form-item>
  172. </el-col>
  173. <el-col :span="6">
  174. <el-form-item prop="roomConfig.whether_view_shop_cart" label="是否展示购物车"
  175. :rules="[{ required: true, message: '是否展示购物车' }]">
  176. <el-radio-group v-model="form.roomConfig.whether_view_shop_cart">
  177. <el-radio :label="0">是</el-radio>
  178. <el-radio :label="1">否</el-radio>
  179. </el-radio-group>
  180. </el-form-item>
  181. </el-col>
  182. <el-col :span="24">
  183. <el-form-item label="预热模板(模板使用于分享宣传图片)" prop="preTemplate" :rules="[{ required: true, message: '请选择预热模板' }]">
  184. <el-radio-group v-model="form.preTemplate">
  185. <div class="chioseWrap">
  186. <div class="chioseItem" @click="setPreTemplate(1)">
  187. <img src="./images/img1.png" alt="" />
  188. <i class="dotWrap" :class="form.preTemplate == 1 ? 'checked' : ''"></i>
  189. </div>
  190. <div class="chioseItem" @click="setPreTemplate(2)">
  191. <img src="./images/img2.png" alt="" />
  192. <i class="dotWrap" :class="form.preTemplate == 2 ? 'checked' : ''"></i>
  193. </div>
  194. <div class="chioseItem" @click="setPreTemplate(3)">
  195. <img src="./images/img3.png" alt="" />
  196. <i class="dotWrap" :class="form.preTemplate == 3 ? 'checked' : ''"></i>
  197. </div>
  198. </div>
  199. </el-radio-group>
  200. </el-form-item>
  201. </el-col>
  202. </el-row>
  203. <el-row>
  204. <el-col :span="24">
  205. <el-button type="primary" @click="onReset">重置</el-button>
  206. <el-button type="primary" @click="onSubmit">确定</el-button>
  207. </el-col>
  208. </el-row>
  209. </el-form>
  210. </div>
  211. <el-dialog title="排课" ref="maskForm" width="500px" :visible.sync="dialogFormVisible">
  212. <addLiveCourse :singleClassMinutes="form.singleClassMinutes" :signUpTimeList="form.signUpTimeList"
  213. :onlineCourseNum="form.onlineClassesNum" @close="dialogFormVisible = false" @confirm="onConfirm" />
  214. </el-dialog>
  215. </div>
  216. </template>
  217. <script>
  218. import dayjs from "dayjs";
  219. import deepClone from "@/helpers/deep-clone";
  220. import preview from "./modals/preview.vue";
  221. import addLiveCourse from "./modals/addLiveCourse.vue";
  222. import { sysTenantConfigAll } from "./api";
  223. import {
  224. getSubject,
  225. findTeacherByOrganId,
  226. getOrganRole
  227. } from "@/api/buildTeam";
  228. import { vipGroupCategory, createVip } from "@/api/vipSeting";
  229. export default {
  230. components: { preview, addLiveCourse },
  231. data() {
  232. return {
  233. name: "新建直播课",
  234. dialogFormVisible: false,
  235. form: {
  236. roomTitle: "", //
  237. liveRemark: "", // 内容
  238. organIds: [],
  239. subjectIdList: null, // 声部
  240. teacher: "", // 指导老师列表
  241. educationalTeacherId: null, // 乐团主管
  242. preTemplate: 1, // 模板
  243. signUpStart: null, // 开始时间
  244. signUpEnd: null, // 结束时间
  245. signUpTimeList: [], // 课程购买时间
  246. onlineClassesNum: null,
  247. singleClassMinuteId: null, //时长编号
  248. singleClassMinutes: null, // 时长
  249. onlineClassesUnitPrice: null, // 售价
  250. offlineClassesUnitPrice: null, // 原价
  251. os: "client", // 直播设备
  252. useScene: "NORMAL", // 直播场景
  253. popularizeType: "ALL", // 观看权限信息
  254. viewMode: "LOGIN",
  255. roomConfig: {
  256. whether_like: 0,
  257. whether_chat: 0,
  258. whether_video: 0,
  259. whether_mic: 0,
  260. whether_view_shop_cart: 1
  261. },
  262. timeTable: [], // 排课
  263. clientType: "TEACHER" // 主讲人身份 默认[老师]
  264. },
  265. serviceProvider: "tencentCloud", // 直播模式
  266. subjectList: [], // 声部列表
  267. teacherList: [], // 指导老师
  268. educationList: [], // 乐团主管
  269. liveGroupList: [], // 课时列表
  270. pickerOptions: {
  271. firstDayOfWeek: 1,
  272. disabledDate(time) {
  273. return time.getTime() + 86400000 <= new Date().getTime();
  274. }
  275. }
  276. };
  277. },
  278. async mounted() {
  279. this.$store.dispatch("setBranchs");
  280. await this.__init();
  281. },
  282. methods: {
  283. async onChangeSubject(val) {
  284. try {
  285. // 判断声部,如果为-1则为乐理,显示普通
  286. if (val > 0) {
  287. this.form.useScene = "MUSIC"
  288. } else {
  289. this.form.useScene = "NORMAL"
  290. }
  291. this.form.teacher = ""; // 重置指导老师
  292. // 根据科目id获取相应的老师
  293. await findTeacherByOrganId({
  294. subjectIds: val <= 0 ? null : val
  295. }).then(res => {
  296. if (res.code == 200) {
  297. this.teacherList = res.data;
  298. }
  299. });
  300. } catch { }
  301. },
  302. onCancel() {
  303. this.$store.dispatch("delVisitedViews", this.$route);
  304. this.$router.push("/liveClassManager?tabrouter=2");
  305. },
  306. setPreTemplate(index) {
  307. this.form.preTemplate = index;
  308. },
  309. async onSubmit() {
  310. this.$refs.liveForm.validate(async flag => {
  311. if (!flag) {
  312. this.onScrollError();
  313. return false;
  314. }
  315. try {
  316. const form = this.form;
  317. if (form.timeTable.length <= 0) {
  318. this.$message.error("请点击排课");
  319. return;
  320. }
  321. const timeTable = [];
  322. form.timeTable.forEach(item => {
  323. timeTable.push({
  324. classDate: item.classDate,
  325. actualTeacherId: form.teacher,
  326. startClassTimeStr: item.startClassTimeStr,
  327. endClassTimeStr: item.endClassTimeStr,
  328. teachMode: item.teachMode,
  329. teachingContent: item.teachingContent,
  330. teachingPoint: item.teachingPoint
  331. });
  332. });
  333. let obj = {
  334. courseSchedules: timeTable,
  335. vipGroupApplyBaseInfo: {
  336. groupType: "LIVE",
  337. vipGroupStudentCoursePrices: [],
  338. // coursesExpireDate: this.leftForm.courseEnd,
  339. // teacherSchoolId: this.leftForm.section,
  340. studentIdList: "",
  341. offlineClassesNum: 0,
  342. onlineClassesNum: form.onlineClassesNum || 0,
  343. offlineClassesUnitPrice: form.offlineClassesUnitPrice || 0,
  344. onlineClassesUnitPrice: form.onlineClassesUnitPrice || 0,
  345. registrationStartTime: dayjs(form.signUpTimeList[0]).format(
  346. "YYYY-MM-DD"
  347. ),
  348. paymentExpireDate: dayjs(form.signUpTimeList[0]).format(
  349. "YYYY-MM-DD"
  350. ),
  351. singleClassMinutes: form.singleClassMinutes,
  352. userId: form.teacher,
  353. // vipGroupActivityId: form.singleClassMinuteId,
  354. vipGroupCategoryId: form.singleClassMinuteId,
  355. onlineTeacherSalary: 0,
  356. offlineTeacherSalary: 0,
  357. giveTeachMode: "ONLINE",
  358. subjectIdList: form.subjectIdList,
  359. educationalTeacherId: form.educationalTeacherId,
  360. organId: -1,
  361. organIdList: form.organIds.join(",")
  362. },
  363. liveBroadcastRoom: {
  364. speakerId: form.teacher,
  365. clientType: "TEACHER",
  366. roomTitle: form.roomTitle,
  367. liveRemark: form.liveRemark,
  368. preTemplate: form.preTemplate,
  369. useScene: form.useScene,
  370. os: form.os,
  371. serviceProvider: form.serviceProvider,
  372. viewMode: form.viewMode,
  373. popularizeType: form.popularizeType,
  374. roomConfig: {
  375. ...form.roomConfig,
  376. subjectId: form.subjectIdList,
  377. groupType: "LIVE"
  378. }
  379. }
  380. };
  381. console.log(obj, "obj");
  382. createVip(obj).then(res => {
  383. if (res.code == 200) {
  384. this.$message.success("恭喜您创建成功");
  385. this.$store.dispatch("delVisitedViews", this.$route);
  386. this.$router.push({
  387. path: "/liveClassManager",
  388. query: {
  389. tabrouter: 2
  390. }
  391. });
  392. }
  393. });
  394. } catch (e) {
  395. console.log(e);
  396. }
  397. });
  398. },
  399. onReset() {
  400. // 重置
  401. this.form.timeTable = [];
  402. this.$refs.liveForm.resetFields();
  403. this.$nextTick(() => {
  404. let isError = document.getElementsByClassName("el-alert");
  405. isError[0].scrollIntoView({
  406. block: "center",
  407. behavior: "smooth"
  408. });
  409. });
  410. },
  411. // 点击排课
  412. async onTimeTable() {
  413. let count = 0;
  414. this.$refs.liveForm.validateField(
  415. ["signUpTimeList", "onlineClassesNum", "singleClassMinuteId"],
  416. valid => {
  417. count += 1;
  418. if (valid) {
  419. this.onScrollError();
  420. return;
  421. }
  422. if (count >= 3) {
  423. this.dialogFormVisible = true;
  424. }
  425. }
  426. );
  427. },
  428. onScrollError() {
  429. this.$nextTick(() => {
  430. let isError = document.getElementsByClassName("is-error");
  431. isError[0].scrollIntoView({
  432. block: "center",
  433. behavior: "smooth"
  434. });
  435. });
  436. },
  437. onSingleClassChange(val) {
  438. // 设置 - 课程时长切换时
  439. let onlinePrice = null;
  440. let offLinePrice = null;
  441. let minus = null;
  442. this.liveGroupList.forEach(item => {
  443. if (item.id === val) {
  444. onlinePrice = item.onlineClassesUnitPrice;
  445. offLinePrice = item.offlineClassesUnitPrice;
  446. minus = item.singleClassMinutes;
  447. }
  448. });
  449. this.form.onlineClassesUnitPrice = onlinePrice;
  450. this.form.offlineClassesUnitPrice = offLinePrice;
  451. this.form.singleClassMinutes = minus;
  452. this.form.timeTable = []; // 课表重置
  453. },
  454. onConfirm(val) {
  455. let tempVal = deepClone(val || []);
  456. tempVal.forEach(item => {
  457. item.teachingContent = "";
  458. item.teachingPoint = "";
  459. item.singleClassMinutes = this.form.singleClassMinutes;
  460. });
  461. this.form.timeTable = tempVal;
  462. console.log(this.form.timeTable, "time table");
  463. this.$forceUpdate();
  464. },
  465. async __init() {
  466. try {
  467. const findName = await sysTenantConfigAll({
  468. group: "LIVE_CLIENT"
  469. });
  470. if (findName.data && findName.data.length > 0) {
  471. findName.data.forEach(item => {
  472. if (item.paramName == "live_client") {
  473. this.serviceProvider = item.paranValue;
  474. this.form.os =
  475. this.serviceProvider == "tencentCloud" ? "client" : "pc";
  476. }
  477. });
  478. }
  479. // 获取 指导老师列表
  480. await getSubject({
  481. tenantId: 1
  482. }).then(res => {
  483. if (res.code == 200) {
  484. this.subjectList = [
  485. {
  486. id: -1,
  487. name: "乐理"
  488. },
  489. ...res.data
  490. ];
  491. }
  492. });
  493. // 获取乐团主管
  494. await getOrganRole().then(ruselt => {
  495. this.educationList = ruselt?.data?.EDUCATION;
  496. });
  497. // 获取课时数
  498. // 获取默认左边参数
  499. await vipGroupCategory({
  500. groupType: "live"
  501. }).then(res => {
  502. if (res.code == 200) {
  503. this.liveGroupList = res.data;
  504. }
  505. });
  506. } catch (e) {
  507. //
  508. console.log(e, "e info");
  509. }
  510. }
  511. },
  512. computed: {
  513. countOnlineClassesUnitPrice() {
  514. return this.form.onlineClassesNum * this.form.onlineClassesUnitPrice
  515. },
  516. countOfflineClassesUnitPrice() {
  517. return this.form.onlineClassesNum * this.form.offlineClassesUnitPrice
  518. },
  519. }
  520. };
  521. </script>
  522. <style lang="scss" scoped>
  523. .chioseWrap {
  524. display: flex;
  525. flex-direction: row;
  526. justify-content: flex-start;
  527. .chioseItem {
  528. border-radius: 4px;
  529. overflow: hidden;
  530. position: relative;
  531. margin-right: 10px;
  532. width: 188px;
  533. height: 188px;
  534. cursor: pointer;
  535. .dotWrap {
  536. width: 21px;
  537. height: 21px;
  538. background: url("../../assets/images/icon_checkbox_default.png") no-repeat center;
  539. background-size: contain;
  540. display: block;
  541. position: absolute;
  542. top: 10px;
  543. right: 12px;
  544. overflow: hidden;
  545. &.checked {
  546. background: url("../../assets/images/icon_checkbox.png") no-repeat center;
  547. background-size: contain;
  548. }
  549. }
  550. }
  551. }
  552. ::v-deep .el-select>.el-input {
  553. height: 36px !important;
  554. }
  555. ::v-deep .select-all {
  556. .select {
  557. .el-input__inner {
  558. height: 36px !important;
  559. min-height: 36px !important;
  560. }
  561. }
  562. .btn {
  563. height: 36px !important;
  564. min-height: 36px !important;
  565. }
  566. }
  567. </style>