7885d410589eee962e2d920c58af8a7a25083cdf.svn-base 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="800"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @ok="handleOk"
  8. @cancel="handleCancel"
  9. cancelText="关闭"
  10. >
  11. <a-spin :spinning="confirmLoading">
  12. <a-form-model ref="form" :model="model" :rules="validatorRules">
  13. <a-form-model-item
  14. :labelCol="labelCol"
  15. :wrapperCol="wrapperCol"
  16. prop="itemText"
  17. label="名称">
  18. <a-input placeholder="请输入名称" v-model="model.itemText"/>
  19. </a-form-model-item>
  20. <a-form-model-item
  21. :labelCol="labelCol"
  22. :wrapperCol="wrapperCol"
  23. prop="itemValue"
  24. label="数据值">
  25. <a-input placeholder="请输入数据值" v-model="model.itemValue" />
  26. </a-form-model-item>
  27. <a-form-model-item
  28. :labelCol="labelCol"
  29. :wrapperCol="wrapperCol"
  30. label="描述">
  31. <a-input v-model="model.description" />
  32. </a-form-model-item>
  33. <a-form-model-item
  34. :labelCol="labelCol"
  35. :wrapperCol="wrapperCol"
  36. label="排序值">
  37. <a-input-number :min="1" v-model="model.sortOrder" />
  38. 值越小越靠前
  39. </a-form-model-item>
  40. <a-form-model-item
  41. :labelCol="labelCol"
  42. :wrapperCol="wrapperCol"
  43. label="是否启用"
  44. hasFeedback>
  45. <a-switch checkedChildren="启用" unCheckedChildren="禁用" @change="onChose" v-model="visibleCheck"/>
  46. </a-form-model-item>
  47. </a-form-model>
  48. </a-spin>
  49. </a-modal>
  50. </template>
  51. <script>
  52. import pick from 'lodash.pick'
  53. import {addDictItem, editDictItem} from '@/api/api'
  54. import { getAction } from '@api/manage'
  55. export default {
  56. name: "DictItemModal",
  57. data() {
  58. return {
  59. title: "操作",
  60. visible: false,
  61. visibleCheck: true,
  62. model: {},
  63. dictId: "",
  64. status: 1,
  65. labelCol: {
  66. xs: {span: 24},
  67. sm: {span: 5},
  68. },
  69. wrapperCol: {
  70. xs: {span: 24},
  71. sm: {span: 16},
  72. },
  73. confirmLoading: false,
  74. validatorRules: {
  75. itemText: [{required: true, message: '请输入名称!'}],
  76. itemValue: [{required: true, message: '请输入数据值!'},{validator: this.validateItemValue}],
  77. },
  78. }
  79. },
  80. created() {
  81. },
  82. methods: {
  83. add(dictId) {
  84. this.dictId = dictId;
  85. //初始化默认值
  86. this.edit({sortOrder:1,status:1});
  87. },
  88. edit(record) {
  89. if (record.id) {
  90. this.dictId = record.dictId;
  91. }
  92. this.status = record.status;
  93. this.visibleCheck = (record.status == 1) ? true : false;
  94. this.model = Object.assign({}, record);
  95. this.model.dictId = this.dictId;
  96. this.model.status = this.status;
  97. this.visible = true;
  98. },
  99. onChose(checked) {
  100. if (checked) {
  101. this.status = 1;
  102. this.visibleCheck = true;
  103. } else {
  104. this.status = 0;
  105. this.visibleCheck = false;
  106. }
  107. },
  108. // 确定
  109. handleOk() {
  110. const that = this;
  111. // 触发表单验证
  112. this.$refs.form.validate(valid => {
  113. if (valid) {
  114. that.confirmLoading = true;
  115. this.model.itemText = (this.model.itemText || '').trim()
  116. this.model.itemValue = (this.model.itemValue || '').trim()
  117. this.model.description = (this.model.description || '').trim()
  118. this.model.status = this.status;
  119. let obj;
  120. if (!this.model.id) {
  121. obj = addDictItem(this.model);
  122. } else {
  123. obj = editDictItem(this.model);
  124. }
  125. obj.then((res) => {
  126. if (res.success) {
  127. that.$message.success(res.message);
  128. that.$emit('ok');
  129. } else {
  130. that.$message.warning(res.message);
  131. }
  132. }).finally(() => {
  133. that.confirmLoading = false;
  134. that.close();
  135. })
  136. }else{
  137. return false;
  138. }
  139. })
  140. },
  141. // 关闭
  142. handleCancel() {
  143. this.close();
  144. },
  145. close() {
  146. this.$emit('close');
  147. this.visible = false;
  148. this.$refs.form.resetFields();
  149. },
  150. validateItemValue(rule, value, callback){
  151. let param = {
  152. itemValue:value,
  153. dictId:this.dictId,
  154. }
  155. if(this.model.id){
  156. param.id = this.model.id
  157. }
  158. if(value){
  159. let reg=new RegExp("[`_~!@#$^&*()=|{}'.<>《》/?!¥()—【】‘;:”“。,、?]")
  160. if(reg.test(value)){
  161. callback("数据值不能包含特殊字符!")
  162. }else{
  163. //update--begin--autor:lvdandan-----date:20201203------for:JT-27【数据字典】字典 - 数据值可重复
  164. getAction("/sys/dictItem/dictItemCheck",param).then((res)=>{
  165. if(res.success){
  166. callback()
  167. }else{
  168. callback(res.message);
  169. }
  170. });
  171. //update--end--autor:lvdandan-----date:20201203------for:JT-27【数据字典】字典 - 数据值可重复
  172. }
  173. }else{
  174. callback()
  175. }
  176. }
  177. }
  178. }
  179. </script>