| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <template>
- <div>
- <el-dialog
- v-bind="$attrs"
- title="外部资源引用"
- width="600px"
- :close-on-click-modal="false"
- v-on="$listeners"
- @open="onOpen"
- @close="onClose"
- >
- <el-input
- v-for="(item, index) in resources"
- :key="index"
- v-model="resources[index]"
- class="url-item"
- placeholder="请输入 css 或 js 资源路径"
- prefix-icon="el-icon-link"
- clearable
- >
- <el-button
- slot="append"
- icon="el-icon-delete"
- @click="deleteOne(index)"
- />
- </el-input>
- <el-button-group class="add-item">
- <el-button
- plain
- @click="addOne('https://lib.baomitu.com/jquery/1.8.3/jquery.min.js')"
- >
- jQuery1.8.3
- </el-button>
- <el-button plain @click="addOne('https://unpkg.com/http-vue-loader')">
- http-vue-loader
- </el-button>
- <el-button icon="el-icon-circle-plus-outline" plain @click="addOne('')">
- 添加其他
- </el-button>
- </el-button-group>
- <div slot="footer">
- <el-button @click="close"> 取消 </el-button>
- <el-button type="primary" @click="handelConfirm"> 确定 </el-button>
- </div>
- </el-dialog>
- </div>
- </template>
- <script>
- import { deepClone } from '@/components/FormGenerator/utils/index';
- export default {
- components: {},
- inheritAttrs: false,
- props: ['originResource'],
- data() {
- return {
- resources: null
- };
- },
- computed: {},
- watch: {},
- created() {},
- mounted() {},
- methods: {
- onOpen() {
- this.resources = this.originResource.length
- ? deepClone(this.originResource)
- : [''];
- },
- onClose() {},
- close() {
- this.$emit('update:visible', false);
- },
- handelConfirm() {
- const results = this.resources.filter((item) => !!item) || [];
- this.$emit('save', results);
- this.close();
- if (results.length) {
- this.resources = results;
- }
- },
- deleteOne(index) {
- this.resources.splice(index, 1);
- },
- addOne(url) {
- if (this.resources.indexOf(url) > -1) {
- this.$message('资源已存在');
- } else {
- this.resources.push(url);
- }
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .add-item {
- margin-top: 8px;
- }
- .url-item {
- margin-bottom: 12px;
- }
- </style>
|