1 |
- {"version":3,"sources":["webpack:///./resources/src/components/LzForm/index.vue?0a68","webpack:///./resources/src/components/LzForm/index.vue?6710","webpack:///./resources/src/api/admin-perms.js","webpack:///./resources/src/views/admin-permissions/Form.vue?e304","webpack:///resources/src/views/admin-permissions/Form.vue","webpack:///./resources/src/views/admin-permissions/Form.vue?3cc5","webpack:///./resources/src/views/admin-permissions/Form.vue","webpack:///resources/src/components/LzForm/index.vue","webpack:///./resources/src/components/LzForm/index.vue","webpack:///./resources/src/components/LzForm/index.vue?4c9f","webpack:///./resources/src/components/LzForm/FormHelper.js"],"names":["getAdminPerms","params","axios","get","storeAdminPerm","data","post","updateAdminPerm","id","put","editAdminPerm","render","_vm","this","_h","$createElement","_c","_self","scopedSlots","_u","key","fn","proxy","attrs","ref","getData","onSubmit","form","errors","editMode","on","$event","model","value","callback","$$v","$set","expression","_l","i","minRows","staticRenderFns","name","components","LzForm","mixins","slug","http_method","http_path","methods","component","FlexSpacer","inject","view","from","default","loading","stay","props","Function","submit","Object","submitText","type","String","labelPosition","inDialog","Boolean","createdRedirect","p","length","updatedRedirect","$router","back","bind","disableRedirect","disableStay","computed","realLabelPosition","$store","state","miniWidth","created","copyMethods","Form","m","apply","$refs","arguments","onReset","resetFields","watch","$route","handler","$active","_getData","immediate","Array","isArray","defaultSlot","map","helper","replace","slot","h","options","propsData","formItem","class","style","width","directives","provide","formField","idField","resourceId","backupForm","getResourceId","formBak","JSON","parse","stringify","$data","fillForm","assignExists"],"mappings":"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","file":"js/chunk-7e4e5cb5.55dd0bca.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3084f0c4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3084f0c4&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&lang=scss&\"","import axios from '@/plugins/axios'\r\n\r\nexport function getAdminPerms(params = {}) {\r\n return axios.get('admin-permissions', {\r\n params,\r\n })\r\n}\r\n\r\nexport function storeAdminPerm(data) {\r\n return axios.post('admin-permissions', data)\r\n}\r\n\r\nexport function destroyAdminPerm(id) {\r\n return axios.delete(`admin-permissions/${id}`)\r\n}\r\n\r\nexport function updateAdminPerm(id, data) {\r\n return axios.put(`admin-permissions/${id}`, data)\r\n}\r\n\r\nexport function editAdminPerm(id) {\r\n return axios.get(`admin-permissions/${id}/edit`)\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('content-header')]},proxy:true}])},[_c('el-row',{attrs:{\"type\":\"flex\",\"justify\":\"center\"}},[_c('lz-form',{ref:\"form\",attrs:{\"get-data\":_vm.getData,\"submit\":_vm.onSubmit,\"form\":_vm.form,\"errors\":_vm.errors,\"edit-mode\":_vm.editMode},on:{\"update:form\":function($event){_vm.form=$event},\"update:errors\":function($event){_vm.errors=$event}}},[_c('el-form-item',{attrs:{\"label\":\"标识\",\"required\":\"\",\"prop\":\"slug\"}},[_c('el-input',{model:{value:(_vm.form.slug),callback:function ($$v) {_vm.$set(_vm.form, \"slug\", $$v)},expression:\"form.slug\"}})],1),_c('el-form-item',{attrs:{\"label\":\"名称\",\"required\":\"\",\"prop\":\"name\"}},[_c('el-input',{model:{value:(_vm.form.name),callback:function ($$v) {_vm.$set(_vm.form, \"name\", $$v)},expression:\"form.name\"}})],1),_c('el-form-item',{attrs:{\"label\":\"方法\",\"prop\":\"http_method\"}},[_c('el-select',{attrs:{\"clearable\":\"\",\"multiple\":\"\",\"placeholder\":\"选择请求方法\"},model:{value:(_vm.form.http_method),callback:function ($$v) {_vm.$set(_vm.form, \"http_method\", $$v)},expression:\"form.http_method\"}},_vm._l((_vm.methods),function(i){return _c('el-option',{key:i,attrs:{\"label\":i,\"value\":i}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"路径\",\"prop\":\"http_path\"}},[_c('el-input',{attrs:{\"autosize\":{ minRows: 6 },\"type\":\"textarea\"},model:{value:(_vm.form.http_path),callback:function ($$v) {_vm.$set(_vm.form, \"http_path\", $$v)},expression:\"form.http_path\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-card>\r\n <template #header>\r\n <content-header/>\r\n </template>\r\n <el-row type=\"flex\" justify=\"center\">\r\n <lz-form\r\n ref=\"form\"\r\n :get-data=\"getData\"\r\n :submit=\"onSubmit\"\r\n :form.sync=\"form\"\r\n :errors.sync=\"errors\"\r\n :edit-mode=\"editMode\"\r\n >\r\n <el-form-item label=\"标识\" required prop=\"slug\">\r\n <el-input v-model=\"form.slug\"/>\r\n </el-form-item>\r\n <el-form-item label=\"名称\" required prop=\"name\">\r\n <el-input v-model=\"form.name\"/>\r\n </el-form-item>\r\n <el-form-item label=\"方法\" prop=\"http_method\">\r\n <el-select\r\n v-model=\"form.http_method\"\r\n clearable\r\n multiple\r\n placeholder=\"选择请求方法\"\r\n >\r\n <el-option\r\n v-for=\"i in methods\"\r\n :key=\"i\"\r\n :label=\"i\"\r\n :value=\"i\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"路径\" prop=\"http_path\">\r\n <el-input :autosize=\"{ minRows: 6 }\" type=\"textarea\" v-model=\"form.http_path\"/>\r\n </el-form-item>\r\n </lz-form>\r\n </el-row>\r\n </el-card>\r\n</template>\r\n\r\n<script>\r\nimport { editAdminPerm, storeAdminPerm, updateAdminPerm } from '@/api/admin-perms'\r\nimport LzForm from '@c/LzForm'\r\nimport FormHelper from '@c/LzForm/FormHelper'\r\n\r\nexport default {\r\n name: 'Form',\r\n components: {\r\n LzForm,\r\n },\r\n mixins: [\r\n FormHelper,\r\n ],\r\n data() {\r\n return {\r\n form: {\r\n slug: '',\r\n name: '',\r\n http_method: '',\r\n http_path: '',\r\n },\r\n errors: {},\r\n methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD'],\r\n }\r\n },\r\n methods: {\r\n async getData() {\r\n if (this.editMode) {\r\n const { data } = await editAdminPerm(this.resourceId)\r\n data.http_path = data.http_path.join('\\n')\r\n this.fillForm(data)\r\n }\r\n },\r\n async onSubmit() {\r\n if (this.editMode) {\r\n await updateAdminPerm(this.resourceId, this.form)\r\n } else {\r\n await storeAdminPerm(this.form)\r\n }\r\n },\r\n },\r\n}\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Form.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Form.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Form.vue?vue&type=template&id=bd65e198&\"\nimport script from \"./Form.vue?vue&type=script&lang=js&\"\nexport * from \"./Form.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<script>\r\nimport _forIn from 'lodash/forIn'\r\nimport _get from 'lodash/get'\r\nimport Form from '@/plugins/element/components/Form'\r\nimport { getMessage, handleValidateErrors } from '@/libs/utils'\r\nimport FlexSpacer from '@c/FlexSpacer'\r\n\r\nexport default {\r\n name: 'LzForm',\r\n components: {\r\n FlexSpacer,\r\n },\r\n inject: {\r\n // 使用 FormHelper 混入,会自动提供该注入\r\n view: {\r\n from: 'view',\r\n default: null,\r\n },\r\n },\r\n data() {\r\n return {\r\n loading: false,\r\n stay: false,\r\n }\r\n },\r\n props: {\r\n getData: Function,\r\n submit: Function,\r\n errors: Object,\r\n form: Object,\r\n submitText: {\r\n type: String,\r\n default: '保存',\r\n },\r\n labelPosition: String,\r\n inDialog: Boolean,\r\n createdRedirect: {\r\n type: [String, Function],\r\n default() {\r\n const p = this.$route.path.split('/')\r\n return '/' + (p[p.length - 2] || '')\r\n },\r\n },\r\n updatedRedirect: {\r\n type: [String, Function],\r\n default() {\r\n return this.$router.back.bind(this.$router)\r\n },\r\n },\r\n disableRedirect: Boolean,\r\n disableStay: Boolean,\r\n editMode: Boolean,\r\n },\r\n computed: {\r\n realLabelPosition() {\r\n return this.labelPosition || (this.$store.state.miniWidth ? 'top' : 'right')\r\n },\r\n miniWidth() {\r\n return this.$store.state.miniWidth\r\n },\r\n },\r\n created() {\r\n this.copyMethods()\r\n },\r\n methods: {\r\n /**\r\n * 复制实际 Form 组件的方法, 给外部调用, 并把 this 指向 ElForm 实例\r\n */\r\n copyMethods() {\r\n // 原始 ElForm 和 重写的 Form\r\n [Form.extends.methods, Form.methods].forEach(methods => {\r\n _forIn(methods, (m, k) => {\r\n this[k] = function () {\r\n m.apply(this.$refs.form, arguments)\r\n }\r\n })\r\n })\r\n },\r\n async _getData() {\r\n this.loading = true\r\n this.view && this.$emit('update:form', this.view.formBak)\r\n\r\n try {\r\n this.getData && await this.getData()\r\n // 在某些情况下,会出现方法未定义,所以放到 nextTick 中\r\n this.$nextTick(() => {\r\n this.setInitialValues()\r\n })\r\n } catch (e) {\r\n Promise.reject(e)\r\n }\r\n\r\n this.loading = false\r\n },\r\n async onSubmit() {\r\n this.$emit('update:errors', {})\r\n try {\r\n this.submit && await this.submit()\r\n\r\n this.$message.success(getMessage(this.editMode ? 'updated' : 'created'))\r\n\r\n if (this.stay || this.disableRedirect) {\r\n return\r\n }\r\n\r\n let redirect = this.editMode ? this.updatedRedirect : this.createdRedirect\r\n if (typeof redirect === 'string') {\r\n this.$router.push(redirect)\r\n } else if (typeof redirect === 'function') {\r\n redirect()\r\n }\r\n } catch (e) {\r\n this.$emit('update:errors', handleValidateErrors(e.response))\r\n if (_get(e, 'response.status') !== 422) {\r\n Promise.reject(e)\r\n }\r\n }\r\n },\r\n onReset() {\r\n this.$refs.form.resetFields()\r\n },\r\n },\r\n watch: {\r\n $route: {\r\n handler() {\r\n this.$active && this._getData()\r\n },\r\n immediate: true,\r\n },\r\n },\r\n render(h) {\r\n let defaultSlot = this.$slots.default\r\n if (Array.isArray(defaultSlot)) {\r\n defaultSlot = defaultSlot.map((formItem) => {\r\n const options = formItem.componentOptions\r\n\r\n // 如果有 helper props,则生成一个新的 FormItem 替换掉原来的\r\n let { helper, label } = options.propsData\r\n if (helper) {\r\n helper = helper.replace(/\\n/g, '<br>')\r\n const labelSlot = h('template', {\r\n slot: 'label',\r\n }, [\r\n (<span>{label}</span>),\r\n (\r\n <el-tooltip\r\n effect=\"dark\"\r\n placement=\"top-start\"\r\n popper-class={`form-helper-popper ${this.miniWidth ? 'mini-width' : ''}`}\r\n >\r\n <div slot=\"content\" domPropsInnerHTML={helper}/>\r\n <i class=\"ml-1 el-icon-question helper\"/>\r\n </el-tooltip>\r\n ),\r\n ])\r\n return h('el-form-item', {\r\n props: options.propsData,\r\n }, [labelSlot, ...options.children])\r\n } else {\r\n return formItem\r\n }\r\n })\r\n }\r\n\r\n const stayCheckbox = !this.disableStay && (\r\n <el-checkbox\r\n vModel={this.stay}\r\n title=\"表单提交后,留在此页\"\r\n >\r\n 留在此页\r\n </el-checkbox>\r\n )\r\n\r\n const footerSlot = this.$slots.footer || (\r\n <el-form-item class=\"footer\">\r\n <loading-action type=\"primary\" action={this.onSubmit}>{this.submitText}</loading-action>\r\n <el-button vOn:click={this.onReset}>重置</el-button>\r\n {this.$slots.footerAppend}\r\n <flex-spacer/>\r\n\r\n </el-form-item>\r\n )\r\n\r\n // 用 jsx,ElForm 组件的 model props 传不进去,,,\r\n return h('el-form', {\r\n props: {\r\n model: this.form,\r\n errors: this.errors,\r\n labelPosition: this.realLabelPosition,\r\n ...this.$attrs,\r\n },\r\n on: {\r\n ...this.$listeners,\r\n },\r\n class: {\r\n 'in-dialog': this.inDialog,\r\n },\r\n style: {\r\n width: this.inDialog ? 'auto' : '800px',\r\n },\r\n directives: [\r\n {\r\n name: 'loading',\r\n value: this.loading,\r\n },\r\n ],\r\n ref: 'form',\r\n }, [defaultSlot, footerSlot])\r\n },\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@import '~element-ui/packages/theme-chalk/src/common/var';\r\n\r\n.footer {\r\n /deep/ {\r\n .el-form-item__content {\r\n display: flex;\r\n }\r\n }\r\n}\r\n\r\n.in-dialog {\r\n .footer {\r\n text-align: right;\r\n margin-bottom: 0;\r\n }\r\n}\r\n\r\n.helper {\r\n color: $--color-primary;\r\n border: 2px solid transparent;\r\n border-radius: 50%;\r\n transition: border-color .3s;\r\n\r\n &:hover {\r\n border-color: $--color-primary-light-1;\r\n }\r\n}\r\n</style>\r\n\r\n<style lang=\"scss\">\r\n.form-helper-popper {\r\n max-width: 400px;\r\n\r\n &.mini-width {\r\n max-width: 90%;\r\n }\r\n}\r\n</style>\r\n","var render, staticRenderFns\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3084f0c4&scoped=true&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3084f0c4\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { assignExists } from '@/libs/utils'\r\n\r\nexport default {\r\n provide() {\r\n return {\r\n view: this,\r\n }\r\n },\r\n data() {\r\n return {\r\n /**\r\n * 保存表单数据的键名\r\n */\r\n formField: 'form',\r\n /**\r\n * 编辑时,路由中的动态值\r\n */\r\n idField: 'id',\r\n }\r\n },\r\n computed: {\r\n editMode() {\r\n return !!this.resourceId\r\n },\r\n resourceId() {\r\n return this.$route.params[this.idField]\r\n },\r\n },\r\n created() {\r\n this.backupForm()\r\n },\r\n methods: {\r\n getResourceId(key = 'id') {\r\n return this.$route.params[key]\r\n },\r\n /**\r\n * 备份表单原始数据,路由切换时,用来重置表单\r\n */\r\n backupForm() {\r\n this.formBak = JSON.parse(JSON.stringify(this.$data[this.formField]))\r\n },\r\n /**\r\n * 填充表单数据\r\n *\r\n * @param data\r\n */\r\n fillForm(data) {\r\n this.$data[this.formField] = assignExists(this.$data[this.formField], data)\r\n },\r\n },\r\n}\r\n"],"sourceRoot":""}
|