Skip to content

Commit a8b4c16

Browse files
committed
refactor: WxMaterialSelect组件setup
1 parent e035eb2 commit a8b4c16

File tree

1 file changed

+91
-108
lines changed
  • src/views/mp/components/wx-material-select

1 file changed

+91
-108
lines changed

src/views/mp/components/wx-material-select/main.vue

Lines changed: 91 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
<p class="item-name">{{ item.name }}</p>
1515
<el-row class="ope-row">
1616
<el-button type="success" @click="selectMaterialFun(item)">
17-
选择 <Icon icon="ep:circle-check" />
17+
选择
18+
<Icon icon="ep:circle-check" />
1819
</el-button>
1920
</el-row>
2021
</div>
@@ -48,7 +49,8 @@
4849
<el-table-column label="操作" align="center" fixed="right">
4950
<template #default="scope">
5051
<el-button type="primary" link @click="selectMaterialFun(scope.row)"
51-
>选择<Icon icon="ep:plus" />
52+
>选择
53+
<Icon icon="ep:plus" />
5254
</el-button>
5355
</template>
5456
</el-table-column>
@@ -89,7 +91,8 @@
8991
>
9092
<template #default="scope">
9193
<el-button type="primary" link @click="selectMaterialFun(scope.row)"
92-
>选择<Icon icon="akar-icons:circle-plus" />
94+
>选择
95+
<Icon icon="akar-icons:circle-plus" />
9396
</el-button>
9497
</template>
9598
</el-table-column>
@@ -110,7 +113,8 @@
110113
<WxNews :articles="item.content.newsItem" />
111114
<el-row class="ope-row">
112115
<el-button type="success" @click="selectMaterialFun(item)">
113-
选择<Icon icon="ep:circle-check" />
116+
选择
117+
<Icon icon="ep:circle-check" />
114118
</el-button>
115119
</el-row>
116120
</div>
@@ -127,124 +131,101 @@
127131
</div>
128132
</template>
129133

