13 changed files with 128 additions and 3 deletions
@ -0,0 +1,43 @@ |
|||||||
|
<template> |
||||||
|
<Select v-model:value="account.id" placeholder="请选择公众号" class="!w-240px" @change="onChanged"> |
||||||
|
<SelectOption v-for="item in accountList" :key="item.id" :label="item.name" :value="item.id" /> |
||||||
|
</Select> |
||||||
|
</template> |
||||||
|
<script lang="ts" setup name="WxAccountSelect"> |
||||||
|
import { Select } from 'ant-design-vue' |
||||||
|
import { AccountVO, getSimpleAccounts } from '@/api/mp/account' |
||||||
|
import { onMounted, reactive, ref } from 'vue' |
||||||
|
|
||||||
|
const SelectOption = Select.Option |
||||||
|
const account = reactive<AccountVO>({ |
||||||
|
id: undefined, |
||||||
|
name: '' |
||||||
|
}) |
||||||
|
const accountList = ref<AccountVO[]>([]) |
||||||
|
const emit = defineEmits(['change']) |
||||||
|
|
||||||
|
async function handleQuery() { |
||||||
|
accountList.value = await getSimpleAccounts() |
||||||
|
// 默认选中第一个 |
||||||
|
if (accountList.value.length > 0) { |
||||||
|
account.id = accountList.value[0].id |
||||||
|
if (account.id) { |
||||||
|
account.name = accountList.value[0].name |
||||||
|
emit('change', account.id, account.name) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function onChanged(id?: number) { |
||||||
|
const found = accountList.value.find((v) => v.id === id) |
||||||
|
if (account.id) { |
||||||
|
account.name = found ? found.name : '' |
||||||
|
emit('change', account.id, account.name) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** 初始化 */ |
||||||
|
onMounted(() => { |
||||||
|
handleQuery() |
||||||
|
}) |
||||||
|
</script> |
@ -0,0 +1,65 @@ |
|||||||
|
import { Image } from 'ant-design-vue'; |
||||||
|
|
||||||
|
<template> |
||||||
|
<div> |
||||||
|
<a-button |
||||||
|
type="link" |
||||||
|
target="_blank" |
||||||
|
:href=" |
||||||
|
'https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx=' + |
||||||
|
locationY + |
||||||
|
'&pointy=' + |
||||||
|
locationX + |
||||||
|
'&name=' + |
||||||
|
label + |
||||||
|
'&ref=yudao' |
||||||
|
" |
||||||
|
> |
||||||
|
<Image |
||||||
|
:src=" |
||||||
|
'https://apis.map.qq.com/ws/staticmap/v2/?zoom=10&markers=color:blue|label:A|' + |
||||||
|
locationX + |
||||||
|
',' + |
||||||
|
locationY + |
||||||
|
'&key=' + |
||||||
|
qqMapKey + |
||||||
|
'&size=250*180' |
||||||
|
" |
||||||
|
/> |
||||||
|
<Icon icon="ep:location" /> |
||||||
|
{{ label }} |
||||||
|
</a-button> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
<script lang="ts" setup name="WxLocation"> |
||||||
|
import { Image } from 'ant-design-vue' |
||||||
|
import Icon from '@/components/Icon' |
||||||
|
|
||||||
|
const props = defineProps({ |
||||||
|
locationX: { |
||||||
|
required: true, |
||||||
|
type: Number |
||||||
|
}, |
||||||
|
locationY: { |
||||||
|
required: true, |
||||||
|
type: Number |
||||||
|
}, |
||||||
|
label: { |
||||||
|
// 地名 |
||||||
|
required: true, |
||||||
|
type: String |
||||||
|
}, |
||||||
|
qqMapKey: { |
||||||
|
// QQ 地图的密钥 https://lbs.qq.com/service/staticV2/staticGuide/staticDoc |
||||||
|
required: false, |
||||||
|
type: String, |
||||||
|
default: 'TVDBZ-TDILD-4ON4B-PFDZA-RNLKH-VVF6E' // 需要自定义 |
||||||
|
} |
||||||
|
}) |
||||||
|
defineExpose({ |
||||||
|
locationX: props.locationX, |
||||||
|
locationY: props.locationY, |
||||||
|
label: props.label, |
||||||
|
qqMapKey: props.qqMapKey |
||||||
|
}) |
||||||
|
</script> |
@ -0,0 +1 @@ |
|||||||
|
<template><span>123</span> </template> |
@ -0,0 +1,11 @@ |
|||||||
|
export enum NewsType { |
||||||
|
Draft = '2', |
||||||
|
Published = '1' |
||||||
|
} |
||||||
|
|
||||||
|
export enum MaterialType { |
||||||
|
Image = 'image', |
||||||
|
Voice = 'voice', |
||||||
|
Video = 'video', |
||||||
|
News = 'news' |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
import wxAccountSelect from './WxAccountSelect/index.vue' |
||||||
|
|
||||||
|
export { wxAccountSelect } |
Reference in new issue