2023-12-04 09:15:31 +08:00
|
|
|
|
<template>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<Navmenu></Navmenu>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="equipDetail">
|
|
|
|
|
|
<div class="top">
|
|
|
|
|
|
<div class="showImg">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<showImg :url-list="pageData.pictures || []"></showImg>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="baseInfo">
|
|
|
|
|
|
<div class="equipInfo">
|
|
|
|
|
|
<div class="left">
|
|
|
|
|
|
<div class="title">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="name">{{ pageData.modelName }}{{ pageData.deviceName }}</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="tag">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="item">{{ pageData.maStatus }}</div>
|
|
|
|
|
|
<div class="item otherItem" v-if="pageData.isAudit == 1">已审核</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<div class="viewNnum">浏览{{ pageData.searchNum }}</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="infoBox">
|
2023-12-04 17:42:11 +08:00
|
|
|
|
<div class="item" v-for="(v, i) in equipBaseInfoList" :key="i">
|
|
|
|
|
|
<div class="label">{{ v.label }}:</div>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="value">{{
|
|
|
|
|
|
v.key.split(',').map(key => {
|
|
|
|
|
|
return pageData[key]
|
|
|
|
|
|
}).join('')
|
|
|
|
|
|
}}
|
|
|
|
|
|
</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="right">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="Top">
|
|
|
|
|
|
<div class="price">
|
|
|
|
|
|
¥
|
|
|
|
|
|
<span>{{ pageData.monthLeasePrice }}</span>
|
|
|
|
|
|
/月
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="collect" @click="collectChange">
|
|
|
|
|
|
<el-icon class="no" v-show="!isCollect">
|
|
|
|
|
|
<Star/>
|
|
|
|
|
|
</el-icon>
|
|
|
|
|
|
<el-icon class="yes" v-show="isCollect">
|
|
|
|
|
|
<StarFilled/>
|
|
|
|
|
|
</el-icon>
|
|
|
|
|
|
{{ isCollect ? '装备已收藏' : '收藏装备' }}
|
|
|
|
|
|
</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="options">
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<div class="item contact" @click="openPhone">联系商家</div>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="item applyFor" @click="openLease">我要租</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="businessInfo">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<img class="bgCar" src="@/assets/img/equipDetail/gouwu.png"/>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
|
|
|
|
|
<div class="business">
|
2023-12-04 17:42:11 +08:00
|
|
|
|
<img
|
2023-12-05 17:25:00 +08:00
|
|
|
|
:src="pageData.companyLogoUrl"
|
|
|
|
|
|
class="avatar"/>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="fonts">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="name">{{ pageData.companyName }}</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="other">
|
2023-12-04 17:42:11 +08:00
|
|
|
|
<div class="item" v-for="(v, i) in businessList" :key="i">
|
|
|
|
|
|
<div class="label">{{ v.label }}:</div>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div class="value">{{ pageData[v.key] }}{{ v.unit }}</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="detail">
|
2023-12-04 17:42:11 +08:00
|
|
|
|
<div class="publicTitle">装备详情</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="publicLine"></div>
|
|
|
|
|
|
<div class="list publicContent">
|
2023-12-04 17:42:11 +08:00
|
|
|
|
<div class="item" v-for="(v, i) in equipDetailKeyList" :key="i">
|
|
|
|
|
|
<div class="label">{{ v.label }}:</div>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<div :class="v.fn ? 'fnValue' : 'value'" @click="handelDetailListClick(v.fn,pageData[v.arg])">{{
|
|
|
|
|
|
pageData[v.key]
|
|
|
|
|
|
}}
|
|
|
|
|
|
</div>
|
2023-12-04 17:42:11 +08:00
|
|
|
|
</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="appearance">
|
2023-12-04 17:42:11 +08:00
|
|
|
|
<div class="publicTitle">装备外观</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
<div class="publicLine"></div>
|
|
|
|
|
|
<div class="urlList publicContent">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<img :src="v" v-for="(v, i) in (pageData.pictures || [])" :key="i"/>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="recommend">
|
|
|
|
|
|
<div class="publicTitle">
|
|
|
|
|
|
<div>为您推荐</div>
|
|
|
|
|
|
|
2023-12-06 14:12:36 +08:00
|
|
|
|
<div class="change" @click="gethotList">换一批</div>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="content">
|
2023-12-06 14:12:36 +08:00
|
|
|
|
<equip-card class="item"
|
|
|
|
|
|
@on-click="goDetail"
|
|
|
|
|
|
v-for="(v, i) in hotList"
|
|
|
|
|
|
:key="i"
|
|
|
|
|
|
:url="v.picUrl"
|
|
|
|
|
|
:name="`${v.modelName}${v.deviceName}`"
|
|
|
|
|
|
:tags="[v.maStatus,v.location]"
|
|
|
|
|
|
:company="v.companyName"
|
|
|
|
|
|
:price="v.monthLeasePrice"
|
|
|
|
|
|
timeUnit="月"
|
|
|
|
|
|
:id="v.maId"></equip-card>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-model="dialoglease"
|
|
|
|
|
|
title="填写租赁信息"
|
|
|
|
|
|
lock-scroll
|
2023-12-06 14:12:36 +08:00
|
|
|
|
class="dialoglease"
|
2023-12-05 17:25:00 +08:00
|
|
|
|
width="60%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-config-provider :locale="zhCn">
|
|
|
|
|
|
<el-form
|
2023-12-05 20:50:06 +08:00
|
|
|
|
ref="ruleFormRef"
|
|
|
|
|
|
:model="ruleForm"
|
|
|
|
|
|
:rules="rules"
|
|
|
|
|
|
label-width="120px"
|
|
|
|
|
|
class="demo-ruleForm"
|
|
|
|
|
|
status-icon
|
2023-12-05 17:25:00 +08:00
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<el-col :span="15">
|
|
|
|
|
|
<el-form-item label="设备进场地址" prop="address">
|
2023-12-06 14:12:36 +08:00
|
|
|
|
<el-cascader :props="addressCascader" v-model="ruleForm.address" />
|
2023-12-05 17:25:00 +08:00
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<el-col :span="15">
|
|
|
|
|
|
<el-form-item label="详细地址" prop="detailAddress">
|
|
|
|
|
|
<el-input placeholder="请输入地址" v-model="ruleForm.detailAddress"></el-input>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<el-col :span="15">
|
|
|
|
|
|
<el-form-item label="进场时间" prop="entryTime">
|
|
|
|
|
|
<el-date-picker
|
2023-12-05 20:50:06 +08:00
|
|
|
|
v-model="ruleForm.entryTime"
|
2023-12-06 15:57:08 +08:00
|
|
|
|
value-format="YYYY-MM-DD"
|
2023-12-05 20:50:06 +08:00
|
|
|
|
type="date"
|
|
|
|
|
|
placeholder="请选择"
|
2023-12-05 17:25:00 +08:00
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<el-col :span="15">
|
|
|
|
|
|
<el-form-item label="工期时长" prop="duration">
|
2023-12-06 15:57:08 +08:00
|
|
|
|
<el-input v-model="ruleForm.duration" type="number" placeholder="请输入工期时长">
|
2023-12-06 14:12:36 +08:00
|
|
|
|
<template #append>天</template>
|
|
|
|
|
|
</el-input>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
|
<el-col :span="7">
|
|
|
|
|
|
<el-form-item label="是否需要机手" prop="machinist">
|
|
|
|
|
|
<el-radio-group v-model="ruleForm.machinist">
|
|
|
|
|
|
<el-radio-button :label="1" :disabled="!pageData.isOperator">
|
|
|
|
|
|
是
|
|
|
|
|
|
</el-radio-button>
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<el-radio-button :label="0">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
否
|
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<el-form-item label="发票类型" prop="invoiceType">
|
|
|
|
|
|
<el-radio-group v-model="ruleForm.invoiceType">
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<el-radio-button :label="0">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
不需要
|
|
|
|
|
|
</el-radio-button>
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<el-radio-button :label="1">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
增值税普票
|
|
|
|
|
|
</el-radio-button>
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<el-radio-button :label="2">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
增值税专票
|
|
|
|
|
|
</el-radio-button>
|
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<el-col :span="15">
|
|
|
|
|
|
<el-form-item label="项目说明" prop="projectDescription">
|
2023-12-06 14:12:36 +08:00
|
|
|
|
<el-input placeholder="请填写项目说明" rows="5" type="textarea"
|
2023-12-05 20:50:06 +08:00
|
|
|
|
v-model="ruleForm.projectDescription"></el-input>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</el-config-provider>
|
2023-12-05 20:50:06 +08:00
|
|
|
|
<equipDetailTable
|
|
|
|
|
|
:price="pageData.monthLeasePrice"
|
|
|
|
|
|
:name="`${pageData.modelName}${pageData.deviceName}`"
|
|
|
|
|
|
:company="pageData.companyName"
|
|
|
|
|
|
:url="pageData.picUrl"
|
|
|
|
|
|
:brand="pageData.brand"
|
|
|
|
|
|
:code="pageData.code"
|
|
|
|
|
|
:group="pageData.groupName"
|
|
|
|
|
|
:position="pageData.location"
|
|
|
|
|
|
:specifications="pageData.specification"
|
|
|
|
|
|
:type="pageData.typeName"
|
|
|
|
|
|
unit="月"
|
|
|
|
|
|
></equipDetailTable>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
<template #footer>
|
|
|
|
|
|
<span class="dialog-footer">
|
2023-12-06 14:12:36 +08:00
|
|
|
|
<el-button type="primary" @click="submit">
|
2023-12-05 17:25:00 +08:00
|
|
|
|
提交
|
|
|
|
|
|
</el-button>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-dialog>
|
2023-12-05 20:50:06 +08:00
|
|
|
|
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-model="dialogPhone"
|
|
|
|
|
|
title="服务电话"
|
|
|
|
|
|
width="30%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="font-size: 16px;font-weight: 600;">
|
|
|
|
|
|
{{ pageData.authPhone }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
|
|
|
|
<span class="dialog-footer">
|
|
|
|
|
|
<el-button type="primary" @click="openPhone">
|
|
|
|
|
|
确认
|
|
|
|
|
|
</el-button>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-dialog>
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
2023-12-05 17:25:00 +08:00
|
|
|
|
import ShowImg from './comoonents/showImg.vue'
|
|
|
|
|
|
import {reactive, ref} from 'vue'
|
|
|
|
|
|
import EquipCard from 'components/equipCard.vue'
|
2023-12-06 14:12:36 +08:00
|
|
|
|
import {getDetail,getHotList,equipCollect,apiSubmitLease} from "@/http/api/equip"
|
|
|
|
|
|
import {useRoute, useRouter} from "vue-router";
|
2023-12-05 17:25:00 +08:00
|
|
|
|
import Navmenu from '@/components/Navmenu/index.vue'
|
|
|
|
|
|
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
2023-12-05 20:50:06 +08:00
|
|
|
|
import equipDetailTable from '@/components/equipDetailTable.vue'
|
2023-12-06 14:12:36 +08:00
|
|
|
|
import {ElMessage} from "element-plus";
|
|
|
|
|
|
import address from "@/assets/temporaryAddress.json"
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-06 14:12:36 +08:00
|
|
|
|
const router = useRouter()
|
2023-12-05 17:25:00 +08:00
|
|
|
|
const route = useRoute()
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-06 14:12:36 +08:00
|
|
|
|
const addressData = reactive(address)
|
|
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
const pageParams = route.params
|
|
|
|
|
|
//设备简略基本信息
|
|
|
|
|
|
const equipBaseInfoList = reactive([
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '设备规格',
|
|
|
|
|
|
key: 'specification'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '设备单位',
|
|
|
|
|
|
key: 'companyName'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '配备机手',
|
|
|
|
|
|
key: 'isOperatorCn'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '发布时间',
|
|
|
|
|
|
key: 'createTime'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '更新时间',
|
|
|
|
|
|
key: 'updateTime'
|
2023-12-04 17:42:11 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
])
|
|
|
|
|
|
//商家标签信息
|
|
|
|
|
|
const businessList = reactive([
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '入驻时间',
|
|
|
|
|
|
key: 'companyCreateTime',
|
|
|
|
|
|
unit: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '上架数量',
|
|
|
|
|
|
key: 'companyUpNum',
|
|
|
|
|
|
unit: '台'
|
|
|
|
|
|
}
|
|
|
|
|
|
])
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
//装备详情数据map
|
|
|
|
|
|
const equipDetailKeyList = reactive([
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '装备编号',
|
|
|
|
|
|
key: 'code',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '装备类别',
|
|
|
|
|
|
key: 'typeName',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '装备组别',
|
|
|
|
|
|
key: 'groupName',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '装备名称',
|
|
|
|
|
|
key: 'deviceName',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '规格/操作重量',
|
|
|
|
|
|
key: 'specification',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '品牌',
|
|
|
|
|
|
key: 'brand',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '装备型号',
|
|
|
|
|
|
key: 'modelName',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '序列号码',
|
|
|
|
|
|
key: 'serialNumber',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '出场时间',
|
|
|
|
|
|
key: 'productionDate',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '工作时长',
|
|
|
|
|
|
key: 'workingHours',
|
|
|
|
|
|
fn: '',
|
|
|
|
|
|
arg: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '检验信息',
|
2023-12-06 14:12:36 +08:00
|
|
|
|
key: 'isExaminationPdf',
|
2023-12-05 17:25:00 +08:00
|
|
|
|
fn: 'openPdf',
|
|
|
|
|
|
arg: 'examinationPdf'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '保险信息',
|
2023-12-06 14:12:36 +08:00
|
|
|
|
key: 'isInsurancePdf',
|
2023-12-05 17:25:00 +08:00
|
|
|
|
fn: 'openPdf',
|
|
|
|
|
|
arg: 'insurancePdf'
|
2023-12-04 17:42:11 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
|
|
//
|
2023-12-05 20:50:06 +08:00
|
|
|
|
const dialogPhone = ref(false)
|
2023-12-05 17:25:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//装备详情数据
|
|
|
|
|
|
const pageData = ref({})
|
|
|
|
|
|
|
2023-12-05 20:50:06 +08:00
|
|
|
|
//我要租 弹窗
|
2023-12-05 17:25:00 +08:00
|
|
|
|
const dialoglease = ref(false)
|
|
|
|
|
|
|
|
|
|
|
|
//装备收藏状态
|
|
|
|
|
|
const isCollect = ref(false)
|
|
|
|
|
|
|
2023-12-06 14:12:36 +08:00
|
|
|
|
//推荐列表
|
|
|
|
|
|
const hotList = ref([])
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
//我要租 表单数据
|
|
|
|
|
|
const ruleForm = ref({
|
2023-12-06 15:57:08 +08:00
|
|
|
|
address: [],//进场地址
|
2023-12-05 20:50:06 +08:00
|
|
|
|
detailAddress: '',//详细地址
|
|
|
|
|
|
entryTime: '',//进场时间
|
|
|
|
|
|
duration: '',//工期时长
|
|
|
|
|
|
machinist: 0,//是否需要机手
|
|
|
|
|
|
invoiceType: 0,//发票类型
|
|
|
|
|
|
projectDescription: ''//项目说明
|
2023-12-05 17:25:00 +08:00
|
|
|
|
})
|
|
|
|
|
|
const rules = reactive({
|
2023-12-05 20:50:06 +08:00
|
|
|
|
address: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请输入进场地址', trigger: 'blur'}
|
|
|
|
|
|
],
|
2023-12-05 20:50:06 +08:00
|
|
|
|
detailAddress: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请输入详细地址', trigger: 'blur'}
|
|
|
|
|
|
],
|
2023-12-05 20:50:06 +08:00
|
|
|
|
entryTime: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请选择进场时间', trigger: 'blur'}
|
|
|
|
|
|
],
|
2023-12-05 20:50:06 +08:00
|
|
|
|
duration: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请输入工期时长', trigger: 'blur'}
|
|
|
|
|
|
],
|
2023-12-05 20:50:06 +08:00
|
|
|
|
machinist: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请输入进场地址', trigger: 'blur'}
|
|
|
|
|
|
],
|
2023-12-05 20:50:06 +08:00
|
|
|
|
invoiceType: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请输入进场地址', trigger: 'blur'}
|
|
|
|
|
|
],
|
2023-12-05 20:50:06 +08:00
|
|
|
|
projectDescription: [
|
2023-12-05 17:25:00 +08:00
|
|
|
|
{required: true, message: '请输入项目说明', trigger: 'blur'}
|
|
|
|
|
|
],
|
|
|
|
|
|
})
|
|
|
|
|
|
//打开我要租表单
|
|
|
|
|
|
const openLease = () => {
|
|
|
|
|
|
dialoglease.value = true
|
|
|
|
|
|
}
|
|
|
|
|
|
//切换收藏状态
|
2023-12-06 14:12:36 +08:00
|
|
|
|
const collectChange = async () => {
|
2023-12-05 17:25:00 +08:00
|
|
|
|
isCollect.value = !isCollect.value
|
2023-12-06 14:12:36 +08:00
|
|
|
|
const params = {
|
|
|
|
|
|
maId:pageData.value.maId,
|
|
|
|
|
|
isCollect:isCollect.value
|
|
|
|
|
|
}
|
|
|
|
|
|
const res = await equipCollect(params)
|
|
|
|
|
|
if(res.code == '200'){
|
|
|
|
|
|
ElMessage({
|
|
|
|
|
|
type:'success',
|
|
|
|
|
|
duration:1000,
|
|
|
|
|
|
message:`装备${isCollect.value ? '收藏' : '取消收藏'}成功`
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
2023-12-05 20:50:06 +08:00
|
|
|
|
|
|
|
|
|
|
//打开商家电话弹窗
|
|
|
|
|
|
const openPhone = () => {
|
|
|
|
|
|
dialogPhone.value = !dialogPhone.value
|
2023-12-06 14:12:36 +08:00
|
|
|
|
|
2023-12-05 20:50:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 打开新标签页查看pdf
|
2023-12-05 17:25:00 +08:00
|
|
|
|
const openPdf = (name) => {
|
2023-12-06 14:12:36 +08:00
|
|
|
|
if(name){
|
|
|
|
|
|
window.open(name)
|
|
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
const that = {
|
|
|
|
|
|
openPdf
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-12-06 14:12:36 +08:00
|
|
|
|
const addressCascader = {
|
|
|
|
|
|
lazy:true,
|
|
|
|
|
|
label:'name',
|
|
|
|
|
|
value:'id',
|
|
|
|
|
|
lazyLoad(node,resolve){
|
|
|
|
|
|
const { level } = node
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
let nodes = []
|
|
|
|
|
|
if(level == 0){
|
|
|
|
|
|
nodes = addressData.province
|
|
|
|
|
|
}else if(level == 1){
|
|
|
|
|
|
nodes = addressData.city
|
|
|
|
|
|
}else if(level == 2){
|
|
|
|
|
|
nodes = addressData.county.map((item) => ({
|
|
|
|
|
|
...item,
|
|
|
|
|
|
leaf:true
|
|
|
|
|
|
}))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
resolve(nodes)
|
|
|
|
|
|
},1000)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-12-05 20:50:06 +08:00
|
|
|
|
const handelDetailListClick = (fnName, arg) => {
|
|
|
|
|
|
if (fnName) {
|
2023-12-05 17:25:00 +08:00
|
|
|
|
that[fnName](arg)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获取页面数据
|
|
|
|
|
|
const getData = async () => {
|
|
|
|
|
|
const res = await getDetail(pageParams.id)
|
|
|
|
|
|
res.data.isOperatorCn = res.data.isOperator ? '是' : '否'
|
2023-12-06 14:12:36 +08:00
|
|
|
|
res.data.isInsurancePdf = res.data.insurancePdf ? '点击查看' : '暂无'
|
|
|
|
|
|
res.data.isExaminationPdf = res.data.examinationPdf ? '点击查看' : '暂无'
|
|
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
isCollect.value = res.data.collectId ? true : false
|
|
|
|
|
|
pageData.value = res.data
|
|
|
|
|
|
}
|
2023-12-06 14:12:36 +08:00
|
|
|
|
|
|
|
|
|
|
//获取推荐列表
|
|
|
|
|
|
const gethotList = async () => {
|
|
|
|
|
|
const params = {
|
|
|
|
|
|
pageNum:1,
|
|
|
|
|
|
pageSize:3
|
|
|
|
|
|
}
|
|
|
|
|
|
const res = await getHotList(params)
|
|
|
|
|
|
hotList.value = res.rows
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获取详情数据
|
|
|
|
|
|
const goDetail = (val) => {
|
|
|
|
|
|
router.push({
|
|
|
|
|
|
path:`/equipDetail/${val.id}`
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//提交申请
|
|
|
|
|
|
const submit = async() => {
|
|
|
|
|
|
console.log(ruleForm.value)
|
|
|
|
|
|
const params = {
|
2023-12-06 15:57:08 +08:00
|
|
|
|
addressId: ruleForm.value.address[2],
|
|
|
|
|
|
address: ruleForm.value.detailAddress,
|
|
|
|
|
|
realStartTime: ruleForm.value.entryTime,
|
|
|
|
|
|
duration: ruleForm.value.duration,
|
|
|
|
|
|
isMachinist: ruleForm.value.machinist,
|
|
|
|
|
|
invoiceType: -1,
|
|
|
|
|
|
description: ruleForm.value.projectDescription
|
2023-12-06 14:12:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const res = await apiSubmitLease(params)
|
2023-12-06 15:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
if(res.code == '200'){
|
|
|
|
|
|
ElMessage({
|
|
|
|
|
|
message:'提交租赁申请成功',
|
|
|
|
|
|
type:'success',
|
|
|
|
|
|
duration:1500
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
dialoglease.value = false
|
2023-12-06 14:12:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const init = async () => {
|
|
|
|
|
|
await gethotList()
|
|
|
|
|
|
await getData()
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
init()
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
2023-12-06 14:12:36 +08:00
|
|
|
|
:deep(.dialoglease){
|
|
|
|
|
|
margin: 10px auto 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(.el-form-item){
|
2023-12-05 20:50:06 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
|
|
|
|
.el-form-item__content {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.equipDetail {
|
2023-12-05 20:50:06 +08:00
|
|
|
|
user-select: none;
|
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.top {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
margin-bottom: 50px;
|
|
|
|
|
|
|
|
|
|
|
|
.showImg {
|
|
|
|
|
|
width: 38%;
|
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
margin-right: 30px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.baseInfo {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.equipInfo {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
|
|
.left {
|
|
|
|
|
|
margin-right: 5px;
|
|
|
|
|
|
|
|
|
|
|
|
.title {
|
2023-12-04 09:15:31 +08:00
|
|
|
|
display: flex;
|
2023-12-05 17:25:00 +08:00
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
|
|
.name {
|
|
|
|
|
|
font-size: 24px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
color: #000000;
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
|
|
|
|
|
|
.tag {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
color: #005af2;
|
|
|
|
|
|
margin-left: 15px;
|
|
|
|
|
|
padding: 2px 10px;
|
|
|
|
|
|
border: 1px solid #005af2;
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.otherItem {
|
|
|
|
|
|
border-color: #ff6734;
|
|
|
|
|
|
color: #ff6734;
|
|
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
2023-12-04 17:42:11 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.viewNnum {
|
|
|
|
|
|
font-size: 13px;
|
2023-12-04 17:42:11 +08:00
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
2023-12-05 17:25:00 +08:00
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
color: #bcbcbc;
|
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
}
|
2023-12-04 17:42:11 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.infoBox {
|
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
margin-bottom: 18px;
|
|
|
|
|
|
|
|
|
|
|
|
.label {
|
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
color: #8e8e8e;
|
|
|
|
|
|
margin-right: 15px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.value {
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.right {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.collect {
|
|
|
|
|
|
user-select: none;
|
|
|
|
|
|
margin-top: 10px;
|
2023-12-04 17:42:11 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
2023-12-05 17:25:00 +08:00
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
color: #acacac;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
|
|
|
|
.no {
|
|
|
|
|
|
font-size: 16px;
|
2023-12-04 17:42:11 +08:00
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.yes {
|
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
|
color: #1b7eff;
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.price {
|
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
color: #ff4800;
|
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
|
|
|
|
|
|
span {
|
|
|
|
|
|
font-size: 30px;
|
|
|
|
|
|
font-weight: 600;
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.options {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
width: 110px;
|
|
|
|
|
|
height: 40px;
|
|
|
|
|
|
line-height: 40px;
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.contact {
|
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
|
background: #3cabff;
|
|
|
|
|
|
margin-right: 20px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.applyFor {
|
|
|
|
|
|
border: 1px solid #3cabff;
|
|
|
|
|
|
color: #3cabff;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
line-height: 38px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.businessInfo {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 147px;
|
|
|
|
|
|
background: #f7f9fa;
|
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
padding: 25px 15px;
|
|
|
|
|
|
|
|
|
|
|
|
.bgCar {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
right: 0;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
z-index: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.business {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
|
|
.avatar {
|
|
|
|
|
|
width: 65px;
|
|
|
|
|
|
height: 65px;
|
|
|
|
|
|
border-radius: 100%;
|
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.fonts {
|
|
|
|
|
|
.name {
|
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
margin-bottom: 12px;
|
2023-12-04 17:42:11 +08:00
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
|
2023-12-05 17:25:00 +08:00
|
|
|
|
.other {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
color: #333333;
|
2023-12-04 17:42:11 +08:00
|
|
|
|
display: flex;
|
2023-12-05 17:25:00 +08:00
|
|
|
|
margin-right: 15px;
|
|
|
|
|
|
|
|
|
|
|
|
.label {
|
2023-12-04 17:42:11 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
|
|
|
|
|
|
.value {
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-12-04 17:42:11 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.publicTitle {
|
|
|
|
|
|
font-size: 20px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.publicLine {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 12px;
|
|
|
|
|
|
border-bottom: 1px solid #e0e0e0;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
&:before {
|
|
|
|
|
|
content: '';
|
|
|
|
|
|
height: 3px;
|
|
|
|
|
|
width: 40px;
|
|
|
|
|
|
background: #2282ff;
|
|
|
|
|
|
border-radius: 2px;
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
bottom: -1px;
|
|
|
|
|
|
left: 20px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.publicContent {
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
padding: 40px 70px 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.detail {
|
|
|
|
|
|
.list {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
width: calc(100% / 3);
|
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
margin-bottom: 35px;
|
|
|
|
|
|
|
|
|
|
|
|
.label {
|
|
|
|
|
|
color: #8e8e8e;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.value {
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.fnValue {
|
|
|
|
|
|
color: #0087cd;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.appearance {
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
|
|
|
|
|
|
.urlList {
|
|
|
|
|
|
img {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.recommend {
|
|
|
|
|
|
.change {
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
color: #9d9d9d;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.content {
|
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
|
width: calc((100% - 40px) / 3);
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(3n - 1) {
|
|
|
|
|
|
margin: 0 20px;
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
}
|
2023-12-05 17:25:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-12-04 09:15:31 +08:00
|
|
|
|
</style>
|