add.vue 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <template>
  2. <div class="subPage">
  3. <form class="mainForm">
  4. <ul>
  5. <li class="flex-h">
  6. <span>区域名:</span>
  7. <div class="flex-item">
  8. <div style="width:50%">
  9. <el-input
  10. placeholder="请输入区域名"
  11. v-model="postData.AreaName"
  12. clearable>
  13. </el-input>
  14. </div>
  15. </div>
  16. </li>
  17. <li class="flex-h">
  18. <span>案场:</span>
  19. <div class="flex-item">
  20. <div style="width:50%">
  21. <el-select v-model="CaseId" placeholder="请选择">
  22. <el-option
  23. v-for="item in cases"
  24. :key="item.CaseId"
  25. :label="item.CaseName"
  26. :value="item.CaseId">
  27. </el-option>
  28. </el-select>
  29. </div>
  30. </div>
  31. </li>
  32. <li class="flex-h">
  33. <span>图片:</span>
  34. <div class="flex-item">
  35. <div>
  36. <el-upload
  37. class="avatar-uploader"
  38. :action='$api.file.image.url'
  39. :show-file-list="false"
  40. :on-success="handleAvatarSuccess">
  41. <img v-if="postData.AreaIcon" :src="postData.AreaIcon" class="avatar">
  42. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  43. </el-upload>
  44. </div>
  45. </div>
  46. </li>
  47. <li class="flex-h">
  48. <span>黑白图片:</span>
  49. <div class="flex-item">
  50. <div>
  51. <el-upload
  52. class="avatar-uploader"
  53. :action='$api.file.image.url'
  54. :show-file-list="false"
  55. :on-success="handleAvatarSuccesser">
  56. <img v-if="postData.AreaIconWhite" :src="postData.AreaIconWhite" class="avatar">
  57. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  58. </el-upload>
  59. </div>
  60. </div>
  61. </li>
  62. <li style="text-align:center">
  63. <el-button type="primary" size="mini" @click="submit">保存</el-button>
  64. <el-button type="danger" size="mini" @click="cancel">取消</el-button>
  65. </li>
  66. </ul>
  67. </form>
  68. </div>
  69. </template>
  70. <script>
  71. import { mapState } from 'vuex'
  72. export default {
  73. name: '',
  74. data () {
  75. return {
  76. postData: {
  77. AreaId: '', // 区域id
  78. CaseId: '', // 案场id
  79. OrgId: '', // 机构id
  80. AreaName: '', // 区域名称
  81. AreaIcon: '', // 区域图标
  82. AreaIconWhite: '', // 区域图标灰白
  83. },
  84. caseList: [{
  85. value: '0',
  86. label: '案场1'
  87. }, {
  88. value: '1',
  89. label: '案场3'
  90. }, {
  91. value: '2',
  92. label: '案场3'
  93. }],
  94. }
  95. },
  96. computed: {
  97. ...mapState({
  98. cases: x => x.app.cases.list,
  99. defaultCaseId: x => x.app.cases.default
  100. }),
  101. CaseId: {
  102. get () {
  103. return this.postData.CaseId || this.defaultCaseId
  104. },
  105. set (val) {
  106. this.postData.CaseId = val
  107. }
  108. }
  109. },
  110. components: {},
  111. methods: {
  112. handleAvatarSuccesser (res, file) {
  113. this.postData.AreaIconWhite = res.result.url
  114. },
  115. handleAvatarSuccess (res, file) {
  116. this.postData.AreaIcon = res.result.url
  117. },
  118. submit () { // 提交数据
  119. if (this.postData.AreaName === '') {
  120. this.$message({
  121. type: 'error',
  122. message: '区域名称不能为空'
  123. })
  124. return false
  125. }
  126. if (this.postData.AreaIcon === '') {
  127. this.$message({
  128. type: 'error',
  129. message: '区域图标不能为空'
  130. })
  131. return false
  132. }
  133. if (this.postData.AreaIconWhite === '') {
  134. this.$message({
  135. type: 'error',
  136. message: '区域图标灰白不能为空'
  137. })
  138. return false
  139. }
  140. this.postData.OrgId = this.OrgId
  141. this.$ajax(this.$api.caseManager.addCaseArea.url, {
  142. method: this.$api.caseManager.addCaseArea.method,
  143. queryData: { ...this.postData, CaseId: this.CaseId }
  144. }).then(res => {
  145. this.$message({
  146. type: 'success',
  147. message: '操作成功!'
  148. })
  149. this.$router.push({name: 'caseAreaManager'})
  150. })
  151. },
  152. cancel () {
  153. this.$router.push({name: 'caseAreaManager'})
  154. }
  155. },
  156. mounted () { }
  157. }
  158. </script>
  159. <!-- Add "scoped" attribute to limit CSS to this component only -->
  160. <style lang="scss" scoped>
  161. </style>