Jelajahi Sumber

feat:对接服务记录页面接口

wangsisi 2 hari lalu
induk
melakukan
0906539e55

+ 5 - 0
src/api/modules/mine.js

@@ -49,4 +49,9 @@ module.exports = {
         url: config.base_dev_url + "z_agricultural_store_manager/invite",
         type: "post",
     },
+    //查询简单农事记录列表
+    getSimpleList: {
+        url: config.base_dev_url + "z_farm_work_record/getSimpleList",
+        type: "get",
+    },
 }

+ 2 - 2
src/views/old_mini/mine/index.vue

@@ -15,10 +15,10 @@
             <div class="code-icon" v-if="curRole === 1">
                 <img src="@/assets/img/mine/code-icon.png" alt="" />
             </div>
-            <div class="switch-role-btn" v-if="roles && roles.length > 1" @click="changeToggle">
+            <!-- <div class="switch-role-btn" v-if="roles && roles.length > 1" @click="changeToggle">
                 <span>切换身份</span>
                 <el-icon><Switch /></el-icon>
-            </div>
+            </div> -->
         </div>
         <div class="mine-content">
             <div class="garden-info" v-if="curRole !== 0">

+ 4 - 1
src/views/old_mini/mine/pages/serviceDetail.vue

@@ -10,7 +10,10 @@
                     farmInfoData.address !== ''
                 "
                 class="record-box"
-                :data="farmInfoData"
+                :data="{
+                    ...farmInfoData,
+                    maxWidth: '100%'
+                }"
             >
             </farm-info-card>
             <div class="farm-service-box">

+ 13 - 41
src/views/old_mini/mine/pages/serviceRecords.vue

@@ -3,16 +3,16 @@
         <custom-header name="服务记录"></custom-header>
         <div class="record-list">
             <div
-                v-for="(item, index) in renderList"
+                v-for="(item, index) in recordList"
                 :key="index"
                 class="record-card"
-                @click="handleItemClick(item.raw)"
+                @click="handleItemClick(item)"
             >
-                <img class="thumb" :src="item.thumb" alt="农场缩略图" @error="handleImgError" />
+                <img class="thumb" :src="defaultThumb" alt="农场缩略图" />
                 <div class="card-body">
                     <div class="card-header">
-                        <div class="title van-ellipsis">{{ item.title }}</div>
-                        <div class="date">2025.05.28</div>
+                        <div class="title van-ellipsis">{{ item.farmWorkName }}</div>
+                        <div class="date">{{ item.executeDate }}</div>
                     </div>
                     <div class="line">
                         <span class="label">农场名称:</span>
@@ -28,7 +28,7 @@
     </div>
 </template>
 <script setup>
-import { ref, onMounted, computed } from "vue";
+import { ref, onMounted } from "vue";
 import customHeader from "@/components/customHeader.vue";
 import { useRouter } from "vue-router";
 import defaultThumb from "@/assets/img/home/farm.png";
@@ -38,47 +38,19 @@ const router = useRouter();
 const recordList = ref([]);
 
 onMounted(() => {
-    getUserList();
+    getSimpleList();
 });
 
