123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <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 '@/utils'
- 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>
|