完善问题单

This commit is contained in:
龙运模 2024-11-28 23:14:45 +08:00
parent 03a7c3ceaf
commit 1c6d8e34c9
21 changed files with 578 additions and 128 deletions

View File

@ -2,7 +2,7 @@
NODE_ENV = development
# 标题
VUE_APP_TITLE = 姿集团
VUE_APP_TITLE = 姿集团
# 象纬云科
# 接口地址

View File

@ -5,15 +5,15 @@ NODE_ENV = production
VUE_APP_TITLE = 象纬云科
# 测试环境
# VUE_APP_API_BASEURL = https://dev.api.linkwing.com/api/v1
# VUE_APP_API_DEV = https://dev.api.linkwing.com/api/v1
# VUE_APP_WS_URL = wss://dev.api.linkwing.com/wss
# VUE_APP_WSS_URL = wss://dev.api.linkwing.com/wss
VUE_APP_API_BASEURL = https://dev.api.linkwing.com/api/v1
VUE_APP_API_DEV = https://dev.api.linkwing.com/api/v1
VUE_APP_WS_URL = wss://dev.api.linkwing.com/wss
VUE_APP_WSS_URL = wss://dev.api.linkwing.com/wss
# 线上环境
# 接口地址 # WS地址
VUE_APP_API_BASEURL = https://prod.api.linkwing.com/api/v1
VUE_APP_API_DEV = https://prod.api.linkwing.com/api/v1
VUE_APP_WS_URL = wss://prod.api.linkwing.com/wss
VUE_APP_WSS_URL = wss://prod.api.linkwing.com/wss
# VUE_APP_API_BASEURL = https://prod.api.linkwing.com/api/v1
# VUE_APP_API_DEV = https://prod.api.linkwing.com/api/v1
# VUE_APP_WS_URL = wss://prod.api.linkwing.com/wss
# VUE_APP_WSS_URL = wss://prod.api.linkwing.com/wss

View File

@ -103,9 +103,17 @@ export default {
},
orderMyList:{
url: `${config.API_URL}/customer.work.order.my.list`,
name: "我的工单",
name: "我的问题工单",
post: async function(data){
return await http.post(this.url, data);
}
},
workOrderInfo:{
url: `${config.API_URL}/customer.work.order.info`,
name: "问题工单详情",
post: async function(data){
return await http.post(this.url, data);
}
}
}

View File

@ -378,7 +378,7 @@ export default {
const wrap = this.$refs.scrollbar;
if(wrap){
const e = wrap.$el.querySelector('.el-scrollbar__wrap')
if(e && e.scrollTop){
if(e){
e.scrollTop = e.scrollHeight;
}
}

View File

@ -64,6 +64,7 @@ export default {
this.num = val;
}
},
immediate: true,
deep:true
}
},

View File

