fix: BUG修改

This commit is contained in:
kun 2024-04-13 16:49:55 +08:00
parent 533ac0f20d
commit ce471e0f21
14 changed files with 152 additions and 76 deletions

View File

@ -56,6 +56,7 @@ export const selectNoticeRemindSoundApi = data => post('xmgl/noticeRemindSound/l
// 组织机构管理 // 组织机构管理
export const getTreeGroupApi = data => get('xmgl/xzProjectOrg/tree/list', data); export const getTreeGroupApi = data => get('xmgl/xzProjectOrg/tree/list', data);
export const getTreeGroupPageApi = data => get('xmgl/xzProjectOrg/tree/page', data);
export const addTreeGroupApi = data => post('xmgl/xzProjectOrg/add', data); export const addTreeGroupApi = data => post('xmgl/xzProjectOrg/add', data);
export const editTreeGroupApi = data => post('xmgl/xzProjectOrg/edit', data); export const editTreeGroupApi = data => post('xmgl/xzProjectOrg/edit', data);
export const deleteTreeGroupApi = data => post('xmgl/xzProjectOrg/delete', data); export const deleteTreeGroupApi = data => post('xmgl/xzProjectOrg/delete', data);

View File

@ -83,8 +83,8 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL ='http://101.43.164.214:45001/' //上海张江 // axios.defaults.baseURL ='http://101.43.164.214:45001/' //上海张江
// axios.defaults.baseURL ='http://101.43.164.214:45011/' //上海优益(上海建工) // axios.defaults.baseURL ='http://101.43.164.214:45011/' //上海优益(上海建工)
// axios.defaults.baseURL = 'http://192.168.34.221:28889/' //郭圣雄本地 // axios.defaults.baseURL = 'http://192.168.34.221:28889/' //郭圣雄本地
axios.defaults.baseURL ='http://192.168.34.221:9111/' //郭圣雄本地 // axios.defaults.baseURL ='http://192.168.34.221:9111/' //郭圣雄本地
// axios.defaults.baseURL = 'http://192.168.34.155:19111/' //彭洁本地 axios.defaults.baseURL = 'http://192.168.34.155:19111/' //彭洁本地
// axios.defaults.baseURL = 'http://182.90.224.237:51234' //郭圣雄远程 // axios.defaults.baseURL = 'http://182.90.224.237:51234' //郭圣雄远程
// axios.defaults.baseURL ='http://101.43.164.214:45020/' //沈阳和盈 // axios.defaults.baseURL ='http://101.43.164.214:45020/' //沈阳和盈
// axios.defaults.baseURL ='http://183.249.224.118:9000/' //嘉兴王江泾公用码头 // axios.defaults.baseURL ='http://183.249.224.118:9000/' //嘉兴王江泾公用码头

View File

@ -52,10 +52,10 @@
>>{{ item.name }}</span >>{{ item.name }}</span
> >
</div> </div>
<div class="title_near flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<userChange></userChange> <userChange></userChange>
</div> </div>
<div class="title_near-tow flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near-tow flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<div class="divider-line"></div> <div class="divider-line"></div>
<centerChange></centerChange> <centerChange></centerChange>
</div> </div>

View File

@ -169,7 +169,7 @@ export default {
this.selectProject(item); this.selectProject(item);
}); });
} else { } else {
if (!this.selectedProjectSn && !this.$store.state.projectSn) { if (!this.selectedProjectSn || !this.$store.state.projectSn) {
// //
this.selectedProjectSn = obj.sn; this.selectedProjectSn = obj.sn;
// projectSn // projectSn
@ -233,6 +233,7 @@ export default {
// popover // popover
this.visible = false; this.visible = false;
} }
this.$router.push("/workSpace")
}, },
filterNode(value, data) { filterNode(value, data) {
if (!value) return true; if (!value) return true;

View File

@ -48,20 +48,20 @@ export default new Vuex.Store({
PAGESIZRS: [10, 20, 30, 50], PAGESIZRS: [10, 20, 30, 50],
// UPLOADURL:' http://101.43.164.214:11111/upload/image/',// 百色 // UPLOADURL:' http://101.43.164.214:11111/upload/image/',// 百色
// FILEURL:' http://101.43.164.214:11111/image/',// 百色 // FILEURL:' http://101.43.164.214:11111/image/',// 百色
// UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄 UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄
// FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄 FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄
WORKFLOWURL: 'http://192.168.34.138:88/#/workspace/forms',//测试工作流地址(本地) WORKFLOWURL: 'http://192.168.34.138:88/#/workspace/forms',//测试工作流地址(本地)
// UPLOADURL:'http://10.0.1.43:6023/upload/image',//测试 // UPLOADURL:'http://10.0.1.43:6023/upload/image',//测试
// FILEURL:'http://10.0.1.43:6023/image/',//测试 // FILEURL:'http://10.0.1.43:6023/image/',//测试
BASEURL: baseUrl // BASEURL: baseUrl
? baseUrl // ? baseUrl
: window.location.protocol + "//" + window.location.host + "/", //正式环境 // : window.location.protocol + "//" + window.location.host + "/", //正式环境
UPLOADURL: // UPLOADURL:
window.location.protocol + // window.location.protocol +
"//" + // "//" +
window.location.host + // window.location.host +
"/upload/image", //正式环境 // "/upload/image", //正式环境
FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境 // FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
// WORKFLOWURL: 'http://jxj.zhgdyun.com:9811/#/workspace/forms',//正式工作流地址 // WORKFLOWURL: 'http://jxj.zhgdyun.com:9811/#/workspace/forms',//正式工作流地址
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
// BASEURL: baseUrl // BASEURL: baseUrl

View File

@ -12,10 +12,10 @@
<!-- 南昌地铁头部样式 --> <!-- 南昌地铁头部样式 -->
<span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span> <span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span>
</div> </div>
<div class="title_near flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<userChange></userChange> <userChange></userChange>
</div> </div>
<div class="title_near-tow flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near-tow flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<div class="divider-line"></div> <div class="divider-line"></div>
<centerChange></centerChange> <centerChange></centerChange>
</div> </div>

View File

@ -12,10 +12,10 @@
<!-- 南昌地铁头部样式 --> <!-- 南昌地铁头部样式 -->
<span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span> <span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span>
</div> </div>
<div class="title_near flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<userChange></userChange> <userChange></userChange>
</div> </div>
<div class="title_near-tow flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near-tow flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<div class="divider-line"></div> <div class="divider-line"></div>
<centerChange></centerChange> <centerChange></centerChange>
</div> </div>

View File

@ -37,18 +37,18 @@
</el-form> </el-form>
</div> </div>
<div class="table_wrap whiteBlock"> <div class="table_wrap whiteBlock">
<vue-scroll style="height: 70%">
<el-table <el-table
class="tables" class="tables"
:data="List" :data="tabelList"
row-key="id" row-key="id"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
> >
<el-table-column <el-table-column
prop="deptName" prop="deptName"
label="组织名称" label="组织名称"
align="center" align="left"
></el-table-column> >
</el-table-column>
<el-table-column <el-table-column
prop="orderNum" prop="orderNum"
label="排序" label="排序"
@ -99,8 +99,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</vue-scroll> <el-pagination
<!-- <el-pagination
class="pagerBox" class="pagerBox"
@size-change="SizeChange" @size-change="SizeChange"
@current-change="CurrentChange" @current-change="CurrentChange"
@ -110,7 +109,7 @@
layout="total, sizes, prev, pager, next" layout="total, sizes, prev, pager, next"
:total="pagInfo.total" :total="pagInfo.total"
background background
></el-pagination> --> ></el-pagination>
</div> </div>
<el-dialog <el-dialog
:modal-append-to-body="false" :modal-append-to-body="false"
@ -221,6 +220,7 @@ import {
editProjectUserApi, editProjectUserApi,
getProjectChilderSystemUserListApi, getProjectChilderSystemUserListApi,
getTreeGroupApi, getTreeGroupApi,
getTreeGroupPageApi,
addTreeGroupApi, addTreeGroupApi,
editTreeGroupApi, editTreeGroupApi,
deleteTreeGroupApi, deleteTreeGroupApi,
@ -295,6 +295,7 @@ export default {
}, },
], ],
}, },
tabelList: [],
List: [], List: [],
Popup: { Popup: {
type: "add", type: "add",
@ -325,6 +326,7 @@ export default {
}; };
}, },
created() { created() {
this.getTableList();
this.getList(); this.getList();
}, },
methods: { methods: {
@ -362,7 +364,7 @@ export default {
}, },
query() { query() {
console.log("查询的参数", this.queryInfo); console.log("查询的参数", this.queryInfo);
this.getList(); this.getTableList();
}, },
add() { add() {
this.title = "添加组织"; this.title = "添加组织";
@ -444,7 +446,7 @@ export default {
deleteTreeGroupApi({ id: obj.id }).then((result) => { deleteTreeGroupApi({ id: obj.id }).then((result) => {
if (result.success) { if (result.success) {
this.$message.success(result.message); this.$message.success(result.message);
this.getList(); this.getTableList();
} }
}); });
}) })
@ -463,7 +465,7 @@ export default {
addTreeGroupApi(params).then((result) => { addTreeGroupApi(params).then((result) => {
if (result.success) { if (result.success) {
this.$message.success(result.message); this.$message.success(result.message);
this.getList(); this.getTableList();
this.groupDialogVisible = false; this.groupDialogVisible = false;
} }
}); });
@ -472,7 +474,7 @@ export default {
editTreeGroupApi(params).then((result) => { editTreeGroupApi(params).then((result) => {
if (result.success) { if (result.success) {
this.$message.success(result.message); this.$message.success(result.message);
this.getList(); this.getTableList();
this.groupDialogVisible = false; this.groupDialogVisible = false;
} }
}); });
@ -488,7 +490,23 @@ export default {
name: "", name: "",
status: null, status: null,
}; };
this.getList(); this.getTableList();
},
getTableList(){
let requestData = {
projectSn: this.$store.state.projectSn,
deptName: this.queryInfo.name,
status: this.queryInfo.status,
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize
}
getTreeGroupPageApi(requestData).then((res) => {
if (res.success) {
this.tabelList = res.result.records;
this.pagInfo.total = +res.result.total;
console.log("列表", result);
}
});
}, },
getList() { getList() {
getTreeGroupApi({ getTreeGroupApi({
@ -510,11 +528,11 @@ export default {
}, },
SizeChange(val) { SizeChange(val) {
this.pagInfo.pageSize = val; this.pagInfo.pageSize = val;
this.getList(); this.getTableList();
}, },
CurrentChange(val) { CurrentChange(val) {
this.pagInfo.pageNo = val; this.pagInfo.pageNo = val;
this.getList(); this.getTableList();
}, },
}, },
}; };

View File

@ -924,4 +924,7 @@ export default {
::v-deep .el-checkbox__input { ::v-deep .el-checkbox__input {
position: absolute; position: absolute;
} }
/deep/.el-select-dropdown__item.hover,.el-select-dropdown__item.hover, .el-select-dropdown__item:hover{
background-color: transparent;
}
</style> </style>

View File

@ -32,7 +32,7 @@
<el-button type="primary" plain @click="searchData">{{ <el-button type="primary" plain @click="searchData">{{
$t("message.laborMange.inquire") $t("message.laborMange.inquire")
}}</el-button> }}</el-button>
<el-button type="warning" plain>{{ <el-button type="warning" plain @click="refresh">{{
$t("message.laborMange.refresh") $t("message.laborMange.refresh")
}}</el-button> }}</el-button>
</el-form-item> </el-form-item>
@ -141,7 +141,7 @@
<span <span
:class="activeTab == 2 ? 'activeStyle' : ''" :class="activeTab == 2 ? 'activeStyle' : ''"
@click="activeTab = 2" @click="activeTab = 2"
v-if="[2,3].includes(rowData.applyStatus)" v-if="[2, 3].includes(rowData.applyStatus)"
>审批回复</span >审批回复</span
> >
</div> </div>
@ -339,7 +339,10 @@
></el-table-column> ></el-table-column>
</el-table> </el-table>
</div> </div>
<div class="dialog-footer relative-group" v-show="activeTab == 1 && rowData.applyStatus == 1"> <div
class="dialog-footer relative-group"
v-show="activeTab == 1 && rowData.applyStatus == 1"
>
<el-button <el-button
type="primary" type="primary"
@click="auditReplyDialog = true" @click="auditReplyDialog = true"
@ -351,11 +354,11 @@
<div class="audit-content"> <div class="audit-content">
<div class="audit-content-item"> <div class="audit-content-item">
<span>审批人</span> <span>审批人</span>
<span>{{replyData.applyUser}}</span> <span>{{ replyData.applyUser }}</span>
</div> </div>
<div class="audit-content-item"> <div class="audit-content-item">
<span>审批回复时间</span> <span>审批回复时间</span>
<span>{{replyData.replyTime}}</span> <span>{{ replyData.replyTime }}</span>
</div> </div>
<div class="audit-content-item"> <div class="audit-content-item">
<span>审批回复</span> <span>审批回复</span>
@ -383,7 +386,7 @@
<div class="reply-content"> <div class="reply-content">
<div class="reply-content-item"> <div class="reply-content-item">
<span>审批人</span> <span>审批人</span>
<span>{{$store.state.userInfo.realName}}</span> <span>{{ $store.state.userInfo.realName }}</span>
</div> </div>
<div class="reply-content-item"> <div class="reply-content-item">
<span>审批回复</span> <span>审批回复</span>
@ -431,10 +434,10 @@ import {
getSupplierInfoRecordApi, getSupplierInfoRecordApi,
getQualificationFileRecordApi, getQualificationFileRecordApi,
auditQualificationApplyApi, auditQualificationApplyApi,
qualificationApplyInfoApi qualificationApplyInfoApi,
} from "@/assets/js/api/supplier.js"; } from "@/assets/js/api/supplier.js";
import { getComapnyStatisticsListApi } from "@/assets/js/api/company/project"; import { getComapnyStatisticsListApi } from "@/assets/js/api/company/project";
import moment from 'moment' import moment from "moment";
export default { export default {
name: "temporary", name: "temporary",
data() { data() {
@ -492,7 +495,7 @@ export default {
projectDirectorPhone: "", projectDirectorPhone: "",
}, },
rowData: {}, rowData: {},
replyData: {} replyData: {},
}; };
}, },
created() { created() {
@ -547,6 +550,14 @@ export default {
} }
}); });
}, },
//
refresh() {
this.tableParameter = {
applyStatus: "",
timeRange: [],
};
this.searchData();
},
// //
searchData() { searchData() {
this.page = 1; // this.page = 1; //
@ -559,7 +570,7 @@ export default {
pageNo: this.page, pageNo: this.page,
pageSize: this.pageSize, pageSize: this.pageSize,
applyStatus: this.tableParameter.applyStatus, applyStatus: this.tableParameter.applyStatus,
projectSn: this.$store.state.projectSn projectSn: this.$store.state.projectSn,
}; };
if ( if (
this.tableParameter.timeRange && this.tableParameter.timeRange &&
@ -583,7 +594,7 @@ export default {
this.auditReplyVal = ""; // this.auditReplyVal = ""; //
this.loadBasicInfoRecord(); this.loadBasicInfoRecord();
this.loadCompanyQulificationRecord(); this.loadCompanyQulificationRecord();
if([2,3].includes(this.rowData.applyStatus)){ if ([2, 3].includes(this.rowData.applyStatus)) {
this.loadqulificationReplyRecord(); this.loadqulificationReplyRecord();
} }
this.relativeGroupDialog = true; this.relativeGroupDialog = true;
@ -611,25 +622,31 @@ export default {
}, },
// //
noPassFn() { noPassFn() {
let item = this.rowData; let item = this.rowData;
this.$confirm( this.$confirm(
`确定要拒绝审核吗?`, `确定要拒绝审核吗?`,
this.$t("message.companyDiagram.Tips"), this.$t("message.companyDiagram.Tips"),
{ {
confirmButtonText: this.$t( confirmButtonText: this.$t(
"message.companyDiagram.confirmButtonText" "message.companyDiagram.confirmButtonText"
), // ), //
cancelButtonText: this.$t("message.companyDiagram.cancelButtonText"), // cancelButtonText: this.$t("message.companyDiagram.cancelButtonText"), //
type: "warning", type: "warning",
} }
).then(() => { ).then(() => {
auditQualificationApplyApi({ id: item.id, applyStatus:3, applyContent: this.auditReplyVal, applyUser: this.$store.state.userInfo.realName, replyTime: moment().format('YYYY-MM-DD HH:mm:ss') }).then((res) => { auditQualificationApplyApi({
this.$message.error("已拒绝"); id: item.id,
this.relativeGroupDialog = false; applyStatus: 3,
this.auditReplyDialog = false; applyContent: this.auditReplyVal,
this.getTableList(); applyUser: this.$store.state.userInfo.realName,
}); replyTime: moment().format("YYYY-MM-DD HH:mm:ss"),
}).then((res) => {
this.$message.error("已拒绝");
this.relativeGroupDialog = false;
this.auditReplyDialog = false;
this.getTableList();
}); });
});
}, },
// //
auditPass() { auditPass() {
@ -645,12 +662,18 @@ export default {
type: "warning", type: "warning",
} }
).then(() => { ).then(() => {
auditQualificationApplyApi({ id: item.id, applyStatus:2, applyContent: this.auditReplyVal, applyUser: this.$store.state.userInfo.realName, replyTime: moment().format('YYYY-MM-DD HH:mm:ss') }).then((res) => { auditQualificationApplyApi({
this.$message.success("已通过"); id: item.id,
this.relativeGroupDialog = false; applyStatus: 2,
this.auditReplyDialog = false; applyContent: this.auditReplyVal,
this.getTableList(); applyUser: this.$store.state.userInfo.realName,
}); replyTime: moment().format("YYYY-MM-DD HH:mm:ss"),
}).then((res) => {
this.$message.success("已通过");
this.relativeGroupDialog = false;
this.auditReplyDialog = false;
this.getTableList();
});
}); });
}, },
// //

View File

@ -12,10 +12,10 @@
<!-- 南昌地铁头部样式 --> <!-- 南昌地铁头部样式 -->
<span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span> <span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span>
</div> </div>
<div class="title_near flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<userChange></userChange> <userChange></userChange>
</div> </div>
<div class="title_near-tow flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near-tow flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<div class="divider-line"></div> <div class="divider-line"></div>
<centerChange></centerChange> <centerChange></centerChange>
</div> </div>

View File

@ -10,7 +10,7 @@
<el-table <el-table
class="tables" class="tables"
:data="tableList" :data="tableList"
height="calc(100% - 90px)" height="calc(100% - 100px)"
> >
<el-table-column <el-table-column
width="50" width="50"

View File

@ -12,10 +12,10 @@
<!-- 南昌地铁头部样式 --> <!-- 南昌地铁头部样式 -->
<span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span> <span v-if="company == 'nanchang'" style="cursor: pointer" @click="back">{{$t('message.companyDiagram.pageTitle')}}</span>
</div> </div>
<div class="title_near flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<userChange></userChange> <userChange></userChange>
</div> </div>
<div class="title_near-tow flex" v-if="![11].includes($store.state.userInfo.accountType)"> <div class="title_near-tow flex" v-if="![11,1,2].includes($store.state.userInfo.accountType)">
<div class="divider-line"></div> <div class="divider-line"></div>
<centerChange></centerChange> <centerChange></centerChange>
</div> </div>
@ -62,6 +62,15 @@
</div> </div>
<!-- <el-menu-item :index="item.modulePath" v-for="(item,index) in menuList" :key="index">{{item.moduleName}}</el-menu-item> --> <!-- <el-menu-item :index="item.modulePath" v-for="(item,index) in menuList" :key="index">{{item.moduleName}}</el-menu-item> -->
</el-menu> </el-menu>
<el-button
class="backtoIndex"
type="primary"
plain
@click="backTo()"
size="mini"
style="margin-right: 30px;"
>返回</el-button
>
</div> </div>
<div class="pageContainer"> <div class="pageContainer">
<div class="pageDataContainer"> <div class="pageDataContainer">
@ -109,6 +118,9 @@ export default {
}, },
methods: { methods: {
backTo(){
this.$router.back();
},
hasSubMenu(list) { hasSubMenu(list) {
// //
let onoff = false; let onoff = false;
@ -225,6 +237,9 @@ export default {
// } // }
.menuBox{ .menuBox{
position: relative; position: relative;
display: flex;
align-items: center;
justify-content: space-between;
} }
.title { .title {
width: 100%; width: 100%;

View File

@ -148,7 +148,7 @@ export default {
iframe.contentWindow.postMessage( iframe.contentWindow.postMessage(
{ {
type: "emitData", type: "emitData",
data: JSON.stringify(this.$store.state.userInfo), data: JSON.stringify({...this.$store.state.userInfo, projectSn: this.$store.state.projectSn}),
authMenuList: authMenuList:
responseMenuList.length > 0 responseMenuList.length > 0
? JSON.stringify(responseMenuList) ? JSON.stringify(responseMenuList)
@ -210,7 +210,6 @@ export default {
projectSn: this.projectSn, projectSn: this.projectSn,
}; };
getProjectDetail(data).then((res) => { getProjectDetail(data).then((res) => {
// console.log(res);
if (res.code == 200) { if (res.code == 200) {
this.projectName = res.result.projectName; this.projectName = res.result.projectName;
document.title = this.projectName; document.title = this.projectName;
@ -219,6 +218,22 @@ export default {
}); });
}, },
}, },
watch: {
params: {
deep: true,
handler() {
this.getUserNotify();
},
},
'$store.state.projectSn': {
deep: true,
immediate: true,
handler(to, from) {
console.log(to,'最新值')
if(this.$store.state.projectSn) this.getModuleList();
},
}
},
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>