130-
<script lang="ts" name="WxMaterialSelect">
134+
<script lang="ts" setup name="WxMaterialSelect">
131135
import WxNews from '@/views/mp/components/wx-news/main.vue'
132136
import WxVoicePlayer from '@/views/mp/components/wx-voice-play/main.vue'
133137
import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue'
134-
import { getMaterialPage } from '@/api/mp/material'
135-
import { getFreePublishPage } from '@/api/mp/freePublish'
136-
import { getDraftPage } from '@/api/mp/draft'
138+
import * as MpMaterialApi from '@/api/mp/material'
139+
import * as MpFreePublishApi from '@/api/mp/freePublish'
140+
import * as MpDraftApi from '@/api/mp/draft'
137141
import { dateFormatter } from '@/utils/formatTime'
138-
import { defineComponent, PropType } from 'vue'
139142
140-
export default defineComponent({
141-
components: {
142-
WxNews,
143-
WxVoicePlayer,
144-
WxVideoPlayer
143+
const props = defineProps({
144+
objData: {
145+
type: Object, // type - 类型;accountId - 公众号账号编号
146+
required: true
145147
},
146-
props: {
147-
objData: {
148-
type: Object, // type - 类型;accountId - 公众号账号编号
149-
required: true
150-
},
151-
newsType: {
152-
// 图文类型:1、已发布图文;2、草稿箱图文
153-
type: String as PropType<string>,
154-
default: '1'
155-
}
156-
},
157-
setup(props, ctx) {
158-
// 遮罩层
159-
const loading = ref(false)
160-
// 总条数
161-
const total = ref(0)
162-
// 数据列表
163-
const list = ref([])
164-
// 查询参数
165-
const queryParams = reactive({
166-
pageNo: 1,
167-
pageSize: 10,
168-
accountId: props.objData.accountId
169-
})
170-
const objDataRef = reactive(props.objData)
171-
const newsTypeRef = ref(props.newsType)
148+
newsType: {
149+
// 图文类型:1、已发布图文;2、草稿箱图文
150+
type: String as PropType<string>,
151+
default: '1'
152+
}
153+
})
172154
173-
const selectMaterialFun = (item) => {
174-
ctx.emit('select-material', item)
175-
}
176-
/** 搜索按钮操作 */
177-
const handleQuery = () => {
178-
queryParams.pageNo = 1
179-
getPage()
180-
}
181-
const getPage = () => {
182-
loading.value = true
183-
if (objDataRef.type === 'news' && newsTypeRef.value === '1') {
184-
// 【图文】+ 【已发布】
185-
getFreePublishPageFun()
186-
} else if (objDataRef.type === 'news' && newsTypeRef.value === '2') {
187-
// 【图文】+ 【草稿】
188-
getDraftPageFun()
189-
} else {
190-
// 【素材】
191-
getMaterialPageFun()
192-
}
193-
}
155+
const emit = defineEmits(['select-material'])
194156
195-
const getMaterialPageFun = async () => {
196-
let data = await getMaterialPage({
197-
...queryParams,
198-
type: objDataRef.type
199-
})
200-
list.value = data.list
201-
total.value = data.total
202-
loading.value = false
203-
}
157+
// 遮罩层
158+
const loading = ref(false)
159+
// 总条数
160+
const total = ref(0)
161+
// 数据列表
162+
const list = ref([])
163+
// 查询参数
164+
const queryParams = reactive({
165+
pageNo: 1,
166+
pageSize: 10,
167+
accountId: props.objData.accountId
168+
})
169+
const objDataRef = reactive(props.objData)
170+
const newsTypeRef = ref(props.newsType)
204171
205-
const getFreePublishPageFun = async () => {
206-
let data = await getFreePublishPage(queryParams)
207-
data.list.forEach((item) => {
208-
const newsItem = item.content.newsItem
209-
newsItem.forEach((article) => {
210-
article.picUrl = article.thumbUrl
211-
})
212-
})
213-
list.value = data.list
214-
total.value = data.total
215-
loading.value = false
216-
}
172+
const selectMaterialFun = (item) => {
173+
emit('select-material', item)
174+
}
217175
218-
const getDraftPageFun = async () => {
219-
let data = await getDraftPage(queryParams)
220-
data.list.forEach((item) => {
221-
const newsItem = item.content.newsItem
222-
newsItem.forEach((article) => {
223-
article.picUrl = article.thumbUrl
224-
})
225-
})
226-
list.value = data.list
227-
total.value = data.total
228-
loading.value = false
176+
const getPage = async () => {
177+
loading.value = true
178+
try {
179+
if (objDataRef.type === 'news' && newsTypeRef.value === '1') {
180+
// 【图文】+ 【已发布】
181+
await getFreePublishPageFun()
182+
} else if (objDataRef.type === 'news' && newsTypeRef.value === '2') {
183+
// 【图文】+ 【草稿】
184+
await getDraftPageFun()
185+
} else {
186+
// 【素材】
187+
await getMaterialPageFun()
229188
}
189+
} finally {
190+
loading.value = false
191+
}
192+
}
193+
194+
const getMaterialPageFun = async () => {
195+
const data = await MpMaterialApi.getMaterialPage({
196+
...queryParams,
197+
type: objDataRef.type
198+
})
199+
list.value = data.list
200+
total.value = data.total
201+
}
230202
231-
onMounted(async () => {
232-
getPage()
203+
const getFreePublishPageFun = async () => {
204+
const data = await MpFreePublishApi.getFreePublishPage(queryParams)
205+
data.list.forEach((item) => {
206+
const newsItem = item.content.newsItem
207+
newsItem.forEach((article) => {
208+
article.picUrl = article.thumbUrl
233209
})
210+
})
211+
list.value = data.list
212+
total.value = data.total
213+
}
234214
235-
return {
236-
handleQuery,
237-
dateFormatter,
238-
selectMaterialFun,
239-
getMaterialPageFun,
240-
getPage,
241-
queryParams,
242-
objDataRef,
243-
list,
244-
total,
245-
loading
246-
}
247-
}
215+
const getDraftPageFun = async () => {
216+
const data = await MpDraftApi.getDraftPage(queryParams)
217+
data.list.forEach((item) => {
218+
const newsItem = item.content.newsItem
219+
newsItem.forEach((article) => {
220+
article.picUrl = article.thumbUrl
221+
})
222+
})
223+
list.value = data.list
224+
total.value = data.total
225+
}
226+
227+
onMounted(async () => {
228+
getPage()
248229
})
249230
</script>
250231
<style lang="scss" scoped>
@@ -275,6 +256,7 @@ p {
275256
.waterfall {
276257
column-count: 3;
277258
}
259+
278260
p {
279261
color: red;
280262
}
@@ -284,6 +266,7 @@ p {
284266
.waterfall {
285267
column-count: 2;
286268
}
269+
287270
p {
288271
color: orange;
289272
}

0 commit comments

Comments
 (0)