25c98c0e5d33ab2386803580babb45f4a3dfa730.svn-base 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. <template>
  2. <a-modal
  3. title="cron表达式"
  4. :width="modalWidth"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @ok="change"
  8. @cancel="close"
  9. cancelText="关闭">
  10. <div class="card-container">
  11. <a-tabs type="card">
  12. <a-tab-pane key="1" type="card">
  13. <span slot="tab"><a-icon type="schedule" /> 秒</span>
  14. <a-radio-group v-model="result.second.cronEvery">
  15. <a-row>
  16. <a-radio value="1">每一秒钟</a-radio>
  17. </a-row>
  18. <a-row>
  19. <a-radio value="2">每隔
  20. <a-input size="small" v-model="result.second.incrementIncrement" :min="1" :max="60"></a-input>
  21. 秒执行 从
  22. <a-input size="small" v-model="result.second.incrementStart" :min="0" :max="59"></a-input>
  23. 秒开始
  24. </a-radio>
  25. </a-row>
  26. <a-row>
  27. <a-radio value="3">具体秒数(可多选)</a-radio>
  28. <a-select style="width:354px;" size="small" mode="multiple" v-model="result.second.specificSpecific">
  29. <a-select-option v-for="(val,index) in 60" :key="index" :value="index">{{ index }}</a-select-option>
  30. </a-select>
  31. </a-row>
  32. <a-row>
  33. <a-radio value="4">周期从
  34. <a-input size="small" v-model="result.second.rangeStart" :min="1" :max="60"></a-input>
  35. <a-input size="small" v-model="result.second.rangeEnd" :min="0" :max="59"></a-input>
  36. </a-radio>
  37. </a-row>
  38. </a-radio-group>
  39. </a-tab-pane>
  40. <a-tab-pane key="2">
  41. <span slot="tab"><a-icon type="schedule" />分</span>
  42. <div class="tabBody">
  43. <a-radio-group v-model="result.minute.cronEvery">
  44. <a-row>
  45. <a-radio value="1">每一分钟</a-radio>
  46. </a-row>
  47. <a-row>
  48. <a-radio value="2">每隔
  49. <a-input size="small" v-model="result.minute.incrementIncrement" :min="1" :max="60"></a-input>
  50. 分执行 从
  51. <a-input size="small" v-model="result.minute.incrementStart" :min="0" :max="59"></a-input>
  52. 分开始
  53. </a-radio>
  54. </a-row>
  55. <a-row>
  56. <a-radio value="3">具体分钟数(可多选)</a-radio>
  57. <a-select style="width:340px;" size="small" mode="multiple" v-model="result.minute.specificSpecific">
  58. <a-select-option v-for="(val,index) in Array(60)" :key="index" :value="index"> {{ index }}</a-select-option>
  59. </a-select>
  60. </a-row>
  61. <a-row>
  62. <a-radio value="4">周期从
  63. <a-input size="small" v-model="result.minute.rangeStart" :min="1" :max="60"></a-input>
  64. <a-input size="small" v-model="result.minute.rangeEnd" :min="0" :max="59"></a-input>
  65. </a-radio>
  66. </a-row>
  67. </a-radio-group>
  68. </div>
  69. </a-tab-pane>
  70. <a-tab-pane key="3">
  71. <span slot="tab"><a-icon type="schedule" /> 时</span>
  72. <div class="tabBody">
  73. <a-radio-group v-model="result.hour.cronEvery">
  74. <a-row>
  75. <a-radio value="1">每一小时</a-radio>
  76. </a-row>
  77. <a-row>
  78. <a-radio value="2">每隔
  79. <a-input size="small" v-model="result.hour.incrementIncrement" :min="0" :max="23"></a-input>
  80. 小时执行 从
  81. <a-input size="small" v-model="result.hour.incrementStart" :min="0" :max="23"></a-input>
  82. 小时开始
  83. </a-radio>
  84. </a-row>
  85. <a-row>
  86. <a-radio class="long" value="3">具体小时数(可多选)</a-radio>
  87. <a-select style="width:340px;" size="small" mode="multiple" v-model="result.hour.specificSpecific">
  88. <a-select-option v-for="(val,index) in Array(24)" :key="index" >{{ index }}</a-select-option>
  89. </a-select>
  90. </a-row>
  91. <a-row>
  92. <a-radio value="4">周期从
  93. <a-input size="small" v-model="result.hour.rangeStart" :min="0" :max="23"></a-input>
  94. <a-input size="small" v-model="result.hour.rangeEnd" :min="0" :max="23"></a-input>
  95. 小时
  96. </a-radio>
  97. </a-row>
  98. </a-radio-group>
  99. </div>
  100. </a-tab-pane>
  101. <a-tab-pane key="4">
  102. <span slot="tab"><a-icon type="schedule" /> 天</span>
  103. <div class="tabBody">
  104. <a-radio-group v-model="result.day.cronEvery">
  105. <a-row>
  106. <a-radio value="1">每一天</a-radio>
  107. </a-row>
  108. <a-row>
  109. <a-radio value="2">每隔
  110. <a-input size="small" v-model="result.week.incrementIncrement" :min="1" :max="7"></a-input>
  111. 周执行 从
  112. <a-select size="small" v-model="result.week.incrementStart">
  113. <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
  114. </a-select>
  115. 开始
  116. </a-radio>
  117. </a-row>
  118. <a-row>
  119. <a-radio value="3">每隔
  120. <a-input size="small" v-model="result.day.incrementIncrement" :min="1" :max="31"></a-input>
  121. 天执行 从
  122. <a-input size="small" v-model="result.day.incrementStart" :min="1" :max="31"></a-input>
  123. 天开始
  124. </a-radio>
  125. </a-row>
  126. <a-row>
  127. <a-radio class="long" value="4">具体星期几(可多选)</a-radio>
  128. <a-select style="width:340px;" size="small" mode="multiple" v-model="result.week.specificSpecific">
  129. <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
  130. </a-select>
  131. </a-row>
  132. <a-row>
  133. <a-radio class="long" value="5">具体天数(可多选)</a-radio>
  134. <a-select style="width:354px;" size="small" mode="multiple" v-model="result.day.specificSpecific">
  135. <a-select-option v-for="(val,index) in Array(31)" :key="index" :value="index">{{ index+1 }}</a-select-option>
  136. </a-select>
  137. </a-row>
  138. <a-row>
  139. <a-radio value="6">在这个月的最后一天</a-radio>
  140. </a-row>
  141. <a-row>
  142. <a-radio value="7">在这个月的最后一个工作日</a-radio>
  143. </a-row>
  144. <a-row>
  145. <a-radio value="8">在这个月的最后一个
  146. <a-select size="small" v-model="result.day.cronLastSpecificDomDay">
  147. <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
  148. </a-select>
  149. </a-radio>
  150. </a-row>
  151. <a-row>
  152. <a-radio value="9">
  153. <a-input size="small" v-model="result.day.cronDaysBeforeEomMinus" :min="1" :max="31"></a-input>
  154. 在本月底前
  155. </a-radio>
  156. </a-row>
  157. <a-row>
  158. <a-radio value="10">最近的工作日(周一至周五)至本月
  159. <a-input size="small" v-model="result.day.cronDaysNearestWeekday" :min="1" :max="31"></a-input>
  160. </a-radio>
  161. </a-row>
  162. <a-row>
  163. <a-radio value="11">在这个月的第
  164. <a-input size="small" v-model="result.week.cronNthDayNth" :min="1" :max="5"></a-input>
  165. <a-select size="small" v-model="result.week.cronNthDayDay">
  166. <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
  167. </a-select>
  168. </a-radio>
  169. </a-row>
  170. </a-radio-group>
  171. </div>
  172. </a-tab-pane>
  173. <a-tab-pane key="5">
  174. <span slot="tab"><a-icon type="schedule" /> 月</span>
  175. <div class="tabBody">
  176. <a-radio-group v-model="result.month.cronEvery">
  177. <a-row>
  178. <a-radio value="1">每一月</a-radio>
  179. </a-row>
  180. <a-row>
  181. <a-radio value="2">每隔
  182. <a-input size="small" v-model="result.month.incrementIncrement" :min="0" :max="12"></a-input>
  183. 月执行 从
  184. <a-input size="small" v-model="result.month.incrementStart" :min="0" :max="12"></a-input>
  185. 月开始
  186. </a-radio>
  187. </a-row>
  188. <a-row>
  189. <a-radio class="long" value="3">具体月数(可多选)</a-radio>
  190. <a-select style="width:354px;" size="small" filterable mode="multiple" v-model="result.month.specificSpecific">
  191. <a-select-option v-for="(val,index) in Array(12)" :key="index" :value="index">{{ index+1 }}</a-select-option>
  192. </a-select>
  193. </a-row>
  194. <a-row>
  195. <a-radio value="4">从
  196. <a-input size="small" v-model="result.month.rangeStart" :min="1" :max="12"></a-input>
  197. <a-input size="small" v-model="result.month.rangeEnd" :min="1" :max="12"></a-input>
  198. 月之间的每个月
  199. </a-radio>
  200. </a-row>
  201. </a-radio-group>
  202. </div>
  203. </a-tab-pane>
  204. <a-tab-pane key="6">
  205. <span slot="tab"><a-icon type="schedule" /> 年</span>
  206. <div class="tabBody">
  207. <a-radio-group v-model="result.year.cronEvery">
  208. <a-row>
  209. <a-radio value="1">每一年</a-radio>
  210. </a-row>
  211. <a-row>
  212. <a-radio value="2">每隔
  213. <a-input size="small" v-model="result.year.incrementIncrement" :min="1" :max="99"></a-input>
  214. 年执行 从
  215. <a-input size="small" v-model="result.year.incrementStart" :min="2019" :max="2119"></a-input>
  216. 年开始
  217. </a-radio>
  218. </a-row>
  219. <a-row>
  220. <a-radio class="long" value="3">具体年份(可多选)</a-radio>
  221. <a-select style="width:354px;" size="small" filterable mode="multiple" v-model="result.year.specificSpecific">
  222. <a-select-option v-for="(val,index) in Array(100)" :key="index" :value="2019+index">{{ 2019+index }}</a-select-option>
  223. </a-select>
  224. </a-row>
  225. <a-row>
  226. <a-radio value="4">从
  227. <a-input size="small" v-model="result.year.rangeStart" :min="2019" :max="2119"></a-input>
  228. <a-input size="small" v-model="result.year.rangeEnd" :min="2019" :max="2119"></a-input>
  229. 年之间的每一年
  230. </a-radio>
  231. </a-row>
  232. </a-radio-group>
  233. </div>
  234. </a-tab-pane>
  235. </a-tabs>
  236. <div class="bottom">
  237. <span class="value">{{this.cron.label }}</span>
  238. </div>
  239. </div>
  240. </a-modal>
  241. </template>
  242. <script>
  243. import pick from 'lodash.pick'
  244. export default {
  245. name:'VueCron',
  246. props:['data','i18n'],
  247. data(){
  248. return {
  249. visible: false,
  250. confirmLoading:false,
  251. size:'large',
  252. weekDays:['天','一','二','三','四','五','六'].map(val=>'星期'+val),
  253. result: {
  254. second:{
  255. cronEvery:'',
  256. incrementStart:3,
  257. incrementIncrement:5,
  258. rangeStart:1,
  259. rangeEnd:0,
  260. specificSpecific:[],
  261. },
  262. minute:{
  263. cronEvery:'',
  264. incrementStart:3,
  265. incrementIncrement:5,
  266. rangeStart:1,
  267. rangeEnd:'0',
  268. specificSpecific:[],
  269. },
  270. hour:{
  271. cronEvery:'',
  272. incrementStart:3,
  273. incrementIncrement:5,
  274. rangeStart:'0',
  275. rangeEnd:'0',
  276. specificSpecific:[],
  277. },
  278. day:{
  279. cronEvery:'',
  280. incrementStart:1,
  281. incrementIncrement:'1',
  282. rangeStart:'',
  283. rangeEnd:'',
  284. specificSpecific:[],
  285. cronLastSpecificDomDay:1,
  286. cronDaysBeforeEomMinus:'',
  287. cronDaysNearestWeekday:'',
  288. },
  289. week:{
  290. cronEvery:'',
  291. incrementStart:1,
  292. incrementIncrement:'1',
  293. specificSpecific:[],
  294. cronNthDayDay:1,
  295. cronNthDayNth:'1',
  296. },
  297. month:{
  298. cronEvery:'',
  299. incrementStart:3,
  300. incrementIncrement:5,
  301. rangeStart:1,
  302. rangeEnd:1,
  303. specificSpecific:[],
  304. },
  305. year:{
  306. cronEvery:'',
  307. incrementStart:2017,
  308. incrementIncrement:1,
  309. rangeStart:2019,
  310. rangeEnd: 2019,
  311. specificSpecific:[],
  312. },
  313. label:''
  314. },
  315. output:{
  316. second:{
  317. cronEvery:'',
  318. incrementStart:'',
  319. incrementIncrement:'',
  320. rangeStart:'',
  321. rangeEnd:'',
  322. specificSpecific:[],
  323. },
  324. minute:{
  325. cronEvery:'',
  326. incrementStart:'',
  327. incrementIncrement:'',
  328. rangeStart:'',
  329. rangeEnd:'',
  330. specificSpecific:[],
  331. },
  332. hour:{
  333. cronEvery:'',
  334. incrementStart:'',
  335. incrementIncrement:'',
  336. rangeStart:'',
  337. rangeEnd:'',
  338. specificSpecific:[],
  339. },
  340. day:{
  341. cronEvery:'',
  342. incrementStart:'',
  343. incrementIncrement:'',
  344. rangeStart:'',
  345. rangeEnd:'',
  346. specificSpecific:[],
  347. cronLastSpecificDomDay:'',
  348. cronDaysBeforeEomMinus:'',
  349. cronDaysNearestWeekday:'',
  350. },
  351. week:{
  352. cronEvery:'',
  353. incrementStart:'',
  354. incrementIncrement:'',
  355. specificSpecific:[],
  356. cronNthDayDay:'',
  357. cronNthDayNth:'',
  358. },
  359. month:{
  360. cronEvery:'',
  361. incrementStart:'',
  362. incrementIncrement:'',
  363. rangeStart:'',
  364. rangeEnd:'',
  365. specificSpecific:[],
  366. },
  367. year:{
  368. cronEvery:'',
  369. incrementStart:'',
  370. incrementIncrement:'',
  371. rangeStart:'',
  372. rangeEnd:'',
  373. specificSpecific:[],
  374. }
  375. }
  376. }
  377. },
  378. computed: {
  379. modalWidth(){
  380. return 608;
  381. },
  382. text(){
  383. return Language['cn']
  384. },
  385. secondsText() {
  386. let seconds = '';
  387. let cronEvery=this.result.second.cronEvery;
  388. switch (cronEvery.toString()){
  389. case '1':
  390. seconds = '*';
  391. break;
  392. case '2':
  393. seconds = this.result.second.incrementStart+'/'+this.result.second.incrementIncrement;
  394. break;
  395. case '3':
  396. this.result.second.specificSpecific.map(val=> {seconds += val+','});
  397. seconds = seconds.slice(0, -1);
  398. break;
  399. case '4':
  400. seconds = this.result.second.rangeStart+'-'+this.result.second.rangeEnd;
  401. break;
  402. }
  403. return seconds;
  404. },
  405. minutesText() {
  406. let minutes = '';
  407. let cronEvery=this.result.minute.cronEvery;
  408. switch (cronEvery.toString()){
  409. case '1':
  410. minutes = '*';
  411. break;
  412. case '2':
  413. minutes = this.result.minute.incrementStart+'/'+this.result.minute.incrementIncrement;
  414. break;
  415. case '3':
  416. this.result.minute.specificSpecific.map(val=> {
  417. minutes += val+','
  418. });
  419. minutes = minutes.slice(0, -1);
  420. break;
  421. case '4':
  422. minutes = this.result.minute.rangeStart+'-'+this.result.minute.rangeEnd;
  423. break;
  424. }
  425. return minutes;
  426. },
  427. hoursText() {
  428. let hours = '';
  429. let cronEvery=this.result.hour.cronEvery;
  430. switch (cronEvery.toString()){
  431. case '1':
  432. hours = '*';
  433. break;
  434. case '2':
  435. hours = this.result.hour.incrementStart+'/'+this.result.hour.incrementIncrement;
  436. break;
  437. case '3':
  438. this.result.hour.specificSpecific.map(val=> {
  439. hours += val+','
  440. });
  441. hours = hours.slice(0, -1);
  442. break;
  443. case '4':
  444. hours = this.result.hour.rangeStart+'-'+this.result.hour.rangeEnd;
  445. break;
  446. }
  447. return hours;
  448. },
  449. daysText() {
  450. let days='';
  451. let cronEvery=this.result.day.cronEvery;
  452. switch (cronEvery.toString()){
  453. case '1':
  454. break;
  455. case '2':
  456. case '4':
  457. case '11':
  458. days = '?';
  459. break;
  460. case '3':
  461. days = this.result.day.incrementStart+'/'+this.result.day.incrementIncrement;
  462. break;
  463. case '5':
  464. this.result.day.specificSpecific.map(val=> {
  465. days += val+','
  466. });
  467. days = days.slice(0, -1);
  468. break;
  469. case '6':
  470. days = "L";
  471. break;
  472. case '7':
  473. days = "LW";
  474. break;
  475. case '8':
  476. days = this.result.day.cronLastSpecificDomDay + 'L';
  477. break;
  478. case '9':
  479. days = 'L-' + this.result.day.cronDaysBeforeEomMinus;
  480. break;
  481. case '10':
  482. days = this.result.day.cronDaysNearestWeekday+"W";
  483. break
  484. }
  485. return days;
  486. },
  487. weeksText() {
  488. let weeks = '';
  489. let cronEvery=this.result.day.cronEvery;
  490. switch (cronEvery.toString()){
  491. case '1':
  492. case '3':
  493. case '5':
  494. weeks = '?';
  495. break;
  496. case '2':
  497. weeks = this.result.week.incrementStart+'/'+this.result.week.incrementIncrement;
  498. break;
  499. case '4':
  500. this.result.week.specificSpecific.map(val=> {
  501. weeks += val+','
  502. });
  503. weeks = weeks.slice(0, -1);
  504. break;
  505. case '6':
  506. case '7':
  507. case '8':
  508. case '9':
  509. case '10':
  510. weeks = "?";
  511. break;
  512. case '11':
  513. weeks = this.result.week.cronNthDayDay+"#"+this.result.week.cronNthDayNth;
  514. break;
  515. }
  516. return weeks;
  517. },
  518. monthsText() {
  519. let months = '';
  520. let cronEvery=this.result.month.cronEvery;
  521. switch (cronEvery.toString()){
  522. case '1':
  523. months = '*';
  524. break;
  525. case '2':
  526. months = this.result.month.incrementStart+'/'+this.result.month.incrementIncrement;
  527. break;
  528. case '3':
  529. this.result.month.specificSpecific.map(val=> {
  530. months += val+','
  531. });
  532. months = months.slice(0, -1);
  533. break;
  534. case '4':
  535. months = this.result.month.rangeStart+'-'+this.result.month.rangeEnd;
  536. break;
  537. }
  538. return months;
  539. },
  540. yearsText() {
  541. let years = '';
  542. let cronEvery=this.result.year.cronEvery;
  543. switch (cronEvery.toString()){
  544. case '1':
  545. years = '*';
  546. break;
  547. case '2':
  548. years = this.result.year.incrementStart+'/'+this.result.year.incrementIncrement;
  549. break;
  550. case '3':
  551. this.result.year.specificSpecific.map(val=> {
  552. years += val+','
  553. });
  554. years = years.slice(0, -1);
  555. break;
  556. case '4':
  557. years = this.result.year.rangeStart+'-'+this.result.year.rangeEnd;
  558. break;
  559. }
  560. return years;
  561. },
  562. cron(){
  563. return {
  564. value: this.result,
  565. label:`${this.secondsText||'*'} ${this.minutesText||'*'} ${this.hoursText||'*'} ${this.daysText||'*'} ${this.monthsText||'*'} ${this.weeksText||'*'} ${this.yearsText||'*'}`
  566. }
  567. },
  568. },
  569. watch:{
  570. data(){
  571. //this.rest(this.data);
  572. }
  573. },
  574. methods: {
  575. show(){
  576. //this.rest(pick(this.data.value,'second','minute','hour','day','week','month','year'));
  577. //this.rest(this.data.value);
  578. Object.assign(this.data.value,this.result);
  579. console.log('data初始化',this.data);
  580. //this.result = this.data.value;
  581. this.visible=true;
  582. },
  583. getValue(){
  584. return this.cron;
  585. },
  586. change(){
  587. console.log('返回前',this.cron);
  588. this.$emit('change',this.cron);
  589. this.close();
  590. this.visible = false;
  591. },
  592. close(){
  593. this.visible = false;
  594. //this.$emit('close')
  595. },
  596. rest(data){
  597. for(let i in data){
  598. console.log(data[i]);
  599. if(data[i] instanceof Object){
  600. this.rest(data[i])
  601. }else {
  602. switch(typeof data[i]) {
  603. case 'object':
  604. data[i] = [];
  605. break;
  606. case 'string':
  607. data[i] = '';
  608. break;
  609. case 'number':
  610. data[i] = null;
  611. break;
  612. }
  613. }
  614. }
  615. },
  616. callback (key) {
  617. //console.log(key)
  618. }
  619. }
  620. }
  621. </script>
  622. <style lang="less">
  623. .card-container {
  624. background: #fff;
  625. overflow: hidden;
  626. padding: 12px;
  627. position: relative;
  628. width: 100%;
  629. .ant-tabs{
  630. border:1px solid #e6ebf5;
  631. padding: 0;
  632. .ant-tabs-bar {
  633. margin: 0;
  634. outline: none;
  635. border-bottom: none;
  636. .ant-tabs-nav-container{
  637. margin: 0;
  638. .ant-tabs-tab {
  639. padding: 0 24px!important;
  640. background-color: #f5f7fa!important;
  641. margin-right: 0px!important;
  642. border-radius: 0;
  643. line-height: 38px;
  644. border: 1px solid transparent!important;
  645. border-bottom: 1px solid #e6ebf5!important;
  646. }
  647. .ant-tabs-tab-active.ant-tabs-tab{
  648. color: #409eff;
  649. background-color: #fff!important;
  650. border-right:1px solid #e6ebf5!important;
  651. border-left:1px solid #e6ebf5!important;
  652. border-bottom:1px solid #fff!important;
  653. font-weight: normal;
  654. transition:none!important;
  655. }
  656. }
  657. }
  658. .ant-tabs-tabpane{
  659. padding: 15px;
  660. .ant-row{
  661. margin: 10px 0;
  662. }
  663. .ant-select,.ant-input-number{
  664. width: 100px;
  665. }
  666. }
  667. }
  668. }
  669. </style>
  670. <style lang="less" scoped>
  671. .container-widthEn{
  672. width: 755px;
  673. }
  674. .container-widthCn{
  675. width: 608px;
  676. }
  677. .language{
  678. text-align: center;
  679. position: absolute;
  680. right: 13px;
  681. top: 13px;
  682. border: 1px solid transparent;
  683. height: 40px;
  684. line-height: 38px;
  685. font-size: 16px;
  686. color: #409eff;
  687. z-index: 1;
  688. background: #f5f7fa;
  689. outline: none;
  690. width: 47px;
  691. border-bottom: 1px solid #e6ebf5;
  692. border-radius: 0;
  693. }
  694. .card-container{
  695. .bottom{
  696. display: flex;
  697. justify-content: center;
  698. padding: 10px 0 0 0;
  699. .cronButton{
  700. margin: 0 10px;
  701. line-height: 40px;
  702. }
  703. }
  704. }
  705. .tabBody{
  706. .a-row{
  707. margin: 10px 0;
  708. .long{
  709. .a-select{
  710. width:354px;
  711. }
  712. }
  713. .a-input{
  714. width: 110px;
  715. }
  716. }
  717. }
  718. </style>