feat(admin): show last login time/IP/location in user list
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -101,6 +101,11 @@
|
|||||||
<text class="time-label" v-if="u.vipExpireAt">到期:{{ u.vipExpireAt?.slice(0,10) }}</text>
|
<text class="time-label" v-if="u.vipExpireAt">到期:{{ u.vipExpireAt?.slice(0,10) }}</text>
|
||||||
<text class="time-label" v-if="u.sprintExpireAt">冲刺到期:{{ u.sprintExpireAt?.slice(0,10) }}</text>
|
<text class="time-label" v-if="u.sprintExpireAt">冲刺到期:{{ u.sprintExpireAt?.slice(0,10) }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="user-meta-row time-row" v-if="u.lastLoginAt">
|
||||||
|
<text class="time-label">最后登录:{{ u.lastLoginAt?.slice(0,16).replace('T',' ') }}</text>
|
||||||
|
<text class="meta-tag" v-if="u.lastLoginIp">IP:{{ u.lastLoginIp }}</text>
|
||||||
|
<text class="meta-tag" v-if="u.lastLoginLocation">{{ u.lastLoginLocation }}</text>
|
||||||
|
</view>
|
||||||
<view class="user-actions">
|
<view class="user-actions">
|
||||||
<text class="user-action-btn" v-if="u.plan === 'free'" @click="setVip(u._id)">设为会员</text>
|
<text class="user-action-btn" v-if="u.plan === 'free'" @click="setVip(u._id)">设为会员</text>
|
||||||
<text class="user-action-btn credit" @click="openCreditModal(u)">调整额度</text>
|
<text class="user-action-btn credit" @click="openCreditModal(u)">调整额度</text>
|
||||||
@@ -300,6 +305,8 @@
|
|||||||
<text>每月引力值</text>
|
<text>每月引力值</text>
|
||||||
<input class="cfg-input" type="digit" v-model.number="pricing.plans.sprint.gravityPerMonth" />
|
<input class="cfg-input" type="digit" v-model.number="pricing.plans.sprint.gravityPerMonth" />
|
||||||
</view>
|
</view>
|
||||||
|
<view class="cfg-row">
|
||||||
|
<text>面试额度/月</text>
|
||||||
<input class="cfg-input" type="digit" v-model.number="pricing.plans.sprint.credits.interview" />
|
<input class="cfg-input" type="digit" v-model.number="pricing.plans.sprint.credits.interview" />
|
||||||
</view>
|
</view>
|
||||||
<view class="cfg-row">
|
<view class="cfg-row">
|
||||||
@@ -542,6 +549,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@@ -736,6 +744,7 @@ const switchTab = (t) => {
|
|||||||
if (t === 'pricing') loadPricing()
|
if (t === 'pricing') loadPricing()
|
||||||
if (t === 'orders') loadOrders()
|
if (t === 'orders') loadOrders()
|
||||||
if (t === 'analysis') loadAnalysis()
|
if (t === 'analysis') loadAnalysis()
|
||||||
|
if (t === 'share') loadShareRecords()
|
||||||
}
|
}
|
||||||
|
|
||||||
const loadUsers = async () => {
|
const loadUsers = async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user