添加 内勤 付款 财务收款 及统计 车辆加车系关键字采集

This commit is contained in:
浅念
2025-11-04 15:51:38 +08:00
parent 6ae4fd872d
commit 0e8cec4af0
27 changed files with 5278 additions and 42 deletions
+127 -2
View File
@@ -42,7 +42,12 @@
<!-- 数据表格 -->
<div class="table-container boxshadow">
<ElButton type="primary" v-ripple @click="handleAdd">新增车辆</ElButton>
<div class="btntab">
<ElButton type="primary" v-ripple @click="handleAdd">新增车辆</ElButton>
<ElButton type="success" v-ripple @click="crawlKeywordfn"
>通过车系名称查找抓取车辆</ElButton
>
</div>
<ArtTable
ref="tableRef"
row-key="id"
@@ -988,11 +993,72 @@
</div>
</template>
</ElDialog>
<!-- 关键字 车型抓取弹出框 -->
<ElDialog v-model="keywordDialogVisible" title="关键字-车型采集" width="900px" align-center>
<div class="collect-models-container">
<div style="display: flex; gap: 12px">
<el-form-item label="关键字:" label-width="70px">
<el-input
v-model="carkeyword"
placeholder="请输入关键字"
clearable
@keyup.enter="getcarkeyword"
>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getcarkeyword" v-ripple>采集</el-button>
</el-form-item>
</div>
<div class="collect-models-content">
<div v-if="modelLstLoading" class="loading-container">
<ElLoading text="正在采集车型数据..." />
</div>
<div v-else-if="!modelLst || modelLst.length === 0" class="empty-container">
<ElEmpty description="暂无车型数据" />
</div>
<div v-else class="models-table-container">
<ElTable
:data="modelLst"
style="width: 100%"
max-height="400"
@selection-change="handleModelSelectionChange"
>
<ElTableColumn type="selection" width="55" />
<ElTableColumn prop="brand_name" label="品牌" width="100" />
<ElTableColumn prop="series_name" label="车系" width="120" />
<ElTableColumn prop="title" label="车型名称" min-width="200" show-overflow-tooltip />
<ElTableColumn prop="year" label="年款" width="80" />
<ElTableColumn prop="msrp" label="指导价" width="120">
<template #default="scope">
<span v-if="scope.row.msrp" class="price-text">
¥{{ formatPrice(scope.row.msrp) }}
</span>
<span v-else>-</span>
</template>
</ElTableColumn>
</ElTable>
</div>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<ElButton @click="keywordclose">取消</ElButton>
<ElButton
type="primary"
@click="saveKeywordModels"
:disabled="selectedModels.length === 0"
>
保存选中车型 ({{ selectedModels.length }})
</ElButton>
</div>
</template>
</ElDialog>
</div>
</template>
<script setup lang="ts">
import { ElMessage, ElMessageBox } from 'element-plus'
import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'
import { vehicleService } from '@/api/crmpc/vehicleApi'
import { commonService } from '@/api/commonApi'
defineOptions({ name: 'AdminVehicleList' })
@@ -1766,9 +1832,68 @@
formData.emission_std_code = matchedEmissionStd ? matchedEmissionStd.item_value : ''
}
)
//抓取车辆
const keywordDialogVisible = ref(false)
const carkeyword = ref('')
const keywordModelsData = ref<any>({})
const modelLst = ref<any>([])
const modelLstLoading = ref(false)
const crawlKeywordfn = async () => {
keywordDialogVisible.value = true
carkeyword.value = ''
keywordModelsData.value = {}
modelLst.value = []
}
const keywordclose = () => {
keywordDialogVisible.value = false
carkeyword.value = ''
keywordModelsData.value = {}
modelLst.value = []
}
const handleModelSelectionChange = (selection: any[]) => {
selectedModels.value = selection
}
const selectedModels = ref<any[]>([])
const getcarkeyword = async () => {
modelLstLoading.value = true
selectedModels.value = []
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)'
})
try {
const res = await commonService.getcrawlKeyword({ keyword: carkeyword.value })
keywordModelsData.value = res
modelLst.value = res.model
console.log(modelLst.value)
} finally {
loading.close()
modelLstLoading.value = false
}
}
const saveKeywordModels = async () => {
if (selectedModels.value.length === 0) {
ElMessage.warning('请选择要保存的车型')
return
}
await commonService.crawlModelCreate({
series_id: keywordModelsData.value.series.id ? keywordModelsData.value.series.id : 0,
brand_id: keywordModelsData.value.brand.id ? keywordModelsData.value.brand.id : 0,
models: selectedModels.value
})
ElMessage.success(`成功保存 ${selectedModels.value.length} 个车型`)
keywordDialogVisible.value = false
getList()
}
</script>
<style scoped lang="scss">
.btntab {
display: flex;
justify-content: space-between;
}
.vehicle-page {
background: var(--art-main-bg-color);
min-height: 100vh;