editForm.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <template>
  2. <el-dialog title="分类信息"
  3. :visible.sync="dialogVisible"
  4. @opened="dialogOpen"
  5. @closed="dialogClose"
  6. width="40%">
  7. <el-form ref="form"
  8. :model="formdata"
  9. label-width="110px"
  10. :rules="rules"
  11. size="small">
  12. <el-form-item label="分类名称"
  13. prop="FullName">
  14. <el-input v-model="formdata.FullName"></el-input>
  15. </el-form-item>
  16. <el-form-item label="分类编码"
  17. prop="Code">
  18. <el-input v-model="formdata.Code"></el-input>
  19. </el-form-item>
  20. <el-form-item label="关联表">
  21. <el-input v-model="formdata.TargetTable"></el-input>
  22. </el-form-item>
  23. <el-form-item label="使用分类名">
  24. <el-switch style="width:100%;text-align:left"
  25. v-model="formdata.UseItemName"></el-switch>
  26. </el-form-item>
  27. <el-form-item label="使用分类编码">
  28. <el-switch style="width:100%;text-align:left"
  29. v-model="formdata.UseItemCode"></el-switch>
  30. </el-form-item>
  31. <el-form-item label="树结构">
  32. <el-switch style="width:100%;text-align:left"
  33. v-model="formdata.IsTree"></el-switch>
  34. </el-form-item>
  35. <el-form-item label="排序">
  36. <el-input v-model="formdata.SortCode"></el-input>
  37. </el-form-item>
  38. <el-form-item label="备注">
  39. <el-input type="textarea"
  40. v-model="formdata.Description"></el-input>
  41. </el-form-item>
  42. </el-form>
  43. <div slot="footer"
  44. class="dialog-footer">
  45. <el-button type="primary"
  46. size="mini"
  47. :loading="loading"
  48. @click="saveEntity">保存</el-button>
  49. <el-button size="mini"
  50. @click="close">关闭</el-button>
  51. </div>
  52. </el-dialog>
  53. </template>
  54. <script>
  55. import itemApi from '@/api/sysadmin/item'
  56. export default {
  57. name: 'itemEditForm',
  58. props: {
  59. id: Number,
  60. value: Boolean
  61. },
  62. data () {
  63. return {
  64. loading: false,
  65. dialogVisible: false,
  66. classList: [],
  67. subjectList: [],
  68. selectSubject: [],
  69. formdata: {
  70. ParentId: 0,
  71. Id: 0,
  72. FullName: '',
  73. Code: '',
  74. TargetTable: '',
  75. UseItemName: 0,
  76. UseItemCode: 0,
  77. IsTree: 0,
  78. SortCode: '',
  79. Description: ''
  80. },
  81. imageUrl: '',
  82. rules: {
  83. FullName: [{
  84. required: true,
  85. message: '分类名称不能为空',
  86. trigger: 'blur'
  87. }],
  88. Code: [{
  89. required: true,
  90. message: '分类编码不能为空',
  91. trigger: 'blur'
  92. }]
  93. }
  94. }
  95. },
  96. watch: {
  97. value (val) {
  98. this.dialogVisible = val
  99. },
  100. dialogVisible (val) {
  101. this.$emit('input', val)
  102. }
  103. },
  104. mounted () {
  105. },
  106. methods: {
  107. dialogOpen () {
  108. this.$refs.form.resetFields()
  109. this.initData()
  110. },
  111. initData () {
  112. let _this = this
  113. if (_this.id > 0) {
  114. _this.formdata = {}
  115. const params = {
  116. id: _this.id
  117. }
  118. itemApi.getEntityById(params)
  119. .then(res => {
  120. // 编辑时初始化表单数据,给字段赋值
  121. if (res) {
  122. console.log(res)
  123. _this.formdata = {
  124. Id: res.Id,
  125. FullName: res.FullName,
  126. Code: res.Code,
  127. TargetTable: res.TargetTable,
  128. UseItemName: res.UseItemName === 1,
  129. UseItemCode: res.UseItemCode === 1,
  130. IsTree: res.IsTree === 1,
  131. SortCode: res.SortCode,
  132. Description: res.Description ? res.Description : ''
  133. }
  134. }
  135. })
  136. .catch(err => {
  137. console.error(err)
  138. })
  139. } else {
  140. _this.formdata.Id = 0
  141. _this.formdata.FullName = ''
  142. _this.formdata.Code = ''
  143. _this.formdata.TargetTable = 'Base_ItemDetails'
  144. _this.formdata.UseItemName = 0
  145. _this.formdata.UseItemCode = 0
  146. _this.formdata.IsTree = 0
  147. _this.formdata.SortCode = ''
  148. _this.formdata.Description = ''
  149. }
  150. },
  151. saveEntity () {
  152. let _this = this
  153. _this.formdata.Id = _this.id
  154. _this.$refs['form'].validate(valid => {
  155. if (valid) {
  156. _this.formdata.UseItemName = _this.formdata.UseItemName ? 1 : 0
  157. _this.formdata.UseItemCode = _this.formdata.UseItemCode ? 1 : 0
  158. _this.formdata.IsTree = _this.formdata.IsTree ? 1 : 0
  159. _this.loading = true
  160. if (_this.formdata.Id > 0) {
  161. itemApi.update(_this.formdata).then(data => {
  162. _this.loading = false
  163. _this.dialogVisible = false
  164. _this.$emit('submit')
  165. }).catch(err => {
  166. _this.loading = false
  167. console.error(err)
  168. })
  169. } else {
  170. itemApi.add(_this.formdata).then(data => {
  171. _this.loading = false
  172. _this.dialogVisible = false
  173. _this.$emit('submit')
  174. }).catch(err => {
  175. _this.loading = false
  176. console.error(err)
  177. })
  178. }
  179. } else {
  180. return false
  181. }
  182. })
  183. },
  184. dialogClose () {
  185. this.$refs['form'].resetFields()
  186. this.dialogVisible = false
  187. },
  188. close () {
  189. this.dialogClose()
  190. }
  191. }
  192. }
  193. </script>
  194. <style>
  195. .avatar-uploader .el-upload {
  196. border: 1px dashed #d9d9d9;
  197. border-radius: 6px;
  198. cursor: pointer;
  199. position: relative;
  200. overflow: hidden;
  201. }
  202. .avatar-uploader .el-upload:hover {
  203. border-color: #409eff;
  204. }
  205. .avatar-uploader-icon {
  206. font-size: 28px;
  207. color: #8c939d;
  208. width: 80px;
  209. height: 80px;
  210. line-height: 80px;
  211. text-align: center;
  212. }
  213. .avatar {
  214. width: 80px;
  215. height: 80px;
  216. display: block;
  217. }
  218. </style>