v-viewer转化成cdn文件,优化包
@@ -1,4 +1,4 @@
|
|||||||
import { markNodeData, NODE_KEY } from './util';
|
import {markNodeData} from './util';
|
||||||
import objectAssign from './merge';
|
import objectAssign from './merge';
|
||||||
|
|
||||||
const getPropertyFromData = function (node, prop) {
|
const getPropertyFromData = function (node, prop) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import Node from "./node";
|
import Node from "./node";
|
||||||
import { getNodeKey } from "./util";
|
import {getNodeKey} from "./util";
|
||||||
|
|
||||||
export default class TreeStore {
|
export default class TreeStore {
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
this.currentNode = null;
|
this.currentNode = null;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg width="128px" height="128px" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="128px" height="128px" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||||
<title>编组 3</title>
|
<title>编组 3</title>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient x1="100%" y1="0%" x2="0%" y2="100%" id="linearGradient-1">
|
<linearGradient x1="100%" y1="0%" x2="0%" y2="100%" id="linearGradient-1">
|
||||||
@@ -31,4 +31,4 @@
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg width="280px" height="218px" viewBox="0 0 280 218" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="280px" height="218px" viewBox="0 0 280 218" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||||
<title>编组备份 3</title>
|
<title>编组备份 3</title>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient x1="100%" y1="37.8854658%" x2="1.48868591%" y2="37.8854658%" id="linearGradient-1">
|
<linearGradient x1="100%" y1="37.8854658%" x2="1.48868591%" y2="37.8854658%" id="linearGradient-1">
|
||||||
@@ -55,4 +55,4 @@
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.3 KiB |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg width="214px" height="164px" viewBox="0 0 214 164" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="214px" height="164px" viewBox="0 0 214 164" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||||
<title>编组备份 4</title>
|
<title>编组备份 4</title>
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient x1="100%" y1="37.8854658%" x2="1.48868591%" y2="37.8854658%" id="linearGradient-1">
|
<linearGradient x1="100%" y1="37.8854658%" x2="1.48868591%" y2="37.8854658%" id="linearGradient-1">
|
||||||
@@ -55,4 +55,4 @@
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.4 KiB |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg width="480px" height="124px" viewBox="0 0 480 124" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="480px" height="124px" viewBox="0 0 480 124" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||||
<title>矩形</title>
|
<title>矩形</title>
|
||||||
<defs>
|
<defs>
|
||||||
<radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="219.598516%" gradientTransform="translate(0.500000,0.500000),scale(0.258333,1.000000),scale(1.000000,1.764370),translate(-0.500000,-0.500000)" id="radialGradient-1">
|
<radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="219.598516%" gradientTransform="translate(0.500000,0.500000),scale(0.258333,1.000000),scale(1.000000,1.764370),translate(-0.500000,-0.500000)" id="radialGradient-1">
|
||||||
@@ -12,4 +12,4 @@
|
|||||||
<polygon id="矩形" points="56 214 504 214 520 226 520 326 504 338 56 338 40 326 40 226"></polygon>
|
<polygon id="矩形" points="56 214 504 214 520 226 520 326 504 338 56 338 40 326 40 226"></polygon>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 993 B After Width: | Height: | Size: 951 B |
@@ -23,6 +23,8 @@
|
|||||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||||
"@jiaminghi/data-view": "^2.10.0",
|
"@jiaminghi/data-view": "^2.10.0",
|
||||||
"@logicflow/core": "^1.2.1",
|
"@logicflow/core": "^1.2.1",
|
||||||
|
"ag-grid-community": "^31.0.2",
|
||||||
|
"ag-grid-vue": "^31.0.2",
|
||||||
"bin-ace-editor": "^3.2.0",
|
"bin-ace-editor": "^3.2.0",
|
||||||
"dayjs": "^1.8.35",
|
"dayjs": "^1.8.35",
|
||||||
"dui": "^2.0.0",
|
"dui": "^2.0.0",
|
||||||
@@ -61,7 +63,6 @@
|
|||||||
"sass": "~1.32.6",
|
"sass": "~1.32.6",
|
||||||
"sass-loader": "^7.3.1",
|
"sass-loader": "^7.3.1",
|
||||||
"uglifyjs-webpack-plugin": "^2.2.0",
|
"uglifyjs-webpack-plugin": "^2.2.0",
|
||||||
"v-viewer": "^1.6.4",
|
|
||||||
"vue": "^2.7.14",
|
"vue": "^2.7.14",
|
||||||
"vue-router": "^3.3.4",
|
"vue-router": "^3.3.4",
|
||||||
"vue-template-compiler": "^2.7.14",
|
"vue-template-compiler": "^2.7.14",
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
<config-item label="数据类型">
|
<config-item label="数据类型">
|
||||||
<ai-select v-model="source.dataType" placeholder="请选择数据类型" :select-list="dataTypes"/>
|
<ai-select v-model="source.dataType" placeholder="请选择数据类型" :select-list="dataTypes"/>
|
||||||
</config-item>
|
</config-item>
|
||||||
|
<config-item label="静态数据" v-if="source.dataType === 'staticData'">
|
||||||
|
</config-item>
|
||||||
<div class="codeEditor" v-if="['htmlData','staticData'].includes(source.dataType)">
|
<div class="codeEditor" v-if="['htmlData','staticData'].includes(source.dataType)">
|
||||||
<ai-dialog-btn :modal="false" dialog-title="编辑器" :customFooter="false"
|
<ai-dialog-btn :modal="false" dialog-title="编辑器" :customFooter="false"
|
||||||
@confirm="changeData(JSON.parse(content))" @open="content=contentstr">
|
@confirm="changeData(JSON.parse(content))" @open="content=contentstr">
|
||||||
|
|||||||
23
packages/bigscreen/designer/components/tableEditor.vue
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<script>
|
||||||
|
import {AgGridVue} from "ag-grid-vue";
|
||||||
|
import "ag-grid-community/styles/ag-grid.min.css"
|
||||||
|
import "ag-grid-community/styles/ag-theme-balham.min.css"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "tableEditor",
|
||||||
|
props: {
|
||||||
|
tableData: {default: () => []},
|
||||||
|
configs: {default: () => []}
|
||||||
|
},
|
||||||
|
components: {AgGridVue},
|
||||||
|
computed: {
|
||||||
|
columns: v => v.configs
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<section class="tableEditor">
|
||||||
|
<ag-grid-vue class="ag-theme-balham" :columnDefs="columns" :rowData="tableData"/>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
@@ -7,18 +7,18 @@
|
|||||||
<ai-search-bar>
|
<ai-search-bar>
|
||||||
<template #left>
|
<template #left>
|
||||||
<ai-select
|
<ai-select
|
||||||
v-model="search.type"
|
v-model="search.type"
|
||||||
@change="search.current = 1, getList()"
|
@change="search.current = 1, getList()"
|
||||||
placeholder="请选择相册主题"
|
placeholder="请选择相册主题"
|
||||||
:selectList="dict.getDict('villagePictureAlbumType')">
|
:selectList="dict.getDict('villagePictureAlbumType')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="search.timeTag"
|
v-model="search.timeTag"
|
||||||
type="month"
|
type="month"
|
||||||
size="small"
|
size="small"
|
||||||
@change="search.current = 1, getList()"
|
@change="search.current = 1, getList()"
|
||||||
value-format="yyyy-MM"
|
value-format="yyyy-MM"
|
||||||
placeholder="请选择日期">
|
placeholder="请选择日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</template>
|
</template>
|
||||||
</ai-search-bar>
|
</ai-search-bar>
|
||||||
@@ -41,17 +41,17 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="list-item__operate">
|
<div class="list-item__operate">
|
||||||
<el-button
|
<el-button
|
||||||
type="text"
|
type="text"
|
||||||
icon="iconfont iconExported"
|
icon="iconfont iconExported"
|
||||||
class="list-item__operate--item"
|
class="list-item__operate--item"
|
||||||
@click="downloadImg(item.url, dict.getLabel('villagePictureAlbumType', item.type))">
|
@click="downloadImg(item.url, dict.getLabel('villagePictureAlbumType', item.type))">
|
||||||
下载
|
下载
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
@click="remove(item.id)"
|
@click="remove(item.id)"
|
||||||
type="text"
|
type="text"
|
||||||
icon="iconfont iconDelete"
|
icon="iconfont iconDelete"
|
||||||
class="list-item__operate--item">
|
class="list-item__operate--item">
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -66,473 +66,473 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import {mapState} from 'vuex'
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'FormList',
|
name: 'FormList',
|
||||||
props: {
|
props: {
|
||||||
instance: Function,
|
instance: Function,
|
||||||
dict: Object,
|
dict: Object,
|
||||||
areaId: String
|
areaId: String
|
||||||
},
|
},
|
||||||
|
|
||||||
data () {
|
data() {
|
||||||
return {
|
return {
|
||||||
search: {
|
search: {
|
||||||
current: 1,
|
current: 1,
|
||||||
areaId: '',
|
areaId: '',
|
||||||
size: 1000000,
|
size: 1000000,
|
||||||
type: '',
|
type: '',
|
||||||
timeTag: ''
|
timeTag: ''
|
||||||
},
|
},
|
||||||
isShowAdd: false,
|
isShowAdd: false,
|
||||||
form: {
|
form: {},
|
||||||
},
|
list: [],
|
||||||
list: [],
|
total: 0,
|
||||||
total: 0,
|
loading: false,
|
||||||
loading: false,
|
id: '',
|
||||||
id: '',
|
disabledLevel: 0
|
||||||
disabledLevel: 0
|
}
|
||||||
}
|
},
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['user']),
|
...mapState(['user']),
|
||||||
|
|
||||||
imgList () {
|
imgList() {
|
||||||
return this.list.map(v => v.url)
|
return this.list.map(v => v.url)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
created () {
|
created() {
|
||||||
|
this.loading = true
|
||||||
|
this.disabledLevel = this.user.info.areaList.length - 1
|
||||||
|
this.search.areaId = this.user.info.areaId
|
||||||
|
this.dict.load(['villagePictureAlbumType']).then(() => {
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
changeArea() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
this.disabledLevel = this.user.info.areaList.length - 1
|
this.search.current = 1
|
||||||
this.search.areaId = this.user.info.areaId
|
|
||||||
this.dict.load(['villagePictureAlbumType']).then(() => {
|
this.$nextTick(() => {
|
||||||
this.getList()
|
this.getList()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
prevImg(index) {
|
||||||
changeArea () {
|
const viewer = this.$el.querySelector('.images').$viewer
|
||||||
this.loading = true
|
viewer.view(index)
|
||||||
this.search.current = 1
|
},
|
||||||
|
|
||||||
this.$nextTick(() => {
|
getList() {
|
||||||
this.getList()
|
this.instance.post(`/app/appvillagepicturealbum/list`, null, {
|
||||||
})
|
params: {
|
||||||
},
|
...this.search
|
||||||
|
|
||||||
prevImg (index) {
|
|
||||||
const viewer = this.$el.querySelector('.images').$viewer
|
|
||||||
viewer.view(index)
|
|
||||||
},
|
|
||||||
|
|
||||||
getList () {
|
|
||||||
this.instance.post(`/app/appvillagepicturealbum/list`, null, {
|
|
||||||
params: {
|
|
||||||
...this.search
|
|
||||||
}
|
|
||||||
}).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.list = res.data.records
|
|
||||||
this.total = res.data.total
|
|
||||||
this.loading = false
|
|
||||||
} else {
|
|
||||||
this.loading = false
|
|
||||||
}
|
|
||||||
}).catch(() => {
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
remove (id) {
|
|
||||||
this.$confirm('确定删除该相片?').then(() => {
|
|
||||||
this.instance.post(`/app/appvillagepicturealbum/delete?ids=${id}`).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.$message.success('删除成功!')
|
|
||||||
this.getList()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
downloadImg (url, name) {
|
|
||||||
let image = new Image()
|
|
||||||
image.setAttribute('crossOrigin', 'anonymous')
|
|
||||||
image.onload = function() {
|
|
||||||
let canvas = document.createElement('canvas')
|
|
||||||
canvas.width = image.width
|
|
||||||
canvas.height = image.height
|
|
||||||
let context = canvas.getContext('2d')
|
|
||||||
context.drawImage(image, 0, 0, image.width, image.height)
|
|
||||||
let url = canvas.toDataURL("image/png")
|
|
||||||
let a = document.createElement("a")
|
|
||||||
let event = new MouseEvent("click")
|
|
||||||
a.download = name
|
|
||||||
a.href = url
|
|
||||||
a.dispatchEvent(event)
|
|
||||||
}
|
}
|
||||||
image.src = url
|
}).then(res => {
|
||||||
},
|
if (res.code == 0) {
|
||||||
|
this.list = res.data.records
|
||||||
|
this.total = res.data.total
|
||||||
|
this.loading = false
|
||||||
|
} else {
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
toStop (id) {
|
remove(id) {
|
||||||
this.$confirm('确定停止该表单?').then(() => {
|
this.$confirm('确定删除该相片?').then(() => {
|
||||||
this.instance.post(`/app/appquestionnairetemplate/stopRelease?id=${id}`).then(res => {
|
this.instance.post(`/app/appvillagepicturealbum/delete?ids=${id}`).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code == 0) {
|
||||||
this.$message.success('停止成功!')
|
this.$message.success('删除成功!')
|
||||||
this.getList()
|
this.getList()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
downloadImg(url, name) {
|
||||||
|
let image = new Image()
|
||||||
|
image.setAttribute('crossOrigin', 'anonymous')
|
||||||
|
image.onload = function () {
|
||||||
|
let canvas = document.createElement('canvas')
|
||||||
|
canvas.width = image.width
|
||||||
|
canvas.height = image.height
|
||||||
|
let context = canvas.getContext('2d')
|
||||||
|
context.drawImage(image, 0, 0, image.width, image.height)
|
||||||
|
let url = canvas.toDataURL("image/png")
|
||||||
|
let a = document.createElement("a")
|
||||||
|
let event = new MouseEvent("click")
|
||||||
|
a.download = name
|
||||||
|
a.href = url
|
||||||
|
a.dispatchEvent(event)
|
||||||
|
}
|
||||||
|
image.src = url
|
||||||
|
},
|
||||||
|
|
||||||
|
toStop(id) {
|
||||||
|
this.$confirm('确定停止该表单?').then(() => {
|
||||||
|
this.instance.post(`/app/appquestionnairetemplate/stopRelease?id=${id}`).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success('停止成功!')
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
showShare(info, isPreview) {
|
||||||
|
this.loading = true
|
||||||
|
this.info = info
|
||||||
|
|
||||||
|
this.instance.post(`/app/appquestionnairetemplate/queryQrCode?id=${info.id}`).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.info.linkUrl = res.data.linkUrl
|
||||||
|
this.info.qrCodeUrl = res.data.qrCodeUrl
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (isPreview) {
|
||||||
|
this.isShowPreview = true
|
||||||
|
this.info.linkUrl = `${res.data.linkUrl}&preview=true#form`
|
||||||
|
} else {
|
||||||
|
this.isShowSuccess = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
},
|
|
||||||
|
|
||||||
showShare (info, isPreview) {
|
this.loading = false
|
||||||
this.loading = true
|
}).catch(() => {
|
||||||
this.info = info
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
this.instance.post(`/app/appquestionnairetemplate/queryQrCode?id=${info.id}`).then(res => {
|
toAdd(id) {
|
||||||
if (res.code == 0) {
|
this.$emit('change', {
|
||||||
this.info.linkUrl = res.data.linkUrl
|
type: 'add',
|
||||||
this.info.qrCodeUrl = res.data.qrCodeUrl
|
params: {
|
||||||
|
id
|
||||||
this.$nextTick(() => {
|
}
|
||||||
if (isPreview) {
|
})
|
||||||
this.isShowPreview = true
|
|
||||||
this.info.linkUrl = `${res.data.linkUrl}&preview=true#form`
|
|
||||||
} else {
|
|
||||||
this.isShowSuccess = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
this.loading = false
|
|
||||||
}).catch(() => {
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
toAdd (id) {
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'add',
|
|
||||||
params: {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.list {
|
.list {
|
||||||
:deep( .ai-list__content ){
|
:deep( .ai-list__content ) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.ai-list__content--right {
|
|
||||||
width: 100%!important;
|
|
||||||
|
|
||||||
.ai-list__content--right-wrapper {
|
.ai-list__content--right {
|
||||||
padding: 0!important;
|
width: 100% !important;
|
||||||
background: transparent!important;
|
|
||||||
box-shadow: none!important;
|
.ai-list__content--right-wrapper {
|
||||||
}
|
padding: 0 !important;
|
||||||
|
background: transparent !important;
|
||||||
|
box-shadow: none !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
:deep(.el-pager ){
|
}
|
||||||
li.active + li {
|
|
||||||
border-left: 1px solid #D0D4DC;
|
:deep(.el-pager ) {
|
||||||
}
|
li.active + li {
|
||||||
|
border-left: 1px solid #D0D4DC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.newPagination {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 64px;
|
||||||
|
padding: 0 40px !important;
|
||||||
|
|
||||||
|
.el-pagination {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.newPagination {
|
:deep( .el-pager li.active ) {
|
||||||
width: 100%;
|
background-color: #fff !important;
|
||||||
|
color: #2266FF !important;
|
||||||
|
border-color: #2266FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep( .el-pager li ) {
|
||||||
|
background-color: #fff;
|
||||||
|
border: solid 1px #d0d4dc;
|
||||||
|
margin-left: 8px;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
line-height: 26px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paginationPre {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
height: 28px;
|
||||||
|
line-height: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 64px;
|
|
||||||
padding: 0 40px!important;
|
|
||||||
|
|
||||||
.el-pagination {
|
.pagination-btns {
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
:deep( .el-pager li.active ){
|
|
||||||
background-color: #fff !important;
|
|
||||||
color: #2266FF !important;
|
|
||||||
border-color: #2266FF;
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep( .el-pager li ){
|
|
||||||
background-color: #fff;
|
|
||||||
border: solid 1px #d0d4dc;
|
|
||||||
margin-left: 8px;
|
|
||||||
border-radius: 4px !important;
|
|
||||||
line-height: 26px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paginationPre {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 28px;
|
|
||||||
line-height: 1;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: normal;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
color: #2266FF !important;
|
||||||
|
|
||||||
.pagination-btns {
|
:deep( span), :deep( div ) {
|
||||||
display: flex;
|
font-size: 12px;
|
||||||
align-items: center;
|
cursor: pointer;
|
||||||
gap: 8px;
|
|
||||||
color: #2266FF !important;
|
color: #2266FF !important;
|
||||||
|
|
||||||
:deep( span), :deep( div ){
|
&:hover {
|
||||||
font-size: 12px;
|
opacity: 0.8;
|
||||||
cursor: pointer;
|
|
||||||
color: #2266FF !important;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.paginationPre-total {
|
.paginationPre-total {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #555;
|
color: #555;
|
||||||
|
|
||||||
label {
|
label {
|
||||||
padding: 0 2px;
|
padding: 0 2px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
& > * + * {
|
& > * + * {
|
||||||
margin-left: 24px;
|
margin-left: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .el-pagination button), .el-pagination span:not([class*=suffix]) {
|
:deep( .el-pagination button), .el-pagination span:not([class*=suffix]) {
|
||||||
|
line-height: 1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-checkbox ) {
|
||||||
|
padding-left: 14px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.el-checkbox__input, .el-checkbox__inner {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
min-width: 0 !important;
|
||||||
line-height: 1 !important;
|
line-height: 1 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-checkbox ){
|
.el-checkbox__label {
|
||||||
padding-left: 14px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.el-checkbox__input, .el-checkbox__inner {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
min-width: 0 !important;
|
|
||||||
line-height: 1 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-checkbox__label {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #222222;
|
|
||||||
height: auto !important;
|
|
||||||
line-height: 1 !important;
|
|
||||||
padding-left: 3px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-list__list {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
margin-top: 8px;
|
|
||||||
|
|
||||||
.list-item {
|
|
||||||
display: flex;
|
|
||||||
position: relative;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
padding: 18px 16px 16px;
|
|
||||||
|
|
||||||
.list-item__img {
|
|
||||||
width: 100%;
|
|
||||||
height: 140px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 100%;
|
|
||||||
height: 140px;
|
|
||||||
object-fit: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
.list-item__operate {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-item__operate {
|
|
||||||
display: none;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
z-index: 1;
|
|
||||||
width: 100%;
|
|
||||||
height: 52px;
|
|
||||||
text-align: center;
|
|
||||||
background: #F7F8FA;
|
|
||||||
|
|
||||||
& > div {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep( .el-button ){
|
|
||||||
margin-left: 0;
|
|
||||||
padding: 0;
|
|
||||||
i {
|
|
||||||
color: #8899BB;
|
|
||||||
font-size: 14px;
|
|
||||||
transition: all 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-button + .el-button {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
margin-left: 0;
|
|
||||||
color: #555555;
|
|
||||||
font-size: 12px;
|
|
||||||
transition: all 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
&.is-disabled {
|
|
||||||
i {
|
|
||||||
color: #8899BB;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
color: #555555;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-item__operate--item {
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
:deep( i), :deep( span ){
|
|
||||||
color: #2266FF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-item__bottom {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
color: #888888;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
color: #222222;
|
||||||
i {
|
height: auto !important;
|
||||||
font-style: normal;
|
line-height: 1 !important;
|
||||||
}
|
padding-left: 3px !important;
|
||||||
|
|
||||||
.left {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.tag {
|
|
||||||
height: 26px;
|
|
||||||
line-height: 26px;
|
|
||||||
margin-right: 8px;
|
|
||||||
padding: 0 6px;
|
|
||||||
border-radius: 4px;
|
|
||||||
background: #42D784;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
line-height: 22px;
|
|
||||||
color: #333333;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-item__user {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 12px;
|
|
||||||
color: #888888;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 20px;
|
|
||||||
|
|
||||||
& > div:first-child {
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-item__title {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 14px;
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
color: #2EA222;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
width: 64px;
|
|
||||||
height: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-add {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-direction: column;
|
|
||||||
padding: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
span {
|
|
||||||
font-size: 32px;
|
|
||||||
color: #8899bb;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
color: #555555;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: 0.6;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& > div {
|
|
||||||
width: calc((100% - 60px) / 4);
|
|
||||||
height: 216px;
|
|
||||||
margin: 0 20px 20px 0;
|
|
||||||
background: #FFFFFF;
|
|
||||||
box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.05);
|
|
||||||
border-radius: 2px;
|
|
||||||
|
|
||||||
&:nth-of-type(4n) {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-list__list {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 8px;
|
||||||
|
|
||||||
|
.list-item {
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
padding: 18px 16px 16px;
|
||||||
|
|
||||||
|
.list-item__img {
|
||||||
|
width: 100%;
|
||||||
|
height: 140px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 140px;
|
||||||
|
object-fit: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.list-item__operate {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item__operate {
|
||||||
|
display: none;
|
||||||
|
align-items: center;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 1;
|
||||||
|
width: 100%;
|
||||||
|
height: 52px;
|
||||||
|
text-align: center;
|
||||||
|
background: #F7F8FA;
|
||||||
|
|
||||||
|
& > div {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep( .el-button ) {
|
||||||
|
margin-left: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
i {
|
||||||
|
color: #8899BB;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button + .el-button {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin-left: 0;
|
||||||
|
color: #555555;
|
||||||
|
font-size: 12px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
&.is-disabled {
|
||||||
|
i {
|
||||||
|
color: #8899BB;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: #555555;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item__operate--item {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
:deep( i), :deep( span ) {
|
||||||
|
color: #2266FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item__bottom {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
color: #888888;
|
||||||
|
font-size: 12px;
|
||||||
|
|
||||||
|
i {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.tag {
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
margin-right: 8px;
|
||||||
|
padding: 0 6px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #42D784;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height: 22px;
|
||||||
|
color: #333333;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item__user {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 12px;
|
||||||
|
color: #888888;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 20px;
|
||||||
|
|
||||||
|
& > div:first-child {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item__title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #2EA222;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
width: 64px;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-add {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 32px;
|
||||||
|
color: #8899bb;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #555555;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& > div {
|
||||||
|
width: calc((100% - 60px) / 4);
|
||||||
|
height: 216px;
|
||||||
|
margin: 0 20px 20px 0;
|
||||||
|
background: #FFFFFF;
|
||||||
|
box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.05);
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
&:nth-of-type(4n) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -47,28 +47,28 @@
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="value" v-else>-</span></el-form-item>
|
<span class="value" v-else>-</span></el-form-item>
|
||||||
<!-- <ai-title title="附件" isShowBottomBorder>-->
|
<!-- <ai-title title="附件" isShowBottomBorder>-->
|
||||||
<!-- <template #rightBtn>-->
|
<!-- <template #rightBtn>-->
|
||||||
<!-- <el-button type="text" icon="iconfont iconDownload" @click="downLoadAll">下载全部</el-button>-->
|
<!-- <el-button type="text" icon="iconfont iconDownload" @click="downLoadAll">下载全部</el-button>-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- </ai-title>-->
|
<!-- </ai-title>-->
|
||||||
<!-- <el-form-item label-width="0">-->
|
<!-- <el-form-item label-width="0">-->
|
||||||
<!-- <div v-if="obj.annex.length">-->
|
<!-- <div v-if="obj.annex.length">-->
|
||||||
<!-- <div class="flie" v-for="(item, index) in obj.annex" :key="index"-->
|
<!-- <div class="flie" v-for="(item, index) in obj.annex" :key="index"-->
|
||||||
<!-- @click="downFile(item)">-->
|
<!-- @click="downFile(item)">-->
|
||||||
<!-- <p>-->
|
<!-- <p>-->
|
||||||
<!-- <svg aria-hidden="true" style="width:24px;height:24px;">-->
|
<!-- <svg aria-hidden="true" style="width:24px;height:24px;">-->
|
||||||
<!-- <use xlink:href="#iconAppendix_UNdownload"></use>-->
|
<!-- <use xlink:href="#iconAppendix_UNdownload"></use>-->
|
||||||
<!-- </svg>-->
|
<!-- </svg>-->
|
||||||
<!-- <span>{{ item.name }}</span>-->
|
<!-- <span>{{ item.name }}</span>-->
|
||||||
<!-- </p>-->
|
<!-- </p>-->
|
||||||
<!-- <span style="color:#999;">{{ (item.size / 1024).toFixed(2) + "KB" }}-->
|
<!-- <span style="color:#999;">{{ (item.size / 1024).toFixed(2) + "KB" }}-->
|
||||||
<!-- <span class="iconfont iconDownload" style="color:#5088FF"></span>-->
|
<!-- <span class="iconfont iconDownload" style="color:#5088FF"></span>-->
|
||||||
<!-- </span>-->
|
<!-- </span>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
<!-- <div class="no-data" style="height:160px;width:100%;" v-else></div>-->
|
<!-- <div class="no-data" style="height:160px;width:100%;" v-else></div>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<ai-title title="人员信息" isShowBottomBorder/>
|
<ai-title title="人员信息" isShowBottomBorder/>
|
||||||
<el-form-item label="与会组织">{{ arrLabel(obj.appThreeMeetingOrganizationList, 'name') }}</el-form-item>
|
<el-form-item label="与会组织">{{ arrLabel(obj.appThreeMeetingOrganizationList, 'name') }}</el-form-item>
|
||||||
<el-form-item label="主持人">{{ arrLabel(obj.hostList, 'userName') }}</el-form-item>
|
<el-form-item label="主持人">{{ arrLabel(obj.hostList, 'userName') }}</el-form-item>
|
||||||
@@ -213,12 +213,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Vue from 'vue'
|
|
||||||
import {mapState} from "vuex";
|
import {mapState} from "vuex";
|
||||||
import moment from 'dayjs';
|
import moment from 'dayjs';
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
|
|
||||||
Vue.use(Viewer)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "meetingDetail",
|
name: "meetingDetail",
|
||||||
@@ -272,7 +268,7 @@ export default {
|
|||||||
voteConfigs() {
|
voteConfigs() {
|
||||||
return [
|
return [
|
||||||
{label: "人员姓名", prop: "userName", align: 'center'},
|
{label: "人员姓名", prop: "userName", align: 'center'},
|
||||||
{label: "投票选项", prop: "myVote", format: v => v ? (v === '1' ? '同意' : '不同意') : '-' },
|
{label: "投票选项", prop: "myVote", format: v => v ? (v === '1' ? '同意' : '不同意') : '-'},
|
||||||
{label: "投票时间", prop: "voteTime"},
|
{label: "投票时间", prop: "voteTime"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -430,7 +426,7 @@ export default {
|
|||||||
},
|
},
|
||||||
//获取会议详请
|
//获取会议详请
|
||||||
getDetailInfo() {
|
getDetailInfo() {
|
||||||
this.detail.id&& this.instance.post(`/app/appthreemeetinginfo/queryDetailById?id=${this.detail.id}`).then(res => {
|
this.detail.id && this.instance.post(`/app/appthreemeetinginfo/queryDetailById?id=${this.detail.id}`).then(res => {
|
||||||
if (res?.data) {
|
if (res?.data) {
|
||||||
res.data.annex = JSON.parse(res.data.annex);
|
res.data.annex = JSON.parse(res.data.annex);
|
||||||
res.data.meetingClassification = res.data.meetingClassification.split(',');
|
res.data.meetingClassification = res.data.meetingClassification.split(',');
|
||||||
@@ -564,7 +560,7 @@ export default {
|
|||||||
.addThreeMeeting {
|
.addThreeMeeting {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
:deep( .el-form ){
|
:deep( .el-form ) {
|
||||||
.ailist-title {
|
.ailist-title {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
@@ -579,7 +575,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.ai-detail__content--wrapper ){
|
:deep(.ai-detail__content--wrapper ) {
|
||||||
.el-form {
|
.el-form {
|
||||||
width: 1000px;
|
width: 1000px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
@@ -591,11 +587,11 @@ export default {
|
|||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .el-dialog__body ){
|
:deep( .el-dialog__body ) {
|
||||||
padding-top: 16px !important;
|
padding-top: 16px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .iconfont ){
|
:deep( .iconfont ) {
|
||||||
color: #2266FF;
|
color: #2266FF;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
@@ -680,7 +676,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .el-form-item__label ){
|
:deep( .el-form-item__label ) {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -711,7 +707,7 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .AiEchart ){
|
:deep( .AiEchart ) {
|
||||||
height: 160px;
|
height: 160px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
<ai-card title="标题信息">
|
<ai-card title="标题信息">
|
||||||
<template slot="content">
|
<template slot="content">
|
||||||
<ai-wrapper label-width="70px" :columnsNumber="1">
|
<ai-wrapper label-width="70px" :columnsNumber="1">
|
||||||
<ai-info-item label="话题标题">{{detailObj.title}}</ai-info-item>
|
<ai-info-item label="话题标题">{{ detailObj.title }}</ai-info-item>
|
||||||
<ai-info-item label="关键字" v-if="detailObj.keyWords">
|
<ai-info-item label="关键字" v-if="detailObj.keyWords">
|
||||||
<el-tag
|
<el-tag
|
||||||
v-for="tag in detailObj.keyWords.split(',')"
|
v-for="tag in detailObj.keyWords.split(',')"
|
||||||
:key="tag"
|
:key="tag"
|
||||||
effect="plain">
|
effect="plain">
|
||||||
{{tag}}
|
{{ tag }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</ai-info-item>
|
</ai-info-item>
|
||||||
<ai-info-item label="封面图片">
|
<ai-info-item label="封面图片">
|
||||||
@@ -26,14 +26,14 @@
|
|||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<ai-card class="card" v-for="(item,index) in detailObj.contents" :key="index">
|
<ai-card class="card" v-for="(item,index) in detailObj.contents" :key="index">
|
||||||
<template slot="title">{{item.question}}</template>
|
<template slot="title">{{ item.question }}</template>
|
||||||
<template slot="right">话题来源:{{item.questionSource}}</template>
|
<template slot="right">话题来源:{{ item.questionSource }}</template>
|
||||||
<template slot="content">
|
<template slot="content">
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<header>
|
<header>
|
||||||
<b>{{item.answerSource}}</b> 回复
|
<b>{{ item.answerSource }}</b> 回复
|
||||||
</header>
|
</header>
|
||||||
<p>{{item.answer}}</p>
|
<p>{{ item.answer }}</p>
|
||||||
<div v-viewer>
|
<div v-viewer>
|
||||||
<img :src="p.url"
|
<img :src="p.url"
|
||||||
v-for="(p,q) in item.files" :key="q" alt="">
|
v-for="(p,q) in item.files" :key="q" alt="">
|
||||||
@@ -47,113 +47,109 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer' ;
|
export default {
|
||||||
import Vue from 'vue' ;
|
name: "hotDetail",
|
||||||
|
label: "热点详情",
|
||||||
Vue.use(Viewer);
|
props: {
|
||||||
export default {
|
instance: Function,
|
||||||
name: "hotDetail",
|
dict: Object,
|
||||||
label: "热点详情",
|
permissions: Function,
|
||||||
props: {
|
areaId: String,
|
||||||
instance: Function,
|
detail: Object
|
||||||
dict: Object,
|
},
|
||||||
permissions: Function,
|
data() {
|
||||||
areaId: String,
|
return {
|
||||||
detail: Object
|
detailObj: {},
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
detailObj: {},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getDetail() {
|
|
||||||
this.instance.post(`/app/apphotsubject/detail`, null, {
|
|
||||||
params: {id: this.detail.id}
|
|
||||||
}).then(res => {
|
|
||||||
if (res && res.data) {
|
|
||||||
this.detailObj = res.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getDetail()
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getDetail() {
|
||||||
|
this.instance.post(`/app/apphotsubject/detail`, null, {
|
||||||
|
params: {id: this.detail.id}
|
||||||
|
}).then(res => {
|
||||||
|
if (res && res.data) {
|
||||||
|
this.detailObj = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getDetail()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.hotDetail {
|
.hotDetail {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
:deep( .aibar ){
|
:deep( .aibar ) {
|
||||||
height: 94px !important;
|
height: 94px !important;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
margin-bottom: 0px !important;
|
margin-bottom: 0px !important;
|
||||||
padding: 16px !important;
|
padding: 16px !important;
|
||||||
|
|
||||||
& > div {
|
& > div {
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #888888;
|
color: #888888;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep( .ai-card__body ){
|
|
||||||
padding: 12px 20px 22px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrap {
|
|
||||||
background-color: #F5F6F9;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 16px;
|
|
||||||
|
|
||||||
header {
|
|
||||||
height: 40px;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #222222;
|
|
||||||
line-height: 24px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border-bottom: 1px solid #EEEEEE;
|
|
||||||
|
|
||||||
b {
|
|
||||||
color: #2266FF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top: 16px;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #222222;
|
|
||||||
line-height: 32px;
|
|
||||||
text-indent: 2em;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .el-tag){
|
:deep( .ai-card__body ) {
|
||||||
background: #F3F4F7;
|
padding: 12px 20px 22px !important;
|
||||||
border-radius: 2px;
|
|
||||||
color: #222222;
|
|
||||||
border: 1px solid #D0D4DC;
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
.wrap {
|
||||||
width: 160px;
|
background-color: #F5F6F9;
|
||||||
height: 160px;
|
box-sizing: border-box;
|
||||||
border-radius: 2px;
|
padding: 16px;
|
||||||
margin-top: 16px;
|
|
||||||
margin-right: 8px;
|
header {
|
||||||
|
height: 40px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #222222;
|
||||||
|
line-height: 24px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid #EEEEEE;
|
||||||
|
|
||||||
|
b {
|
||||||
|
color: #2266FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-top: 16px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #222222;
|
||||||
|
line-height: 32px;
|
||||||
|
text-indent: 2em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep( .el-tag) {
|
||||||
|
background: #F3F4F7;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #222222;
|
||||||
|
border: 1px solid #D0D4DC;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 160px;
|
||||||
|
height: 160px;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -31,10 +31,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer';
|
|
||||||
import Vue from 'vue';
|
|
||||||
|
|
||||||
Vue.use(Viewer);
|
|
||||||
export default {
|
export default {
|
||||||
name: "newsDetail",
|
name: "newsDetail",
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@@ -29,11 +29,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "videoDetail",
|
name: "videoDetail",
|
||||||
components: {Viewer},
|
|
||||||
props: {
|
props: {
|
||||||
instance: Function,
|
instance: Function,
|
||||||
dict: Object,
|
dict: Object,
|
||||||
|
|||||||
@@ -326,10 +326,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import moment from 'dayjs'
|
import moment from 'dayjs'
|
||||||
import {mapState} from "vuex";
|
import {mapState} from "vuex";
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
|
|
||||||
Vue.use(Viewer)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "approvalDetail",
|
name: "approvalDetail",
|
||||||
|
|||||||
@@ -89,10 +89,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
// import 'viewerjs/dist/viewer.css'
|
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'messageDetail',
|
name: 'messageDetail',
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<h2 v-for="(item, index) in msgTypeList" :key="index" :class="msgType == index ? 'tab-active' : ''" @click="msgTypeClick(index)">{{item.name}}</h2>
|
<h2 v-for="(item, index) in msgTypeList" :key="index" :class="msgType == index ? 'tab-active' : ''" @click="msgTypeClick(index)">{{item.name}}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="search-content">
|
<div class="search-content">
|
||||||
<el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd"
|
<el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd"
|
||||||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onChange">
|
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onChange">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<el-input size="small" placeholder="输入搜索内容" v-model="searchMsg" clearable
|
<el-input size="small" placeholder="输入搜索内容" v-model="searchMsg" clearable
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
<video style="width: 300px; object-fit: fill;" controls :src="item.sdkFileUrl" v-if="item.msgType == 'video'"></video>
|
<video style="width: 300px; object-fit: fill;" controls :src="item.sdkFileUrl" v-if="item.msgType == 'video'"></video>
|
||||||
|
|
||||||
<ai-file-list v-if="item.msgType == 'file'"
|
<ai-file-list v-if="item.msgType == 'file'"
|
||||||
:fileList="item.files"
|
:fileList="item.files"
|
||||||
:fileOps="{ name: 'name', size: 'fileSizeStr' }"
|
:fileOps="{ name: 'name', size: 'fileSizeStr' }"
|
||||||
></ai-file-list>
|
></ai-file-list>
|
||||||
@@ -170,16 +170,11 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import AMapLoader from '@amap/amap-jsapi-loader'
|
import AMapLoader from '@amap/amap-jsapi-loader'
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer);
|
|
||||||
|
|
||||||
import html2canvas from "html2canvas";
|
import html2canvas from "html2canvas";
|
||||||
import jsPDF from "jspdf";
|
import jsPDF from "jspdf";
|
||||||
|
|
||||||
import { Loading } from "element-ui";
|
import { Loading } from "element-ui";
|
||||||
|
|
||||||
const PdfLoader = (ele, pdfFileName) => {
|
const PdfLoader = (ele, pdfFileName) => {
|
||||||
let loadingInstance = Loading.service({ fullscreen: true, text: '正在导出(请勿刷新/关闭页面)' });
|
let loadingInstance = Loading.service({ fullscreen: true, text: '正在导出(请勿刷新/关闭页面)' });
|
||||||
ele.style.fontFamily = "宋体";
|
ele.style.fontFamily = "宋体";
|
||||||
@@ -447,7 +442,7 @@
|
|||||||
this.getMsgList()
|
this.getMsgList()
|
||||||
},
|
},
|
||||||
getKeyWordList() {
|
getKeyWordList() {
|
||||||
var url = this.listInfo.seq ? `/app/appsessionarchiveinfo/listByKeywordRecord?seq=${this.listInfo.seq}`
|
var url = this.listInfo.seq ? `/app/appsessionarchiveinfo/listByKeywordRecord?seq=${this.listInfo.seq}`
|
||||||
: `/app/appsessionarchiveinfo/listByKeywordRecord?msgId=${this.params.msgId}`
|
: `/app/appsessionarchiveinfo/listByKeywordRecord?msgId=${this.params.msgId}`
|
||||||
this.instance.post(url, null, {
|
this.instance.post(url, null, {
|
||||||
params: {
|
params: {
|
||||||
@@ -545,9 +540,9 @@
|
|||||||
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
||||||
document.querySelector('.content-right-info').scrollTop = height
|
document.querySelector('.content-right-info').scrollTop = height
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@@ -606,7 +601,7 @@
|
|||||||
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
||||||
document.querySelector('.content-right-info').scrollTop = height
|
document.querySelector('.content-right-info').scrollTop = height
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
@@ -655,7 +650,7 @@
|
|||||||
},
|
},
|
||||||
openLink(row) {
|
openLink(row) {
|
||||||
document.write('<a href="" target="new"></a>');
|
document.write('<a href="" target="new"></a>');
|
||||||
window.open(row.linkUrl, "new");
|
window.open(row.linkUrl, "new");
|
||||||
},
|
},
|
||||||
cancel () {
|
cancel () {
|
||||||
this.$emit('change', {
|
this.$emit('change', {
|
||||||
@@ -878,7 +873,7 @@
|
|||||||
max-width: calc(100% - 144px);
|
max-width: calc(100% - 144px);
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: #f3f6f9;
|
background-color: #f3f6f9;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
width: 0px;
|
width: 0px;
|
||||||
height: 0px;
|
height: 0px;
|
||||||
@@ -1000,7 +995,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.item-left {
|
.item-left {
|
||||||
.item-content-flex {
|
.item-content-flex {
|
||||||
.user-img {
|
.user-img {
|
||||||
margin: 0 20px 0 0;
|
margin: 0 20px 0 0;
|
||||||
}
|
}
|
||||||
@@ -1014,7 +1009,7 @@
|
|||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.item-right {
|
.item-right {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -1042,7 +1037,7 @@
|
|||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.addressBook-left__list--wrapper::-webkit-scrollbar,
|
.addressBook-left__list--wrapper::-webkit-scrollbar,
|
||||||
|
|||||||
@@ -289,14 +289,9 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from "vuex";
|
import { mapState } from "vuex";
|
||||||
import Viewer from "v-viewer";
|
|
||||||
import AMapLoader from "@amap/amap-jsapi-loader";
|
import AMapLoader from "@amap/amap-jsapi-loader";
|
||||||
import Vue from "vue";
|
|
||||||
Vue.use(Viewer);
|
|
||||||
|
|
||||||
import html2canvas from "html2canvas";
|
import html2canvas from "html2canvas";
|
||||||
import jsPDF from "jspdf";
|
import jsPDF from "jspdf";
|
||||||
|
|
||||||
import { Loading } from "element-ui";
|
import { Loading } from "element-ui";
|
||||||
|
|
||||||
const PdfLoader = (ele, pdfFileName) => {
|
const PdfLoader = (ele, pdfFileName) => {
|
||||||
@@ -631,7 +626,7 @@ export default {
|
|||||||
var dataURL = canvas.toDataURL("image/"+ext);
|
var dataURL = canvas.toDataURL("image/"+ext);
|
||||||
return dataURL;
|
return dataURL;
|
||||||
},
|
},
|
||||||
|
|
||||||
initMap(lng, lat, zoom, mapId) {
|
initMap(lng, lat, zoom, mapId) {
|
||||||
AMapLoader.load({
|
AMapLoader.load({
|
||||||
key: "54a02a43d9828a8f9cd4f26fe281e74e",
|
key: "54a02a43d9828a8f9cd4f26fe281e74e",
|
||||||
|
|||||||
@@ -113,9 +113,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ResidentList',
|
name: 'ResidentList',
|
||||||
|
|
||||||
|
|||||||
@@ -79,9 +79,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GoodsList',
|
name: 'GoodsList',
|
||||||
|
|
||||||
|
|||||||
@@ -4,74 +4,74 @@
|
|||||||
<ai-search-bar>
|
<ai-search-bar>
|
||||||
<template slot="left">
|
<template slot="left">
|
||||||
<ai-select
|
<ai-select
|
||||||
v-model="search.goodsType"
|
v-model="search.goodsType"
|
||||||
@change="(search.current = 1), getList()"
|
@change="(search.current = 1), getList()"
|
||||||
placeholder="请选择商品类型"
|
placeholder="请选择商品类型"
|
||||||
:selectList="dict.getDict('integralSGType')">
|
:selectList="dict.getDict('integralSGType')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
<ai-select
|
<ai-select
|
||||||
v-model="search.status"
|
v-model="search.status"
|
||||||
@change="(search.current = 1), getList()"
|
@change="(search.current = 1), getList()"
|
||||||
placeholder="请选择订单状态"
|
placeholder="请选择订单状态"
|
||||||
:selectList="dict.getDict('integralSGOStatus')">
|
:selectList="dict.getDict('integralSGOStatus')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="search.startTime"
|
v-model="search.startTime"
|
||||||
type="date"
|
type="date"
|
||||||
size="small"
|
size="small"
|
||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
placeholder="选择订单开始日期"
|
placeholder="选择订单开始日期"
|
||||||
@change="search.current = 1, getList()">
|
@change="search.current = 1, getList()">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="search.endTime"
|
v-model="search.endTime"
|
||||||
type="date"
|
type="date"
|
||||||
size="small"
|
size="small"
|
||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
placeholder="选择订单结束日期"
|
placeholder="选择订单结束日期"
|
||||||
@change="search.current = 1, getList()">
|
@change="search.current = 1, getList()">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<ai-select
|
<ai-select
|
||||||
v-model="search.agentOrder"
|
v-model="search.agentOrder"
|
||||||
@change="(search.current = 1), getList()"
|
@change="(search.current = 1), getList()"
|
||||||
placeholder="是否代兑换"
|
placeholder="是否代兑换"
|
||||||
:selectList="dict.getDict('yesOrNo')">
|
:selectList="dict.getDict('yesOrNo')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
<ai-download
|
<ai-download
|
||||||
v-if="permissions('app_appintegralsupermarketorder_export')"
|
v-if="permissions('app_appintegralsupermarketorder_export')"
|
||||||
:instance="instance"
|
:instance="instance"
|
||||||
url="/app/appintegralsupermarketorder/export"
|
url="/app/appintegralsupermarketorder/export"
|
||||||
:params="search"
|
:params="search"
|
||||||
fileName="订单列表"
|
fileName="订单列表"
|
||||||
:disabled="tableData.length == 0">
|
:disabled="tableData.length == 0">
|
||||||
</ai-download>
|
</ai-download>
|
||||||
</template>
|
</template>
|
||||||
<template slot="right">
|
<template slot="right">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="search.goodsTitle"
|
v-model="search.goodsTitle"
|
||||||
class="search-input"
|
class="search-input"
|
||||||
size="small"
|
size="small"
|
||||||
v-throttle="() => {search.current = 1, getList()}"
|
v-throttle="() => {search.current = 1, getList()}"
|
||||||
placeholder="请输入商品名称、兑换人"
|
placeholder="请输入商品名称、兑换人"
|
||||||
clearable
|
clearable
|
||||||
@clear="search.current = 1, search.goodsTitle = '', getList()"
|
@clear="search.current = 1, search.goodsTitle = '', getList()"
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
</ai-search-bar>
|
</ai-search-bar>
|
||||||
<ai-table
|
<ai-table
|
||||||
style="margin-top: 8px;"
|
style="margin-top: 8px;"
|
||||||
:tableData="tableData"
|
:tableData="tableData"
|
||||||
:col-configs="colConfigs"
|
:col-configs="colConfigs"
|
||||||
:total="total"
|
:total="total"
|
||||||
:current.sync="search.current"
|
:current.sync="search.current"
|
||||||
:size.sync="search.size"
|
:size.sync="search.size"
|
||||||
@getList="getList">
|
@getList="getList">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="商品"
|
label="商品"
|
||||||
slot="goods"
|
slot="goods"
|
||||||
align="left"
|
align="left"
|
||||||
width="350">
|
width="350">
|
||||||
<template v-slot="{ row }">
|
<template v-slot="{ row }">
|
||||||
<div class="goods">
|
<div class="goods">
|
||||||
<div class="img-content">
|
<div class="img-content">
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
<!-- <span class="type type0" v-if="row.goodsType === '0'">积分兑换</span>
|
<!-- <span class="type type0" v-if="row.goodsType === '0'">积分兑换</span>
|
||||||
<span class="type type1" v-else>京东低价商品</span> -->
|
<span class="type type1" v-else>京东低价商品</span> -->
|
||||||
<span class="type" :class="`type${row.typeText}`">{{dict.getLabel('integralSGTypeText', row.typeText)}}</span>
|
<span class="type" :class="`type${row.typeText}`">{{ dict.getLabel('integralSGTypeText', row.typeText) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ row.goodsTitle }}</p>
|
<p>{{ row.goodsTitle }}</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -96,12 +96,12 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</ai-table>
|
</ai-table>
|
||||||
<ai-dialog
|
<ai-dialog
|
||||||
title="订单核销"
|
title="订单核销"
|
||||||
:visible.sync="isShow"
|
:visible.sync="isShow"
|
||||||
:destroyOnClose="true"
|
:destroyOnClose="true"
|
||||||
width="650px"
|
width="650px"
|
||||||
@onConfirm="onConfirm"
|
@onConfirm="onConfirm"
|
||||||
@close="form.verificationCode = '', id = ''">
|
@close="form.verificationCode = '', id = ''">
|
||||||
<el-form style="height: 200px" class="ai-form" ref="form" :model="form" label-width="120px">
|
<el-form style="height: 200px" class="ai-form" ref="form" :model="form" label-width="120px">
|
||||||
<el-form-item label="核销码" style="width: 100%" prop="verificationCode" :rules="[{required: true, message: '请输入核销码', trigger: 'blur'}]">
|
<el-form-item label="核销码" style="width: 100%" prop="verificationCode" :rules="[{required: true, message: '请输入核销码', trigger: 'blur'}]">
|
||||||
<el-input v-model="form.verificationCode" placeholder="请输入核销码" size="small"></el-input>
|
<el-input v-model="form.verificationCode" placeholder="请输入核销码" size="small"></el-input>
|
||||||
@@ -113,153 +113,154 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
export default {
|
||||||
import Vue from 'vue'
|
name: 'ResidentList',
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
|
||||||
name: 'ResidentList',
|
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
instance: Function,
|
instance: Function,
|
||||||
dict: Object,
|
dict: Object,
|
||||||
permissions: Function,
|
permissions: Function,
|
||||||
areaId: String,
|
areaId: String,
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
search: {
|
search: {
|
||||||
goodsType: '',
|
goodsType: '',
|
||||||
goodsTitle: '',
|
goodsTitle: '',
|
||||||
current: 1,
|
current: 1,
|
||||||
status: '',
|
status: '',
|
||||||
size: 10,
|
size: 10,
|
||||||
startTime: '',
|
startTime: '',
|
||||||
type: 1,
|
type: 1,
|
||||||
endTime: '',
|
endTime: '',
|
||||||
agentOrder: ''
|
agentOrder: ''
|
||||||
},
|
},
|
||||||
isShow: false,
|
isShow: false,
|
||||||
form: {
|
form: {
|
||||||
verificationCode: ''
|
verificationCode: ''
|
||||||
},
|
},
|
||||||
id: '',
|
id: '',
|
||||||
total: 0,
|
total: 0,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
colConfigs: [
|
colConfigs: [
|
||||||
{ prop: 'goodsSerialNumber', label: '商品ID', align: 'left' },
|
{prop: 'goodsSerialNumber', label: '商品ID', align: 'left'},
|
||||||
{ slot: 'goods', align: 'center' },
|
{slot: 'goods', align: 'center'},
|
||||||
{ prop: 'goodsType', label: '商品类型', align: 'center', format: v => this.dict.getLabel('integralSGType', v) },
|
{prop: 'goodsType', label: '商品类型', align: 'center', format: v => this.dict.getLabel('integralSGType', v)},
|
||||||
{ prop: 'quantity', label: '数量', align: 'center', format: v => `${v}` },
|
{prop: 'quantity', label: '数量', align: 'center', format: v => `${v}`},
|
||||||
{ prop: 'usedIntegral', label: '消耗积分', align: 'center' },
|
{prop: 'usedIntegral', label: '消耗积分', align: 'center'},
|
||||||
{ prop: 'payMoney', label: '兑换后再付', align: 'center' },
|
{prop: 'payMoney', label: '兑换后再付', align: 'center'},
|
||||||
{ prop: 'integralUserName', label: '兑换人', align: 'center' },
|
{prop: 'integralUserName', label: '兑换人', align: 'center'},
|
||||||
{ prop: 'agentOrder', label: '是否代兑换', align: 'center', format: v => this.dict.getLabel('yesOrNo', v) },
|
{prop: 'agentOrder', label: '是否代兑换', align: 'center', format: v => this.dict.getLabel('yesOrNo', v)},
|
||||||
{ prop: 'createTime', width: 150, label: '创建时间', align: 'center' },
|
{prop: 'createTime', width: 150, label: '创建时间', align: 'center'},
|
||||||
{ prop: 'status', label: '状态', align: 'center', format: v => this.dict.getLabel('integralSGOStatus', v) }
|
{prop: 'status', label: '状态', align: 'center', format: v => this.dict.getLabel('integralSGOStatus', v)}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {},
|
||||||
},
|
|
||||||
|
|
||||||
created () {
|
created() {
|
||||||
this.dict.load('integralSGType', 'integralSGOStatus', 'yesOrNo', 'integralSGTypeText').then(() => {
|
this.dict.load('integralSGType', 'integralSGOStatus', 'yesOrNo', 'integralSGTypeText').then(() => {
|
||||||
this.getList()
|
this.getList()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
getList() {
|
||||||
|
this.instance.post(`/app/appintegralsupermarketorder/list`, null, {
|
||||||
|
params: {
|
||||||
|
...this.search,
|
||||||
|
girdCode: this.areaId
|
||||||
|
}
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
res.data.records.map((item) => {
|
||||||
|
item.typeText = item.goodsType == 0 ? 0 : 1
|
||||||
|
})
|
||||||
|
this.tableData = res.data.records
|
||||||
|
this.total = res.data.total
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
onConfirm() {
|
||||||
getList () {
|
this.$refs.form.validate((valid) => {
|
||||||
this.instance.post(`/app/appintegralsupermarketorder/list`, null, {
|
if (valid) {
|
||||||
params: {
|
this.instance.post(`/app/appintegralsupermarketorder/examine`, null, {
|
||||||
...this.search,
|
params: {
|
||||||
girdCode: this.areaId
|
...this.form,
|
||||||
}
|
id: this.id
|
||||||
}).then((res) => {
|
}
|
||||||
if (res.code == 0) {
|
}).then(res => {
|
||||||
res.data.records.map((item) => {
|
|
||||||
item.typeText = item.goodsType == 0 ? 0 : 1
|
|
||||||
})
|
|
||||||
this.tableData = res.data.records
|
|
||||||
this.total = res.data.total
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
onConfirm () {
|
|
||||||
this.$refs.form.validate((valid)=> {
|
|
||||||
if(valid) {
|
|
||||||
this.instance.post(`/app/appintegralsupermarketorder/examine`, null, {
|
|
||||||
params: {
|
|
||||||
...this.form,
|
|
||||||
id: this.id
|
|
||||||
}
|
|
||||||
}).then(res => {
|
|
||||||
if(res.code == 0) {
|
|
||||||
this.isShow = false
|
|
||||||
this.getList()
|
|
||||||
this.$message.success('核销成功')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
toDetail (id) {
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'ResidentDetail',
|
|
||||||
params: {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
cancel (id) {
|
|
||||||
this.$confirm('确定取消该订单吗?').then(() => {
|
|
||||||
this.instance.post(`/app/appintegralsupermarketorder/cancel?id=${id}`).then(res => {
|
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.$message.success('取消成功!')
|
this.isShow = false
|
||||||
this.getList()
|
this.getList()
|
||||||
|
this.$message.success('核销成功')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
toDetail(id) {
|
||||||
|
this.$emit('change', {
|
||||||
|
type: 'ResidentDetail',
|
||||||
|
params: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
cancel(id) {
|
||||||
|
this.$confirm('确定取消该订单吗?').then(() => {
|
||||||
|
this.instance.post(`/app/appintegralsupermarketorder/cancel?id=${id}`).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success('取消成功!')
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.GoodsList {
|
.GoodsList {
|
||||||
.goods {
|
.goods {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.img-content {
|
|
||||||
position: relative;
|
.img-content {
|
||||||
margin-right: 8px;
|
position: relative;
|
||||||
img {
|
margin-right: 8px;
|
||||||
width: 120px;
|
|
||||||
height: 120px;
|
img {
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.type {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
font-size: 12px;
|
|
||||||
width: 120px;
|
width: 120px;
|
||||||
text-align: center;
|
height: 120px;
|
||||||
color: #fff;
|
cursor: pointer;
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
.type1 {
|
|
||||||
background-color: #E64E39;
|
|
||||||
}
|
|
||||||
.type0 {
|
|
||||||
background-color: #FF6900;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.type {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
font-size: 12px;
|
||||||
|
width: 120px;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
z-index: 999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type1 {
|
||||||
|
background-color: #E64E39;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type0 {
|
||||||
|
background-color: #FF6900;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -5,44 +5,44 @@
|
|||||||
<template slot="left">
|
<template slot="left">
|
||||||
<el-button type="primary" icon="iconfont iconAdd" @click="toAdd('')">添加</el-button>
|
<el-button type="primary" icon="iconfont iconAdd" @click="toAdd('')">添加</el-button>
|
||||||
<ai-select
|
<ai-select
|
||||||
v-model="search.type"
|
v-model="search.type"
|
||||||
@change="(search.current = 1), getList()"
|
@change="(search.current = 1), getList()"
|
||||||
placeholder="请选择商品类型"
|
placeholder="请选择商品类型"
|
||||||
:selectList="dict.getDict('integralSGType')">
|
:selectList="dict.getDict('integralSGType')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
<ai-select
|
<ai-select
|
||||||
v-model="search.status"
|
v-model="search.status"
|
||||||
@change="(search.current = 1), getList()"
|
@change="(search.current = 1), getList()"
|
||||||
placeholder="请选择类型"
|
placeholder="请选择类型"
|
||||||
:selectList="dict.getDict('integralSGStatus')">
|
:selectList="dict.getDict('integralSGStatus')">
|
||||||
</ai-select>
|
</ai-select>
|
||||||
</template>
|
</template>
|
||||||
<template slot="right">
|
<template slot="right">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="search.title"
|
v-model="search.title"
|
||||||
class="search-input"
|
class="search-input"
|
||||||
size="small"
|
size="small"
|
||||||
v-throttle="() => {search.current = 1, getList()}"
|
v-throttle="() => {search.current = 1, getList()}"
|
||||||
placeholder="请输入商品名称"
|
placeholder="请输入商品名称"
|
||||||
clearable
|
clearable
|
||||||
@clear="search.current = 1, search.title = '', getList()"
|
@clear="search.current = 1, search.title = '', getList()"
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
</ai-search-bar>
|
</ai-search-bar>
|
||||||
<ai-table
|
<ai-table
|
||||||
style="margin-top: 8px;"
|
style="margin-top: 8px;"
|
||||||
:tableData="tableData"
|
:tableData="tableData"
|
||||||
:col-configs="colConfigs"
|
:col-configs="colConfigs"
|
||||||
:total="total"
|
:total="total"
|
||||||
:current.sync="search.current"
|
:current.sync="search.current"
|
||||||
:size.sync="search.size"
|
:size.sync="search.size"
|
||||||
@getList="getList">
|
@getList="getList">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="商品"
|
label="商品"
|
||||||
slot="goods"
|
slot="goods"
|
||||||
align="left"
|
align="left"
|
||||||
width="450">
|
width="450">
|
||||||
<template v-slot="{ row }">
|
<template v-slot="{ row }">
|
||||||
<div class="goods">
|
<div class="goods">
|
||||||
<!-- <ai-uploader class="upload"
|
<!-- <ai-uploader class="upload"
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
<img :src="row.picUrl" alt="" v-viewer>
|
<img :src="row.picUrl" alt="" v-viewer>
|
||||||
<!-- <span class="type type0" v-if="row.type === '0'">积分兑换</span>
|
<!-- <span class="type type0" v-if="row.type === '0'">积分兑换</span>
|
||||||
<span class="type type1" v-else>京东低价商品</span> -->
|
<span class="type type1" v-else>京东低价商品</span> -->
|
||||||
<span class="type" :class="`type${row.typeText}`">{{dict.getLabel('integralSGTypeText', row.typeText)}}</span>
|
<span class="type" :class="`type${row.typeText}`">{{ dict.getLabel('integralSGTypeText', row.typeText) }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>{{ row.title }}</p>
|
<p>{{ row.title }}</p>
|
||||||
@@ -79,151 +79,151 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
export default {
|
||||||
import Vue from 'vue'
|
name: 'GoodsList',
|
||||||
Vue.use(Viewer)
|
props: {
|
||||||
export default {
|
instance: Function,
|
||||||
name: 'GoodsList',
|
dict: Object,
|
||||||
|
permissions: Function
|
||||||
|
},
|
||||||
|
|
||||||
props: {
|
data() {
|
||||||
instance: Function,
|
return {
|
||||||
dict: Object,
|
search: {
|
||||||
permissions: Function
|
type: '',
|
||||||
},
|
title: '',
|
||||||
|
current: 1,
|
||||||
|
status: '',
|
||||||
|
size: 10,
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
tableData: [],
|
||||||
|
colConfigs: [
|
||||||
|
{prop: 'serialNumber', label: '商品ID', align: 'left'},
|
||||||
|
{slot: 'goods', align: 'center'},
|
||||||
|
{prop: 'type', label: '商品类型', align: 'center', format: v => this.dict.getLabel('integralSGType', v)},
|
||||||
|
{prop: 'onlineTime', label: '上架时间', align: 'center'},
|
||||||
|
{prop: 'status', label: '状态', align: 'center', format: v => this.dict.getLabel('integralSGStatus', v)}
|
||||||
|
],
|
||||||
|
userList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
computed: {},
|
||||||
return {
|
|
||||||
search: {
|
|
||||||
type: '',
|
|
||||||
title: '',
|
|
||||||
current: 1,
|
|
||||||
status: '',
|
|
||||||
size: 10,
|
|
||||||
},
|
|
||||||
total: 0,
|
|
||||||
tableData: [],
|
|
||||||
colConfigs: [
|
|
||||||
{ prop: 'serialNumber', label: '商品ID', align: 'left' },
|
|
||||||
{ slot: 'goods', align: 'center' },
|
|
||||||
{ prop: 'type', label: '商品类型', align: 'center', format: v => this.dict.getLabel('integralSGType', v) },
|
|
||||||
{ prop: 'onlineTime', label: '上架时间', align: 'center' },
|
|
||||||
{ prop: 'status', label: '状态', align: 'center', format: v => this.dict.getLabel('integralSGStatus', v) }
|
|
||||||
],
|
|
||||||
userList: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
created() {
|
||||||
},
|
this.dict.load('integralSGType', 'integralSGStatus', 'integralSGTypeText').then(() => {
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
created () {
|
methods: {
|
||||||
this.dict.load('integralSGType', 'integralSGStatus', 'integralSGTypeText').then(() => {
|
getList() {
|
||||||
this.getList()
|
this.instance.post(`/app/appintegralsupermarketgoods/list`, null, {
|
||||||
|
params: {
|
||||||
|
...this.search
|
||||||
|
}
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
res.data.records.map((item) => {
|
||||||
|
item.typeText = item.type == 0 ? 0 : 1
|
||||||
|
})
|
||||||
|
this.tableData = res.data.records
|
||||||
|
this.total = res.data.total
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
onAreaChange() {
|
||||||
getList () {
|
this.search.current = 1
|
||||||
this.instance.post(`/app/appintegralsupermarketgoods/list`, null, {
|
|
||||||
params: {
|
this.$nextTick(() => {
|
||||||
...this.search
|
this.getTableData()
|
||||||
}
|
})
|
||||||
}).then((res) => {
|
},
|
||||||
|
|
||||||
|
toAdd(id) {
|
||||||
|
this.$emit('change', {
|
||||||
|
type: 'AddGoods',
|
||||||
|
params: {
|
||||||
|
id: id || ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
copy(url) {
|
||||||
|
let oInput = document.createElement('input')
|
||||||
|
oInput.value = url
|
||||||
|
document.body.appendChild(oInput)
|
||||||
|
oInput.select()
|
||||||
|
document.execCommand('Copy')
|
||||||
|
this.$message({
|
||||||
|
message: '已复制',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
oInput.remove()
|
||||||
|
},
|
||||||
|
|
||||||
|
remove(id) {
|
||||||
|
this.$confirm('确定删除该商品吗?').then(() => {
|
||||||
|
this.instance.post(`/app/appintegralsupermarketgoods/delete?id=${id}`).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
res.data.records.map((item) => {
|
this.$message.success('删除成功!')
|
||||||
item.typeText = item.type == 0 ? 0 : 1
|
this.getList()
|
||||||
})
|
|
||||||
this.tableData = res.data.records
|
|
||||||
this.total = res.data.total
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
})
|
||||||
|
},
|
||||||
|
|
||||||
onAreaChange () {
|
changeStatus(row) {
|
||||||
this.search.current = 1
|
this.$confirm(`确定${row.status === '0' ? '上架' : '下架'}该商品?`).then(() => {
|
||||||
|
this.instance.post(`/app/appintegralsupermarketgoods/online?id=${row.id}`).then(res => {
|
||||||
this.$nextTick(() => {
|
if (res.code == 0) {
|
||||||
this.getTableData()
|
this.$message.success(`${row.status === '0' ? '上架' : '下架'}成功`)
|
||||||
})
|
this.getList()
|
||||||
},
|
|
||||||
|
|
||||||
toAdd (id) {
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'AddGoods',
|
|
||||||
params: {
|
|
||||||
id: id || ''
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
})
|
||||||
|
|
||||||
copy (url) {
|
|
||||||
let oInput = document.createElement('input')
|
|
||||||
oInput.value = url
|
|
||||||
document.body.appendChild(oInput)
|
|
||||||
oInput.select()
|
|
||||||
document.execCommand('Copy')
|
|
||||||
this.$message({
|
|
||||||
message: '已复制',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
oInput.remove()
|
|
||||||
},
|
|
||||||
|
|
||||||
remove (id) {
|
|
||||||
this.$confirm('确定删除该商品吗?').then(() => {
|
|
||||||
this.instance.post(`/app/appintegralsupermarketgoods/delete?id=${id}`).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.$message.success('删除成功!')
|
|
||||||
this.getList()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
changeStatus (row) {
|
|
||||||
this.$confirm(`确定${row.status === '0' ? '上架' : '下架'}该商品?`).then(() => {
|
|
||||||
this.instance.post(`/app/appintegralsupermarketgoods/online?id=${row.id}`).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.$message.success(`${row.status === '0' ? '上架' : '下架'}成功`)
|
|
||||||
this.getList()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.GoodsList {
|
.GoodsList {
|
||||||
.goods {
|
.goods {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.img-content {
|
|
||||||
position: relative;
|
.img-content {
|
||||||
margin-right: 8px;
|
position: relative;
|
||||||
img {
|
margin-right: 8px;
|
||||||
width: 120px;
|
|
||||||
height: 120px;
|
img {
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.type {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 120px;
|
width: 120px;
|
||||||
text-align: center;
|
height: 120px;
|
||||||
color: #fff;
|
cursor: pointer;
|
||||||
z-index: 999;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
.type1 {
|
|
||||||
background-color: #E64E39;
|
|
||||||
}
|
|
||||||
.type0 {
|
|
||||||
background-color: #FF6900;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.type {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 120px;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
z-index: 999;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type1 {
|
||||||
|
background-color: #E64E39;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type0 {
|
||||||
|
background-color: #FF6900;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -113,9 +113,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ResidentList',
|
name: 'ResidentList',
|
||||||
|
|
||||||
|
|||||||
@@ -79,9 +79,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GoodsList',
|
name: 'GoodsList',
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<h2 v-for="(item, index) in msgTypeList" :key="index" :class="msgType == index ? 'tab-active' : ''" @click="msgTypeClick(index)">{{item.name}}</h2>
|
<h2 v-for="(item, index) in msgTypeList" :key="index" :class="msgType == index ? 'tab-active' : ''" @click="msgTypeClick(index)">{{item.name}}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="search-content">
|
<div class="search-content">
|
||||||
<el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd"
|
<el-date-picker v-model="time" size="small" type="daterange" value-format="yyyy-MM-dd"
|
||||||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onChange">
|
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onChange">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<el-input size="small" placeholder="输入搜索内容" v-model="searchMsg" clearable
|
<el-input size="small" placeholder="输入搜索内容" v-model="searchMsg" clearable
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
<video style="width: 300px; object-fit: fill;" controls :src="item.sdkFileUrl" v-if="item.msgType == 'video'"></video>
|
<video style="width: 300px; object-fit: fill;" controls :src="item.sdkFileUrl" v-if="item.msgType == 'video'"></video>
|
||||||
|
|
||||||
<ai-file-list v-if="item.msgType == 'file'"
|
<ai-file-list v-if="item.msgType == 'file'"
|
||||||
:fileList="item.files"
|
:fileList="item.files"
|
||||||
:fileOps="{ name: 'name', size: 'fileSizeStr' }"
|
:fileOps="{ name: 'name', size: 'fileSizeStr' }"
|
||||||
></ai-file-list>
|
></ai-file-list>
|
||||||
@@ -170,16 +170,11 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import AMapLoader from '@amap/amap-jsapi-loader'
|
import AMapLoader from '@amap/amap-jsapi-loader'
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer);
|
|
||||||
|
|
||||||
import html2canvas from "html2canvas";
|
import html2canvas from "html2canvas";
|
||||||
import jsPDF from "jspdf";
|
import jsPDF from "jspdf";
|
||||||
|
|
||||||
import { Loading } from "element-ui";
|
import { Loading } from "element-ui";
|
||||||
|
|
||||||
const PdfLoader = (ele, pdfFileName) => {
|
const PdfLoader = (ele, pdfFileName) => {
|
||||||
let loadingInstance = Loading.service({ fullscreen: true, text: '正在导出(请勿刷新/关闭页面)' });
|
let loadingInstance = Loading.service({ fullscreen: true, text: '正在导出(请勿刷新/关闭页面)' });
|
||||||
ele.style.fontFamily = "宋体";
|
ele.style.fontFamily = "宋体";
|
||||||
@@ -447,7 +442,7 @@
|
|||||||
this.getMsgList()
|
this.getMsgList()
|
||||||
},
|
},
|
||||||
getKeyWordList() {
|
getKeyWordList() {
|
||||||
var url = this.listInfo.seq ? `/app/appsessionarchiveinfo/listByKeywordRecord?seq=${this.listInfo.seq}`
|
var url = this.listInfo.seq ? `/app/appsessionarchiveinfo/listByKeywordRecord?seq=${this.listInfo.seq}`
|
||||||
: `/app/appsessionarchiveinfo/listByKeywordRecord?msgId=${this.params.msgId}`
|
: `/app/appsessionarchiveinfo/listByKeywordRecord?msgId=${this.params.msgId}`
|
||||||
this.instance.post(url, null, {
|
this.instance.post(url, null, {
|
||||||
params: {
|
params: {
|
||||||
@@ -546,9 +541,9 @@
|
|||||||
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
||||||
document.querySelector('.content-right-info').scrollTop = height
|
document.querySelector('.content-right-info').scrollTop = height
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@@ -607,7 +602,7 @@
|
|||||||
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
|
||||||
document.querySelector('.content-right-info').scrollTop = height
|
document.querySelector('.content-right-info').scrollTop = height
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
@@ -656,7 +651,7 @@
|
|||||||
},
|
},
|
||||||
openLink(row) {
|
openLink(row) {
|
||||||
document.write('<a href="" target="new"></a>');
|
document.write('<a href="" target="new"></a>');
|
||||||
window.open(row.linkUrl, "new");
|
window.open(row.linkUrl, "new");
|
||||||
},
|
},
|
||||||
cancel () {
|
cancel () {
|
||||||
this.$emit('change', {
|
this.$emit('change', {
|
||||||
@@ -879,7 +874,7 @@
|
|||||||
max-width: calc(100% - 144px);
|
max-width: calc(100% - 144px);
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: #f3f6f9;
|
background-color: #f3f6f9;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
width: 0px;
|
width: 0px;
|
||||||
height: 0px;
|
height: 0px;
|
||||||
@@ -1001,7 +996,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.item-left {
|
.item-left {
|
||||||
.item-content-flex {
|
.item-content-flex {
|
||||||
.user-img {
|
.user-img {
|
||||||
margin: 0 20px 0 0;
|
margin: 0 20px 0 0;
|
||||||
}
|
}
|
||||||
@@ -1015,7 +1010,7 @@
|
|||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.item-right {
|
.item-right {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -1043,7 +1038,7 @@
|
|||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.addressBook-left__list--wrapper::-webkit-scrollbar,
|
.addressBook-left__list--wrapper::-webkit-scrollbar,
|
||||||
|
|||||||
@@ -289,14 +289,9 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from "vuex";
|
import { mapState } from "vuex";
|
||||||
import Viewer from "v-viewer";
|
|
||||||
import AMapLoader from "@amap/amap-jsapi-loader";
|
import AMapLoader from "@amap/amap-jsapi-loader";
|
||||||
import Vue from "vue";
|
|
||||||
Vue.use(Viewer);
|
|
||||||
|
|
||||||
import html2canvas from "html2canvas";
|
import html2canvas from "html2canvas";
|
||||||
import jsPDF from "jspdf";
|
import jsPDF from "jspdf";
|
||||||
|
|
||||||
import { Loading } from "element-ui";
|
import { Loading } from "element-ui";
|
||||||
|
|
||||||
const PdfLoader = (ele, pdfFileName) => {
|
const PdfLoader = (ele, pdfFileName) => {
|
||||||
@@ -636,7 +631,7 @@ export default {
|
|||||||
var dataURL = canvas.toDataURL("image/"+ext);
|
var dataURL = canvas.toDataURL("image/"+ext);
|
||||||
return dataURL;
|
return dataURL;
|
||||||
},
|
},
|
||||||
|
|
||||||
initMap(lng, lat, zoom, mapId) {
|
initMap(lng, lat, zoom, mapId) {
|
||||||
AMapLoader.load({
|
AMapLoader.load({
|
||||||
key: "54a02a43d9828a8f9cd4f26fe281e74e",
|
key: "54a02a43d9828a8f9cd4f26fe281e74e",
|
||||||
|
|||||||
@@ -55,9 +55,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'List',
|
name: 'List',
|
||||||
|
|
||||||
|
|||||||
@@ -111,9 +111,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ResidentList',
|
name: 'ResidentList',
|
||||||
|
|
||||||
|
|||||||
@@ -78,9 +78,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GoodsList',
|
name: 'GoodsList',
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer';
|
|
||||||
import Vue from 'vue';
|
|
||||||
|
|
||||||
Vue.use(Viewer);
|
|
||||||
export default {
|
export default {
|
||||||
name: "newsDetail",
|
name: "newsDetail",
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@@ -27,11 +27,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Viewer from 'v-viewer';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "videoDetail",
|
name: "videoDetail",
|
||||||
components: {Viewer},
|
|
||||||
props: {
|
props: {
|
||||||
instance: Function,
|
instance: Function,
|
||||||
dict: Object,
|
dict: Object,
|
||||||
|
|||||||
@@ -300,13 +300,9 @@
|
|||||||
<script>
|
<script>
|
||||||
import moment from 'dayjs'
|
import moment from 'dayjs'
|
||||||
import {mapState} from "vuex";
|
import {mapState} from "vuex";
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
import PersonCreditReport from "../../../../components/personCreditReport";
|
import PersonCreditReport from "../../../../components/personCreditReport";
|
||||||
import EnterpriseDialog from "../../../../components/enterpriseDialog";
|
import EnterpriseDialog from "../../../../components/enterpriseDialog";
|
||||||
|
|
||||||
Vue.use(Viewer)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "approvalDetail",
|
name: "approvalDetail",
|
||||||
components: {EnterpriseDialog, PersonCreditReport},
|
components: {EnterpriseDialog, PersonCreditReport},
|
||||||
|
|||||||
@@ -89,10 +89,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
// import 'viewerjs/dist/viewer.css'
|
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from 'vue'
|
|
||||||
Vue.use(Viewer)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'messageDetail',
|
name: 'messageDetail',
|
||||||
|
|||||||
446
public/cdn/viewerjs/1.11.6/viewer.css
Normal file
@@ -0,0 +1,446 @@
|
|||||||
|
/*!
|
||||||
|
* Viewer.js v1.11.6
|
||||||
|
* https://fengyuanchen.github.io/viewerjs
|
||||||
|
*
|
||||||
|
* Copyright 2015-present Chen Fengyuan
|
||||||
|
* Released under the MIT license
|
||||||
|
*
|
||||||
|
* Date: 2023-09-17T03:16:35.830Z
|
||||||
|
*/
|
||||||
|
|
||||||
|
.viewer-zoom-in::before, .viewer-zoom-out::before, .viewer-one-to-one::before, .viewer-reset::before, .viewer-prev::before, .viewer-play::before, .viewer-next::before, .viewer-rotate-left::before, .viewer-rotate-right::before, .viewer-flip-horizontal::before, .viewer-flip-vertical::before, .viewer-fullscreen::before, .viewer-fullscreen-exit::before, .viewer-close::before {
|
||||||
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAAUCAYAAABWOyJDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAQPSURBVHic7Zs/iFxVFMa/0U2UaJGksUgnIVhYxVhpjDbZCBmLdAYECxsRFBTUamcXUiSNncgKQbSxsxH8gzAP3FU2jY0kKKJNiiiIghFlccnP4p3nPCdv3p9778vsLOcHB2bfveeb7955c3jvvNkBIMdxnD64a94GHMfZu3iBcRynN7zAOI7TG15gHCeeNUkr8zaxG2lbYDYsdgMbktBsP03jdQwljSXdtBhLOmtjowC9Mg9L+knSlcD8TNKpSA9lBpK2JF2VdDSR5n5J64m0qli399hNFMUlpshQii5jbXTbHGviB0nLNeNDSd9VO4A2UdB2fp+x0eCnaXxWXGA2X0au/3HgN9P4LFCjIANOJdrLr0zzZ+BEpNYDwKbpnQMeAw4m8HjQtM6Z9qa917zPQwFr3M5KgA6J5rTJCdFZJj9/lyvGhsDvwFNVuV2MhhjrK6b9bFiE+j1r87eBl4HDwCF7/U/k+ofAX5b/EXBv5JoLMuILzf3Ap6Z3EzgdqHMCuF7hcQf4HDgeoHnccncqdK/TvSDWffFXI/exICY/xZyqc6XLWF1UFZna4gJ7q8BsRvgd2/xXpo6P+D9dfT7PpECtA3cnWPM0GXGFZh/wgWltA+cDNC7X+AP4GzjZQe+k5dRxuYPeiuXU7e1qwLpDz7dFjXKRaSwuMLvAlG8zZlG+YmiK1HoFqT7wP2z+4Q45TfEGcMt01xLoNZEBTwRqD4BLpnMLeC1A41UmVxsXgXeBayV/Wx20rpTyrpnWRft7p6O/FdqzGrDukPNtkaMoMo3FBdBSQMOnYBCReyf05s126fU9ytfX98+mY54Kxnp7S9K3kj6U9KYdG0h6UdLbkh7poFXMfUnSOyVvL0h6VtIXHbS6nOP+s/Zm9mvyXW1uuC9ohZ72E9uDmXWLJOB1GxsH+DxPftsB8B6wlGDN02TAkxG6+4D3TWsbeC5CS8CDFce+AW500LhhOW2020TRjK3b21HEmgti9m0RonxbdMZeVzV+/4tF3cBpP7E9mKHNL5q8h5g0eYsCMQz0epq8gQrwMXAgcs0FGXGFRcB9wCemF9PkbYqM/Bas7fxLwNeJPdTdpo4itQti8lPMqTpXuozVRVXPpbHI3KkNTB1NfkL81j2mvhDp91HgV9MKuRIqrykj3WPq4rHyL+axj8/qGPmTqi6F9YDlHOvJU6oYcTsh/TYSzWmTE6JT19CtLTJt32D6CmHe0eQn1O8z5AXgT4sx4Vcu0/EQecMydB8z0hUWkTd2t4CrwNEePqMBcAR4mrBbwyXLPWJa8zrXmmLEhNBmfpkuY2102xxrih+pb+ieAb6vGhuA97UcJ5KR8gZ77K+99xxeYBzH6Q3/Z0fHcXrDC4zjOL3hBcZxnN74F+zlvXFWXF9PAAAAAElFTkSuQmCC');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 280px;
|
||||||
|
color: transparent;
|
||||||
|
display: block;
|
||||||
|
font-size: 0;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 0;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-zoom-in::before {
|
||||||
|
background-position: 0 0;
|
||||||
|
content: 'Zoom In';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-zoom-out::before {
|
||||||
|
background-position: -20px 0;
|
||||||
|
content: 'Zoom Out';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-one-to-one::before {
|
||||||
|
background-position: -40px 0;
|
||||||
|
content: 'One to One';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-reset::before {
|
||||||
|
background-position: -60px 0;
|
||||||
|
content: 'Reset';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-prev::before {
|
||||||
|
background-position: -80px 0;
|
||||||
|
content: 'Previous';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-play::before {
|
||||||
|
background-position: -100px 0;
|
||||||
|
content: 'Play';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-next::before {
|
||||||
|
background-position: -120px 0;
|
||||||
|
content: 'Next';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-rotate-left::before {
|
||||||
|
background-position: -140px 0;
|
||||||
|
content: 'Rotate Left';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-rotate-right::before {
|
||||||
|
background-position: -160px 0;
|
||||||
|
content: 'Rotate Right';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-flip-horizontal::before {
|
||||||
|
background-position: -180px 0;
|
||||||
|
content: 'Flip Horizontal';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-flip-vertical::before {
|
||||||
|
background-position: -200px 0;
|
||||||
|
content: 'Flip Vertical';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-fullscreen::before {
|
||||||
|
background-position: -220px 0;
|
||||||
|
content: 'Enter Full Screen';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-fullscreen-exit::before {
|
||||||
|
background-position: -240px 0;
|
||||||
|
content: 'Exit Full Screen';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-close::before {
|
||||||
|
background-position: -260px 0;
|
||||||
|
content: 'Close';
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-container {
|
||||||
|
bottom: 0;
|
||||||
|
direction: ltr;
|
||||||
|
font-size: 0;
|
||||||
|
left: 0;
|
||||||
|
line-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
top: 0;
|
||||||
|
-ms-touch-action: none;
|
||||||
|
touch-action: none;
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-container::-moz-selection, .viewer-container *::-moz-selection {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-container::selection,
|
||||||
|
.viewer-container *::selection {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-container:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-container img {
|
||||||
|
display: block;
|
||||||
|
height: auto;
|
||||||
|
max-height: none !important;
|
||||||
|
max-width: none !important;
|
||||||
|
min-height: 0 !important;
|
||||||
|
min-width: 0 !important;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-canvas {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-canvas > img {
|
||||||
|
height: auto;
|
||||||
|
margin: 15px auto;
|
||||||
|
max-width: 90% !important;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-footer {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-navbar {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list {
|
||||||
|
box-sizing: content-box;
|
||||||
|
height: 50px;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 1px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > li {
|
||||||
|
color: transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
float: left;
|
||||||
|
font-size: 0;
|
||||||
|
height: 50px;
|
||||||
|
line-height: 0;
|
||||||
|
opacity: 0.5;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: opacity 0.15s;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > li:focus,
|
||||||
|
.viewer-list > li:hover {
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > li:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > li + li {
|
||||||
|
margin-left: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > .viewer-loading {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > .viewer-loading::after {
|
||||||
|
border-width: 2px;
|
||||||
|
height: 20px;
|
||||||
|
margin-left: -10px;
|
||||||
|
margin-top: -10px;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-list > .viewer-active,
|
||||||
|
.viewer-list > .viewer-active:focus,
|
||||||
|
.viewer-list > .viewer-active:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-player {
|
||||||
|
background-color: #000;
|
||||||
|
bottom: 0;
|
||||||
|
cursor: none;
|
||||||
|
display: none;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-player > img {
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto 5px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 6px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > li {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
float: left;
|
||||||
|
height: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: background-color 0.15s;
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > li:focus,
|
||||||
|
.viewer-toolbar > ul > li:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > li:focus {
|
||||||
|
box-shadow: 0 0 3px #fff;
|
||||||
|
outline: 0;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > li::before {
|
||||||
|
margin: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > li + li {
|
||||||
|
margin-left: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > .viewer-small {
|
||||||
|
height: 18px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
margin-top: 3px;
|
||||||
|
width: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > .viewer-small::before {
|
||||||
|
margin: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > .viewer-large {
|
||||||
|
height: 30px;
|
||||||
|
margin-bottom: -3px;
|
||||||
|
margin-top: -3px;
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-toolbar > ul > .viewer-large::before {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-tooltip {
|
||||||
|
background-color: rgba(0, 0, 0, 0.8);
|
||||||
|
border-radius: 10px;
|
||||||
|
color: #fff;
|
||||||
|
display: none;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 20px;
|
||||||
|
left: 50%;
|
||||||
|
line-height: 20px;
|
||||||
|
margin-left: -25px;
|
||||||
|
margin-top: -10px;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
top: 50%;
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-title {
|
||||||
|
color: #ccc;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.2;
|
||||||
|
margin: 5px 5%;
|
||||||
|
max-width: 90%;
|
||||||
|
min-height: 14px;
|
||||||
|
opacity: 0.8;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
transition: opacity 0.15s;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-title:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-button {
|
||||||
|
-webkit-app-region: no-drag;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 80px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
right: -40px;
|
||||||
|
top: -40px;
|
||||||
|
transition: background-color 0.15s;
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-button:focus,
|
||||||
|
.viewer-button:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-button:focus {
|
||||||
|
box-shadow: 0 0 3px #fff;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-button::before {
|
||||||
|
bottom: 15px;
|
||||||
|
left: 15px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-fixed {
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-open {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-backdrop {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-invisible {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-move {
|
||||||
|
cursor: move;
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-fade {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-in {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-transition {
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes viewer-spinner {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewer-loading::after {
|
||||||
|
animation: viewer-spinner 1s linear infinite;
|
||||||
|
border: 4px solid rgba(255, 255, 255, 0.1);
|
||||||
|
border-left-color: rgba(255, 255, 255, 0.5);
|
||||||
|
border-radius: 50%;
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
height: 40px;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -20px;
|
||||||
|
margin-top: -20px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: 40px;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.viewer-hide-xs-down {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 991px) {
|
||||||
|
.viewer-hide-sm-down {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1199px) {
|
||||||
|
.viewer-hide-md-down {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
10
public/cdn/viewerjs/1.11.6/viewer.min.js
vendored
Normal file
@@ -1,17 +1,19 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico"/>
|
||||||
<title>web端应用库-展示页面</title>
|
<link rel="stylesheet" href="<%= BASE_URL %>cdn/viewerjs/1.11.6/viewer.css"/>
|
||||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js" referrerpolicy="origin"></script>
|
<script src="<%= BASE_URL %>cdn/viewerjs/1.11.6/viewer.min.js"></script>
|
||||||
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js" referrerpolicy="origin"></script>
|
<title>web端应用库-展示页面</title>
|
||||||
|
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js" referrerpolicy="origin"></script>
|
||||||
|
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js" referrerpolicy="origin"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>
|
<noscript>
|
||||||
<strong>We're sorry but vc-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
<strong>We're sorry but vc-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||||
</noscript>
|
</noscript>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
<!-- built files will be auto injected -->
|
<!-- built files will be auto injected -->
|
||||||
|
|||||||
826
ui/lib/cdn/v-viewer/1.7.4/v-viewer.js
Normal file
@@ -0,0 +1,826 @@
|
|||||||
|
import Viewer from "viewerjs";
|
||||||
|
import Vue from "vue";
|
||||||
|
|
||||||
|
export { default as Viewer } from "viewerjs";
|
||||||
|
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
|
||||||
|
var freeGlobal$1 = freeGlobal;
|
||||||
|
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
|
||||||
|
var root = freeGlobal$1 || freeSelf || Function("return this")();
|
||||||
|
var root$1 = root;
|
||||||
|
var Symbol$1 = root$1.Symbol;
|
||||||
|
var Symbol$2 = Symbol$1;
|
||||||
|
var objectProto$8 = Object.prototype;
|
||||||
|
var hasOwnProperty$6 = objectProto$8.hasOwnProperty;
|
||||||
|
var nativeObjectToString$1 = objectProto$8.toString;
|
||||||
|
var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : void 0;
|
||||||
|
function getRawTag(value) {
|
||||||
|
var isOwn = hasOwnProperty$6.call(value, symToStringTag$1), tag = value[symToStringTag$1];
|
||||||
|
try {
|
||||||
|
value[symToStringTag$1] = void 0;
|
||||||
|
var unmasked = true;
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
var result = nativeObjectToString$1.call(value);
|
||||||
|
if (unmasked) {
|
||||||
|
if (isOwn) {
|
||||||
|
value[symToStringTag$1] = tag;
|
||||||
|
} else {
|
||||||
|
delete value[symToStringTag$1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
var objectProto$7 = Object.prototype;
|
||||||
|
var nativeObjectToString = objectProto$7.toString;
|
||||||
|
function objectToString(value) {
|
||||||
|
return nativeObjectToString.call(value);
|
||||||
|
}
|
||||||
|
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
|
||||||
|
var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : void 0;
|
||||||
|
function baseGetTag(value) {
|
||||||
|
if (value == null) {
|
||||||
|
return value === void 0 ? undefinedTag : nullTag;
|
||||||
|
}
|
||||||
|
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
|
||||||
|
}
|
||||||
|
function isObjectLike(value) {
|
||||||
|
return value != null && typeof value == "object";
|
||||||
|
}
|
||||||
|
var symbolTag = "[object Symbol]";
|
||||||
|
function isSymbol(value) {
|
||||||
|
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
|
||||||
|
}
|
||||||
|
var isArray = Array.isArray;
|
||||||
|
var isArray$1 = isArray;
|
||||||
|
var reWhitespace = /\s/;
|
||||||
|
function trimmedEndIndex(string) {
|
||||||
|
var index2 = string.length;
|
||||||
|
while (index2-- && reWhitespace.test(string.charAt(index2))) {
|
||||||
|
}
|
||||||
|
return index2;
|
||||||
|
}
|
||||||
|
var reTrimStart = /^\s+/;
|
||||||
|
function baseTrim(string) {
|
||||||
|
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
|
||||||
|
}
|
||||||
|
function isObject(value) {
|
||||||
|
var type = typeof value;
|
||||||
|
return value != null && (type == "object" || type == "function");
|
||||||
|
}
|
||||||
|
var NAN = 0 / 0;
|
||||||
|
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
|
||||||
|
var reIsBinary = /^0b[01]+$/i;
|
||||||
|
var reIsOctal = /^0o[0-7]+$/i;
|
||||||
|
var freeParseInt = parseInt;
|
||||||
|
function toNumber(value) {
|
||||||
|
if (typeof value == "number") {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
if (isSymbol(value)) {
|
||||||
|
return NAN;
|
||||||
|
}
|
||||||
|
if (isObject(value)) {
|
||||||
|
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
|
||||||
|
value = isObject(other) ? other + "" : other;
|
||||||
|
}
|
||||||
|
if (typeof value != "string") {
|
||||||
|
return value === 0 ? value : +value;
|
||||||
|
}
|
||||||
|
value = baseTrim(value);
|
||||||
|
var isBinary = reIsBinary.test(value);
|
||||||
|
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
|
||||||
|
}
|
||||||
|
function identity(value) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
var asyncTag = "[object AsyncFunction]", funcTag$1 = "[object Function]", genTag = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
|
||||||
|
function isFunction(value) {
|
||||||
|
if (!isObject(value)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var tag = baseGetTag(value);
|
||||||
|
return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;
|
||||||
|
}
|
||||||
|
var coreJsData = root$1["__core-js_shared__"];
|
||||||
|
var coreJsData$1 = coreJsData;
|
||||||
|
var maskSrcKey = function() {
|
||||||
|
var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || "");
|
||||||
|
return uid ? "Symbol(src)_1." + uid : "";
|
||||||
|
}();
|
||||||
|
function isMasked(func) {
|
||||||
|
return !!maskSrcKey && maskSrcKey in func;
|
||||||
|
}
|
||||||
|
var funcProto$1 = Function.prototype;
|
||||||
|
var funcToString$1 = funcProto$1.toString;
|
||||||
|
function toSource(func) {
|
||||||
|
if (func != null) {
|
||||||
|
try {
|
||||||
|
return funcToString$1.call(func);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return func + "";
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||||||
|
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
||||||
|
var funcProto = Function.prototype, objectProto$6 = Object.prototype;
|
||||||
|
var funcToString = funcProto.toString;
|
||||||
|
var hasOwnProperty$5 = objectProto$6.hasOwnProperty;
|
||||||
|
var reIsNative = RegExp(
|
||||||
|
"^" + funcToString.call(hasOwnProperty$5).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
|
||||||
|
);
|
||||||
|
function baseIsNative(value) {
|
||||||
|
if (!isObject(value) || isMasked(value)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
|
||||||
|
return pattern.test(toSource(value));
|
||||||
|
}
|
||||||
|
function getValue(object, key) {
|
||||||
|
return object == null ? void 0 : object[key];
|
||||||
|
}
|
||||||
|
function getNative(object, key) {
|
||||||
|
var value = getValue(object, key);
|
||||||
|
return baseIsNative(value) ? value : void 0;
|
||||||
|
}
|
||||||
|
function apply(func, thisArg, args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 0:
|
||||||
|
return func.call(thisArg);
|
||||||
|
case 1:
|
||||||
|
return func.call(thisArg, args[0]);
|
||||||
|
case 2:
|
||||||
|
return func.call(thisArg, args[0], args[1]);
|
||||||
|
case 3:
|
||||||
|
return func.call(thisArg, args[0], args[1], args[2]);
|
||||||
|
}
|
||||||
|
return func.apply(thisArg, args);
|
||||||
|
}
|
||||||
|
var HOT_COUNT = 800, HOT_SPAN = 16;
|
||||||
|
var nativeNow = Date.now;
|
||||||
|
function shortOut(func) {
|
||||||
|
var count = 0, lastCalled = 0;
|
||||||
|
return function() {
|
||||||
|
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
|
||||||
|
lastCalled = stamp;
|
||||||
|
if (remaining > 0) {
|
||||||
|
if (++count >= HOT_COUNT) {
|
||||||
|
return arguments[0];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
return func.apply(void 0, arguments);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function constant(value) {
|
||||||
|
return function() {
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var defineProperty = function() {
|
||||||
|
try {
|
||||||
|
var func = getNative(Object, "defineProperty");
|
||||||
|
func({}, "", {});
|
||||||
|
return func;
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
var defineProperty$1 = defineProperty;
|
||||||
|
var baseSetToString = !defineProperty$1 ? identity : function(func, string) {
|
||||||
|
return defineProperty$1(func, "toString", {
|
||||||
|
"configurable": true,
|
||||||
|
"enumerable": false,
|
||||||
|
"value": constant(string),
|
||||||
|
"writable": true
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var baseSetToString$1 = baseSetToString;
|
||||||
|
var setToString = shortOut(baseSetToString$1);
|
||||||
|
var setToString$1 = setToString;
|
||||||
|
var MAX_SAFE_INTEGER$1 = 9007199254740991;
|
||||||
|
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
||||||
|
function isIndex(value, length) {
|
||||||
|
var type = typeof value;
|
||||||
|
length = length == null ? MAX_SAFE_INTEGER$1 : length;
|
||||||
|
return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
|
||||||
|
}
|
||||||
|
function baseAssignValue(object, key, value) {
|
||||||
|
if (key == "__proto__" && defineProperty$1) {
|
||||||
|
defineProperty$1(object, key, {
|
||||||
|
"configurable": true,
|
||||||
|
"enumerable": true,
|
||||||
|
"value": value,
|
||||||
|
"writable": true
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
object[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function eq(value, other) {
|
||||||
|
return value === other || value !== value && other !== other;
|
||||||
|
}
|
||||||
|
var objectProto$5 = Object.prototype;
|
||||||
|
var hasOwnProperty$4 = objectProto$5.hasOwnProperty;
|
||||||
|
function assignValue(object, key, value) {
|
||||||
|
var objValue = object[key];
|
||||||
|
if (!(hasOwnProperty$4.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
|
||||||
|
baseAssignValue(object, key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function copyObject(source, props, object, customizer) {
|
||||||
|
var isNew = !object;
|
||||||
|
object || (object = {});
|
||||||
|
var index2 = -1, length = props.length;
|
||||||
|
while (++index2 < length) {
|
||||||
|
var key = props[index2];
|
||||||
|
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
|
||||||
|
if (newValue === void 0) {
|
||||||
|
newValue = source[key];
|
||||||
|
}
|
||||||
|
if (isNew) {
|
||||||
|
baseAssignValue(object, key, newValue);
|
||||||
|
} else {
|
||||||
|
assignValue(object, key, newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
var nativeMax$1 = Math.max;
|
||||||
|
function overRest(func, start, transform) {
|
||||||
|
start = nativeMax$1(start === void 0 ? func.length - 1 : start, 0);
|
||||||
|
return function() {
|
||||||
|
var args = arguments, index2 = -1, length = nativeMax$1(args.length - start, 0), array = Array(length);
|
||||||
|
while (++index2 < length) {
|
||||||
|
array[index2] = args[start + index2];
|
||||||
|
}
|
||||||
|
index2 = -1;
|
||||||
|
var otherArgs = Array(start + 1);
|
||||||
|
while (++index2 < start) {
|
||||||
|
otherArgs[index2] = args[index2];
|
||||||
|
}
|
||||||
|
otherArgs[start] = transform(array);
|
||||||
|
return apply(func, this, otherArgs);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function baseRest(func, start) {
|
||||||
|
return setToString$1(overRest(func, start, identity), func + "");
|
||||||
|
}
|
||||||
|
var MAX_SAFE_INTEGER = 9007199254740991;
|
||||||
|
function isLength(value) {
|
||||||
|
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
|
||||||
|
}
|
||||||
|
function isArrayLike(value) {
|
||||||
|
return value != null && isLength(value.length) && !isFunction(value);
|
||||||
|
}
|
||||||
|
function isIterateeCall(value, index2, object) {
|
||||||
|
if (!isObject(object)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var type = typeof index2;
|
||||||
|
if (type == "number" ? isArrayLike(object) && isIndex(index2, object.length) : type == "string" && index2 in object) {
|
||||||
|
return eq(object[index2], value);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function createAssigner(assigner) {
|
||||||
|
return baseRest(function(object, sources) {
|
||||||
|
var index2 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
|
||||||
|
customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
|
||||||
|
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
||||||
|
customizer = length < 3 ? void 0 : customizer;
|
||||||
|
length = 1;
|
||||||
|
}
|
||||||
|
object = Object(object);
|
||||||
|
while (++index2 < length) {
|
||||||
|
var source = sources[index2];
|
||||||
|
if (source) {
|
||||||
|
assigner(object, source, index2, customizer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var objectProto$4 = Object.prototype;
|
||||||
|
function isPrototype(value) {
|
||||||
|
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$4;
|
||||||
|
return value === proto;
|
||||||
|
}
|
||||||
|
function baseTimes(n, iteratee) {
|
||||||
|
var index2 = -1, result = Array(n);
|
||||||
|
while (++index2 < n) {
|
||||||
|
result[index2] = iteratee(index2);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
var argsTag$1 = "[object Arguments]";
|
||||||
|
function baseIsArguments(value) {
|
||||||
|
return isObjectLike(value) && baseGetTag(value) == argsTag$1;
|
||||||
|
}
|
||||||
|
var objectProto$3 = Object.prototype;
|
||||||
|
var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
|
||||||
|
var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
|
||||||
|
var isArguments = baseIsArguments(function() {
|
||||||
|
return arguments;
|
||||||
|
}()) ? baseIsArguments : function(value) {
|
||||||
|
return isObjectLike(value) && hasOwnProperty$3.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
|
||||||
|
};
|
||||||
|
var isArguments$1 = isArguments;
|
||||||
|
function stubFalse() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports;
|
||||||
|
var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module;
|
||||||
|
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
|
||||||
|
var Buffer = moduleExports$1 ? root$1.Buffer : void 0;
|
||||||
|
var nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0;
|
||||||
|
var isBuffer = nativeIsBuffer || stubFalse;
|
||||||
|
var isBuffer$1 = isBuffer;
|
||||||
|
var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", weakMapTag = "[object WeakMap]";
|
||||||
|
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
|
||||||
|
var typedArrayTags = {};
|
||||||
|
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
|
||||||
|
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
|
||||||
|
function baseIsTypedArray(value) {
|
||||||
|
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
|
||||||
|
}
|
||||||
|
function baseUnary(func) {
|
||||||
|
return function(value) {
|
||||||
|
return func(value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
|
||||||
|
var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
|
||||||
|
var moduleExports = freeModule && freeModule.exports === freeExports;
|
||||||
|
var freeProcess = moduleExports && freeGlobal$1.process;
|
||||||
|
var nodeUtil = function() {
|
||||||
|
try {
|
||||||
|
var types = freeModule && freeModule.require && freeModule.require("util").types;
|
||||||
|
if (types) {
|
||||||
|
return types;
|
||||||
|
}
|
||||||
|
return freeProcess && freeProcess.binding && freeProcess.binding("util");
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
var nodeUtil$1 = nodeUtil;
|
||||||
|
var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray;
|
||||||
|
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
|
||||||
|
var isTypedArray$1 = isTypedArray;
|
||||||
|
var objectProto$2 = Object.prototype;
|
||||||
|
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
|
||||||
|
function arrayLikeKeys(value, inherited) {
|
||||||
|
var isArr = isArray$1(value), isArg = !isArr && isArguments$1(value), isBuff = !isArr && !isArg && isBuffer$1(value), isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
|
||||||
|
for (var key in value) {
|
||||||
|
if ((inherited || hasOwnProperty$2.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) {
|
||||||
|
result.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function overArg(func, transform) {
|
||||||
|
return function(arg) {
|
||||||
|
return func(transform(arg));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var nativeKeys = overArg(Object.keys, Object);
|
||||||
|
var nativeKeys$1 = nativeKeys;
|
||||||
|
var objectProto$1 = Object.prototype;
|
||||||
|
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
|
||||||
|
function baseKeys(object) {
|
||||||
|
if (!isPrototype(object)) {
|
||||||
|
return nativeKeys$1(object);
|
||||||
|
}
|
||||||
|
var result = [];
|
||||||
|
for (var key in Object(object)) {
|
||||||
|
if (hasOwnProperty$1.call(object, key) && key != "constructor") {
|
||||||
|
result.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function keys(object) {
|
||||||
|
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
|
||||||
|
}
|
||||||
|
var objectProto = Object.prototype;
|
||||||
|
var hasOwnProperty = objectProto.hasOwnProperty;
|
||||||
|
var assign = createAssigner(function(object, source) {
|
||||||
|
if (isPrototype(source) || isArrayLike(source)) {
|
||||||
|
copyObject(source, keys(source), object);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (var key in source) {
|
||||||
|
if (hasOwnProperty.call(source, key)) {
|
||||||
|
assignValue(object, key, source[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var assign$1 = assign;
|
||||||
|
var now = function() {
|
||||||
|
return root$1.Date.now();
|
||||||
|
};
|
||||||
|
var now$1 = now;
|
||||||
|
var FUNC_ERROR_TEXT = "Expected a function";
|
||||||
|
var nativeMax = Math.max, nativeMin = Math.min;
|
||||||
|
function debounce(func, wait, options) {
|
||||||
|
var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
|
||||||
|
if (typeof func != "function") {
|
||||||
|
throw new TypeError(FUNC_ERROR_TEXT);
|
||||||
|
}
|
||||||
|
wait = toNumber(wait) || 0;
|
||||||
|
if (isObject(options)) {
|
||||||
|
leading = !!options.leading;
|
||||||
|
maxing = "maxWait" in options;
|
||||||
|
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
|
||||||
|
trailing = "trailing" in options ? !!options.trailing : trailing;
|
||||||
|
}
|
||||||
|
function invokeFunc(time) {
|
||||||
|
var args = lastArgs, thisArg = lastThis;
|
||||||
|
lastArgs = lastThis = void 0;
|
||||||
|
lastInvokeTime = time;
|
||||||
|
result = func.apply(thisArg, args);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function leadingEdge(time) {
|
||||||
|
lastInvokeTime = time;
|
||||||
|
timerId = setTimeout(timerExpired, wait);
|
||||||
|
return leading ? invokeFunc(time) : result;
|
||||||
|
}
|
||||||
|
function remainingWait(time) {
|
||||||
|
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
|
||||||
|
return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
|
||||||
|
}
|
||||||
|
function shouldInvoke(time) {
|
||||||
|
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
|
||||||
|
return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
|
||||||
|
}
|
||||||
|
function timerExpired() {
|
||||||
|
var time = now$1();
|
||||||
|
if (shouldInvoke(time)) {
|
||||||
|
return trailingEdge(time);
|
||||||
|
}
|
||||||
|
timerId = setTimeout(timerExpired, remainingWait(time));
|
||||||
|
}
|
||||||
|
function trailingEdge(time) {
|
||||||
|
timerId = void 0;
|
||||||
|
if (trailing && lastArgs) {
|
||||||
|
return invokeFunc(time);
|
||||||
|
}
|
||||||
|
lastArgs = lastThis = void 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function cancel() {
|
||||||
|
if (timerId !== void 0) {
|
||||||
|
clearTimeout(timerId);
|
||||||
|
}
|
||||||
|
lastInvokeTime = 0;
|
||||||
|
lastArgs = lastCallTime = lastThis = timerId = void 0;
|
||||||
|
}
|
||||||
|
function flush() {
|
||||||
|
return timerId === void 0 ? result : trailingEdge(now$1());
|
||||||
|
}
|
||||||
|
function debounced() {
|
||||||
|
var time = now$1(), isInvoking = shouldInvoke(time);
|
||||||
|
lastArgs = arguments;
|
||||||
|
lastThis = this;
|
||||||
|
lastCallTime = time;
|
||||||
|
if (isInvoking) {
|
||||||
|
if (timerId === void 0) {
|
||||||
|
return leadingEdge(lastCallTime);
|
||||||
|
}
|
||||||
|
if (maxing) {
|
||||||
|
clearTimeout(timerId);
|
||||||
|
timerId = setTimeout(timerExpired, wait);
|
||||||
|
return invokeFunc(lastCallTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (timerId === void 0) {
|
||||||
|
timerId = setTimeout(timerExpired, wait);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
debounced.cancel = cancel;
|
||||||
|
debounced.flush = flush;
|
||||||
|
return debounced;
|
||||||
|
}
|
||||||
|
var render = function() {
|
||||||
|
var _vm = this;
|
||||||
|
var _h = _vm.$createElement;
|
||||||
|
var _c = _vm._self._c || _h;
|
||||||
|
return _c("div", [_vm._t("default", null, { "images": _vm.images, "options": _vm.options })], 2);
|
||||||
|
};
|
||||||
|
var staticRenderFns = [];
|
||||||
|
function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
|
||||||
|
var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
|
||||||
|
if (render2) {
|
||||||
|
options.render = render2;
|
||||||
|
options.staticRenderFns = staticRenderFns2;
|
||||||
|
options._compiled = true;
|
||||||
|
}
|
||||||
|
if (functionalTemplate) {
|
||||||
|
options.functional = true;
|
||||||
|
}
|
||||||
|
if (scopeId) {
|
||||||
|
options._scopeId = "data-v-" + scopeId;
|
||||||
|
}
|
||||||
|
var hook;
|
||||||
|
if (moduleIdentifier) {
|
||||||
|
hook = function(context) {
|
||||||
|
context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;
|
||||||
|
if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") {
|
||||||
|
context = __VUE_SSR_CONTEXT__;
|
||||||
|
}
|
||||||
|
if (injectStyles) {
|
||||||
|
injectStyles.call(this, context);
|
||||||
|
}
|
||||||
|
if (context && context._registeredComponents) {
|
||||||
|
context._registeredComponents.add(moduleIdentifier);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
options._ssrRegister = hook;
|
||||||
|
} else if (injectStyles) {
|
||||||
|
hook = shadowMode ? function() {
|
||||||
|
injectStyles.call(
|
||||||
|
this,
|
||||||
|
(options.functional ? this.parent : this).$root.$options.shadowRoot
|
||||||
|
);
|
||||||
|
} : injectStyles;
|
||||||
|
}
|
||||||
|
if (hook) {
|
||||||
|
if (options.functional) {
|
||||||
|
options._injectStyles = hook;
|
||||||
|
var originalRender = options.render;
|
||||||
|
options.render = function renderWithStyleInjection(h, context) {
|
||||||
|
hook.call(context);
|
||||||
|
return originalRender(h, context);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
var existing = options.beforeCreate;
|
||||||
|
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
exports: scriptExports,
|
||||||
|
options
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const __vue2_script = {
|
||||||
|
props: {
|
||||||
|
images: {
|
||||||
|
type: Array
|
||||||
|
},
|
||||||
|
rebuild: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
trigger: {},
|
||||||
|
options: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
computed: {},
|
||||||
|
watch: {
|
||||||
|
images() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.onChange();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
trigger: {
|
||||||
|
handler() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.onChange();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
deep: true
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
handler() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.rebuildViewer();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
deep: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.createViewer();
|
||||||
|
},
|
||||||
|
unmounted() {
|
||||||
|
this.destroyViewer();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange() {
|
||||||
|
if (this.rebuild) {
|
||||||
|
this.rebuildViewer();
|
||||||
|
} else {
|
||||||
|
this.updateViewer();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rebuildViewer() {
|
||||||
|
this.destroyViewer();
|
||||||
|
this.createViewer();
|
||||||
|
},
|
||||||
|
updateViewer() {
|
||||||
|
if (this.$viewer) {
|
||||||
|
this.$viewer.update();
|
||||||
|
this.$emit("inited", this.$viewer);
|
||||||
|
} else {
|
||||||
|
this.createViewer();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
destroyViewer() {
|
||||||
|
this.$viewer && this.$viewer.destroy();
|
||||||
|
},
|
||||||
|
createViewer() {
|
||||||
|
this.$viewer = new Viewer(this.$el, this.options);
|
||||||
|
this.$emit("inited", this.$viewer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const __cssModules = {};
|
||||||
|
var __component__ = /* @__PURE__ */ normalizeComponent(
|
||||||
|
__vue2_script,
|
||||||
|
render,
|
||||||
|
staticRenderFns,
|
||||||
|
false,
|
||||||
|
__vue2_injectStyles,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
function __vue2_injectStyles(context) {
|
||||||
|
for (let o in __cssModules) {
|
||||||
|
this[o] = __cssModules[o];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var component = /* @__PURE__ */ function() {
|
||||||
|
return __component__.exports;
|
||||||
|
}();
|
||||||
|
const directive = ({ name = "viewer", debug = false } = {}) => {
|
||||||
|
function createViewer(el, options, rebuild = false, observer = false) {
|
||||||
|
Vue.nextTick(() => {
|
||||||
|
if (observer && !imageDiff(el))
|
||||||
|
return;
|
||||||
|
if (rebuild || !el[`$${name}`]) {
|
||||||
|
destroyViewer(el);
|
||||||
|
el[`$${name}`] = new Viewer(el, options);
|
||||||
|
log("Viewer created");
|
||||||
|
} else {
|
||||||
|
el[`$${name}`].update();
|
||||||
|
log("Viewer updated");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function imageDiff(el) {
|
||||||
|
const imageContent = el.innerHTML.match(/<img([\w\W]+?)[\\/]?>/g);
|
||||||
|
const viewerImageText = imageContent ? imageContent.join("") : void 0;
|
||||||
|
if (el.__viewerImageDiffCache === viewerImageText) {
|
||||||
|
log("Element change detected, but image(s) has not changed");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
log("Image change detected");
|
||||||
|
el.__viewerImageDiffCache = viewerImageText;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function createObserver(el, options, debouncedCreateViewer, rebuild) {
|
||||||
|
destroyObserver(el);
|
||||||
|
const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
|
||||||
|
if (!MutationObserver) {
|
||||||
|
log("Observer not supported");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const observer = new MutationObserver((mutations) => {
|
||||||
|
mutations.forEach((mutation) => {
|
||||||
|
log(`Viewer mutation:${mutation.type}`);
|
||||||
|
debouncedCreateViewer(el, options, rebuild, true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const config = { attributes: true, childList: true, characterData: true, subtree: true };
|
||||||
|
observer.observe(el, config);
|
||||||
|
el.__viewerMutationObserver = observer;
|
||||||
|
log("Observer created");
|
||||||
|
}
|
||||||
|
function createWatcher(el, { expression }, vnode, debouncedCreateViewer) {
|
||||||
|
const simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
|
||||||
|
if (!expression || !simplePathRE.test(expression)) {
|
||||||
|
log("Only simple dot-delimited paths can create watcher");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
el.__viewerUnwatch = vnode.context.$watch(expression, (newVal, oldVal) => {
|
||||||
|
log("Change detected by watcher: ", expression);
|
||||||
|
debouncedCreateViewer(el, newVal, true);
|
||||||
|
}, {
|
||||||
|
deep: true
|
||||||
|
});
|
||||||
|
log("Watcher created, expression: ", expression);
|
||||||
|
}
|
||||||
|
function destroyViewer(el) {
|
||||||
|
if (!el[`$${name}`]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
el[`$${name}`].destroy();
|
||||||
|
delete el[`$${name}`];
|
||||||
|
log("Viewer destroyed");
|
||||||
|
}
|
||||||
|
function destroyObserver(el) {
|
||||||
|
if (!el.__viewerMutationObserver) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
el.__viewerMutationObserver.disconnect();
|
||||||
|
delete el.__viewerMutationObserver;
|
||||||
|
log("Observer destroyed");
|
||||||
|
}
|
||||||
|
function destroyWatcher(el) {
|
||||||
|
if (!el.__viewerUnwatch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
el.__viewerUnwatch();
|
||||||
|
delete el.__viewerUnwatch;
|
||||||
|
log("Watcher destroyed");
|
||||||
|
}
|
||||||
|
function log() {
|
||||||
|
debug && console.log(...arguments);
|
||||||
|
}
|
||||||
|
const directive2 = {
|
||||||
|
bind(el, binding, vnode) {
|
||||||
|
log("Viewer bind");
|
||||||
|
const debouncedCreateViewer = debounce(createViewer, 50);
|
||||||
|
debouncedCreateViewer(el, binding.value);
|
||||||
|
createWatcher(el, binding, vnode, debouncedCreateViewer);
|
||||||
|
if (!binding.modifiers.static) {
|
||||||
|
createObserver(el, binding.value, debouncedCreateViewer, binding.modifiers.rebuild);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
unbind(el, binding) {
|
||||||
|
log("Viewer unbind");
|
||||||
|
destroyObserver(el);
|
||||||
|
destroyWatcher(el);
|
||||||
|
destroyViewer(el);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return directive2;
|
||||||
|
};
|
||||||
|
const api = ({ images = [], options = {} } = {}) => {
|
||||||
|
options = assign$1(options, {
|
||||||
|
inline: false
|
||||||
|
});
|
||||||
|
const ViewerToken = Vue.extend({
|
||||||
|
render(h) {
|
||||||
|
return h(
|
||||||
|
"div",
|
||||||
|
{
|
||||||
|
style: {
|
||||||
|
display: "none"
|
||||||
|
},
|
||||||
|
class: ["__viewer-token"]
|
||||||
|
},
|
||||||
|
images.map((attr) => {
|
||||||
|
return h(
|
||||||
|
"img",
|
||||||
|
{
|
||||||
|
attrs: typeof attr === "string" ? { src: attr } : attr
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const token = new ViewerToken();
|
||||||
|
token.$mount();
|
||||||
|
document.body.appendChild(token.$el);
|
||||||
|
const $viewer = new Viewer(token.$el, options);
|
||||||
|
const $destroy = $viewer.destroy.bind($viewer);
|
||||||
|
$viewer.destroy = function() {
|
||||||
|
$destroy();
|
||||||
|
token.$destroy();
|
||||||
|
document.body.removeChild(token.$el);
|
||||||
|
return $viewer;
|
||||||
|
};
|
||||||
|
$viewer.show();
|
||||||
|
token.$el.addEventListener("hidden", function() {
|
||||||
|
if (this.viewer === $viewer) {
|
||||||
|
$viewer.destroy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return $viewer;
|
||||||
|
};
|
||||||
|
var index = {
|
||||||
|
install(Vue2, { name = "viewer", debug = false, defaultOptions } = {}) {
|
||||||
|
Viewer.setDefaults(defaultOptions);
|
||||||
|
Vue2.component(name, assign$1(component, { name }));
|
||||||
|
Vue2.directive(name, directive({ name, debug }));
|
||||||
|
Vue2.prototype[`$${name}Api`] = api;
|
||||||
|
},
|
||||||
|
setDefaults(defaultOptions) {
|
||||||
|
Viewer.setDefaults(defaultOptions);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export { api, component, index as default, directive };
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import {directive as viewer} from '../cdn/v-viewer/1.7.4/v-viewer'
|
||||||
|
|
||||||
const map = {
|
const map = {
|
||||||
throttle: {
|
throttle: {
|
||||||
bind: function (el, obj) {
|
bind: function (el, obj) {
|
||||||
@@ -24,7 +26,8 @@ const map = {
|
|||||||
el.style.display = 'none'
|
el.style.display = 'none'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
viewer: viewer({debug: true})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import CryptoJs from "crypto-js";
|
import CryptoJs from "crypto-js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 密码加密工具
|
* 密码加密工具
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
"html2canvas": "^1.4.1",
|
"html2canvas": "^1.4.1",
|
||||||
"jspdf": "^2.5.1",
|
"jspdf": "^2.5.1",
|
||||||
"echarts": "^5.1.2",
|
"echarts": "^5.1.2",
|
||||||
"v-viewer": "^1.5.1",
|
|
||||||
"vue-cropper": "^0.5.5",
|
"vue-cropper": "^0.5.5",
|
||||||
"vue-qr": "^2.2.1",
|
"vue-qr": "^2.2.1",
|
||||||
"vuedraggable": "^2.24.3",
|
"vuedraggable": "^2.24.3",
|
||||||
|
|||||||
@@ -89,14 +89,8 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {VueCropper} from 'vue-cropper'
|
import {VueCropper} from 'vue-cropper'
|
||||||
import 'viewerjs/dist/viewer.css'
|
|
||||||
import Viewer from 'v-viewer'
|
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
|
|
||||||
Viewer.setDefaults({
|
|
||||||
zIndex: 20170
|
|
||||||
})
|
|
||||||
Vue.use(Viewer)
|
|
||||||
export default {
|
export default {
|
||||||
name: 'AiUploader',
|
name: 'AiUploader',
|
||||||
components: {VueCropper},
|
components: {VueCropper},
|
||||||
@@ -279,7 +273,6 @@ export default {
|
|||||||
},
|
},
|
||||||
handlePictureCardPreview(file) {
|
handlePictureCardPreview(file) {
|
||||||
if (this.fileType !== 'img') return
|
if (this.fileType !== 'img') return
|
||||||
|
|
||||||
const index = this.imgList.indexOf(file.url)
|
const index = this.imgList.indexOf(file.url)
|
||||||
const viewer = this.$el.querySelector('.images').$viewer
|
const viewer = this.$el.querySelector('.images').$viewer
|
||||||
viewer.view(index)
|
viewer.view(index)
|
||||||
@@ -343,7 +336,7 @@ export default {
|
|||||||
item.id = res.data.file.id
|
item.id = res.data.file.id
|
||||||
item.path = res.data.file.url
|
item.path = res.data.file.url
|
||||||
item.url = res.data.file.url,
|
item.url = res.data.file.url,
|
||||||
item.media = res.data.media
|
item.media = res.data.media
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.emitChange(this.fileList)
|
this.emitChange(this.fileList)
|
||||||
@@ -409,7 +402,7 @@ export default {
|
|||||||
parent.$emit.apply(parent, [eventName].concat(params));
|
parent.$emit.apply(parent, [eventName].concat(params));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -417,33 +410,33 @@ export default {
|
|||||||
.uploader {
|
.uploader {
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|
||||||
:deep(.el-upload ){
|
:deep(.el-upload ) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: start;
|
text-align: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.validError ){
|
:deep(.validError ) {
|
||||||
.el-button {
|
.el-button {
|
||||||
border-color: #f46;
|
border-color: #f46;
|
||||||
color: #f46;
|
color: #f46;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-upload--picture-card ){
|
:deep(.el-upload--picture-card ) {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .el-list-leave-active), :deep( .el-upload-list__item ){
|
:deep( .el-list-leave-active), :deep( .el-upload-list__item ) {
|
||||||
transition: all 0s !important;
|
transition: all 0s !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-upload-list--picture-card .el-upload-list__item ){
|
:deep(.el-upload-list--picture-card .el-upload-list__item ) {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-upload--picture-card ){
|
:deep(.el-upload--picture-card ) {
|
||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
@@ -453,7 +446,7 @@ export default {
|
|||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.fileItem ){
|
:deep(.fileItem ) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import objectAssign from 'element-ui/src/utils/merge';
|
import objectAssign from 'element-ui/src/utils/merge';
|
||||||
import { markNodeData, NODE_KEY } from './util';
|
import {markNodeData, NODE_KEY} from './util';
|
||||||
import { arrayFindIndex } from 'element-ui/src/utils/util';
|
import {arrayFindIndex} from 'element-ui/src/utils/util';
|
||||||
|
|
||||||
export const getChildState = node => {
|
export const getChildState = node => {
|
||||||
let all = true;
|
let all = true;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import Node from './node';
|
import Node from './node';
|
||||||
import { getNodeKey } from './util';
|
import {getNodeKey} from './util';
|
||||||
|
|
||||||
export default class TreeStore {
|
export default class TreeStore {
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import objectAssign from 'element-ui/src/utils/merge';
|
import objectAssign from 'element-ui/src/utils/merge';
|
||||||
import { markNodeData, NODE_KEY } from './util';
|
import {markNodeData, NODE_KEY} from './util';
|
||||||
import { arrayFindIndex } from 'element-ui/src/utils/util';
|
import {arrayFindIndex} from 'element-ui/src/utils/util';
|
||||||
|
|
||||||
export const getChildState = node => {
|
export const getChildState = node => {
|
||||||
let all = true;
|
let all = true;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import Node from './node';
|
import Node from './node';
|
||||||
import { getNodeKey } from './util';
|
import {getNodeKey} from './util';
|
||||||
|
|
||||||
export default class TreeStore {
|
export default class TreeStore {
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const proxy = {
|
const proxy = {
|
||||||
dv: "https://pingchangdjweb.icunwei.com/",
|
// dv: "https://pingchangdjweb.icunwei.com/",
|
||||||
|
dv: "http://192.168.1.87:9000",
|
||||||
fengdu: "https://web.fdfengshou.cn/"
|
fengdu: "https://web.fdfengshou.cn/"
|
||||||
}[process.env.VUE_APP_SCOPE] || "http://192.168.1.87:9000"
|
}[process.env.VUE_APP_SCOPE] || "http://192.168.1.87:9000"
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|||||||