-const getUserList = async () => {
-    const { data } = await VE_API.user.userList();
-    if (data.length) {
-        recordList.value = data.filter((item) => item.serviceCount != 0);
+const getSimpleList = async () => {
+    const { data } = await VE_API.mine.getSimpleList({role: localStorage.getItem("SET_USER_CUR_ROLE")});
+    if(data.length > 0){
+        recordList.value = data;
     }
 };
-const formatDate = (dateStr) => {
-    if (!dateStr) return "--";
-    const date = new Date(dateStr);
-    if (Number.isNaN(date.getTime())) return dateStr;
-    const y = date.getFullYear();
-    const m = `${date.getMonth() + 1}`.padStart(2, "0");
-    const d = `${date.getDate()}`.padStart(2, "0");
-    return `${y}.${m}.${d}`;
-};
-const renderList = computed(() =>
-    recordList.value.map((item) => {
-        const title = item.workName || item.typeName || item.variety || "农事服务";
-        const farmName = item.farmName || item.name || "未填写";
-        const prescription = item.prescription || item.drugPrescription || item.drugName || item.remark || "暂无信息";
-        const date = formatDate(item.serviceDate || item.planDate || item.updateTime || item.createTime);
-        const thumb = item.cover || item.imageUrl || item.imgUrl || item.thumb || defaultThumb;
-        return {
-            raw: item,
-            title,
-            farmName,
-            prescription,
-            date,
-            thumb,
-        };
-    })
-);
+
 // 处理列表项点击
 const handleItemClick = (data) => {
-    router.push(`/review_work?miniJson={"id":"275579","goBack":true}`);
-};
-const handleImgError = (e) => {
-    e.target.src = defaultThumb;
+    router.push(`/review_work?miniJson={"id":${data.id},"goBack":true,"isBtn":true}`);
 };
 </script>
 <style lang="scss" scoped>

+ 31 - 6
src/views/old_mini/mine/pages/teamManage.vue

@@ -18,7 +18,7 @@
                             address: ele.role == 1 ? ele.store?.address || '--' : null,
                         }"
                     >
-                        <template #right v-if="ele.role === 2 && !route.query.add">
+                        <template #right v-if="ele.role === 2 && !route.query.add && currentUserRole !== 3">
                             <div @click.stop="handlePermission(ele)">权限设置</div>
                         </template>
                     </farm-info-card>
@@ -28,11 +28,11 @@
                 <div class="empty-text">暂无数据</div>
             </div>
         </div>
-        <div class="custom-bottom-fixed-btns">
+        <div class="custom-bottom-fixed-btns" :class="{ center: currentUserRole == 2 }" v-if="currentUserRole !== 3">
             <div class="bottom-btn secondary-btn" @click="handleSetAdmin">
                 {{ route.query.add ? "取消选择" : "设置管理员" }}
             </div>
-            <div class="bottom-btn primary-btn" @click="handleAddTeamMember">
+            <div class="bottom-btn primary-btn" @click="handleAddTeamMember" v-if="currentUserRole === 1">
                 {{ route.query.add ? "确认设为" : "新增团队成员" }}
             </div>
         </div>
@@ -94,7 +94,7 @@
                     <div class="footer-btn share-btn" @click="handleShare">分享微信好友</div>
                     <div class="footer-btn confirm-btn" @click="handleConfirm">确认添加</div>
                 </div>
-                <div class="popup-footer" v-show="detailType === 'detail'">
+                <div class="popup-footer" v-show="detailType === 'detail' && currentUserRole !== 3">
                     <div class="footer-btn cancel-admin-btn" @click="handleDelete">删除成员</div>
                 </div>
             </div>
@@ -169,15 +169,33 @@ const getDutyList = async () => {
 };
 
 const teamList = ref([]);
+// 当前登录用户在团队中的角色(1 超管、2 项目管理员、3 普通成员)
+const currentUserRole = ref(null);
 //查询当前农资店的成员列表
 const getManagerList = async () => {
     const { data } = await VE_API.mine.listManagerList();
-    if (data && data.length > 0) {
+    if (Array.isArray(data) && data.length > 0) {
         if (route.query.add) {
             teamList.value = data.filter((item) => item.role == 3);
         } else {
             teamList.value = data;
         }
+
+        // 从本地存储中获取当前用户 miniUserId,并在成员列表中找到自己的角色
+        const miniUserId = localStorage.getItem("MINI_USER_ID");
+        if (miniUserId) {
+            const selfItem = data.find(
+                (item) =>
+                    item.miniUserId != null &&
+                    String(item.miniUserId) === String(miniUserId)
+            );
+            if (selfItem) {
+                currentUserRole.value = selfItem.role;
+            }
+        }
+    } else {
+        teamList.value = [];
+        currentUserRole.value = null;
     }
 };
 
@@ -395,6 +413,10 @@ const handleConfirm = () => {
 const handleAddTeamMember = async () => {
     if (route.query.add) {
         if (filterList.value.length) {
+            // 批量设置管理员时,默认勾选全部权限
+            if (Array.isArray(permissionList.value) && permissionList.value.length > 0) {
+                selectedPermission.value = permissionList.value.map((p) => p.code);
+            }
             showPermissionPopup.value = true;
         } else {
             ElMessage.warning("请选择团队成员");
@@ -476,7 +498,7 @@ const handleDelete = () => {
     background-color: #f5f7fb;
     .team-content {
         width: 100%;
-        height: 100%;
+        height: calc(100% - 40px);
         padding: 10px 12px;
         box-sizing: border-box;
         .team-title {
@@ -504,6 +526,9 @@ const handleDelete = () => {
             }
         }
     }
+    .center {
+        justify-content: center;
+    }
 }
 
 .add-member-popup {

+ 2 - 2
src/views/old_mini/modify_work/reviewWork.vue

@@ -244,8 +244,8 @@
                 </template>
             </div>
 
-            <div class="fixed-btn-wrap center" >
-                    <!-- <div class="fixed-btn more" @click="handleMore">查看更多农事</div> -->
+            <div class="fixed-btn-wrap" :class="{ center: !paramsPage.isBtn }">
+                    <div class="fixed-btn more" @click="handleMore" v-if="paramsPage.isBtn">查看更多农事</div>
                     <div class="fixed-btn excute" @click="generateReport">生成成果报告</div>
             </div>
             <div