|
|
@@ -1,60 +1,108 @@
|
|
|
<template>
|
|
|
- <z-paging ref="paging" safe-area-inset-bottom v-model="list" @query="query">
|
|
|
+ <z-paging ref="paging" v-model="list" bgColor="#fff" @query="query" paging-class="paging-btm-shadow" :auto="false" safe-area-inset-bottom>
|
|
|
<template #top>
|
|
|
- <ut-navbar title="选择获评品种" :fixed="false" border></ut-navbar>
|
|
|
- <view class="pd-20">
|
|
|
- <ut-search margin="0" height="68rpx" fontSize="26rpx" placeholder="请输入获评品种名称" border v-model="form.keyword" @search="onRefresh"></ut-search>
|
|
|
+ <view class="">
|
|
|
+ <up-navbar title="选择获评品种" @leftClick="navigateBackOrHome()" :fixed="false"></up-navbar>
|
|
|
+ <view class="pd-24">
|
|
|
+ <ut-search ref="searchRef" v-model="form.keyword" @search="changeSeach" @change="changeSeach" margin="0" :border="false" placeholder="可输入药材名称或动植物基原名称搜索" bgColor="#f7f7f7" height="86rpx" borderRadius="16rpx"></ut-search>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</template>
|
|
|
- <view class="base-content pd-20">
|
|
|
- <view :class="{ active: item.id === checkedId }" v-for="(item, index) in list" :key="item.id" @click="clickItem(item)" class="bg-fff mb-10 pd-20 select-item-card">
|
|
|
- <view class="f-s-30 c-#333 f-w-600">{{ item?.varietyName }}</view>
|
|
|
- <view class="f-s-28 c-#999">{{ item.latinName }}</view>
|
|
|
+ <view class="pd-24" v-if="!showSearch">
|
|
|
+ <template v-if="speArray.length">
|
|
|
+ <view class="f-s-32 c-#333 f-w-5 mb-20">快捷选择主营品种</view>
|
|
|
+ <view class="d-flex a-c f-w-w">
|
|
|
+ <spe-lable class="mr-20 mb-20" v-for="(item, index) in speArray" :key="index" :text="item?.medicineName" size="30rpx" :id="item?.id" @click="changeSpe(item?.medicineName)" />
|
|
|
+ </view>
|
|
|
+ </template>
|
|
|
+ <template>
|
|
|
+ <ut-empty text=""></ut-empty>
|
|
|
+ <view class="d-flex flex-cln j-c a-c">
|
|
|
+ <view class="c-#ccc f-s-28">您可以<text class="c-primary">直接搜索,</text>或前往<text class="c-primary">基地-主营品种配置</text>页面进行</view>
|
|
|
+ <view class="c-#ccc f-s-28">主营品种配置,配置后下次即可快捷选择。</view>
|
|
|
+ </view>
|
|
|
+ </template>
|
|
|
+ </view>
|
|
|
+ <view class="pd-24" v-if="showSearch">
|
|
|
+ <view class="f-s-32 c-#333 f-w-5 mb-20">搜索结果</view>
|
|
|
+ <view class="pd-24 d-flex bg-#FBFDFB border-#37A954 b-radius mb-20" v-for="(item, index) in list" :key="index">
|
|
|
+ <up-radio-group v-model="radiovalue1">
|
|
|
+ <view @click="radiovalue1 = item?.medicineCode" class="d-flex w-100%">
|
|
|
+ <view class="flex1 ov-hd">
|
|
|
+ <view class="c-#333 f-s-34 f-w-5 mr-5">{{ item?.medicineName }}</view>
|
|
|
+ <view class="c-#666 f-s-24 tx-ov ov-hd">{{ item?.medicineCode }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="d-flex j-c a-c">
|
|
|
+ <view @click.stop class="">
|
|
|
+ <up-radio activeColor="#37A954" label="" :name="item?.medicineCode"> </up-radio>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </up-radio-group>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <template #bottom v-if="showSearch">
|
|
|
+ <view class="pd-24 d-flex j-c gap-20">
|
|
|
+ <up-button type="primary" @click="save()">确认选择</up-button>
|
|
|
+ </view>
|
|
|
+ </template>
|
|
|
</z-paging>
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
import { useClientRequest } from '@/utils/request';
|
|
|
-const paging = ref<any>(null);
|
|
|
+import SpeLable from '../por-torganism/models/speLable.vue';
|
|
|
+
|
|
|
+const paging = ref();
|
|
|
const list = ref<any[]>([]);
|
|
|
const form = ref({
|
|
|
keyword: '',
|
|
|
});
|
|
|
-const query = async (pageNum: number, pageSize: number) => {
|
|
|
- const res = await useClientRequest.get('/plt-api/app/cpyVariety/pageList', {
|
|
|
+const speArray = ref<any[]>([]);
|
|
|
+const showSearch = ref(false);
|
|
|
+const query = async (pageNo: number, pageSize: number) => {
|
|
|
+ const params = {
|
|
|
+ pageNo,
|
|
|
+ pageSize,
|
|
|
...form.value,
|
|
|
- pageNum: pageNum,
|
|
|
- pageSize: pageSize,
|
|
|
- });
|
|
|
- if (res.code == 200) {
|
|
|
- paging.value.complete(res.rows || []);
|
|
|
+ };
|
|
|
+ const res = await useClientRequest.get('/plt-api/app/medicine/pageList', params);
|
|
|
+ const { rows } = res;
|
|
|
+ paging.value.complete(rows);
|
|
|
+};
|
|
|
+const changeSeach = () => {
|
|
|
+ if (!form.value?.keyword) {
|
|
|
+ showSearch.value = false;
|
|
|
+ } else {
|
|
|
+ showSearch.value = true;
|
|
|
}
|
|
|
+ paging.value.reload();
|
|
|
};
|
|
|
-const checkedId = ref(null);
|
|
|
-const clickItem = (item: any) => {
|
|
|
- checkedId.value = item.id;
|
|
|
- uni.$emit('medicineSelected', item);
|
|
|
- uni.navigateBack();
|
|
|
+const changeSpe = (data: string) => {
|
|
|
+ form.value.keyword = data;
|
|
|
+ changeSeach();
|
|
|
};
|
|
|
-const onRefresh = () => {
|
|
|
- try {
|
|
|
- paging.value?.reload();
|
|
|
- } catch (e) {
|
|
|
- console.error('Error refreshing address list:', e);
|
|
|
+const getSpecies = async () => {
|
|
|
+ console.log('getSpecies');
|
|
|
+ if (form.value?.keyword) {
|
|
|
+ return;
|
|
|
}
|
|
|
+ const res = await useClientRequest.get('/plt-api/app/cpyVariety/list');
|
|
|
+ if (res.code === 200) {
|
|
|
+ speArray.value = res.data;
|
|
|
+ }
|
|
|
+};
|
|
|
+const radiovalue1 = ref('苹果');
|
|
|
+const save = () => {
|
|
|
+ const res = list.value.find((item) => item.medicineCode === radiovalue1.value);
|
|
|
+ if (!res) return;
|
|
|
+ uni.$emit('medicineSelected', res);
|
|
|
+ uni.navigateBack({ delta: 1 });
|
|
|
};
|
|
|
+onMounted(() => {
|
|
|
+ getSpecies();
|
|
|
+});
|
|
|
onUnload(() => {
|
|
|
+ console.log('????');
|
|
|
uni.$off('medicineSelected');
|
|
|
});
|
|
|
</script>
|
|
|
-<style lang="scss" scoped>
|
|
|
-.select-item-card {
|
|
|
- box-shadow: 0rpx 2rpx 8rpx rgba(0, 0, 0, 0.1);
|
|
|
- border: 1rpx solid #e8e8e8;
|
|
|
-
|
|
|
- &.active {
|
|
|
- border-color: #4456fb;
|
|
|
- }
|
|
|
-}
|
|
|
-</style>
|