@ -4,8 +4,8 @@ import http from "@/utils/request";
export default {
successCode: 200, //请求完成代码
pageSize: 30, //表格每一页条数
pageSizes: [10, 20, 30, 40, 50], //表格可设置的一页条数
pageSize: 100, //表格每一页条数
pageSizes: [30, 50, 100, 150, 200, 300], //表格可设置的一页条数
paginationLayout: "total, sizes, prev, pager, next, jumper", //表格分页布局,可设置"total, sizes, prev, pager, next, jumper"
parseData: function (res) { //数据分析
return {

View File

@ -54,7 +54,7 @@
</el-container>
</el-drawer>
</div>
<el-dropdown class="user panel-item" trigger="click" @command="handleUser">
<el-dropdown class="user userDropdown panel-item" trigger="click" @command="handleUser">
<div class="user-avatar">
<el-avatar :size="22" shape="circle" :src="this.$store.state.global.login_avatar"><span class="userName">{{ userNameF }}</span></el-avatar>
<label>{{ userName }}</label>
@ -81,10 +81,10 @@
<div class="text">{{userInfo.company_info && userInfo.company_info.full_name?userInfo.company_info.full_name:''}}</div>
</div>
</div>
<el-dropdown-menu>
<el-dropdown-item icon="sc-icon-AccountNumber" command="uc">帐号信息</el-dropdown-item>
<el-dropdown-item icon="sc-icon-ClearCache" command="clearCache">清除缓存</el-dropdown-item>
</el-dropdown-menu>
<div class="menuRow">
<div class="itemCol" @click="linkUser"><el-icon size="16"><sc-icon-AccountNumber/></el-icon><span class="name"></span></div>
<div class="itemCol" @click="clearCache"><el-icon size="16"><sc-icon-ClearCache/></el-icon><span class="name"></span></div>
</div>
<div class="loginOut">
<el-button class="btn" style="width: 100%" @click="loginOut">退出登录</el-button>
</div>
@ -152,13 +152,14 @@
methods: {
//
handleUser(command) {
if (command == "uc") {
this.$router.push({ path: '/user/center' });
}
if (command == "cmd") {
this.$router.push({ path: '/cmd' });
}
if (command == "clearCache") {
},
linkUser(){
this.$router.push({ path: '/user/center' });
},
clearCache(){
this.$confirm('清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?', '警告', {
type: 'warning',
}).then(async () => {
@ -175,7 +176,6 @@
}).catch(() => {
//
})
}
},
loginOut(){
this.$confirm('确认是否退出当前用户?', '警告', {
@ -244,7 +244,7 @@
}
</script>
<style scoped lang="scss">
<style lang="scss">
.badge{
display: flex;
align-items: center;
@ -366,9 +366,29 @@
}
}
}
.menuRow{
padding: 10px;
.itemCol{
padding: 6px;
border-radius: 3px;
display: flex;
align-items: center;
color: #888;
border: 1px solid #fff;
.name{
margin-left: 10px;
}
}
.itemCol:hover{
background: #e7eff8;
border-color:#b8d1ec;
color: #1367C1; // #626266
cursor: pointer;
}
}
.loginOut{
border-top: 1px solid #EBEEF5;
padding: 16px;
padding: 16px 10px;
.btn{
font-weight: inherit;
}
@ -399,4 +419,8 @@
.dark .msg-list li a:hover {
background: #383838;
}
.el-popper.is-light>.el-popper__arrow::before{
background: #F5F7FA;
}
</style>

View File

@ -51,14 +51,6 @@ const routes = [
title: "重置密码"
}
},
{
path: "/serve",
component: () => import(/* webpackChunkName: "serveView" */ '@/views/serveView'),
meta: {
title: "信息服务"
},
tokenShow:true
},
{
path: "/maintenance",
component: () => import(/* webpackChunkName: "serveView" */ '@/views/maintenance'),
@ -67,14 +59,6 @@ const routes = [
},
tokenShow:true
},
{
path: "/personalCenter",
component: () => import(/* webpackChunkName: "personalCenter" */ '@/views/personalCenter'),
meta: {
title: "个人中心"
},
tokenShow:true
},
]
export default routes;

View File

@ -121,3 +121,4 @@ a,button,input,textarea{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing: bo
}
/*定宽页面*/
.sc-page {width: 1230px;margin: 0 auto;}

View File

@ -6,15 +6,16 @@
<keep-alive :include="['mainView', 'serveView', 'personalCenter']">
<component :is="componentName" />
</keep-alive>
<footerPage></footerPage>
</el-scrollbar>
</el-main>
<!--客服-->
<scCustomer />
</div>
</template>
<script>
import commonPage from "@/views/serveView/components/commonPage";
import footerPage from "@/views/serveView/components/footerPage";
import mainView from './mainView';
import serveView from '@/views/serveView/index';
import personalCenter from '@/views/personalCenter/index';
@ -24,7 +25,6 @@ export default {
name: "index",
components:{
commonPage,
footerPage,
mainView,
serveView,
personalCenter,
@ -35,7 +35,6 @@ export default {
}
},
created() {
console.log('创建了')
let token = this.$TOOL.cookie.get('TOKEN');
if (token && token != null) {
// ws
@ -47,7 +46,7 @@ export default {
eventBus.$on('headerRouterBack', this.getRouterBack);
},
beforeUnmount() {
console.log('我要离开了')
},
unmounted() {
eventBus.$off('headerRouterBack', this.getRouterBack);

View File

@ -30,15 +30,17 @@
<div class="viewItem" v-for="(item,index) in historyList" :key="index">{{item.name}}</div>
</div>
</div>
<footerPage></footerPage>
</div>
<!--客服-->
<scCustomer />
</template>
<script>
import footerPage from "@/views/serveView/components/footerPage";
export default {
name: "mainView",
components:{
footerPage
},
data(){
return{
list:[
@ -139,7 +141,7 @@ export default {
display: flex;
flex-direction: column;
padding: 0 20px;
min-height: 800px;
//min-height: 800px;
.rowView{
height: 240px;
padding: 20px 0;
@ -177,6 +179,14 @@ export default {
display: none;
}
}
.colItem:first-child{
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.colItem:last-child{
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.colItem:hover{
border-top-color: var(--el-color-primary);
border-bottom-color: var(--el-color-primary);
@ -220,6 +230,7 @@ export default {
max-width: 1200px;
margin: 0 auto;
background: #F8F8F8;
border-radius: 4px;
display: flex;
justify-content: flex-start;
flex-wrap: wrap;

View File

@ -1,15 +1,140 @@
<template>
<div>
我的反馈
<el-container>
<el-header class="serveTitle">
<div class="serveView">
<span v-for="(item,index) in title" :key="index" @click="linkDetail(item)">
<span class="name">{{item.name}}</span>
<span class="solid" v-if="index+1 < title.length">/</span>
</span>
</div>
</el-header>
<el-main class="serveMain" v-if="routerText===1">
<scTable v-loading="tableLoading" element-loading-text="加载中..." height="100%" ref="table" :data="list.data" :size="size" hideDo>
<el-table-column type="index" label="序号"></el-table-column>
<template v-for="(item,index) in list.column" :key="index">
<el-table-column :label="item.label" :prop="item.prop" :width="item.width" show-overflow-tooltip>
<template #default="scope">
<span v-if="item.prop === 'type'">
<span v-for="(em,ind) in setMap.typeList" :key="ind">
<span v-if="em.value === scope.row[item.prop]">{{em.label}}</span>
</span>
</span>
<span v-else-if="item.prop === 'attachment'">
<span v-for="(em,ind) in scope.row[item.prop]" :key="ind">
<el-image :src="em" preview-teleported :preview-src-list="[em]" style="width: 22px;height: 22px;margin: 0 4px;border-radius: 3px;"></el-image>
</span>
</span>
<span v-else>{{scope.row[item.prop]}}</span>
</template>
</el-table-column>
</template>
<el-table-column label="操作" fixed="right" align="center" width="150">
<template #default="scope">
<el-button type="primary" link @click="table_show(scope.row, 'see')" :size="size">查看</el-button>
<el-button type="danger" link @click="table_del(scope.row, 'delete')" :size="size">删除</el-button>
</template>
</el-table-column>
</scTable>
</el-main>
<el-main class="serveMain" v-if="routerText===2">
<feedbackDetail></feedbackDetail>
</el-main>
</el-container>
</template>
<script>
import feedbackDetail from "@/views/personalCenter/components/feedbackDetail";
export default {
name: "feedback"
name: "feedback",
components: {
feedbackDetail
},
data(){
return{
title:[
{name:"我的反馈",value:1},
],
routerText:1,
size:"small",
setMap:{
typeList:[],
},
tableLoading:false,
list:{
column:[
{label:'创建时间',prop:'created_at',width:160,show: true},
{label:'机器序列号',prop:'serial_number',width:200,show: true},
{label:'问题类型',prop:'type',width:180,show: true},
{label:'购买时间',prop:'purchase_time',width:160,show: true},
{label:'附件',prop:'attachment',width:120,show: true},
{label:'提交账号',prop:'creator_name',width:160,show: true},
{label:'备注',prop:'remark',show: true},
],
data:[]
},
routerParams:{}
}
},
mounted() {
this.getTypeList();
this.getMyList();
},
methods:{
async getTypeList() {
const res = await this.$API.customer.serviceTypeList.post();
if(res.code == 200){
this.setMap.typeList = res.data;
}
},
async getMyList() {
this.tableLoading = true;
const res = await this.$API.customer.orderMyList.post();
this.tableLoading = false;
if(res.code == 200){
this.list.data = res.data.rows;
}
},
linkDetail(item){
this.routerText = item.value;
const result = this.title.slice(0,this.title.findIndex(em=> em.value === item.value)+1);
this.title = result;
},
table_show(row){
this.routerParams = row;
this.routerText = 2;
const valueS = this.title.map(em=>em.value);
if(valueS.indexOf(2) ===-1){
this.title.push({name:"反馈详情",value:2})
}
},
table_del(row){
let params = {
ids:[row.id]
}
this.$confirm(`确定删除序列号 ${row.serial_number} 吗?`, '提示', {
type: 'warning'
}).then(async () => {
const res = await this.$API.customer.orderDelete.post(params);
if(res.code == 200){
this.$message.success("删除成功");
await this.getMyList();
}
}).catch(()=>{})
}
}
}
</script>
<style scoped>
<style scoped lang="scss">
.serveView{
.name{
cursor: pointer;
}
.solid{
margin: 0 6px;
color: #888;
}
}
</style>

View File

@ -0,0 +1,114 @@
<template>
<div class="serveMain">
<div class="feedHeader">
<span class="name">问题描述</span>
<span class="date">2024-10-23 11:02:44</span>
</div>
<div class="describe">这是一个问题描述这是一个问题描述这是一个问题描述</div>
<div class="attachment">
<span class="imgView">
<el-image class="img" src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"></el-image>
</span>
<span class="imgView">
<el-image class="img" src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"></el-image>
</span>
</div>
<div class="intelligenceCustomer formInputText">
<div class="title">问题回复</div>
<div class="cardView">
<div class="avatar">
<el-avatar src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"></el-avatar>
</div>
<div class="rightView">
<div class="userHeader">
<span class="name">AA工程师</span>
<span class="time">2024-10-23 11:02:44</span>
</div>
<div class="text">问题回复一次问题回复一次已为您分配工程师问题回复一次</div>
</div>
</div>
</div>
<div class="operateView">
<div class="uploadList">
<uploadListFile></uploadListFile>
</div>
<el-input class="formInputText" type="textarea" :rows="3" placeholder="请描述您的问题"></el-input>
</div>
<div class="saveView">
<el-button :size="size" type="primary">{{saveShow?'提交':'继续提问'}}</el-button>
</div>
</div>
</template>
<script>
import uploadListFile from "@/views/personalCenter/components/uploadListFile";
export default {
name: "feedbackDetail",
components:{
uploadListFile
},
data(){
return{
size:"small",
saveShow:false,
}
},
mounted() {
},
methods:{
}
}
</script>
<style scoped lang="scss">
.serveMain{
.feedHeader{
display: flex;
align-items: center;
.name{color: #333;font-weight: 500;}
.date{margin-left: 10px;font-size: 12px;color: #888}
}
.describe{
margin: 10px 0;
}
.attachment{
.imgView{
.img{width: 80px;height: 80px;border-radius: 4px;margin: 0 4px 4px 0;}
}
}
.intelligenceCustomer{
background: #f5f5f5;
border-radius: 4px;
padding: 10px;
margin: 10px 0;
.title{color: #333;font-weight: 500;margin-bottom: 10px;}
.cardView{
display: flex;
align-items: center;
.rightView{
margin-left: 10px;
.userHeader{
margin-bottom: 5px;font-size: 12px;color: #888;
.time{margin-left: 5px;}
}
}
}
}
.operateView{
margin-top: 15px;
margin-bottom: 10px;
.uploadList{
margin-bottom: 10px;
}
}
.saveView{
margin-top: 15px;
}
}
.formInputText{
width: 800px;
}
</style>

View File

@ -14,6 +14,10 @@
<el-form-item label="购买时间" prop="purchase_time" label-position="top">
<el-date-picker v-model="form.purchase_time" :size="size" value-format="YYYY-MM-DD" class="formInput" placeholder="请选择您的购买时间"></el-date-picker>
</el-form-item>
<el-form-item label="上传附件" prop="attachment" label-position="top">
<ossImgListUpload :list="form.attachment" :length="20" @parentParams="faultParentParams" />
<p class="el-form-item-msg">请将图片拖到此处或点击上传PNGJPEG</p>
</el-form-item>
<el-form-item label="备注" label-position="top">
<el-input v-model="form.remark" class="formInputText" :size="size" type="textarea" :rows="4" resize="none" :autosize="false" placeholder="请详细的描述您的问题"></el-input>
</el-form-item>
@ -37,7 +41,7 @@ export default {
type:"",
serial_number:"",
purchase_time:"",
attachment:"",
attachment:[],
remark:""
},
rules:{
@ -63,6 +67,9 @@ export default {
this.typeList = res.data;
}
},
faultParentParams(item){
this.form.attachment = item;
},
save(){
this.$refs.form.validate(async (valid) => {
if (valid) {
@ -75,9 +82,10 @@ export default {
type:"",
serial_number:"",
purchase_time:"",
attachment:"",
attachment:[],
remark:""
}
this.$refs.form.resetFields();
}
}else{
return false;

View File

@ -0,0 +1,150 @@
<template>
<div class="fileUpload">
<div class="importBody">
<el-upload
class="upload"
:action="oss.host"
:data="upload_data"
:show-file-list="false"
:on-success="handleSuccess"
:before-upload="beforeUpload"
:on-error="handleError"
:drag="false"
multiple
>
<div class="el-upload-size">
<el-button type="primary" :size="size" icon="el-icon-Plus">上传附件</el-button>
</div>
</el-upload>
<div class="fileList">
<div class="fileItem" v-for="(item,index) in imageList" :key="index">
<fileType size="22px" :fileType="item.type" />
{{item.name}}
<span class="btnView" @click="deleteClick(item)"><el-icon size="14"><el-icon-Close/></el-icon></span>
</div>
</div>
</div>
</div>
</template>
<script>
import fileType from "@/views/docsManager/fileType"
export default {
name: "uploadListFile",
components:{
fileType
},
emits: ['closed', "uploadFileSuccess"],
props:{
list:{
type:Array,
},
length:{
type:Number,
}
},
data(){
return{
size:'small',
imageList:[
{name:'测试文件.png',type:'png'},
{name:'测试文件.doc',type:'png'},
{name:'测试文件.doc',type:'png'},
{name:'测试文件.doc',type:'doc'},
{name:'测试文件.doc',type:'doc'},
{name:'测试文件.doc',type:'doc'},
],
oss:{
host:''
},
upload_data:{},
parentParams:{},
}
},
mounted() {
},
methods:{
//
importFile(params){
this.parentParams = params;
},
//
beforeUpload(file){
return new Promise((resolve)=>{
setTimeout(async ()=>{
let params = {
dir:"serve/file/"
}
const res = await this.$API.oss.ossGet.post(params);
this.oss = res.data;
this.upload_data = {
name: new Date().getTime() + file.name,
key: this.oss.dir +file.name,
policy: this.oss.policy,
OSSAccessKeyId: this.oss.accessid,
success_action_status: "200",
callback: this.oss.callback,
signature: this.oss.signature,
"Cache-Control": this.oss.cache_control,
};
resolve()
},100)
})
},
//
handleSuccess(file){
let fileName = file.data.filename.split('/')[1];
let fileType = fileName.split('.')[1];
let imageUrl = {
url:this.oss.host+'/'+file.data.filename,
name:fileName,
type:fileType
};
console.log(imageUrl,799)
this.imageList.push(imageUrl)
this.$emit('uploadFileSuccess',this.imageList);
},
//
handleError(){
this.$message.warning('上传失败请重新上传');
},
deleteClick(item){
console.log(item,233)
}
}
}
</script>
<style scoped lang="scss">
.fileList{
margin-top: 8px;
display: flex;
align-items: center;
flex-wrap: wrap;
width: 800px;
.fileItem{
display: flex;
align-items: center;
margin:0 10px 8px 0;
background: #F6F6F6;
padding: 4px 30px 4px 10px;
border-radius: 4px;
color: #888888;
position: relative;
height: 35px;
.btnView{
position: absolute;
top: 0;
right: 0;
z-index: 10;
padding: 4px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
}
}
</style>

View File

@ -108,6 +108,7 @@ export default {
}
.pageRight{
flex: 1;
overflow: hidden;
}
}
</style>

View File

@ -33,7 +33,7 @@
<el-icon><sc-icon-User /></el-icon>
</div>
<div class="panel-item" v-if="userId">
<el-dropdown trigger="click" @command="handleUser" placement="bottom-start">
<el-dropdown trigger="click" placement="bottom-start" ref="userDropdown">
<div class="user-avatar el-dropdown-link">
<el-avatar :size="22" shape="circle" :src="this.$store.state.global.login_avatar"><span class="userName">{{ userNameF }}</span></el-avatar>
<label class="userName">{{ userName?userName:"匿名" }}</label>
@ -56,10 +56,10 @@
<div class="text">{{userInfo.mobile}}</div>
</div>
</div>
<el-dropdown-menu>
<el-dropdown-item icon="sc-icon-AccountNumber" command="uc">帐号信息</el-dropdown-item>
<el-dropdown-item icon="sc-icon-ClearCache" command="clearCache">清除缓存</el-dropdown-item>
</el-dropdown-menu>
<div class="menuRow">
<div class="itemCol" @click="linkUser"><el-icon size="16"><sc-icon-AccountNumber/></el-icon><span class="name"></span></div>
<div class="itemCol" @click="clearCache"><el-icon size="16"><sc-icon-ClearCache/></el-icon><span class="name"></span></div>
</div>
<div class="loginOut">
<el-button class="btn" style="width: 100%" @click="loginOut">退出登录</el-button>
</div>
@ -110,12 +110,23 @@ export default {
},
methods:{
//
handleUser(command) {
if (command == "uc") {
eventBus.$emit('headerRouterBack',{name:'personalCenter'});
serverQuery(command){
eventBus.$emit('headerRouterBack',{name:'serveView'});
if (command == "termQuery") {
eventBus.$emit('queryBack',{name:'term'});
}
if (command == "clearCache") {
if (command == "componentQuery") {
eventBus.$emit('queryBack',{name:'widget'});
}
if (command == "orderQuery") {
eventBus.$emit('queryBack',{name:'order'});
}
},
linkUser(){
this.$refs.userDropdown.handleClose();
eventBus.$emit('headerRouterBack',{name:'personalCenter'});
},
clearCache(){
this.$confirm('清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?', '警告', {
type: 'warning',
}).then(async () => {
@ -132,19 +143,6 @@ export default {
}).catch(() => {
//
})
}
},
serverQuery(command){
eventBus.$emit('headerRouterBack',{name:'serveView'});
if (command == "termQuery") {
eventBus.$emit('queryBack',{name:'term'});
}
if (command == "componentQuery") {
eventBus.$emit('queryBack',{name:'widget'});
}
if (command == "orderQuery") {
eventBus.$emit('queryBack',{name:'order'});
}
},
loginOut(){
this.$confirm('确认是否退出当前用户?', '警告', {
@ -169,7 +167,7 @@ export default {
}
</script>
<style lang="scss" scoped>
<style lang="scss">
.common-header-left{
width: 100%;
display: flex;
@ -272,11 +270,35 @@ export default {
}
}
}
.menuRow{
padding: 10px;
.itemCol{
padding: 6px;
border-radius: 3px;
display: flex;
align-items: center;
color: #888;
border: 1px solid #fff;
.name{
margin-left: 10px;
}
}
.itemCol:hover{
background: #e7eff8;
border-color:#b8d1ec;
color: #1367C1;
cursor: pointer;
}
}
.loginOut{
border-top: 1px solid #EBEEF5;
padding: 16px;
padding: 16px 10px;
.btn{
font-weight: inherit;
}
}
.el-popper.is-light>.el-popper__arrow::before{
background: #F5F7FA;
}
</style>

View File

@ -1,24 +1,24 @@
<template>
<div class="serveFooter">
<div class="footerView">
<div class="footer-left">
<div class="common-header-logo">
<img class="logo" src="https://dm-auto.oss-cn-shanghai.aliyuncs.com/xw_cloud/image/login_logo.png">
</div>
</div>
<div class="footer-right">
<div class="viewUl">
<div class="line"><span>个人中心</span></div>
<div class="line"><span>关于我们</span></div>
</div>
<div class="viewUl">
<div class="line"><span>服务支持</span></div>
<div class="line"><span>信息查询</span></div>
<div class="line"><span>自助服务</span></div>
<div class="line"><span>问题单</span></div>
</div>
</div>
</div>
<!-- <div class="footerView">-->
<!-- <div class="footer-left">-->
<!-- <div class="common-header-logo">-->
<!-- <img class="logo" src="https://dm-auto.oss-cn-shanghai.aliyuncs.com/xw_cloud/image/login_logo.png">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="footer-right">-->
<!-- <div class="viewUl">-->
<!-- <div class="line"><span>个人中心</span></div>-->
<!-- <div class="line"><span>关于我们</span></div>-->
<!-- </div>-->
<!-- <div class="viewUl">-->
<!-- <div class="line"><span>服务支持</span></div>-->
<!-- <div class="line"><span>信息查询</span></div>-->
<!-- <div class="line"><span>自助服务</span></div>-->
<!-- <div class="line"><span>问题单</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="copyright">
<div class="viewUl">
<div class="line"><span>Copyright @2024象纬云科有限公司</span></div>
@ -66,8 +66,9 @@ export default {
}
}
.copyright{
border-top: 1px solid #f6f6f6;
padding: 15px 20px 0 20px;
padding: 15px 0 0 0;
max-width: 1200px;
margin: 0 auto;
.viewUl{
margin: 0;
display: flex;

View File

@ -108,6 +108,7 @@ export default {
}
.pageRight{
flex: 1;
overflow: hidden;
}
}
</style>

View File

@ -420,7 +420,7 @@ export default {
const wrap = this.$refs.scrollbar;
if(wrap){
const e = wrap.$el.querySelector('.el-scrollbar__wrap');
if(e && e.scrollTop){
if(e){
e.scrollTop = e.scrollHeight;
}
}

View File

@ -85,7 +85,7 @@ export default {
permission: false
},
list:{
apiObj: this.$API.system.log.list,
apiObj: {},
column:[]
},
selection: [],