AddSc.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <div>
  3. <div class="bigBox">
  4. <el-dialog v-model="dialogVisible" :title="letTips" width="30%" @close="closes"
  5. :close-on-click-modal="false">
  6. <el-form :model="newForm" label-width="120px" :rules="formRule" ref="ruleForm">
  7. <el-form-item label="字典名称" prop="name">
  8. <el-input v-model="newForm.name" />
  9. </el-form-item>
  10. <el-form-item label="上级字典编码" prop="parents">
  11. <el-select style="width: 372px;" v-model="newForm.parents" placeholder="请选择上级编码">
  12. <el-option v-for="(item, index) in topCode" :key="item.id" :label="item.name"
  13. :value="item.code" />
  14. </el-select>
  15. </el-form-item>
  16. <el-form-item label="字典编码" prop="codes">
  17. <el-input v-model="newForm.codes" />
  18. </el-form-item>
  19. </el-form>
  20. <template #footer>
  21. <span class="dialog-footer">
  22. <el-button @click="cancels">取消</el-button>
  23. <el-button type="primary" @click="sureAdd">确认</el-button>
  24. </span>
  25. </template>
  26. </el-dialog>
  27. </div>
  28. </div>
  29. </template>
  30. <script>
  31. import { ref, onMounted, toRefs, reactive } from 'vue';
  32. import systemRow from "@/api/systemRow"
  33. import { ElMessage } from 'element-plus';
  34. export default {
  35. props: {
  36. setModal: {
  37. type: Boolean,
  38. required: true
  39. },
  40. addOrEdit: {
  41. type: Number,
  42. required: true
  43. },
  44. searchSystem: {
  45. type: Function,
  46. required: true
  47. },
  48. editRow: {
  49. type: Object,
  50. required: true
  51. },
  52. handleNodeClick: {
  53. type: Function,
  54. required: true
  55. },//systemCode.vue传过来的树形组件方法
  56. pageCode: {
  57. type: Object,
  58. required: true
  59. },//systemCode.vue传过来的code
  60. },
  61. setup(props, { emit }) {
  62. let dialogVisible = ref(false)
  63. let result = props.setModal
  64. let letTips = ref("新增")
  65. let { cancels, sureAdd } = toRefs(props)
  66. let obj = props.editRow
  67. let editId = ref('')
  68. let newForm = ref({
  69. name: "",
  70. parents: "",
  71. codes: "",
  72. })
  73. let ruleForm = ref(null)
  74. let formRule = reactive({
  75. name: [
  76. { required: true, message: '请输入名称', trigger: 'blur' },
  77. ],
  78. parents: [
  79. { required: true, message: '请选择上级', trigger: 'change' },
  80. ],
  81. codes: [
  82. { required: true, message: '请输入编码', trigger: 'blur' },
  83. ]
  84. })
  85. let topCode = ref([
  86. ])
  87. let caseNum = ref(0)
  88. function lineList() {
  89. dialogVisible.value = result
  90. caseNum.value = props.addOrEdit - 0
  91. if (caseNum.value == 0) {
  92. letTips.value = '新增'
  93. }
  94. if (caseNum.value == 1) {
  95. letTips.value = '编辑'
  96. newForm.value.name = obj.name
  97. newForm.value.parents = obj.parentcode
  98. newForm.value.codes = obj.code
  99. editId.value = obj.id
  100. }
  101. systemRow.getChildren({}).then(res => {
  102. topCode.value = res.data
  103. })
  104. }
  105. function closes() {
  106. dialogVisible.value = false
  107. emit("getModal", dialogVisible.value)
  108. }
  109. function getSure() {
  110. ruleForm.value.validate((val) => {
  111. if (val) {
  112. if (caseNum.value == 0) {
  113. systemRow.saveRow({
  114. name: newForm.value.name,
  115. parentcode: newForm.value.parents,
  116. code: newForm.value.codes
  117. }).then(res => {
  118. if (res.returncode == 200) {
  119. dialogVisible.value = false
  120. emit("getModal", dialogVisible.value)
  121. props.searchSystem()
  122. ElMessage({
  123. type: "success",
  124. message: "新增成功"
  125. })
  126. }
  127. })
  128. } else if (caseNum.value == 1) {
  129. systemRow.saveRow({
  130. name: newForm.value.name,
  131. parentcode: newForm.value.parents,
  132. code: newForm.value.codes,
  133. id: editId.value
  134. }).then(res => {
  135. if (res.returncode == 200) {
  136. dialogVisible.value = false
  137. emit("getModal", dialogVisible.value)
  138. let e = { code: props.pageCode }
  139. props.handleNodeClick(e)
  140. ElMessage({
  141. type: "success",
  142. message: "修改成功"
  143. })
  144. }
  145. })
  146. }
  147. }
  148. })
  149. }
  150. onMounted(() => {
  151. lineList()
  152. })
  153. return {
  154. dialogVisible,
  155. closes,
  156. cancels: closes,
  157. sureAdd: getSure,
  158. lineList,
  159. letTips,
  160. newForm,
  161. topCode,
  162. formRule,
  163. editId,
  164. ruleForm,
  165. caseNum,
  166. }
  167. }
  168. }
  169. </script>
  170. <style lang="scss" scoped></style>