123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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.TableNo"
  12. maxlength="6"
  13. clearable>
  14. </el-input>
  15. </div>
  16. </div>
  17. </li>
  18. <li class="flex-h">
  19. <span>案场:</span>
  20. <div class="flex-item">
  21. <div style="width:50%">
  22. <el-select v-model="CaseId" placeholder="请选择">
  23. <el-option
  24. v-for="item in cases"
  25. :key="item.CaseId"
  26. :label="item.CaseName"
  27. :value="item.CaseId">
  28. </el-option>
  29. </el-select>
  30. </div>
  31. </div>
  32. </li>
  33. <li class="flex-h">
  34. <span>区域:</span>
  35. <div class="flex-item">
  36. <div style="width:50%">
  37. <el-select v-model="postData.AreaId" placeholder="请选择">
  38. <el-option
  39. v-for="item in caseAreas"
  40. :key="item.AreaId"
  41. :label="item.AreaName"
  42. :value="item.AreaId">
  43. </el-option>
  44. </el-select>
  45. </div>
  46. </div>
  47. </li>
  48. <li style="text-align:center">
  49. <el-button type="primary" size="mini" @click="submit">保存</el-button>
  50. <el-button type="danger" size="mini" @click="cancel">取消</el-button>
  51. </li>
  52. </ul>
  53. </form>
  54. </div>
  55. </template>
  56. <script>
  57. import { mapState } from 'vuex'
  58. export default {
  59. name: '',
  60. data () {
  61. return {
  62. caseAreaList: [],
  63. postData: {
  64. TableId: '', // 桌位id
  65. AreaId: '', // 区域id
  66. CaseId: '', // 案场id
  67. OrgId: '', // 机构id
  68. TableNo: '', // 桌位编号
  69. Order: '', // 排序
  70. },
  71. }
  72. },
  73. created () {
  74. this.getAreaList()
  75. this.getCaseTableInfo()
  76. },
  77. computed: {
  78. ...mapState({
  79. cases: x => x.app.cases.list,
  80. caseids: x => x.app.cases.list.map(i => i.CaseId).join(','),
  81. defaultCaseId: x => x.app.cases.default,
  82. OrgId: x => x.app.user.OrgId,
  83. }),
  84. CaseId: {
  85. get () {
  86. return this.postData.CaseId || this.defaultCaseId
  87. },
  88. set (val) {
  89. this.postData.CaseId = val
  90. this.postData.AreaId = ''
  91. }
  92. },
  93. caseAreas () {
  94. return this.caseAreaList.filter(x => x.CaseId === this.CaseId)
  95. },
  96. },
  97. components: {},
  98. methods: {
  99. getCaseTableInfo () {
  100. this.$ajax(this.$api.caseManager.getCaseTableInfo.url, {
  101. method: this.$api.caseManager.getCaseTableInfo.method,
  102. urlData: { id: this.$route.query.id }
  103. }).then(res => {
  104. this.postData = res
  105. })
  106. },
  107. getAreaList () {
  108. this.$ajax(this.$api.caseManager.getCaseAreaList.url, {
  109. method: this.$api.caseManager.getCaseAreaList.method,
  110. queryData: {
  111. caseid: this.caseids, // 案场id
  112. page: 1, // 当前页码
  113. pagesize: 10000, // 请求数据量
  114. }
  115. }).then(res => {
  116. this.caseAreaList = res.list
  117. this.postData.AreaId = res.list[0].AreaId
  118. })
  119. },
  120. submit () { // 提交数据
  121. if (this.postData.TableNo === '') {
  122. this.$message({
  123. type: 'error',
  124. message: '桌位名称不能为空'
  125. })
  126. return false
  127. }
  128. if (this.postData.AreaId === '' || this.CaseId === '') {
  129. this.$message({
  130. type: 'error',
  131. message: '请选择案场/区域'
  132. })
  133. return false
  134. }
  135. this.postData.OrgId = this.OrgId
  136. this.$ajax(this.$api.caseManager.editCaseTable.url, {
  137. method: this.$api.caseManager.editCaseTable.method,
  138. data: { ...this.postData, CaseId: this.CaseId }
  139. }).then(res => {
  140. this.$message({
  141. type: 'success',
  142. message: '操作成功!'
  143. })
  144. this.$router.push({ name: 'caseTableManager' })
  145. })
  146. },
  147. cancel () {
  148. this.$router.push({ name: 'caseTableManager' })
  149. }
  150. },
  151. mounted () { }
  152. }
  153. </script>
  154. <!-- Add "scoped" attribute to limit CSS to this component only -->
  155. <style lang="scss" scoped>
  156. </style>