Compare commits

..

No commits in common. 'c87637cc7841250e7646a8b45318a730e7ae2213' and 'a5448406790187b702f75eb5daba5cf016cb80f9' have entirely different histories.

  1. 4
      src/api/clue/sign.js
  2. 2
      src/store/modules/user.ts
  3. 26
      src/views/Clue/Pool/Comp/DialogSchoolInfo.vue
  4. 20
      src/views/Clue/Pool/Comp/DialogSuccess.vue
  5. 12
      src/views/Clue/Set/Comp/ClueSource.vue
  6. 7
      src/views/Home/CloseRate.vue
  7. 83
      src/views/SchoolManagement/Place/index.vue

@ -47,7 +47,3 @@ export const updateProduceStatus = (data) => {
export const updateProduceSort = (data) => { export const updateProduceSort = (data) => {
return request.post({ url: '/admin-api/crm/sign-prodcut/adjust/sort', data: data }) return request.post({ url: '/admin-api/crm/sign-prodcut/adjust/sort', data: data })
} }
export const getSignProfit = (params) => {
return request.get({ url: '/admin-api/crm/sign/profit', params })
}

@ -49,7 +49,7 @@ export const useUserStore = defineStore('admin-user', {
return null return null
} }
let userInfo = cache.local.get(CACHE_KEY.USER) let userInfo = cache.local.get(CACHE_KEY.USER)
if (!userInfo || !userInfo?.menus || userInfo.menus.length == 0) { if (!userInfo) {
userInfo = await getInfo({}) userInfo = await getInfo({})
} }
this.permissions = userInfo.permissions this.permissions = userInfo.permissions

@ -1,44 +1,18 @@
<template> <template>
<el-dialog width="800px" :title="title" v-model="show" append-to-body> <el-dialog width="800px" :title="title" v-model="show" append-to-body>
<el-divider direction="horizontal" content-position="left" style="margin-top: 10px">
场地班型
</el-divider>
<el-table :data="tableList" border stripe size="small">
<el-table-column type="index" width="50" />
<el-table-column prop="typeName" label="班型名称" />
<el-table-column prop="licenseType" label="驾照类型" />
<el-table-column label="班型备注">
<template #default="{ row }">
<el-popover placement="top" width="500px" trigger="click">
<template #reference>
<el-button type="primary" style="padding: 0" text>点击查看</el-button>
</template>
<div v-dompurify-html="row.remark"></div>
</el-popover>
</template>
</el-table-column>
</el-table>
<el-divider direction="horizontal" content-position="left">场地详细信息</el-divider>
<div v-dompurify-html="detail" class="mb-20px"></div> <div v-dompurify-html="detail" class="mb-20px"></div>
</el-dialog> </el-dialog>
</template> </template>
<script setup name="DialogSchoolInfo"> <script setup name="DialogSchoolInfo">
import { getClassTypeList } from '@/api/school/class'
const title = ref('') const title = ref('')
const show = ref(false) const show = ref(false)
const detail = ref('') const detail = ref('')
const tableList = ref([])
function open(info) { function open(info) {
title.value = `${info.schoolName}】详细信息` title.value = `${info.schoolName}】详细信息`
show.value = true show.value = true
detail.value = info.introduce || '该驾校暂未配置详细信息' detail.value = info.introduce || '该驾校暂未配置详细信息'
getClassTypeList({ placeId: info.placeId, status: 0 }).then((data) => {
tableList.value = data
})
} }
defineExpose({ defineExpose({

@ -119,11 +119,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<template v-if="appStore.getAppInfo?.instanceType == 1"> <template v-if="appStore.getAppInfo?.instanceType == 1">
<el-col :span="8" :offset="0" v-if="form.signClass">
<el-form-item label="利润">
<div style="color: blue; font-weight: bold; font-size: 16px">{{ profitNum }}</div>
</el-form-item>
</el-col>
<el-col :span="8" :offset="0"> <el-col :span="8" :offset="0">
<el-form-item label="接待人" prop="receiver"> <el-form-item label="接待人" prop="receiver">
<el-select v-model="form.receiver" placeholder="选择接待人" clearable filterable> <el-select v-model="form.receiver" placeholder="选择接待人" clearable filterable>
@ -341,7 +336,7 @@
<script setup name="DialogSuccess"> <script setup name="DialogSuccess">
import * as ClueApi from '@/api/clue' import * as ClueApi from '@/api/clue'
import { createSign, getSignProfit } from '@/api/clue/sign' import { createSign } from '@/api/clue/sign'
import { getDiyFieldList } from '@/api/clue/orderField' import { getDiyFieldList } from '@/api/clue/orderField'
import { getPlaceList } from '@/api/school/place' import { getPlaceList } from '@/api/school/place'
import { getClassTypeList } from '@/api/school/class' import { getClassTypeList } from '@/api/school/class'
@ -599,19 +594,6 @@ function signPriceChange() {
if (form.value.isPayoff) { if (form.value.isPayoff) {
form.value.payAmount = form.value.signPrice form.value.payAmount = form.value.signPrice
} }
calcSignProfit()
}
const profitNum = ref(0)
function calcSignProfit() {
if (form.value.signClass && appStore.getAppInfo?.instanceType == 1) {
//
getSignProfit({ signClass: form.value.signClass, signPrice: form.value.signPrice }).then(
(data) => {
profitNum.value = data
}
)
}
} }
function handleRemove(type, index) { function handleRemove(type, index) {

@ -9,12 +9,6 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item>
<el-radio-group v-model="searchForm.status" @change="handleQuery">
<el-radio :label="0"> 开启 </el-radio>
<el-radio :label="1"> 关闭 </el-radio>
</el-radio-group>
</el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery">搜索</el-button> <el-button @click="handleQuery">搜索</el-button>
<el-button @click="resetQuery">重置</el-button> <el-button @click="resetQuery">重置</el-button>
@ -65,8 +59,7 @@ const message = useMessage() // 消息弹窗
const { t } = useI18n() // const { t } = useI18n() //
const searchForm = ref({ const searchForm = ref({
sourceName: undefined, sourceName: undefined
status: 0
}) })
const sourceDialog = ref() const sourceDialog = ref()
@ -78,8 +71,7 @@ function handleQuery() {
} }
function resetQuery() { function resetQuery() {
searchForm.value = { searchForm.value = {
sourceName: '', sourceName: ''
status: 0
} }
getList() getList()
} }

@ -1,7 +0,0 @@
<template>
<div> 成交率 </div>
</template>
<script setup name="CloseRate"></script>
<style lang="scss" scoped></style>

@ -109,22 +109,10 @@
<el-input v-model="placeForm.address" placeholder="输入地址" /> <el-input v-model="placeForm.address" placeholder="输入地址" />
</el-form-item> </el-form-item>
<el-form-item label="经度" prop="lng"> <el-form-item label="经度" prop="lng">
<el-input-number <el-input v-model="placeForm.lng" placeholder="输入经度" />
v-model="placeForm.lng"
:min="1"
:controls="false"
placeholder="输入经度"
style="width: 100%"
/>
</el-form-item> </el-form-item>
<el-form-item label="纬度" prop="lat"> <el-form-item label="纬度" prop="lat">
<el-input-number <el-input v-model="placeForm.lat" placeholder="输入纬度" />
v-model="placeForm.lat"
:min="1"
:controls="false"
placeholder="输入纬度"
style="width: 100%"
/>
</el-form-item> </el-form-item>
<el-form-item label="所属区域" prop="area"> <el-form-item label="所属区域" prop="area">
<el-select v-model="placeForm.area" placeholder="请选择" clearable class="w-full"> <el-select v-model="placeForm.area" placeholder="请选择" clearable class="w-full">
@ -142,10 +130,10 @@
<el-form-item label="负责人" prop="contact"> <el-form-item label="负责人" prop="contact">
<el-input v-model="placeForm.contact" placeholder="输入负责人" /> <el-input v-model="placeForm.contact" placeholder="输入负责人" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="是否推荐" prop="contact"> <el-form-item label="是否推荐" prop="contact">
<el-radio v-model="placeForm.recommend" :label="true"></el-radio> <el-radio v-model="placeForm.recommend" :label="true"></el-radio>
<el-radio v-model="placeForm.recommend" :label="false"></el-radio> <el-radio v-model="placeForm.recommend" :label="false"></el-radio>
</el-form-item> --> </el-form-item>
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="描述" name="desc"> <el-tab-pane label="描述" name="desc">
@ -157,19 +145,6 @@
<el-button @click="closePlaceDialog">取消</el-button> <el-button @click="closePlaceDialog">取消</el-button>
</div> </div>
</el-card> </el-card>
<el-autocomplete
:style="{
position: 'absolute',
top: '20px',
left: placeDialogShow ? '380px' : '20px',
width: '200px'
}"
v-model="areaValue"
clearable
placeholder="输入并搜索位置"
:fetch-suggestions="remoteMethod"
@select="currentSelect"
/>
<!-- 底部驾校场地列表 --> <!-- 底部驾校场地列表 -->
<el-card <el-card
@ -259,7 +234,6 @@
<script setup name="Place"> <script setup name="Place">
import * as PlaceApi from '@/api/school/place' import * as PlaceApi from '@/api/school/place'
import { getConfigByConfigKey } from '@/api/system/set'
import { getAreaSimpleList } from '@/api/school/setting/area' import { getAreaSimpleList } from '@/api/school/setting/area'
import { checkPermi } from '@/utils/permission' import { checkPermi } from '@/utils/permission'
@ -293,35 +267,18 @@ const mapHelpText = ref('')
const tipPostion = ref({}) const tipPostion = ref({})
const placeTab = ref('info') const placeTab = ref('info')
const defaultLatLng = ref({ function initMap() {
lat: 31.86119,
lng: 117.283042
})
const defaultCity = ref('合肥')
let AutoComplete = ref(null)
async function initMap() {
const data = await getConfigByConfigKey({ configKey: 'defaultLocation' })
const cityInfo = JSON.parse(data.configValue)
defaultLatLng.value = {
lat: cityInfo.lat,
lng: cityInfo.lng
}
defaultCity.value = cityInfo.locationName
AMapLoader.load({ AMapLoader.load({
key: '713d839ff505943b0f18e6df45f3b0dc', //key key: '713d839ff505943b0f18e6df45f3b0dc', //key
version: '2.0', version: '2.0',
plugins: ['AMap.Geocoder', 'AMap.AutoComplete'] plugins: ['AMap.Geocoder']
}).then((AMap) => { }).then((AMap) => {
aMap.value = AMap aMap.value = AMap
geoCoder.value = new AMap.Geocoder() geoCoder.value = new AMap.Geocoder()
dialogMap.value = new AMap.Map('dialogMap', { dialogMap.value = new AMap.Map('dialogMap', {
zoom: 12, zoom: 12,
zooms: [2, 22], zooms: [2, 22],
center: [defaultLatLng.value.lng, defaultLatLng.value.lat] center: [117.283042, 31.86119]
})
AutoComplete.value = new AMap.AutoComplete({
city: defaultCity.value
}) })
locationMarker.value = new AMap.Marker({ locationMarker.value = new AMap.Marker({
icon: FlagRed icon: FlagRed
@ -356,32 +313,6 @@ async function initMap() {
}) })
} }
const areaValue = ref('')
function remoteMethod(searchValue, cb) {
if (searchValue) {
AutoComplete.value?.search(searchValue, (status, result) => {
if (result.tips?.length) {
// areaList.value = result?.tips
const list = result.tips.map((it) => ({
...it,
value: it.name
}))
cb(list)
} else {
cb([])
}
})
} else {
cb([])
}
}
function currentSelect(val) {
if (val) {
dialogMap.value.setCenter([val.location?.lng, val.location?.lat], true)
}
}
function regeoCode() { function regeoCode() {
geoCoder.value.getAddress([placeForm.value.lng, placeForm.value.lat], (status, result) => { geoCoder.value.getAddress([placeForm.value.lng, placeForm.value.lat], (status, result) => {
if (status === 'complete' && result.regeocode) { if (status === 'complete' && result.regeocode) {

Loading…
Cancel
Save