From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/member/config/index.vue |  121 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 121 insertions(+), 0 deletions(-)

diff --git a/src/views/member/config/index.vue b/src/views/member/config/index.vue
new file mode 100644
index 0000000..2593509
--- /dev/null
+++ b/src/views/member/config/index.vue
@@ -0,0 +1,121 @@
+<template>
+  <doc-alert title="浼氬憳鎵嬪唽锛堝姛鑳藉紑鍚級" url="https://doc.iocoder.cn/member/build/" />
+
+  <ContentWrap>
+    <el-form
+      ref="formRef"
+      :model="formData"
+      :rules="formRules"
+      label-width="120px"
+      v-loading="formLoading"
+    >
+      <el-form-item label="hideId" v-show="false">
+        <el-input v-model="formData.id" />
+      </el-form-item>
+
+      <el-tabs>
+        <el-tab-pane label="绉垎">
+          <el-form-item label="绉垎鎶垫墸" prop="pointTradeDeductEnable">
+            <el-switch v-model="formData.pointTradeDeductEnable" style="user-select: none" />
+            <el-text class="w-full" size="small" type="info">涓嬪崟绉垎鏄惁鎶电敤璁㈠崟閲戦</el-text>
+          </el-form-item>
+          <el-form-item label="绉垎鎶垫墸" prop="pointTradeDeductUnitPrice">
+            <el-input-number
+              v-model="computedPointTradeDeductUnitPrice"
+              placeholder="璇疯緭鍏ョН鍒嗘姷鎵i噾棰�"
+              :precision="2"
+            />
+            <el-text class="w-full" size="small" type="info">
+              绉垎鎶电敤姣斾緥(1 绉垎鎶靛灏戦噾棰�)锛屽崟浣嶏細鍏�
+            </el-text>
+          </el-form-item>
+          <el-form-item label="绉垎鎶垫墸鏈�澶у��" prop="pointTradeDeductMaxPrice">
+            <el-input-number
+              v-model="formData.pointTradeDeductMaxPrice"
+              placeholder="璇疯緭鍏ョН鍒嗘姷鎵f渶澶у��"
+            />
+            <el-text class="w-full" size="small" type="info">
+              鍗曟涓嬪崟绉垎浣跨敤涓婇檺锛�0 涓嶉檺鍒�
+            </el-text>
+          </el-form-item>
+          <el-form-item label="1 鍏冭禒閫佸灏戝垎" prop="pointTradeGivePoint">
+            <el-input-number
+              v-model="formData.pointTradeGivePoint"
+              placeholder="璇疯緭鍏� 1 鍏冭禒閫佸灏戠Н鍒�"
+            />
+            <el-text class="w-full" size="small" type="info">
+              涓嬪崟鏀粯閲戦鎸夋瘮渚嬭禒閫佺Н鍒嗭紙瀹為檯鏀粯 1 鍏冭禒閫佸灏戠Н鍒嗭級
+            </el-text>
+          </el-form-item>
+        </el-tab-pane>
+      </el-tabs>
+
+      <el-form-item>
+        <el-button type="primary" @click="onSubmit">淇濆瓨</el-button>
+      </el-form-item>
+    </el-form>
+  </ContentWrap>
+</template>
+<script lang="ts" setup>
+import * as ConfigApi from '@/api/member/config'
+
+defineOptions({ name: 'MemberConfig' })
+
+const { t } = useI18n() // 鍥介檯鍖�
+const message = useMessage() // 娑堟伅寮圭獥
+
+const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀�
+const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤
+const formData = ref({
+  id: undefined,
+  pointTradeDeductEnable: true,
+  pointTradeDeductUnitPrice: 0,
+  pointTradeDeductMaxPrice: 0,
+  pointTradeGivePoint: 0
+})
+
+// 鍒涘缓涓�涓绠楀睘鎬э紝鐢ㄤ簬灏� pointTradeDeductUnitPrice 鏄剧ず涓哄甫涓や綅灏忔暟鐨勫舰寮�
+const computedPointTradeDeductUnitPrice = computed({
+  get: () => (formData.value.pointTradeDeductUnitPrice / 100).toFixed(2),
+  set: (newValue: number) => {
+    formData.value.pointTradeDeductUnitPrice = Math.round(newValue * 100)
+  }
+})
+
+const formRules = reactive({})
+const formRef = ref() // 琛ㄥ崟 Ref
+
+/** 淇敼绉垎閰嶇疆 */
+const onSubmit = async () => {
+  // 鏍¢獙琛ㄥ崟
+  if (!formRef) return
+  const valid = await formRef.value.validate()
+  if (!valid) return
+  // 鎻愪氦璇锋眰
+  formLoading.value = true
+  try {
+    const data = formData.value as unknown as ConfigApi.ConfigVO
+    await ConfigApi.saveConfig(data)
+    message.success(t('common.updateSuccess'))
+    dialogVisible.value = false
+  } finally {
+    formLoading.value = false
+  }
+}
+
+/** 鑾峰緱绉垎閰嶇疆 */
+const getConfig = async () => {
+  try {
+    const data = await ConfigApi.getConfig()
+    if (data === null) {
+      return
+    }
+    formData.value = data
+  } finally {
+  }
+}
+
+onMounted(() => {
+  getConfig()
+})
+</script>

--
Gitblit v1.8.0