feat: mp comps init
							parent
							
								
									5795521a99
								
							
						
					
					
						commit
						d9bb4105dd
					
				|  | @ -1,5 +1,10 @@ | ||||||
| import { defHttp } from '@/utils/http/axios' | import { defHttp } from '@/utils/http/axios' | ||||||
| 
 | 
 | ||||||
|  | export interface AccountVO { | ||||||
|  |   id?: number | ||||||
|  |   name: string | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // 创建公众号账号
 | // 创建公众号账号
 | ||||||
| export function createAccount(data) { | export function createAccount(data) { | ||||||
|   return defHttp.post({ url: '/mp/account/create', data }) |   return defHttp.post({ url: '/mp/account/create', data }) | ||||||
|  |  | ||||||
|  | @ -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 } | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| <template> |  | ||||||
|   <div>开发中</div> |  | ||||||
| </template> |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 xingyu
						xingyu