Addrm.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <div>
  3. <el-dialog v-model="dialogVisible" :title="titleTips" width="30%" @close="closes" :close-on-click-modal="false">
  4. <el-form :model="addForm" label-width="120px" :rules="formRule" ref="ruleForm">
  5. <el-form-item label="模板名称" prop="name">
  6. <el-input v-model="addForm.name" />
  7. </el-form-item>
  8. <el-form-item label="模板描述" prop="memos">
  9. <el-input type="textarea" v-model="addForm.memos" />
  10. </el-form-item>
  11. <el-form-item label="上传文件" width="200" prop="docName">
  12. <el-input style="width: 167px;" v-model="addForm.docName" disabled />
  13. <el-upload v-model:file-list="fileList" class="upload-demo" :show-file-list="false"
  14. :http-request="uploadFile" multiple :limit="1">
  15. <el-button type="primary" plain :disabled="upState"><el-icon>
  16. <DocumentAdd />
  17. </el-icon>点击上传文件</el-button>
  18. <!-- <template #tip>
  19. <div class="el-upload__tip">
  20. jpg/png files with a size less than 500KB.
  21. </div>
  22. </template> -->
  23. </el-upload>
  24. </el-form-item>
  25. </el-form>
  26. <template #footer>
  27. <span class="dialog-footer">
  28. <el-button @click="cancels">取消</el-button>
  29. <el-button type="primary" @click="sureAdd">确认</el-button>
  30. </span>
  31. </template>
  32. </el-dialog>
  33. </div>
  34. </template>
  35. <script>
  36. import { ref, onMounted, toRefs, reactive, watch } from 'vue';
  37. import report from '@/api/report';
  38. import cid from '@/api/cid/cid';
  39. import { ElMessage } from 'element-plus';
  40. export default {
  41. props: {
  42. addModal: {
  43. type: Boolean,
  44. required: true
  45. },
  46. addOrEdit: {
  47. type: Number,
  48. required: true
  49. },
  50. editRow: {
  51. type: Object,
  52. required: true
  53. },
  54. searchReport: {
  55. type: Function,
  56. required: true
  57. }
  58. },
  59. setup(props, { emit }) {
  60. let dialogVisible = ref(false)
  61. let result = props.addModal
  62. let obj = props.editRow
  63. let tipsNow = ref(0)//新增编辑,0新增,1编辑
  64. let filesCacl = ref({})
  65. let needRow = ref({})//需要编辑的数据
  66. let needId = ref("")//需要的id
  67. let { cancels, sureAdd } = toRefs(props)
  68. let titleTips = ref('新增')
  69. let upState = ref(false)//上传文件状态
  70. let addForm = ref({
  71. name: "",
  72. docid: "",
  73. memos: "",
  74. states: 1,
  75. docName: "",
  76. })
  77. let formRule = reactive({
  78. name: [
  79. { required: true, message: '还未输入名称', trigger: 'blur' },
  80. ],
  81. memos: [
  82. { required: true, message: '还未输入备注', trigger: 'blur' },
  83. ],
  84. docName: [
  85. { required: true, message: '还未选择文件', trigger: 'change' },
  86. ],
  87. })
  88. let ruleForm = ref(null)//组件ref
  89. watch(() => props.addOrEdit, (newVal) => {
  90. tipsNow.value = newVal
  91. })
  92. function lineList() {//接收父组件参数
  93. tipsNow.value = props.addOrEdit
  94. if (tipsNow.value == 0) {
  95. titleTips.value = '新增'
  96. upState.value = false
  97. }
  98. if (tipsNow.value == 1) {
  99. titleTips.value = '编辑'
  100. upState.value = true
  101. needRow.value = props.editRow
  102. addForm.value.name = needRow.value.name
  103. addForm.value.docid = needRow.value.doc_id
  104. addForm.value.docName = needRow.value.doc_id
  105. addForm.value.memos = needRow.value.memo
  106. addForm.value.states = needRow.value.state
  107. console.log(needRow.value, 'dee');
  108. // addForm.value.docName = needRow.value
  109. needId.value = needRow.value.id
  110. }
  111. dialogVisible.value = result
  112. }
  113. function uploadFile(e) {
  114. addForm.value.docName = e.file.name
  115. filesCacl.value = e.file
  116. cid.fileUpload({ station_id: 9999, file: filesCacl.value, attachment_type: "tpl" }).then(res => {
  117. addForm.value.docid = res.data.fileid
  118. console.log(addForm.value.docid,'filesifafk');
  119. })
  120. }
  121. function getCancel() {
  122. dialogVisible.value = false
  123. emit("armBack", dialogVisible.value)
  124. }
  125. function getSure() {
  126. ruleForm.value.validate((date) => {
  127. if (date) {
  128. if (tipsNow.value == 0) {
  129. report.addReport({
  130. name: addForm.value.name,
  131. doc_id: addForm.value.docid - 0,
  132. memo: addForm.value.memos,
  133. state: addForm.value.states - 0,
  134. }).then(res => {
  135. if (res.code == 0) {
  136. ElMessage({
  137. type: "success",
  138. message: "新增成功"
  139. })
  140. props.searchReport()
  141. dialogVisible.value = false
  142. emit("armBack", dialogVisible.value)
  143. } else {
  144. ElMessage({
  145. type: "error",
  146. message: res.msg
  147. })
  148. }
  149. })
  150. } else if (tipsNow.value == 1) {
  151. report.addReport({
  152. id: needId.value - 0,
  153. name: addForm.value.name,
  154. doc_id: addForm.value.docid - 0,
  155. memo: addForm.value.memos,
  156. state: addForm.value.states - 0,
  157. }).then(res => {
  158. if (res.code == 0 && res.data != null) {
  159. props.searchReport()
  160. dialogVisible.value = false
  161. emit("armBack", dialogVisible.value)
  162. ElMessage({
  163. message: "修改成功",
  164. type: "success"
  165. })
  166. }
  167. })
  168. }
  169. }else{
  170. console.log(date);
  171. }
  172. })
  173. }
  174. onMounted(() => {
  175. lineList()
  176. })
  177. return {
  178. dialogVisible,
  179. lineList,
  180. cancels: getCancel,
  181. sureAdd: getSure,
  182. closes: getCancel,
  183. uploadFile,
  184. addForm,
  185. titleTips,
  186. formRule,
  187. filesCacl,
  188. needRow,//需要编辑的数据
  189. needId,//需要的id
  190. upState,//上传文件状态
  191. ruleForm,//表单ref
  192. }
  193. }
  194. }
  195. </script>
  196. <style scoped></style>