Ver Fonte

修改景区门票

zs há 1 ano atrás
pai
commit
73bffff063
3 ficheiros alterados com 69 adições e 25 exclusões
  1. 1 1
      src/router/index.ts
  2. 46 17
      src/views/basic/ticket/detail.vue
  3. 22 7
      src/views/basic/ticket/index.vue

+ 1 - 1
src/router/index.ts

@@ -212,7 +212,7 @@ const router = createRouter({
         },
         {
           path: '/basic/ticket/detail',
-          meta: { title: '酒店民宿信息管理' },
+          meta: { title: '景区门票信息管理' },
           component: () => import('@/views/basic/ticket/detail.vue')
         },
         {

+ 46 - 17
src/views/basic/ticket/detail.vue

@@ -7,6 +7,12 @@
         </el-col>
         <el-col :span="24" class="two">
           <cForm :span="24" :fields="fields" :form="form" :rules="rules" @save="toSave" label-width="auto">
+            <template #type>
+              <el-option v-for="i in typeList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+            </template>
+            <template #person>
+              <el-option v-for="i in personList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+            </template>
             <template #file>
               <cUpload
                 :model="`${'file'}`"
@@ -18,14 +24,17 @@
                 @change="onUpload"
               ></cUpload>
             </template>
-            <template #children>
-              <cEditor v-model="form.children" url="/file/travel/ticket/upload"></cEditor>
+            <template #buy_explain>
+              <cEditor v-model="form.buy_explain" url="/file/travel/ticket/upload"></cEditor>
             </template>
-            <template #prompt>
-              <cEditor v-model="form.prompt" url="/file/travel/ticket/upload"></cEditor>
+            <template #use_explain>
+              <cEditor v-model="form.use_explain" url="/file/travel/ticket/upload"></cEditor>
             </template>
-            <template #brief>
-              <cEditor v-model="form.brief" url="/file/travel/ticket/upload"></cEditor>
+            <template #money_explain>
+              <cEditor v-model="form.money_explain" url="/file/travel/ticket/upload"></cEditor>
+            </template>
+            <template #other_explain>
+              <cEditor v-model="form.other_explain" url="/file/travel/ticket/upload"></cEditor>
             </template>
             <template #is_use>
               <el-radio v-for="i in is_useList" :key="i._id" :label="i.value">{{ i.label }}</el-radio>
@@ -45,9 +54,11 @@ import type { FormRules } from 'element-plus';
 import { useRoute } from 'vue-router';
 // 接口
 import { TicketStore } from '@/stores/info/ticket';
+import { ConfigStore } from '@/stores/basic/config';
 import { DictDataStore } from '@/stores/basic/dictData'; // 字典表
 import type { IQueryResult } from '@/util/types.util';
 const ticketAxios = TicketStore();
+const configAxios = ConfigStore();
 const dictAxios = DictDataStore();
 // 路由
 const route = useRoute();
@@ -58,14 +69,18 @@ let form: Ref<any> = ref({});
 let fields: Ref<any[]> = ref([
   { label: '名称', model: 'name' },
   { label: '联系电话', model: 'phone' },
-  { label: '客房数', model: 'num', type: 'number' },
+  { label: '原价', model: 'original_price', type: 'number' },
+  { label: '销售金额', model: 'money', type: 'number' },
+  { label: '出游人群', model: 'person', type: 'select' },
+  { label: '服务特色', model: 'type', type: 'select' },
   { label: '地点', model: 'address', type: 'textarea' },
-  { label: '入住时间', model: 'start_time' },
-  { label: '退房时间', model: 'end_time' },
+  { label: '日期', model: 'date', type: 'date' },
+  { label: '开放时间', model: 'open_time' },
   { label: '图片', model: 'file', custom: true },
-  { label: '儿童及加床', model: 'children', custom: true },
-  { label: '接待提示', model: 'prompt', custom: true },
-  { label: '简介', model: 'brief', custom: true },
+  { label: '购买须知', model: 'buy_explain', custom: true },
+  { label: '使用说明', model: 'use_explain', custom: true },
+  { label: '费用说明', model: 'money_explain', custom: true },
+  { label: '其他说明', model: 'other_explain', custom: true },
   { label: '排序', model: 'sort', type: 'number' },
   { label: '是否启用', model: 'is_use', type: 'radio' }
 ]);
@@ -73,14 +88,16 @@ const rules = reactive<FormRules>({
   name: [{ required: true, message: '名称', trigger: 'blur' }],
   phone: [{ required: true, message: '联系电话', trigger: 'blur' }],
   address: [{ required: true, message: '地点', trigger: 'blur' }],
-  start_time: [{ required: true, message: '入住时间', trigger: 'blur' }],
-  end_time: [{ required: true, message: '退房时间', trigger: 'blur' }],
-  file: [{ required: true, message: '图片', trigger: 'blur' }],
-  brief: [{ required: true, message: '简介', trigger: 'blur' }],
-  sort: [{ required: true, message: '排序', trigger: 'blur' }]
+  original_price: [{ required: true, message: '原价', trigger: 'blur' }],
+  money: [{ required: true, message: '销售金额', trigger: 'blur' }],
+  date: [{ required: true, message: '日期', trigger: 'blur' }],
+  open_time: [{ required: true, message: '开放时间', trigger: 'blur' }],
 });
+let config: Ref<any> = ref({});
 // 字典表
 let is_useList: Ref<any> = ref([]);
+let typeList: Ref<any> = ref([]);
+let personList: Ref<any> = ref([]);
 // 请求
 onMounted(async () => {
   loading.value = true;
@@ -93,6 +110,8 @@ const search = async () => {
   if (id) {
     let res: IQueryResult = await ticketAxios.fetch(id);
     if (res.errcode == '0') form.value = res.data as {};
+  } else {
+    form.value = { open_time: config.value.open_time, phone: config.value.phone, address: config.value.address };
   }
 };
 const onUpload = (e: { model: string; value: Array<[]> }) => {
@@ -114,6 +133,16 @@ const searchOther = async () => {
   let res: IQueryResult;
   res = await dictAxios.query({ type: 'is_use', is_use: '0' });
   if (res.errcode == 0) is_useList.value = res.data;
+  // 出游人群
+  res = await dictAxios.query({ type: 'ticket_person', is_use: '0' });
+  if (res.errcode == 0) personList.value = res.data;
+  // 服务特色
+  res = await dictAxios.query({ type: 'ticket_type', is_use: '0' });
+  if (res.errcode == 0) typeList.value = res.data;
+  res = await configAxios.query();
+  if (res.errcode == '0') {
+    config.value = res.data;
+  }
 };
 // 返回上一页
 const toBack = () => {

+ 22 - 7
src/views/basic/ticket/index.vue

@@ -4,6 +4,12 @@
       <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
         <el-col :span="24" class="one">
           <cSearch :is_title="false" :is_search="true" :fields="fields" @search="toSearch">
+            <template #type>
+              <el-option v-for="i in typeList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+            </template>
+            <template #person>
+              <el-option v-for="i in personList" :key="i.value" :label="i.label" :value="i.value"></el-option>
+            </template>
             <template #status>
               <el-option v-for="i in statusList" :key="i.value" :label="i.label" :value="i.value"></el-option>
             </template>
@@ -68,14 +74,15 @@ let skip = 0;
 let limit: number = proxy.$limit;
 let fields: Ref<any[]> = ref([
   { label: '名称', model: 'name', isSearch: true },
-  { label: '地点', model: 'address' },
-  { label: '客房数', model: 'num' },
+  { label: '销售金额', model: 'money' },
+  { label: '出游人群', model: 'person', type: 'select', isSearch: true, format: (i: any) => getDict(i, personList.value) },
+  { label: '服务特色', model: 'type', type: 'select', isSearch: true, format: (i: any) => getDict(i, typeList.value) },
+  { label: '开放时间', model: 'open_time' },
   { label: '联系电话', model: 'phone' },
-  { label: '入住时间', model: 'start_time' },
-  { label: '退房时间', model: 'end_time' },
+  { label: '地址', model: 'address' },
   { label: '排序', model: 'sort', type: 'number' },
   { label: '是否启用', model: 'is_use', custom: true },
-  { label: '状态', model: 'status', type: 'select', format: (i: any) => getDict(i), isSearch: true }
+  { label: '状态', model: 'status', type: 'select', format: (i: any) => getDict(i, statusList.value), isSearch: true }
 ]);
 // 操作
 let opera: Ref<any[]> = ref([
@@ -88,6 +95,8 @@ let searchForm: Ref<any> = ref({});
 // 字典表
 let is_useList: Ref<any> = ref([]);
 let statusList: Ref<any> = ref([]);
+let typeList: Ref<any> = ref([]);
+let personList: Ref<any> = ref([]);
 
 // 弹框
 const dialog: Ref<any> = ref({ title: '信息管理', show: false, type: '1' });
@@ -113,9 +122,9 @@ const toSearch = (query: any) => {
   searchForm.value = query;
   search({ skip, limit });
 };
-const getDict = (value: any) => {
+const getDict = (value: any, model) => {
   if (value) {
-    let data = statusList.value.find((i: any) => i.value == value);
+    let data = model.find((i: any) => i.value == value);
     if (data) return data.label;
     else return '暂无';
   }
@@ -170,6 +179,12 @@ const searchOther = async () => {
   // 状态
   res = await dictAxios.query({ type: 'exam_status', is_use: '0' });
   if (res.errcode == '0') statusList.value = res.data;
+  // 出游人群
+  res = await dictAxios.query({ type: 'ticket_person', is_use: '0' });
+  if (res.errcode == 0) personList.value = res.data;
+  // 服务特色
+  res = await dictAxios.query({ type: 'ticket_type', is_use: '0' });
+  if (res.errcode == 0) typeList.value = res.data;
 };
 // 修改是否启用
 const handleChange = (row: any) => {