edit.vue 5.2KB

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