AddSc.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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. let e = { code: props.pageCode }
  122. props.handleNodeClick(e)
  123. ElMessage({
  124. type: "success",
  125. message: "新增成功"
  126. })
  127. }else{
  128. // dialogVisible.value = false
  129. // emit("getModal", dialogVisible.value)
  130. // let e = { code: props.pageCode }
  131. // props.handleNodeClick(e)
  132. ElMessage({
  133. type: "error",
  134. message: "新增重复"
  135. })
  136. }
  137. })
  138. } else if (caseNum.value == 1) {
  139. systemRow.saveRow({
  140. name: newForm.value.name,
  141. parentcode: newForm.value.parents,
  142. code: newForm.value.codes,
  143. id: editId.value
  144. }).then(res => {
  145. if (res.returncode == 200) {
  146. dialogVisible.value = false
  147. emit("getModal", dialogVisible.value)
  148. let e = { code: props.pageCode }
  149. props.handleNodeClick(e)
  150. ElMessage({
  151. type: "success",
  152. message: "修改成功",
  153. })
  154. }
  155. })
  156. }
  157. }
  158. })
  159. }
  160. onMounted(() => {
  161. lineList()
  162. })
  163. return {
  164. dialogVisible,
  165. closes,
  166. cancels: closes,
  167. sureAdd: getSure,
  168. lineList,
  169. letTips,
  170. newForm,
  171. topCode,
  172. formRule,
  173. editId,
  174. ruleForm,
  175. caseNum,
  176. }
  177. }
  178. }
  179. </script>
  180. <style lang="scss" scoped></style>