createArticle.vue 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs='crumbs'></bread-crumb>
  5. </div>
  6. <div>
  7. <div class="app-container">
  8. <el-tabs type="border-card">
  9. <el-tab-pane label="文章">
  10. <el-form label-width="100px" class="clearfix" :model="form" ref="arctileform" :element-loading-text="loadingText" :rules="staffrules">
  11. <el-row>
  12. <el-col :span="23">
  13. <el-form-item label="文章标题:" required prop="act_name">
  14. <el-input v-model="form.act_name"></el-input>
  15. </el-form-item>
  16. <el-form-item label="文章内容:" required prop="act_content">
  17. <keep-alive>
  18. <neditor ref="neditor"
  19. id="editor"
  20. v-bind:r_content="form.act_content">
  21. </neditor>
  22. </keep-alive>
  23. </el-form-item>
  24. <el-form-item label="封面图片:">
  25. <el-radio v-model="radio" label="1" @click.native.prevent="select()" >单图</el-radio>
  26. <el-radio v-model="radio" label="2" @click.native.prevent="clickitem()" >三图</el-radio>
  27. </el-form-item>
  28. <el-form-item>
  29. <el-col :span="3">
  30. <div>
  31. <el-upload
  32. v-loading="uploading"
  33. :element-loading-text="loadingText"
  34. class="avatar-uploader"
  35. :data="uploadData"
  36. action="https://upload.qiniup.com"
  37. :show-file-list="false"
  38. :on-error="handleAvatarError"
  39. :on-success="handleAvatarSuccess"
  40. :before-upload="beforeAvatarUpload">
  41. <img v-if="form.org_logo" :src="form.org_logo" class="avatar">
  42. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  43. </el-upload>
  44. </div>
  45. </el-col>
  46. <el-col :span="3">
  47. <div v-if="show">
  48. <el-upload
  49. v-loading="uploading"
  50. :element-loading-text="loadingText"
  51. class="avatar-uploader"
  52. :data="uploadData"
  53. action="https://upload.qiniup.com"
  54. :show-file-list="false"
  55. :on-error="handleAvatartwoError"
  56. :on-success="handleAvatartwoSuccess"
  57. :before-upload="beforeAvatartwoUpload">
  58. <img v-if="imageUrlSecond" :src="imageUrlSecond" class="avatar">
  59. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  60. </el-upload>
  61. </div>
  62. </el-col>
  63. <el-col :span="3">
  64. <div v-if="show">
  65. <el-upload
  66. v-loading="uploading"
  67. :element-loading-text="loadingText"
  68. class="avatar-uploader"
  69. :data="uploadData"
  70. action="https://upload.qiniup.com"
  71. :show-file-list="false"
  72. :on-error="handleAvatarlastError"
  73. :on-success="handleAvatarlastSuccess"
  74. :before-upload="beforeAvatarlastUpload">
  75. <img v-if="imageUrlLast" :src="imageUrlLast" class="avatar">
  76. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  77. </el-upload>
  78. </div>
  79. </el-col>
  80. </el-form-item>
  81. <el-form-item label="所属分类:" prop="act_type">
  82. <el-select v-model="form.act_type" placeholder="请先选择文章所属分类" @change="changeActtype()">
  83. <el-option
  84. v-for="item in options"
  85. :key="item.id"
  86. :label="item.name"
  87. :value="item.id">
  88. </el-option>
  89. </el-select>
  90. </el-form-item>
  91. </el-col>
  92. </el-row>
  93. <el-row :span="24">
  94. <el-col :span="24">
  95. <el-form-item>
  96. <el-button size="small" type="primary" style="width: 100px" @click="submitForm('arctileform');centerDialogVisible=false">发布</el-button>
  97. <el-button size="small" style="width: 100px" @click="preview('arctileform')">预览</el-button>
  98. <el-button size="small" style="width: 100px" @click="save('arctileform');centerdraftVisible = false">保存草稿</el-button>
  99. <el-button size="small" style="width: 100px" @click="centercancelVisible = true">取消</el-button>
  100. </el-form-item>
  101. </el-col>
  102. </el-row>
  103. </el-form>
  104. </el-tab-pane>
  105. <el-tab-pane label="视频">
  106. <el-form label-width="100px" class="clearfix" :rules="rules" :model="form" ref="vidoform">
  107. <el-row>
  108. <el-col :span="24">
  109. <div style="margin-bottom: 100px">
  110. <el-form-item required prop="vio_upload">
  111. <div class="video-select" v-if="show">
  112. <el-upload
  113. class="upload-demo"
  114. :data="uploadFileData"
  115. action="https://upload.qiniup.com"
  116. :on-change="handleChange"
  117. :on-success="handleSuccess"
  118. :on-error="handleError"
  119. :before-upload="beforeUploadFile"
  120. accept="video/x-flv,video/mpeg,video/avi,video/x-ms-wmv,video/quicktime,.asf,.rm,.rmvb,video/x-matroska,video/x-m4v,video/mp4">
  121. <el-button size="small" type="primary" v-if="show">点击上传</el-button>
  122. <div slot="tip" class="el-upload__tip" v-if="show">支持大多视频文件格式,大小不超过2G</div>
  123. </el-upload>
  124. </div>
  125. <div class="video" v-if="shows">
  126. <img v-if="form.vio_upload" :src="form.vio_upload+'?vframe/jpg/offset/1/w/300/h/200'" class="avatar" id="upvideo">
  127. </div>
  128. <div id="upvideo"></div>
  129. </el-form-item>
  130. </div>
  131. <el-form-item label="视频标题:" required prop="vid_name">
  132. <el-input v-model="form.vid_name"></el-input>
  133. </el-form-item>
  134. <el-form-item label="视频封面:">
  135. <el-upload class="avatar-uploader" :show-file-list="false"
  136. :on-success="handlevioSuccess"
  137. :before-upload="beforevidoFile"
  138. :on-change="handleChange"
  139. action="https://upload.qiniup.com"
  140. :data="uploadvidoData">
  141. <img v-if="form.vid_pic" :src="form.vid_pic" class="avatar">
  142. <img v-if="form.vio_upload" :src="form.vio_upload+'?vframe/jpg/offset/1/w/300/h/200'" class="avatar">
  143. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  144. </el-upload>
  145. </el-form-item>
  146. <div class="eltip">
  147. 视频封面若不上传,系统会根据视频内容进行自动截取<br>
  148. 目前支持PNG和JPG格式,图片大小不能超过1MB
  149. </div>
  150. <el-form-item label="所属分类:" required prop="vid_type">
  151. <el-select v-model="form.vid_type">
  152. <el-option
  153. v-for="item in options"
  154. :key="item.id"
  155. :label="item.name"
  156. :value="item.id">
  157. </el-option>
  158. </el-select>
  159. </el-form-item>
  160. <el-row :span="24">
  161. <el-col :span="24">
  162. <el-form-item>
  163. <el-button size="small" type="primary" style="width: 100px" @click="SumitVido('vidoform');centerDialogVisible = false">发布</el-button>
  164. <el-button size="small" style="width: 100px" @click="Savedraft('vidoform');centerdraftVisible = false">保存草稿</el-button>
  165. <el-button size="small" style="width: 100px" @click="centercancelVisible = true">取消</el-button>
  166. </el-form-item>
  167. </el-col>
  168. </el-row>
  169. </el-col>
  170. </el-row>
  171. </el-form>
  172. </el-tab-pane>
  173. </el-tabs>
  174. </div>
  175. </div>
  176. <el-dialog
  177. title="发布成功"
  178. :visible.sync="centerDialogVisible"
  179. width="30%"
  180. center>
  181. <span slot="footer" class="dialog-footer">
  182. <el-button @click="gotolink()">再发一条</el-button>
  183. <el-button type="primary" @click="gobacklist">返回文章列表</el-button>
  184. </span>
  185. </el-dialog>
  186. <el-dialog
  187. title="保存草稿成功"
  188. :visible.sync = "centerdraftVisible"
  189. width="30%"
  190. center>
  191. <span slot="footer" class="dialog-footer">
  192. <el-button type="primary" @click="gobacklist">返回文章列表</el-button>
  193. </span>
  194. </el-dialog>
  195. <el-dialog
  196. title="提示"
  197. :visible.sync = "centercancelVisible"
  198. width="30%"
  199. center>
  200. <span style="center">是否确定取消编辑此文章/视频</span>
  201. <span slot="footer" class="dialog-footer">
  202. <el-button type="primary" @click="confirm()" >确认</el-button>
  203. <el-button @click="centercancelVisible = false">取消</el-button>
  204. </span>
  205. </el-dialog>
  206. </div>
  207. </template>
  208. <script>
  209. import BreadCrumb from '../components/bread-crumb'
  210. import { quillEditor } from 'vue-quill-editor'
  211. import 'quill/dist/quill.core.css'
  212. import 'quill/dist/quill.snow.css'
  213. import 'quill/dist/quill.bubble.css'
  214. import Neditor from '@/components/Neditor'
  215. import {submitForm,getArticleType,addVido,Savedraft,previewArticle,save} from '@/api/act/submitinfo'
  216. import { getToken } from '@/api/qiniu'
  217. import { getFileExtension} from '@/utils/tools'
  218. export default {
  219. name: 'createArticle',
  220. components:{
  221. BreadCrumb,
  222. Neditor,
  223. },
  224. data(){
  225. return {
  226. crumbs: [
  227. { path: false, name: '文章管理' },
  228. { path: '/articles/createArticle', name: '发布文章' }
  229. ],
  230. radio:'1',
  231. options: [],
  232. value: '',
  233. show:false,
  234. content: '',
  235. editorOption: {},
  236. company:"",
  237. fileList: [],
  238. form:{
  239. act_name:'',
  240. act_content:'',
  241. act_picture:'',
  242. act_category:'',
  243. org_logo:'',
  244. act_type:'',
  245. file:'',
  246. vid_pic:'',
  247. vio_upload:'',
  248. vid_name:'',
  249. vid_type:'',
  250. },
  251. acttypes:[],
  252. imageUrl:'',
  253. imageUrlSecond:'',
  254. imageUrlLast:'',
  255. formloading:false,
  256. formsubmit:false,
  257. qiniuDomain: 'https://images.shengws.com/',
  258. uploading:false,
  259. loadingText:'',
  260. uploadData: { token: '', key: '' },
  261. uploadFileData:{token:'',key:''},
  262. uploadvidoData:{token:'',key:''},
  263. centerDialogVisible: false,
  264. centerdraftVisible:false,
  265. centercancelVisible:false,
  266. formLabelAlign:true,
  267. modlevidel:'',
  268. filsListArray:[],
  269. show:true,
  270. shows:false,
  271. rules: {
  272. vid_name: [{required: true, message: "视频标题不能为空"},],
  273. vio_upload: [{required: true,message:"请上传视频"}],
  274. vid_type: [{required: true,message:"所属分类不能为空"}]
  275. },
  276. artilcrules:{
  277. act_name: [{required: true, message: "文章标题不能为空"},],
  278. act_content: [{required: true,message:"文章内容不能为空"}],
  279. act_type: [{required: true,message:"所属分类不能为空"}]
  280. },
  281. vidoform:[],
  282. }
  283. },
  284. created(){
  285. this.getArticleType();
  286. },
  287. methods: {
  288. //第一个图片
  289. handleAvatarSuccess(res, file) {
  290. this.form.org_logo = this.qiniuDomain + res.url;
  291. this.uploading = false
  292. },
  293. handleAvatarError(err, file, fileList) {
  294. this.$message.error(err);
  295. this.uploading = false;
  296. return false
  297. },
  298. beforeAvatarUpload(file) {
  299. const isJPG = file.type === 'image/jpeg';
  300. const isLt2M = file.size / 1024 / 1024 < 2;
  301. if (!isJPG) {
  302. this.$message.error('上传头像图片只能是 JPG 格式!');
  303. }
  304. if (!isLt2M) {
  305. this.$message.error('上传头像图片大小不能超过 2MB!');
  306. }
  307. var date = new Date()
  308. var ext = getFileExtension(file.name)
  309. var key = date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() +'_o_' + file.uid + '.' + ext;
  310. this.uploading = true;
  311. this.loadingText = '封面图片上传中'
  312. const _self = this
  313. return new Promise((resolve, reject) => {
  314. getToken().then(response => {
  315. const token = response.data.data.uptoken
  316. console.log("token是什么?",token)
  317. _self._data.uploadData.token = token
  318. _self._data.uploadData.key = key
  319. resolve(true)
  320. }).catch(err => {
  321. reject(false)
  322. this.uploading = false;
  323. })
  324. })
  325. },
  326. //第二个图片
  327. handleAvatartwoSuccess(res, file) {
  328. this.imageUrlSecond = URL.createObjectURL(file.raw);
  329. this.form.org_logo = this.qiniuDomain + res.url;
  330. this.uploading = false
  331. },
  332. handleAvatartwoError(err, file, fileList) {
  333. this.$message.error(err);
  334. this.uploading = false;
  335. return false
  336. },
  337. beforeAvatartwoUpload(file) {
  338. const isJPG = file.type === 'image/jpeg';
  339. const isLt2M = file.size / 1024 / 1024 < 2;
  340. if (!isJPG) {
  341. this.$message.error('上传头像图片只能是 JPG 格式!');
  342. }
  343. if (!isLt2M) {
  344. this.$message.error('上传头像图片大小不能超过 2MB!');
  345. }
  346. var date = new Date()
  347. var ext = getFileExtension(file.name)
  348. var key = date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() +'_o_' + file.uid + '.' + ext;
  349. this.uploading = true;
  350. this.loadingText = '封面图片上传中'
  351. const _self = this
  352. return new Promise((resolve, reject) => {
  353. getToken().then(response => {
  354. const token = response.data.data.uptoken
  355. console.log("token是什么?",token)
  356. _self._data.uploadData.token = token
  357. _self._data.uploadData.key = key
  358. resolve(true)
  359. }).catch(err => {
  360. reject(false)
  361. this.uploading = false;
  362. })
  363. })
  364. //return isJPG && isLt2M;
  365. },
  366. //第三张图片
  367. handleAvatarlastSuccess(res, file) {
  368. this.imageUrlLast = URL.createObjectURL(file.raw);
  369. this.form.org_logo = this.qiniuDomain + res.url;
  370. this.uploading = false
  371. },
  372. handleAvatarlastError(err, file, fileList) {
  373. this.$message.error(err);
  374. this.uploading = false;
  375. return false
  376. },
  377. beforeAvatarlastUpload(file) {
  378. console.log("冷醒是",file.type)
  379. const isJPG = file.type === 'image/jpeg';
  380. const isLt2M = file.size / 1024 / 1024 < 2;
  381. if (!isJPG) {
  382. this.$message.error('上传头像图片只能是 JPG 格式!');
  383. }
  384. if (!isLt2M) {
  385. this.$message.error('上传头像图片大小不能超过 2MB!');
  386. }
  387. var date = new Date()
  388. var ext = getFileExtension(file.name)
  389. var key = date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() +'_o_' + file.uid + '.' + ext;
  390. this.loadingText = '封面图片上传中'
  391. const _self = this
  392. return new Promise((resolve, reject) => {
  393. getToken().then(response => {
  394. const token = response.data.data.uptoken
  395. console.log("token是什么?",token)
  396. _self._data.uploadData.token = token
  397. _self._data.uploadData.key = key
  398. resolve(true)
  399. }).catch(err => {
  400. reject(false)
  401. })
  402. })
  403. },
  404. //视频上传
  405. handleChange(file, fileList) {
  406. this.form.file = file.raw
  407. },
  408. handleSuccess(res,file,fileList){
  409. this.$message.success("视频上传成功")
  410. this.form.vio_upload = this.qiniuDomain + res.url;
  411. console.log("是什么",this.form.vio_upload)
  412. this.show=false;
  413. this.shows = true;
  414. },
  415. handlevioSuccess(res,file,fileList){
  416. this.form.vid_pic = this.qiniuDomain + res.url;
  417. },
  418. changeImg(url){
  419. console.log("路径是多少?",url)
  420. },
  421. handleError(err, file, fileList) {
  422. this.$message.error("视频上传失败")
  423. },
  424. beforeUploadFile(file) {
  425. const isLt2M = file.size / 1024 / 1024 < 2048;
  426. if (!isLt2M) {
  427. this.$message.error('上传视频大小不能超过 2G!');
  428. }
  429. var date = new Date()
  430. var ext = getFileExtension(file.name)
  431. var key = date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() +'_o_' + file.uid + '.' + ext;
  432. const _self = this
  433. return new Promise((resolve, reject) => {
  434. getToken().then(response => {
  435. const token = response.data.data.uptoken
  436. //console.log("token2是什么?",token)
  437. _self._data.uploadFileData.token = token
  438. _self._data.uploadFileData.key = key
  439. resolve(true)
  440. }).catch(err => {
  441. reject(false)
  442. })
  443. })
  444. },
  445. beforevidoFile(file){
  446. const isJPG = file.type === 'png/jpg';
  447. if (!isJPG) {
  448. this.$message.error('上传头像图片只能是 png或者jpg格式!');
  449. }
  450. const isLt2M = file.size / 1024 / 1024 < 1;
  451. if (!isLt2M) {
  452. this.$message.error('上传视频大小不能超过 1M!');
  453. }
  454. var date = new Date()
  455. var ext = getFileExtension(file.name)
  456. var key = date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() +'_o_' + file.uid + '.' + ext;
  457. const _self = this
  458. return new Promise((resolve, reject) => {
  459. getToken().then(response => {
  460. const token = response.data.data.uptoken
  461. //console.log("token2是什么?",token)
  462. _self._data.uploadvidoData.token = token
  463. _self._data.uploadvidoData.key = key
  464. resolve(true)
  465. }).catch(err => {
  466. reject(false)
  467. })
  468. })
  469. },
  470. select(){
  471. this.show = false
  472. },
  473. clickitem(){
  474. this.show = true
  475. },
  476. handleRemove(file, fileList) {
  477. console.log(file, fileList);
  478. },
  479. handlePreview(file) {
  480. console.log(file);
  481. },
  482. handleExceed(files, fileList) {
  483. this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
  484. },
  485. beforeRemove(file, fileList) {
  486. return this.$confirm(`确定移除 ${ file.name }?`);
  487. },
  488. changeActtype(){
  489. console.log("所属分类",this.form.act_type)
  490. },
  491. submitForm(formName){
  492. this.form.act_content = this.$refs.neditor.content;
  493. console.log("文章内容",this.$refs.neditor.content)
  494. this.$refs[formName].validate((valid)=>{
  495. if(valid){
  496. submitForm(this.form).then(response => {
  497. if(response.data.state == 1){
  498. this.centerDialogVisible = true;
  499. var articles = response.data.data.articles;
  500. console.log("返回的数据是啥?",articles);
  501. }
  502. })
  503. }
  504. });
  505. },
  506. getArticleType(){
  507. getArticleType().then(response =>{
  508. console.log(response.data.state)
  509. if(response.data.state === 1){
  510. var category = response.data.data.category
  511. this.options = response.data.data.category
  512. //console.log("文章内容:",category)
  513. //console.log("文章",this.options)
  514. }
  515. })
  516. },
  517. gotolink(){
  518. this.$router.go(0);
  519. },
  520. gobacklist(){
  521. this.$router.push({path:'/articles/articleList'})
  522. },
  523. SumitVido(formName){
  524. this.$refs[formName].validate((valid)=>{
  525. if(valid){
  526. addVido(this.form).then(response=>{
  527. if(response.data.state == 1){
  528. this.centerDialogVisible = true;
  529. var vido = response.data.data.vido;
  530. console.log("返回数据",vido)
  531. }
  532. });
  533. }
  534. });
  535. },
  536. Savedraft(formName){
  537. this.$refs[formName].validate((valid)=>{
  538. if(valid){
  539. Savedraft(this.form).then(response=>{
  540. if(response.data.state==1){
  541. this.centerdraftVisible = true;
  542. var savedraft = response.data.data.savedraft;
  543. console.log("保存草稿数据",savedraft)
  544. }
  545. });
  546. }
  547. });
  548. },
  549. preview(formName){
  550. this.form.act_content = this.$refs.neditor.content;
  551. console.log("文章内容",this.$refs.neditor.content)
  552. this.$refs[formName].validate((valid)=>{
  553. if(valid){
  554. // console.log("内容是什么?",this.form)
  555. // this.$router.push({path:'/articles/articlePreview'})
  556. previewArticle(this.form).then(response=>{
  557. if(response.data.state ==1){
  558. var art = response.data.data.art
  559. console.log("act的数据是",art);
  560. this.$router.push({path:'/articles/articlePreview'})
  561. }
  562. });
  563. }
  564. });
  565. },
  566. save(formName){
  567. this.form.act_content = this.$refs.neditor.content;
  568. console.log("文章内容",this.$refs.neditor.content);
  569. this.$refs[formName].validate((valid)=>{
  570. if(valid){
  571. save(this.form).then(response=>{
  572. if(response.data.state ==1){
  573. this.centerdraftVisible = true;
  574. var articles = response.data.data.articles;
  575. console.log("返回的数据是",articles)
  576. }
  577. });
  578. }
  579. });
  580. },
  581. confirm(){
  582. this.$router.push({path:"/articles/articleList"})
  583. }
  584. },
  585. }
  586. </script>
  587. <style scoped>
  588. .avatar-uploader{
  589. border: 1px solid #d9d9d9;
  590. border-radius: 6px;
  591. cursor: pointer;
  592. overflow: hidden;
  593. width: 140px;
  594. height: 140px;
  595. }
  596. .avatar-uploader{
  597. border-color: #f0f2f5;
  598. }
  599. .avatar-uploader-icon {
  600. font-size: 25px;
  601. color: #8c939d;
  602. width: 140px;
  603. height: 140px;
  604. line-height: 140px;
  605. text-align: center;
  606. }
  607. .avatar {
  608. width: 178px;
  609. height: 178px;
  610. display: block;
  611. }
  612. /*视频*/
  613. .video-select {
  614. padding: 150px 0 30px;
  615. background: url("/static/images/video_load.png") no-repeat;
  616. background-position: center 0;
  617. background-size: 192px 132px;
  618. text-align: center;
  619. width: 200px;
  620. height: 200px;
  621. position: relative;
  622. left: 500px;
  623. margin-bottom: 1px;
  624. }
  625. .video{
  626. padding: 150px 0 30px;
  627. background-position: center 0;
  628. background-size: 192px 132px;
  629. text-align: center;
  630. width: 200px;
  631. height: 200px;
  632. position: relative;
  633. left: 500px;
  634. margin-bottom: 60px;
  635. margin-top: -140px;
  636. }
  637. .eltip{
  638. font-size: 12px;
  639. position: relative;
  640. left: 80px;
  641. margin-bottom: 20px;
  642. }
  643. </style>