addScene.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <!-- -->
  2. <template>
  3. <div class="addScene">
  4. <MainTop :crumb="[{ name: '场景管理 > 新增场景' }]" />
  5. <div class="table-interface" style="flex: 1">
  6. <div class="top-body">
  7. <div class="conten">
  8. <el-form
  9. :model="ruleForm"
  10. :rules="rules"
  11. ref="ruleForm"
  12. label-width="100px"
  13. class="demo-ruleForm"
  14. >
  15. <el-form-item label="场景名称" prop="name">
  16. <el-input
  17. v-model="ruleForm.name"
  18. placeholder="请输入场景名称"
  19. style="width: 220px; margin-right: 10px"
  20. ></el-input>
  21. </el-form-item>
  22. <el-form-item label="场景链接" prop="urlScene">
  23. <el-input
  24. v-model="ruleForm.urlScene"
  25. placeholder="请输入场景链接"
  26. style="width: 220px; margin-right: 10px"
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item label="展示封面:" style="margin-left: 15px">
  30. <!-- style="border: 1px dotted #ccc; width:178px; border-radius: 5px;" -->
  31. <Cropper
  32. :width="512"
  33. :height="512"
  34. :fixed-number="[1, 1]"
  35. :uploadUrl="'/scene/upload'"
  36. :img="ruleForm.thumb"
  37. @clearImg="ruleForm.thumb = ''"
  38. @subUploadSucceed="getShopImages"
  39. />
  40. <span class="wwtxt" style="color: #c0c4cc"
  41. >建议上传512*512的png格式图片</span
  42. >
  43. </el-form-item>
  44. </el-form>
  45. </div>
  46. <el-button type="primary" @click="add" style="margin-left: 50px">保存</el-button>
  47. <el-button @click="cancel">取消</el-button>
  48. </div>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import MainTop from '@/components/main-top'
  54. import Cropper from '@/components/cropper'
  55. export default {
  56. name: 'AddScene',
  57. components: {
  58. MainTop,
  59. Cropper
  60. },
  61. data () {
  62. // 这里存放数据
  63. return {
  64. ruleForm: {
  65. fileName: 'CSBWG',
  66. name: '',
  67. thumb: '',
  68. urlScene: ''
  69. },
  70. rules: {
  71. name: [{ required: true, message: '请输入场景名称', trigger: 'blur' }],
  72. urlScene: [{ required: true, message: '请输入场景链接', trigger: 'blur' }]
  73. }
  74. }
  75. },
  76. // 监听属性 类似于data概念
  77. computed: {},
  78. // 监控data中的数据变化
  79. watch: {},
  80. // 方法集合
  81. methods: {
  82. getShopImages (img) {
  83. console.log(999999, img)
  84. this.ruleForm.thumb = img.filePath
  85. },
  86. async add () {
  87. await this.$refs.ruleForm.validate()
  88. if (!this.ruleForm.thumb) return this.$message.warning('封面不能为空')
  89. this.getList()
  90. },
  91. // 新增接口
  92. async getList () {
  93. let result = await this.$http({
  94. method: 'post',
  95. url: '/scene/save',
  96. data: this.ruleForm
  97. })
  98. console.log('新增成功', result)
  99. this.$message.success('新增成功')
  100. this.$router.go(-1)
  101. },
  102. // 重置
  103. // reset () {
  104. // this.$refs.ruleForm.resetFields()
  105. // this.ruleForm.thumb = ''
  106. // },
  107. // 点击取消
  108. cancel () {
  109. this.$router.go(-1)
  110. }
  111. },
  112. // 生命周期 - 创建完成(可以访问当前this实例)
  113. created () {},
  114. // 生命周期 - 挂载完成(可以访问DOM元素)
  115. mounted () {},
  116. beforeCreate () {}, // 生命周期 - 创建之前
  117. beforeMount () {}, // 生命周期 - 挂载之前
  118. beforeUpdate () {}, // 生命周期 - 更新之前
  119. updated () {}, // 生命周期 - 更新之后
  120. beforeDestroy () {}, // 生命周期 - 销毁之前
  121. destroyed () {}, // 生命周期 - 销毁完成
  122. activated () {} // 如果页面有keep-alive缓存功能,这个函数会触发
  123. }
  124. </script>
  125. <style scoped>
  126. .addScene {
  127. display: flex;
  128. flex-direction: column;
  129. }
  130. .table-interfac {
  131. overflow-y: auto;
  132. overflow-x: hidden;
  133. height: calc(100% - 3rem);
  134. }
  135. .top-body {
  136. padding: 24px;
  137. height: 100%;
  138. margin: 1rem 0;
  139. }
  140. .conten {
  141. padding-top: 10px;
  142. width: 100%;
  143. height: 380px;
  144. border: 1px solid #ccc;
  145. margin-bottom: 30px;
  146. }
  147. </style>