EditLessonTable.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  1. <template>
  2. <div class="context">
  3. <div class="panel">
  4. <h5>{{ pageTitle }}</h5>
  5. </div>
  6. <div class="panel-body">
  7. <div class="panel_control">
  8. <el-row :gutter="20">
  9. <el-col :span="9">
  10. <em> <span style="color: red">*</span>课程表模板名称:</em>
  11. <el-input v-model="panel.name" placeholder="请输入课程表模板名称"></el-input>
  12. </el-col>
  13. <!-- 默认不通用-->
  14. <!-- todo-->
  15. <!-- <el-button class="seeTemp" @click.native="seeWeekTemp">预览模板</el-button>-->
  16. <el-button type="default" class="seeTemp" @click="$router.push('/lessonTable')">返回课程表模板</el-button>
  17. </el-row>
  18. </div>
  19. </div>
  20. <br>
  21. <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
  22. <el-tab-pane label="星期一" name="1"></el-tab-pane>
  23. <el-tab-pane label="星期二" name="2"></el-tab-pane>
  24. <el-tab-pane label="星期三" name="3"></el-tab-pane>
  25. <el-tab-pane label="星期四" name="4"></el-tab-pane>
  26. <el-tab-pane label="星期五" name="5"></el-tab-pane>
  27. <el-tab-pane label="星期六" name="6"></el-tab-pane>
  28. <el-tab-pane label="星期天" name="7"></el-tab-pane>
  29. </el-tabs>
  30. <div class="table">
  31. <el-table
  32. v-for="tab in tabs"
  33. :data="tab.tableData"
  34. v-if="tab.days == activeName"
  35. border
  36. is-horizontal-resize
  37. :default-sort="{prop: 'date', order: 'descending'}"
  38. element-loading-background="rgba(0, 0, 0, 0.8)"
  39. class=""
  40. @selection-change="handleSelectionChange"
  41. >
  42. >
  43. <el-table-column
  44. prop="timeScope"
  45. label="时间1"
  46. width="260px"
  47. align="center"
  48. >
  49. <template slot-scope="scope">
  50. <el-time-picker
  51. is-range
  52. v-model="scope.row.timeLong"
  53. range-separator="至"
  54. start-placeholder="开始时间"
  55. end-placeholder="结束时间"
  56. placeholder="选择时间范围"
  57. >
  58. </el-time-picker>
  59. </template>
  60. </el-table-column>
  61. <el-table-column
  62. prop="ClassId"
  63. label="课程"
  64. align="center"
  65. >
  66. <template slot-scope="scope">
  67. <el-select v-model="scope.row.ClassId" @change="getRowTop(scope.row)">
  68. <el-option
  69. v-for="item in panel.options"
  70. :key="item.value"
  71. :label="item.label"
  72. :value="item.value">
  73. </el-option>
  74. </el-select>
  75. </template>
  76. </el-table-column>
  77. <el-table-column
  78. prop="TopLimit"
  79. label="预约名额"
  80. align="center"
  81. >
  82. <template slot-scope="scope">
  83. <el-input-number v-model="scope.row.TopLimit" :min="1" :max="9999" label=""></el-input-number>
  84. </template>
  85. </el-table-column>
  86. <el-table-column
  87. prop="ConsumeHour"
  88. label="消耗课时"
  89. align="center"
  90. >
  91. <template slot-scope="scope">
  92. <el-input-number v-model="scope.row.ConsumeHour" :min="0" :max="9999"
  93. label=""></el-input-number>
  94. </template>
  95. </el-table-column>
  96. <el-table-column
  97. prop="Status"
  98. label="操作"
  99. width="100px"
  100. align="center"
  101. >
  102. <template slot-scope="scope">
  103. <el-button type="text" class="red" @click="delRow(scope)">删除</el-button>
  104. </template>
  105. </el-table-column>
  106. </el-table>
  107. <div class="rowBottom">
  108. <el-button type="default" @click="$router.push('/lessonTable')">返回课程表模板</el-button>
  109. <!-- ID为0是新建,不为0是修改-->
  110. <el-button type="primary" class="pull-right" @click="confirmLessonTable"
  111. v-if="this.$route.query.id == 0" :disabled="serachBtnStatus">提交
  112. </el-button>
  113. <el-button type="primary" class="pull-right" @click="confirmEditLessonTable"
  114. v-if="this.$route.query.id != 0" :disabled="serachBtnStatus">提交
  115. </el-button>
  116. <el-button type="primary" class="pull-right" @click="addRow">新增课程</el-button>
  117. </div>
  118. <div>
  119. <br>
  120. <em class="red wrning">
  121. *所有操作提交后生效
  122. </em>
  123. </div>
  124. </div>
  125. <br>
  126. <el-dialog title="增删课程会员" :visible.sync="dialogVisible">
  127. <div class="dialogTitle">
  128. <span>基础功能</span>
  129. </div>
  130. <div>
  131. <el-transfer filterable v-model="dialogValue" :data="dialogdata"></el-transfer>
  132. </div>
  133. <div class="dialogFooter">
  134. <el-button type="primary" size="small">确定</el-button>
  135. <el-button @click="dialogVisible = false" size="small">取消</el-button>
  136. </div>
  137. </el-dialog>
  138. <el-dialog title="预览" :visible.sync="previewShow" width="1200px">
  139. <preview :preview-date="previewDate" :big-title="BigTitle" :small-title="smallTitle"></preview>
  140. <div class="dialogFooter">
  141. <el-button @click="previewShow = false" size="small">关闭</el-button>
  142. </div>
  143. </el-dialog>
  144. </div>
  145. </template>
  146. <script>
  147. import Global from '../../Global.js'
  148. import preview from '@/components/preview.vue'
  149. import {
  150. SttPlanBasicAdd,
  151. SttPlanDetailListQuery,
  152. SttPlanDetailBatchSave,
  153. SttPlanBasicEdit,
  154. ClassDetailOne,
  155. testTable,
  156. testTableLong,
  157. testSelect, ClassListQuery, SttPlanPreview
  158. } from "../../api/getApiRes";
  159. let qs = require('qs');
  160. export default {
  161. data() {
  162. return {
  163. previewShow: false,
  164. previewDate: {},
  165. BigTitle: '',
  166. smallTitle: '',
  167. pageTitle: '新增课程表模板',
  168. dialogVisible: false,
  169. dialogdata: [],
  170. dialogValue: [],
  171. temId: '',
  172. activeName: '1',
  173. tableData: [],
  174. // panel 配置项目
  175. panel: {
  176. name: '',
  177. usercode: '',
  178. username: '',
  179. compname: '',
  180. keyword: '',
  181. USERCODE: '',
  182. taskstatus: 99,
  183. draw: 1,
  184. start: 0,
  185. recordsTotal: 0,
  186. tableData: [],
  187. allTableData: [],
  188. limit: '10',
  189. multipleSort: false,
  190. loading: false,
  191. fileList: [],
  192. multipleSelection: [],
  193. detectedmac: '',
  194. options: [],
  195. time1: globalBt(),
  196. },
  197. multipleSelection: [],
  198. pageination: {
  199. pageItem: 10,
  200. pageoptions: pageOptions(),
  201. total: 100,
  202. pageIndex: 1,
  203. },
  204. testRow: {
  205. timeLong: [new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 23, 59)],
  206. BeginStr: '08:30',
  207. EndStr: '23:59',
  208. ClassId: '',
  209. TopLimit: 1,
  210. ConsumeHour: 0,
  211. },
  212. tabs: [
  213. {
  214. tableData: [], days: '1'
  215. },
  216. {
  217. tableData: [], days: '2'
  218. },
  219. {
  220. tableData: [], days: '3'
  221. },
  222. {
  223. tableData: [], days: '4'
  224. },
  225. {
  226. tableData: [], days: '5'
  227. },
  228. {
  229. tableData: [], days: '6'
  230. },
  231. {
  232. tableData: [], days: '7'
  233. },
  234. ],
  235. DataAssemblyRs: [],
  236. serachBtnStatus: false,
  237. }
  238. },
  239. mounted() {
  240. // 加载课程选项
  241. this.panelSelect();
  242. if (this.$route.query.id == 0) {
  243. this.pageTitle = '新增课程表模板'
  244. // 深拷贝赋初始值
  245. this.deepValue();
  246. this.panel.name = '';
  247. } else {
  248. this.pageTitle = '编辑课程表模板'
  249. // 读取赋值
  250. this.getTableQuery();
  251. }
  252. },
  253. methods: {
  254. // 加载选项
  255. panelSelect() {
  256. let that = this;
  257. let param = {
  258. token: localStorage.token,
  259. vipType: '',
  260. start: 1,
  261. expDay: 0,
  262. tableMax: 9999,
  263. };
  264. let postdata = qs.stringify(param);
  265. ClassListQuery(postdata).then(res => {
  266. let json = res;
  267. if (json.Code == 0) {
  268. if (json.Rs == null) return false
  269. that.panel.options = turnClassResToOption(json.Rs)
  270. } else {
  271. that.$message.error(json.Memo + ' 错误码:' + json.Code);
  272. }
  273. })
  274. },
  275. // 选择课程后,获取当前课程的建议上课人数和课时消耗
  276. getRowTop(row) {
  277. let that = this;
  278. console.log(row);
  279. let param = {
  280. token: localStorage.token,
  281. classId: row.ClassId,
  282. };
  283. let postdata = qs.stringify(param);
  284. ClassDetailOne(postdata).then(res => {
  285. let json = res;
  286. if (json.Code == 0) {
  287. row.TopLimit = json.Rs.TopLimit;
  288. row.ConsumeHour = json.Rs.ConsumeHour;
  289. } else {
  290. that.$message.error(json.Memo + ' 错误码:' + json.Code);
  291. }
  292. })
  293. },
  294. confirmEditLessonTable() {
  295. let that = this;
  296. // 按钮倒计时
  297. that.serachBtnStatus = true;
  298. let totalTime = 2;
  299. let clock = window.setInterval(() => {
  300. totalTime--;
  301. if (totalTime < 0) {
  302. totalTime = 2;
  303. that.serachBtnStatus = false;
  304. }
  305. }, 1000);
  306. if (!this.panel.name) {
  307. this.$message.error('模板名称不能为空');
  308. return false
  309. }
  310. if (this.panel.name.length < 3) {
  311. this.$message.error('模板名称不能小于3个字符');
  312. return false
  313. }
  314. if (this.panel.name.length > 20) {
  315. this.$message.error('模板名称不能大于20个字符');
  316. return false
  317. }
  318. if (!this.checkData()) {
  319. return false
  320. }
  321. let param = {
  322. token: localStorage.token,
  323. planId: this.$route.query.id,
  324. planName: this.panel.name
  325. };
  326. let postdata = qs.stringify(param);
  327. SttPlanBasicEdit(postdata).then(res => {
  328. let json = res;
  329. if (json.Code == 0) {
  330. let id = that.$route.query.id;
  331. // 提交课程内容
  332. that.EditLessonTable(id);
  333. } else {
  334. that.$message.error(json.Memo + ' 错误码:' + json.Code);
  335. }
  336. })
  337. },
  338. // 删除
  339. delRow(scope) {
  340. let delIndex = parseInt(scope.$index)
  341. let curIndex = parseInt(this.activeName) - 1;
  342. this.tabs[curIndex].tableData.splice(delIndex, 1)
  343. },
  344. // 提交课程模板
  345. confirmLessonTable() {
  346. if (!this.panel.name) {
  347. this.$message.error('模板名称不能为空');
  348. return false
  349. }
  350. if (this.panel.name.length < 3) {
  351. this.$message.error('模板名称不能小于3个字符');
  352. return false
  353. }
  354. if (this.panel.name.length > 20) {
  355. this.$message.error('模板名称不能大于20个字符');
  356. return false
  357. }
  358. if (!this.checkData()) {
  359. return false
  360. }
  361. let that = this;
  362. let param = {
  363. token: localStorage.token,
  364. planName: this.panel.name,
  365. };
  366. let postdata = qs.stringify(param);
  367. SttPlanBasicAdd(postdata).then(res => {
  368. let json = res;
  369. if (json.Code == 0) {
  370. that.panel.tabId = json.Id;
  371. // 提交课程内容
  372. that.EditLessonTable(json.Id);
  373. } else {
  374. that.$message.error(json.Memo + ' 错误码:' + json.Code);
  375. }
  376. })
  377. },
  378. // 数据组装
  379. DataAssembly() {
  380. let thisRow = {};
  381. for (let i = 0; i < this.tabs.length; i++) {
  382. for (let j = 0; j < this.tabs[i].tableData.length; j++) {
  383. thisRow = this.tabs[i].tableData[j];
  384. thisRow.lessonIndex = parseInt(j);
  385. if (planId) {
  386. thisRow.PlanId = parseInt(planId);
  387. } else {
  388. thisRow.PlanId = parseInt(this.$route.query.id);
  389. }
  390. thisRow.WeekDay = parseInt(i + 1);
  391. thisRow.BeginStr = getHoursAndMin(thisRow.timeLong[0]);
  392. thisRow.EndStr = getHoursAndMin(thisRow.timeLong[1]);
  393. this.$delete(thisRow, 'Base');
  394. this.$delete(thisRow, 'SpdId');
  395. this.DataAssemblyRs.push(thisRow)
  396. }
  397. }
  398. },
  399. // 修改课程模板
  400. EditLessonTable(planId) {
  401. let that = this;
  402. // 提交数据
  403. let planRs = [];
  404. let thisRow = {};
  405. for (let i = 0; i < this.tabs.length; i++) {
  406. for (let j = 0; j < this.tabs[i].tableData.length; j++) {
  407. thisRow = this.tabs[i].tableData[j];
  408. thisRow.lessonIndex = parseInt(j);
  409. if (planId) {
  410. thisRow.PlanId = parseInt(planId);
  411. } else {
  412. thisRow.PlanId = parseInt(this.$route.query.id);
  413. }
  414. thisRow.WeekDay = parseInt(i + 1);
  415. thisRow.BeginStr = getHoursAndMin(thisRow.timeLong[0]);
  416. thisRow.EndStr = getHoursAndMin(thisRow.timeLong[1]);
  417. this.$delete(thisRow, 'Base');
  418. this.$delete(thisRow, 'SpdId');
  419. planRs.push(thisRow)
  420. }
  421. }
  422. let res = JSON.stringify(planRs);
  423. // 如果传入0就用url里的,如果非0就用传入的
  424. // let uploadPlanId = planId == 0 ? this.$route.query.id : planId;
  425. let param = {
  426. token: localStorage.token,
  427. // planId: this.$route.query.id,
  428. planId: planId,
  429. planRs: res,
  430. };
  431. let postdata = qs.stringify(param);
  432. // 得等数组装完才能校验
  433. SttPlanDetailBatchSave(postdata).then(res => {
  434. let json = res;
  435. if (json.Code == 0) {
  436. that.$message({
  437. showClose: true,
  438. message: '课程模板已上传成功!',
  439. type: 'success'
  440. });
  441. this.$router.push({
  442. path: '/lessonTable'
  443. });
  444. // 提交后清掉内存里的课表
  445. this.clearTableRAM();
  446. // this.getTableQuery();
  447. } else {
  448. // this.$router.push({
  449. // path: '/lessonTable'
  450. // });
  451. // 提交后清掉内存里的课表
  452. // this.clearTableRAM();
  453. that.$message.error(json.Memo + ' 错误码:' + json.Code);
  454. }
  455. })
  456. },
  457. clearTableRAM() {
  458. this.tabs = [
  459. {
  460. tableData: [], days: '1'
  461. },
  462. {
  463. tableData: [], days: '2'
  464. },
  465. {
  466. tableData: [], days: '3'
  467. },
  468. {
  469. tableData: [], days: '4'
  470. },
  471. {
  472. tableData: [], days: '5'
  473. },
  474. {
  475. tableData: [], days: '6'
  476. },
  477. {
  478. tableData: [], days: '7'
  479. },
  480. ];
  481. },
  482. // 检查数据
  483. checkData() {
  484. let res = true;
  485. for (let i = 0; i < this.tabs.length; i++) {
  486. for (let j = 0; j < this.tabs[i].tableData.length; j++) {
  487. if (!this.tabs[i].tableData[j].ClassId) {
  488. let days = numberToWeekdays(i + 1);
  489. let lessonIndex = j + 1;
  490. this.$message.error(days + '第' + lessonIndex + '节课有课程未选择,请选择后再提交');
  491. res = false;
  492. break;
  493. }
  494. }
  495. }
  496. return res
  497. },
  498. checkData2() {
  499. // 目前报错规则:StbId WeekDay ClassId 不能为空为 0 BeginStr EndStr 必须是5位数字符串
  500. let that = this;
  501. this.DataAssembly();
  502. let tableDate = this.DataAssemblyRs;
  503. console.log(123);
  504. tableDate.map(function (item) {
  505. if (!item.ClassId) {
  506. let days = numberToWeekdays(item.WeekDay);
  507. let lessonIndex = parseInt(item.lessonIndex + 1);
  508. that.$message.error(days + '第' + lessonIndex + '节课有课程未选择,请选择后再提交');
  509. return false
  510. } else {
  511. return true
  512. }
  513. })
  514. },
  515. // 新增一行
  516. addRow() {
  517. // 读取当前周几
  518. let index = parseInt(this.activeName) - 1;
  519. let rows = this.testRow;
  520. let res = this.deepClone(rows);
  521. this.tabs[index].tableData.push(res);
  522. },
  523. // 深拷贝赋初始值
  524. deepValue() {
  525. let that = this;
  526. let valus = [
  527. this.testRow
  528. // {BeginStr: '08:30', EndStr: '09:30', ClassId: 0, TopLimit: 0, ConsumeHour: 0},
  529. ];
  530. this.tabs.map(function (item) {
  531. let res = that.deepClone(valus);
  532. item.tableData = res;
  533. })
  534. },
  535. deepClone(obj) {
  536. let _obj = JSON.stringify(obj),
  537. objClone = JSON.parse(_obj);
  538. return objClone
  539. },
  540. handleClick() {
  541. },
  542. // 增删会员课程
  543. lessonStudenChange() {
  544. this.dialogVisible = true
  545. },
  546. handleSelectionChange(val) {
  547. this.multipleSelection = val;
  548. },
  549. // 页面数据查询
  550. getTableQuery() {
  551. let that = this;
  552. that.loading = true;
  553. let param = {
  554. token: localStorage.token,
  555. planId: this.$route.query.id,//
  556. };
  557. this.panel.name = this.$route.query.name;
  558. let postdata = qs.stringify(param);
  559. SttPlanDetailListQuery(postdata).then(res => {
  560. let json = res;
  561. let Rs = json.Rs
  562. let bt = '';
  563. let et = '';
  564. if (json.Code == 0) {
  565. that.loading = false;
  566. // 清掉上次的记录
  567. for (let i = 0; i < that.tabs.length; i++) {
  568. that.tabs[i].tableData = []
  569. }
  570. if (Rs) {
  571. // 遍历分配
  572. Rs.map(function (item) {
  573. for (let i = 0; i < 7; i++) {
  574. if (item.WeekDay == i + 1) {
  575. bt = new Date(2016, 9, 10, item.BeginStr.substr(0, 2), item.BeginStr.substr(3, 2));
  576. et = new Date(2016, 9, 10, item.EndStr.substr(0, 2), item.EndStr.substr(3, 2));
  577. item.timeLong = [bt, et];
  578. that.tabs[i].tableData.push(item);
  579. }
  580. }
  581. })
  582. } else {
  583. that.allTableData = [];
  584. that.recordsTotal = 0;
  585. }
  586. } else {
  587. that.$message.error(json.Memo + ' 错误码:' + json.Code);
  588. }
  589. })
  590. },
  591. seeWeekTemp() {
  592. // 只看保存过的
  593. },
  594. // 去重
  595. unique(arr) {
  596. const res = new Map();
  597. return arr.filter((arr) => !res.has(arr.EndStr) && res.set(arr.EndStr, 1))
  598. }
  599. },
  600. watch: {
  601. $route(to) {
  602. if (to.name == 'EditLessonTable') {
  603. this.temId = this.$route.query.id;
  604. this.panelSelect();
  605. if (parseInt(this.temId) == 0) {
  606. this.pageTitle = '新增课程表模板';
  607. this.deepValue();
  608. this.panel.name = '';
  609. } else {
  610. this.pageTitle = '编辑课程表模板';
  611. this.getTableQuery();
  612. console.log(123);
  613. }
  614. }
  615. },
  616. },
  617. components: {
  618. preview
  619. }
  620. }
  621. </script>
  622. <style scoped>
  623. @import "../../assets/css/panel.css";
  624. em {
  625. font-style: normal;
  626. }
  627. .context {
  628. /* height: 770px; */
  629. overflow-y: scroll;
  630. display: block;
  631. margin: 0 auto;
  632. background-color: #fff !important;
  633. padding: 30px;
  634. }
  635. .panel-body {
  636. padding: 20px;
  637. background: #F0F2F5;
  638. }
  639. .change {
  640. width: 100%;
  641. overflow: hidden;
  642. display: block;
  643. margin: 0 auto;
  644. padding-top: 10px;
  645. padding-bottom: 10px;
  646. }
  647. .change button {
  648. float: left;
  649. }
  650. .change button.pull-right {
  651. float: right;
  652. }
  653. .dialogTitle {
  654. width: 100%;
  655. overflow: hidden;
  656. display: block;
  657. margin: 0 auto;
  658. color: #000000;
  659. font-size: 18px;
  660. text-align: center;
  661. }
  662. .dialogTitle span {
  663. width: 169px;
  664. height: 40px;
  665. line-height: 40px;
  666. text-align: center;
  667. color: #fff;
  668. background: #3799FF;
  669. border-radius: 250px;
  670. font-size: 18px;
  671. overflow: hidden;
  672. display: block;
  673. margin: 0 auto;
  674. margin-bottom: 30px;
  675. }
  676. .dialogTitle em {
  677. float: none;
  678. font-style: normal;
  679. color: #3799FF;
  680. margin: 0;
  681. }
  682. /deep/ .el-transfer-panel__item .el-checkbox__input {
  683. left: 40px;
  684. }
  685. .dialogFooter {
  686. width: 90%;
  687. overflow: hidden;
  688. display: block;
  689. margin: 0 auto;
  690. margin-top: 10px;
  691. }
  692. .dialogFooter button {
  693. float: right;
  694. margin-left: 10px;
  695. }
  696. /deep/ .panel_control .el-input {
  697. width: 200px;
  698. float: left;
  699. }
  700. .panel_control em {
  701. float: left;
  702. font-size: 14px;
  703. color: #545454;
  704. line-height: 45px;
  705. margin-right: 10px;
  706. }
  707. .seeTemp {
  708. /*position: relative;*/
  709. float: right;
  710. bottom: 0px;
  711. z-index: 22;
  712. margin-left: 10px;
  713. }
  714. .table {
  715. position: relative;
  716. /*top: -50px;*/
  717. top: 0px;
  718. }
  719. .el-range-editor.el-input__inner {
  720. width: 220px;
  721. padding: 3px 6px;
  722. }
  723. .rowBottom {
  724. width: 100%;
  725. overflow: hidden;
  726. display: block;
  727. margin: 0 auto;
  728. margin-top: 10px;
  729. }
  730. .rowBottom button {
  731. float: left;
  732. margin-right: 10px;
  733. }
  734. .wrning {
  735. float: right;
  736. font-size: 12px;
  737. }
  738. .rowBottom button.pull-right {
  739. float: right;
  740. }
  741. </style>