上传
This commit is contained in:
@@ -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,
|
||||
|
||||
97
src/views/Clue/Pool/Comp/DialogBatchChangeFollow.vue
Normal file
97
src/views/Clue/Pool/Comp/DialogBatchChangeFollow.vue
Normal 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>
|
||||
@@ -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) => {
|
||||
|
||||
@@ -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: []
|
||||
|
||||
Reference in New Issue
Block a user