v-viewer转化成cdn文件,优化包

This commit is contained in:
aixianling
2024-01-22 17:12:32 +08:00
parent 1aa2e264d7
commit ad0a91750c
46 changed files with 2283 additions and 1054 deletions

View File

@@ -113,9 +113,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'ResidentList',

View File

@@ -79,9 +79,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'GoodsList',

View File

@@ -4,74 +4,74 @@
<ai-search-bar>
<template slot="left">
<ai-select
v-model="search.goodsType"
@change="(search.current = 1), getList()"
placeholder="请选择商品类型"
:selectList="dict.getDict('integralSGType')">
v-model="search.goodsType"
@change="(search.current = 1), getList()"
placeholder="请选择商品类型"
:selectList="dict.getDict('integralSGType')">
</ai-select>
<ai-select
v-model="search.status"
@change="(search.current = 1), getList()"
placeholder="请选择订单状态"
:selectList="dict.getDict('integralSGOStatus')">
v-model="search.status"
@change="(search.current = 1), getList()"
placeholder="请选择订单状态"
:selectList="dict.getDict('integralSGOStatus')">
</ai-select>
<el-date-picker
v-model="search.startTime"
type="date"
size="small"
value-format="yyyy-MM-dd"
placeholder="选择订单开始日期"
@change="search.current = 1, getList()">
v-model="search.startTime"
type="date"
size="small"
value-format="yyyy-MM-dd"
placeholder="选择订单开始日期"
@change="search.current = 1, getList()">
</el-date-picker>
<el-date-picker
v-model="search.endTime"
type="date"
size="small"
value-format="yyyy-MM-dd"
placeholder="选择订单结束日期"
@change="search.current = 1, getList()">
v-model="search.endTime"
type="date"
size="small"
value-format="yyyy-MM-dd"
placeholder="选择订单结束日期"
@change="search.current = 1, getList()">
</el-date-picker>
<ai-select
v-model="search.agentOrder"
@change="(search.current = 1), getList()"
placeholder="是否代兑换"
:selectList="dict.getDict('yesOrNo')">
v-model="search.agentOrder"
@change="(search.current = 1), getList()"
placeholder="是否代兑换"
:selectList="dict.getDict('yesOrNo')">
</ai-select>
<ai-download
v-if="permissions('app_appintegralsupermarketorder_export')"
:instance="instance"
url="/app/appintegralsupermarketorder/export"
:params="search"
fileName="订单列表"
:disabled="tableData.length == 0">
v-if="permissions('app_appintegralsupermarketorder_export')"
:instance="instance"
url="/app/appintegralsupermarketorder/export"
:params="search"
fileName="订单列表"
:disabled="tableData.length == 0">
</ai-download>
</template>
<template slot="right">
<el-input
v-model="search.goodsTitle"
class="search-input"
size="small"
v-throttle="() => {search.current = 1, getList()}"
placeholder="请输入商品名称、兑换人"
clearable
@clear="search.current = 1, search.goodsTitle = '', getList()"
suffix-icon="iconfont iconSearch">
v-model="search.goodsTitle"
class="search-input"
size="small"
v-throttle="() => {search.current = 1, getList()}"
placeholder="请输入商品名称、兑换人"
clearable
@clear="search.current = 1, search.goodsTitle = '', getList()"
suffix-icon="iconfont iconSearch">
</el-input>
</template>
</ai-search-bar>
<ai-table
style="margin-top: 8px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="total"
:current.sync="search.current"
:size.sync="search.size"
@getList="getList">
style="margin-top: 8px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="total"
:current.sync="search.current"
:size.sync="search.size"
@getList="getList">
<el-table-column
label="商品"
slot="goods"
align="left"
width="350">
label="商品"
slot="goods"
align="left"
width="350">
<template v-slot="{ row }">
<div class="goods">
<div class="img-content">
@@ -79,7 +79,7 @@
<!-- <span class="type type0" v-if="row.goodsType === '0'">积分兑换</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>
<p>{{ row.goodsTitle }}</p>
</div>
@@ -96,12 +96,12 @@
</el-table-column>
</ai-table>
<ai-dialog
title="订单核销"
:visible.sync="isShow"
:destroyOnClose="true"
width="650px"
@onConfirm="onConfirm"
@close="form.verificationCode = '', id = ''">
title="订单核销"
:visible.sync="isShow"
:destroyOnClose="true"
width="650px"
@onConfirm="onConfirm"
@close="form.verificationCode = '', id = ''">
<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-input v-model="form.verificationCode" placeholder="请输入核销码" size="small"></el-input>
@@ -113,153 +113,154 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'ResidentList',
export default {
name: 'ResidentList',
props: {
instance: Function,
dict: Object,
permissions: Function,
areaId: String,
},
props: {
instance: Function,
dict: Object,
permissions: Function,
areaId: String,
},
data() {
return {
search: {
goodsType: '',
goodsTitle: '',
current: 1,
status: '',
size: 10,
startTime: '',
type: 1,
endTime: '',
agentOrder: ''
},
isShow: false,
form: {
verificationCode: ''
},
id: '',
total: 0,
tableData: [],
colConfigs: [
{ prop: 'goodsSerialNumber', label: '商品ID', align: 'left' },
{ slot: 'goods', align: 'center' },
{ prop: 'goodsType', label: '商品类型', align: 'center', format: v => this.dict.getLabel('integralSGType', v) },
{ prop: 'quantity', label: '数量', align: 'center', format: v => `${v}` },
{ prop: 'usedIntegral', label: '消耗积分', align: 'center' },
{ prop: 'payMoney', label: '兑换后再付', align: 'center' },
{ prop: 'integralUserName', label: '兑换人', align: 'center' },
{ prop: 'agentOrder', label: '是否代兑换', align: 'center', format: v => this.dict.getLabel('yesOrNo', v) },
{ prop: 'createTime', width: 150, label: '创建时间', align: 'center' },
{ prop: 'status', label: '状态', align: 'center', format: v => this.dict.getLabel('integralSGOStatus', v) }
]
}
},
data() {
return {
search: {
goodsType: '',
goodsTitle: '',
current: 1,
status: '',
size: 10,
startTime: '',
type: 1,
endTime: '',
agentOrder: ''
},
isShow: false,
form: {
verificationCode: ''
},
id: '',
total: 0,
tableData: [],
colConfigs: [
{prop: 'goodsSerialNumber', label: '商品ID', align: 'left'},
{slot: 'goods', align: 'center'},
{prop: 'goodsType', label: '商品类型', align: 'center', format: v => this.dict.getLabel('integralSGType', v)},
{prop: 'quantity', label: '数量', align: 'center', format: v => `${v}`},
{prop: 'usedIntegral', label: '消耗积分', align: 'center'},
{prop: 'payMoney', label: '兑换后再付', align: 'center'},
{prop: 'integralUserName', label: '兑换人', align: 'center'},
{prop: 'agentOrder', label: '是否代兑换', align: 'center', format: v => this.dict.getLabel('yesOrNo', v)},
{prop: 'createTime', width: 150, label: '创建时间', align: 'center'},
{prop: 'status', label: '状态', align: 'center', format: v => this.dict.getLabel('integralSGOStatus', v)}
]
}
},
computed: {
},
computed: {},
created () {
this.dict.load('integralSGType', 'integralSGOStatus', 'yesOrNo', 'integralSGTypeText').then(() => {
this.getList()
created() {
this.dict.load('integralSGType', 'integralSGOStatus', 'yesOrNo', 'integralSGTypeText').then(() => {
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: {
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
}
})
},
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 => {
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.$message.success('取消成功!')
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) {
this.$message.success('取消成功!')
this.getList()
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
.GoodsList {
.goods {
display: flex;
align-items: center;
}
.img-content {
position: relative;
margin-right: 8px;
img {
width: 120px;
height: 120px;
cursor: pointer;
}
}
.type {
position: absolute;
top: 0;
left: 0;
font-size: 12px;
.GoodsList {
.goods {
display: flex;
align-items: center;
}
.img-content {
position: relative;
margin-right: 8px;
img {
width: 120px;
text-align: center;
color: #fff;
z-index: 999;
}
.type1 {
background-color: #E64E39;
}
.type0 {
background-color: #FF6900;
height: 120px;
cursor: pointer;
}
}
.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>

View File

@@ -5,44 +5,44 @@
<template slot="left">
<el-button type="primary" icon="iconfont iconAdd" @click="toAdd('')">添加</el-button>
<ai-select
v-model="search.type"
@change="(search.current = 1), getList()"
placeholder="请选择商品类型"
:selectList="dict.getDict('integralSGType')">
v-model="search.type"
@change="(search.current = 1), getList()"
placeholder="请选择商品类型"
:selectList="dict.getDict('integralSGType')">
</ai-select>
<ai-select
v-model="search.status"
@change="(search.current = 1), getList()"
placeholder="请选择类型"
:selectList="dict.getDict('integralSGStatus')">
v-model="search.status"
@change="(search.current = 1), getList()"
placeholder="请选择类型"
:selectList="dict.getDict('integralSGStatus')">
</ai-select>
</template>
<template slot="right">
<el-input
v-model="search.title"
class="search-input"
size="small"
v-throttle="() => {search.current = 1, getList()}"
placeholder="请输入商品名称"
clearable
@clear="search.current = 1, search.title = '', getList()"
suffix-icon="iconfont iconSearch">
v-model="search.title"
class="search-input"
size="small"
v-throttle="() => {search.current = 1, getList()}"
placeholder="请输入商品名称"
clearable
@clear="search.current = 1, search.title = '', getList()"
suffix-icon="iconfont iconSearch">
</el-input>
</template>
</ai-search-bar>
<ai-table
style="margin-top: 8px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="total"
:current.sync="search.current"
:size.sync="search.size"
@getList="getList">
style="margin-top: 8px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="total"
:current.sync="search.current"
:size.sync="search.size"
@getList="getList">
<el-table-column
label="商品"
slot="goods"
align="left"
width="450">
label="商品"
slot="goods"
align="left"
width="450">
<template v-slot="{ row }">
<div class="goods">
<!-- <ai-uploader class="upload"
@@ -56,7 +56,7 @@
<img :src="row.picUrl" alt="" v-viewer>
<!-- <span class="type type0" v-if="row.type === '0'">积分兑换</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>
<p>{{ row.title }}</p>
@@ -79,151 +79,151 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'GoodsList',
export default {
name: 'GoodsList',
props: {
instance: Function,
dict: Object,
permissions: Function
},
props: {
instance: Function,
dict: Object,
permissions: Function
},
data() {
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: []
}
},
data() {
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: {},
computed: {
},
created() {
this.dict.load('integralSGType', 'integralSGStatus', 'integralSGTypeText').then(() => {
this.getList()
})
},
created () {
this.dict.load('integralSGType', 'integralSGStatus', 'integralSGTypeText').then(() => {
this.getList()
methods: {
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: {
getList () {
this.instance.post(`/app/appintegralsupermarketgoods/list`, null, {
params: {
...this.search
}
}).then((res) => {
onAreaChange() {
this.search.current = 1
this.$nextTick(() => {
this.getTableData()
})
},
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) {
res.data.records.map((item) => {
item.typeText = item.type == 0 ? 0 : 1
})
this.tableData = res.data.records
this.total = res.data.total
this.$message.success('删除成功!')
this.getList()
}
})
},
})
},
onAreaChange () {
this.search.current = 1
this.$nextTick(() => {
this.getTableData()
})
},
toAdd (id) {
this.$emit('change', {
type: 'AddGoods',
params: {
id: id || ''
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()
}
})
},
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>
<style lang="scss" scoped>
.GoodsList {
.goods {
display: flex;
align-items: center;
}
.img-content {
position: relative;
margin-right: 8px;
img {
width: 120px;
height: 120px;
cursor: pointer;
}
}
.type {
position: absolute;
top: 0;
left: 0;
.GoodsList {
.goods {
display: flex;
align-items: center;
}
.img-content {
position: relative;
margin-right: 8px;
img {
width: 120px;
text-align: center;
color: #fff;
z-index: 999;
font-size: 12px;
}
.type1 {
background-color: #E64E39;
}
.type0 {
background-color: #FF6900;
height: 120px;
cursor: pointer;
}
}
.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>

View File

@@ -113,9 +113,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'ResidentList',

View File

@@ -79,9 +79,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'GoodsList',

View File

@@ -45,7 +45,7 @@
<h2 v-for="(item, index) in msgTypeList" :key="index" :class="msgType == index ? 'tab-active' : ''" @click="msgTypeClick(index)">{{item.name}}</h2>
</div>
<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">
</el-date-picker>
<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>
<ai-file-list v-if="item.msgType == 'file'"
<ai-file-list v-if="item.msgType == 'file'"
:fileList="item.files"
:fileOps="{ name: 'name', size: 'fileSizeStr' }"
></ai-file-list>
@@ -170,16 +170,11 @@
<script>
import { mapState } from 'vuex'
import Viewer from 'v-viewer'
import AMapLoader from '@amap/amap-jsapi-loader'
import Vue from 'vue'
Vue.use(Viewer);
import html2canvas from "html2canvas";
import jsPDF from "jspdf";
import { Loading } from "element-ui";
const PdfLoader = (ele, pdfFileName) => {
let loadingInstance = Loading.service({ fullscreen: true, text: '正在导出(请勿刷新/关闭页面)' });
ele.style.fontFamily = "宋体";
@@ -447,7 +442,7 @@
this.getMsgList()
},
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}`
this.instance.post(url, null, {
params: {
@@ -546,9 +541,9 @@
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
document.querySelector('.content-right-info').scrollTop = height
}
})
}
this.isLoading = false
}).catch(() => {
@@ -607,7 +602,7 @@
var height = document.querySelector('.content-right-info').scrollHeight - preveHeight
document.querySelector('.content-right-info').scrollTop = height
}
})
}
this.isLoading = false
@@ -656,7 +651,7 @@
},
openLink(row) {
document.write('<a href="" target="new"></a>');
window.open(row.linkUrl, "new");
window.open(row.linkUrl, "new");
},
cancel () {
this.$emit('change', {
@@ -879,7 +874,7 @@
max-width: calc(100% - 144px);
position: relative;
background-color: #f3f6f9;
span {
width: 0px;
height: 0px;
@@ -1001,7 +996,7 @@
}
}
.item-left {
.item-content-flex {
.item-content-flex {
.user-img {
margin: 0 20px 0 0;
}
@@ -1015,7 +1010,7 @@
margin-left: 16px;
}
}
}
.item-right {
width: 100%;
@@ -1043,7 +1038,7 @@
text-align: right;
}
}
}
}
.addressBook-left__list--wrapper::-webkit-scrollbar,

View File

@@ -289,14 +289,9 @@
<script>
import { mapState } from "vuex";
import Viewer from "v-viewer";
import AMapLoader from "@amap/amap-jsapi-loader";
import Vue from "vue";
Vue.use(Viewer);
import html2canvas from "html2canvas";
import jsPDF from "jspdf";
import { Loading } from "element-ui";
const PdfLoader = (ele, pdfFileName) => {
@@ -636,7 +631,7 @@ export default {
var dataURL = canvas.toDataURL("image/"+ext);
return dataURL;
},
initMap(lng, lat, zoom, mapId) {
AMapLoader.load({
key: "54a02a43d9828a8f9cd4f26fe281e74e",

View File

@@ -55,9 +55,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'List',

View File

@@ -111,9 +111,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'ResidentList',

View File

@@ -78,9 +78,6 @@
</template>
<script>
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'GoodsList',

View File

@@ -31,10 +31,6 @@
</template>
<script>
import Viewer from 'v-viewer';
import Vue from 'vue';
Vue.use(Viewer);
export default {
name: "newsDetail",
props: {

View File

@@ -27,11 +27,8 @@
</template>
<script>
import Viewer from 'v-viewer';
export default {
name: "videoDetail",
components: {Viewer},
props: {
instance: Function,
dict: Object,

View File

@@ -300,13 +300,9 @@
<script>
import moment from 'dayjs'
import {mapState} from "vuex";
import Viewer from 'v-viewer'
import Vue from 'vue'
import PersonCreditReport from "../../../../components/personCreditReport";
import EnterpriseDialog from "../../../../components/enterpriseDialog";
Vue.use(Viewer)
export default {
name: "approvalDetail",
components: {EnterpriseDialog, PersonCreditReport},

View File

@@ -89,10 +89,6 @@
</template>
<script>
import { mapState } from 'vuex'
// import 'viewerjs/dist/viewer.css'
import Viewer from 'v-viewer'
import Vue from 'vue'
Vue.use(Viewer)
export default {
name: 'messageDetail',