Kaynağa Gözat

feat(items): 新增是否通用和赠送相关字段功能

- 添加是否通用字段显示和编辑功能
- 添加是否赠送字段及相应的时间控制逻辑
- 新增赠送截止时间和截止类型字段
- 实现赠送开关变化时的表单联动处理
- 优化对话框宽度和表单标签宽度
- 调整新增和修改按钮的文字显示
- 更新数据模型添加新的字段类型定义
fugui001 1 hafta önce
ebeveyn
işleme
380da06c13

+ 4 - 1
src/api/system/business/items/types.ts

@@ -86,8 +86,11 @@ export interface ItemsForm extends BaseEntity {
   expireTime?: string;
 
   isGiveAway?: number;
-
+  isCommon?: number;
   itemUrl?: string;
+
+  giveStopType?: number;
+  giveStopTime?: string;
 }
 export interface ItemsPrize {
   ranking: number;

+ 62 - 9
src/views/system/business/items/index.vue

@@ -25,7 +25,7 @@
       <template #header>
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
-            <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['business:items:add']">新增套票</el-button>
+            <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['business:items:add']">新增</el-button>
           </el-col>
           <el-col :span="1.5">
             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['business:items:edit']"
@@ -74,6 +74,21 @@
             <span v-else>-</span>
           </template>
         </el-table-column>
+        <el-table-column label="是否通用" align="center">
+          <template #default="scope">
+            <el-tag :type="scope.row.isCommon === 1 ? 'success' : 'info'">
+              {{ scope.row.isCommon === 1 ? '是' : '否' }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="是否赠送" align="center">
+          <template #default="scope">
+            <el-tag :type="scope.row.isGiveAway === 1 ? 'success' : 'info'">
+              {{ scope.row.isGiveAway === 1 ? '是' : '否' }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="赠送截止时间" align="center" prop="giveStopTime" />
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
@@ -89,8 +104,8 @@
       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
     </el-card>
     <!-- 添加或修改道具对话框 disabled-->
-    <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
-      <el-form ref="itemsFormRef" :model="form" :rules="rules" label-width="80px">
+    <el-dialog :title="dialog.title" v-model="dialog.visible" width="600px" append-to-body>
+      <el-form ref="itemsFormRef" :model="form" :rules="rules" label-width="100px">
         <el-form-item label="主类型" prop="giftTypeParentId">
           <el-select v-model="form.giftTypeParentId" placeholder="请选择" clearable filterable @change="onParentChange">
             <el-option v-for="item in itemOptionsGiftList" :key="item.id" :label="item.label" :value="item.id" />
@@ -164,15 +179,39 @@
           <el-date-picker
             v-model="form.expireTime"
             type="datetime"
-            placeholder="选择过期时间"
+            placeholder="选择时间"
             format="YYYY-MM-DD HH:mm:ss"
             value-format="YYYY-MM-DD HH:mm:ss"
           />
         </el-form-item>
+        <el-form-item label="是否通用" prop="isCommon">
+          <el-switch v-model="form.isCommon" active-text="是" inactive-text="否" :active-value="1" :inactive-value="0" :value-on="1" :value-off="0" />
+        </el-form-item>
         <el-form-item label="是否赠送" prop="isGiveAway">
-          <el-switch v-model="form.isGiveAway" active-text="是" inactive-text="否" :active-value="1" :inactive-value="0" />
+          <el-switch
+            v-model="form.isGiveAway"
+            active-text="是"
+            inactive-text="否"
+            :active-value="1"
+            :inactive-value="0"
+            @change="handleIsGiveAwayChange"
+          />
+        </el-form-item>
+        <el-form-item label="赠送截止类型" prop="giftTypeChildId" v-if="form.isGiveAway === 1">
+          <el-select v-model="form.giveStopType" placeholder="请选择" clearable @change="onGiveStopTypeChange">
+            <el-option :value="0" label="不限时" />
+            <el-option :value="1" label="选择固定日期" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="赠送截止时间" prop="expireTime" v-if="form.isGiveAway === 1 && [1].includes(Number(form.giveStopType))">
+          <el-date-picker
+            v-model="form.giveStopTime"
+            type="datetime"
+            placeholder="选择时间"
+            format="YYYY-MM-DD HH:mm:ss"
+            value-format="YYYY-MM-DD HH:mm:ss"
+          />
         </el-form-item>
-
         <!-- 除了服务包 为 2  其他 为 1
         <el-form-item label="道具类型" prop="gameType">
           <el-select aria-required="true" v-model="form.itemTypeCode" placeholder="请选择">
@@ -248,7 +287,8 @@ const initFormData: ItemsForm = {
   createdAt: undefined,
   updatedAt: undefined,
   itemTypeCode: '1',
-  isGiveAway: 0
+  isGiveAway: 0,
+  isCommon: 1
 };
 const data = reactive<PageData<ItemsForm, ItemsQuery>>({
   form: { ...initFormData },
@@ -331,7 +371,7 @@ const handleAdd = () => {
   iconPreviewUrl.value = '';
   iconFileList.value = [];
   dialog.visible = true;
-  dialog.title = '添加道具';
+  dialog.title = '添加';
 };
 
 /** 修改按钮操作 */
@@ -376,7 +416,7 @@ const handleUpdate = async (row?: ItemsVO) => {
     iconFileList.value = [];
   }
   dialog.visible = true;
-  dialog.title = '修改道具';
+  dialog.title = '修改';
 };
 
 /** 提交按钮 */
@@ -663,6 +703,19 @@ function openPreview(src: string) {
   previewSrc.value = src;
   dialogVisible.value = true;
 }
+const onGiveStopTypeChange = (value: number | null) => {
+  if (value === 0) {
+    form.value.giveStopTime = undefined; // 清空赠送截止时间
+  }
+};
+// 是否赠送开关变化处理
+const handleIsGiveAwayChange = (value: number) => {
+  if (value === 0) {
+    // 当切换为"否"时
+    form.value.giveStopType = undefined;
+    form.value.giveStopTime = undefined;
+  }
+};
 </script>
 <style scoped>
 .upload-container {