From b58f53769f004fb0ba6b5aedf55ef602850c7c97 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 20 九月 2026 15:46:05 +0800
Subject: [PATCH] 天津豹鸣app 1.部署修改
---
src/pages/projectManagement/project/_components/TeamRow.vue | 148 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 148 insertions(+), 0 deletions(-)
diff --git a/src/pages/projectManagement/project/_components/TeamRow.vue b/src/pages/projectManagement/project/_components/TeamRow.vue
new file mode 100644
index 0000000..31fb7e7
--- /dev/null
+++ b/src/pages/projectManagement/project/_components/TeamRow.vue
@@ -0,0 +1,148 @@
+<!--
+ 椤圭洰鍥㈤槦瀛愯〃鐨勪竴琛�
+
+ 鎴愬憳 / 瑙掕壊涓嬫媺鐢辩埗绾х粺涓�鎷夊彇鍚庝紶鍏ワ紙澶氫釜琛屽叡鐢ㄤ竴浠介�夐」锛屼笉閲嶅璇锋眰锛夈��
+ 鎻愪氦鏃跺悗绔笉鍙嶆煡 userName / userRoleName锛屾墍浠ラ�変腑鍚庤鎶� label 涓�璧疯鍦� row 涓娿��
+-->
+<template>
+ <view class="team-card">
+ <view class="team-header">
+ <text class="team-title">鎴愬憳 {{ index + 1 }}</text>
+ <up-icon name="trash"
+ color="#ee0a24"
+ size="18"
+ @click="$emit('remove')"></up-icon>
+ </view>
+ <up-divider></up-divider>
+
+ <view class="team-body">
+ <view class="field-row">
+ <text class="field-label">濮撳悕</text>
+ <FormPicker v-model="row.memberId"
+ type="select"
+ title="閫夋嫨椤圭洰鎴愬憳"
+ :options="userOptions"
+ placeholder="璇烽�夋嫨鎴愬憳"
+ @change="onMemberChange" />
+ </view>
+
+ <view class="field-row">
+ <text class="field-label">椤圭洰缁勮鑹�</text>
+ <FormPicker v-model="row.roleId"
+ type="select"
+ title="閫夋嫨椤圭洰缁勮鑹�"
+ :options="roleOptions"
+ placeholder="璇烽�夋嫨瑙掕壊"
+ @change="onRoleChange" />
+ </view>
+
+ <view class="field-row">
+ <text class="field-label">杩涘叆鏃ユ湡</text>
+ <FormPicker v-model="row.enterDate"
+ type="date"
+ placeholder="璇烽�夋嫨杩涘叆鏃ユ湡" />
+ </view>
+
+ <view class="field-row">
+ <text class="field-label">绂诲紑鏃ユ湡</text>
+ <FormPicker v-model="row.leaveDate"
+ type="date"
+ placeholder="璇烽�夋嫨绂诲紑鏃ユ湡" />
+ </view>
+
+ <view class="field-row">
+ <text class="field-label">鑱旂郴鏂瑰紡</text>
+ <u-input v-model="row.phone"
+ placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
+ border="none"
+ inputAlign="right" />
+ </view>
+
+ <view class="field-row">
+ <text class="field-label">澶囨敞</text>
+ <u-input v-model="row.remark"
+ placeholder="璇疯緭鍏ュ娉�"
+ border="none"
+ inputAlign="right" />
+ </view>
+ </view>
+ </view>
+</template>
+
+<script setup>
+ import FormPicker from "@/components/FormPicker.vue";
+
+ const props = defineProps({
+ row: {
+ type: Object,
+ required: true,
+ },
+ index: {
+ type: Number,
+ default: 0,
+ },
+ userOptions: {
+ type: Array,
+ default: () => [],
+ },
+ roleOptions: {
+ type: Array,
+ default: () => [],
+ },
+ });
+
+ defineEmits(["remove"]);
+
+ // 閫変腑鍚庢妸 label 璁板埌琛屼笂锛屾彁浜ゆ椂闅� payload 涓�璧峰彂缁欏悗绔�
+ const onMemberChange = (value, item) => {
+ props.row.memberName = item?.name || props.row.memberName || "";
+ };
+
+ const onRoleChange = (value, item) => {
+ props.row.roleName = item?.name || props.row.roleName || "";
+ };
+</script>
+
+<style scoped lang="scss">
+ .team-card {
+ background: #fff;
+ border-radius: 12px;
+ padding: 0 12px 12px;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+ }
+
+ .team-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 12px 0;
+ }
+
+ .team-title {
+ font-size: 14px;
+ font-weight: 600;
+ color: #22324d;
+ }
+
+ .team-body {
+ padding-top: 4px;
+ }
+
+ .field-row {
+ display: flex;
+ align-items: center;
+ min-height: 44px;
+ border-bottom: 1px solid #f5f6fa;
+ }
+
+ .field-row:last-child {
+ border-bottom: none;
+ }
+
+ .field-label {
+ width: 96px;
+ flex-shrink: 0;
+ font-size: 14px;
+ color: #606266;
+ }
+</style>
--
Gitblit v1.9.3