This commit is contained in:
qsh
2024-08-02 18:03:21 +08:00
parent 605151c5c8
commit 925887f4c9
13 changed files with 251 additions and 60 deletions

View File

@@ -39,6 +39,7 @@
<script setup name="ClueMap">
import { getPlaceList } from '@/api/school/place'
import { getConfigByConfigKey } from '@/api/system/set'
import ImgPostion from '@/assets/imgs/flag/position_black.png'
import FlagRed from '@/assets/imgs/flag/flag_red.png'
@@ -69,9 +70,17 @@ const defaultLatLng = ref({
lat: 31.86119,
lng: 117.283042
})
const defaultCity = ref('合肥')
let AutoComplete = ref(null)
function initMap() {
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({
key: '713d839ff505943b0f18e6df45f3b0dc', //设置您的key
version: '2.0',
@@ -79,7 +88,7 @@ function initMap() {
}).then((AMap) => {
aMap.value = AMap
AutoComplete.value = new AMap.AutoComplete({
city: '合肥'
city: defaultCity.value
})
clueMap.value = new AMap.Map('mapClue', {
zoom: 14,

View File

@@ -0,0 +1,97 @@
<template>
<Dialog title="批量修改跟进人" v-model="show" width="400px">
<el-form :model="form" ref="formRef" :rules="rules" label-width="auto">
<el-form-item label="修改线索数">
{{ form.clueIdList.length }}
</el-form-item>
<el-form-item label="原跟进人" prop="originFollowUserId">
<el-select v-model="form.originFollowUserId" placeholder="原跟进人" filterable>
<el-option
v-for="item in props.userOptions"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="新跟进人" prop="newFollowUserId">
<el-select v-model="form.newFollowUserId" placeholder="新跟进人" filterable>
<el-option
v-for="item in props.userOptions"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<span>
<el-button @click="show = false"> </el-button>
<el-button :disabled="formLoading" type="primary" @click="handleSave"> </el-button>
</span>
</template>
</Dialog>
</template>
<script setup name="DialogBatchChangeFollow">
import { batchUpdateFollowUser } from '@/api/clue'
const props = defineProps({
userOptions: {
type: Array
}
})
const show = ref(false)
const form = ref({
clueIdList: [],
originFollowUserId: undefined,
newFollowUserId: undefined
})
const rules = ref({
originFollowUserId: { required: true, message: '原跟进人不可为空', trigger: 'change' },
newFollowUserId: { required: true, message: '新跟进人不可为空', trigger: 'change' }
})
function open(clueIdList) {
resetForm(clueIdList)
show.value = true
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
function resetForm(clueIdList) {
form.value = {
clueIdList,
originFollowUserId: undefined,
newFollowUserId: undefined
}
}
const formLoading = ref(false)
const emit = defineEmits(['success'])
const formRef = ref()
async function handleSave() {
// 校验表单
if (!formRef.value) return
const valid = await formRef.value.validate()
if (!valid) return
// 提交请求
formLoading.value = true
try {
await batchUpdateFollowUser(form.value)
message.success('修改成功!')
show.value = false
// 发送操作成功的事件
emit('success')
} catch (err) {
console.log(err)
} finally {
formLoading.value = false
}
}
</script>
<style lang="scss" scoped></style>

View File

@@ -133,6 +133,7 @@
import { useAppStore } from '@/store/modules/app'
import { useUserStore } from '@/store/modules/user'
import { getPlaceList } from '@/api/school/place'
import { getConfigByConfigKey } from '@/api/system/set'
import * as ClueApi from '@/api/clue'
import { getDiyFieldList } from '@/api/clue/clueField'
import { formatDate } from '@/utils/formatTime'
@@ -226,6 +227,7 @@ const defaultLatLng = ref({
lat: 31.86119,
lng: 117.283042
})
const defaultCity = ref('合肥')
const info = ref({})
const diyFieldArr = ref([])
@@ -265,9 +267,14 @@ const open = async (type, id) => {
}
]
address.value = ''
defaultLatLng.value = {
lat: 31.86119,
lng: 117.283042
if (appStore.getAppInfo?.instanceType == 1) {
const data = await getConfigByConfigKey({ configKey: 'defaultLocation' })
const cityInfo = JSON.parse(data.configValue)
defaultLatLng.value = {
lat: cityInfo.lat,
lng: cityInfo.lng
}
defaultCity.value = cityInfo.locationName
}
nextTick(() => {
formRef.value.setValues(info.value, true)
@@ -396,7 +403,7 @@ function initMap(data) {
})
addmark(defaultLatLng.value.lng, defaultLatLng.value.lat, AMap)
AutoComplete.value = new AMap.AutoComplete({
city: '合肥'
city: defaultCity.value
})
geoCoder.value = new AMap.Geocoder()
dialogMap.value.on('click', (e) => {

View File

@@ -328,6 +328,7 @@ import { getDiyFieldList } from '@/api/clue/orderField'
import { getPlaceList } from '@/api/school/place'
import { getClassTypeList } from '@/api/school/class'
import { getSimpleProductList } from '@/api/mall/product'
import { getConfigByConfigKey } from '@/api/system/set'
// import { getSimpleWarehouseList } from '@/api/mall/warehouse'
import { formatDate } from '@/utils/formatTime'
@@ -415,7 +416,8 @@ async function open(id) {
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
function resetForm(id) {
async function resetForm(id) {
const data = await getConfigByConfigKey({ configKey: 'companyCollectionConfig' })
form.value = {
clueId: id,
dealDate: formatDate(new Date()),
@@ -423,7 +425,7 @@ function resetForm(id) {
signPrice: 0,
payAmount: 0,
remark: undefined,
isCompanyReceipts: appStore.getAppInfo?.instanceType == 2,
isCompanyReceipts: data.configValue == 'true',
receiver: undefined,
extraPay: [],
signProducts: []