会员、门店修改,代码优化

This commit is contained in:
Shaw
2024-03-01 19:13:01 +08:00
parent 8d4a4ac151
commit 002339d882
12 changed files with 120 additions and 57 deletions

View File

@ -1,7 +1,7 @@
import request from '@/config/axios' import request from '@/config/axios'
export interface JobVO { export interface JobVO {
id: number id?: number
name: string name: string
status: number status: number
handlerName: string handlerName: string

View File

@ -1,13 +1,28 @@
import request from '@/config/axios' import request from '@/config/axios'
export interface DiscountCouponVO { export interface DiscountCouponVO {
id: number couponName: string
name: string couponScope: number
type: boolean couponType: number
regionInfo: string couponValue: string | null
appoint: boolean createTime: number
appointInfo: string creator: string
sort: number deleted: false
discount: number
expirationDay: number
expirationTime: number | null
expirationType: number
id?: number
limitNumber: number
number: number
receiveType: number
remark:string
scopeValues: string | null
status: number | null
takingEffectTime: number | null
threshold: number
updateTime: number
updater: string
} }
// 查询优惠券列表 // 查询优惠券列表

View File

@ -93,7 +93,7 @@ const queryParams = reactive({
}) })
const total = ref(0) const total = ref(0)
const list = ref([]); const list = ref([]);
const multipleSelection = ref([]) const multipleSelection = ref<CouponApi.DiscountCouponVO[]>([])
const props = defineProps({ const props = defineProps({
selectedItems: { selectedItems: {
type: Array, type: Array,

View File

@ -49,7 +49,17 @@ import * as JobApi from '@/api/infra/job'
const dialogVisible = ref(false) // 弹窗的是否展示 const dialogVisible = ref(false) // 弹窗的是否展示
const detailLoading = ref(false) // 表单的加载中 const detailLoading = ref(false) // 表单的加载中
const detailData = ref({}) // 详情数据 const detailData = ref<JobApi.JobVO>({
name: '',
status: 0,
handlerName: '',
handlerParam: '',
cronExpression: '',
retryCount: 0,
retryInterval: 0,
monitorTimeout: 0,
createTime: new Date(),
}) // 详情数据
const nextTimes = ref([]) // 下一轮执行时间的数组 const nextTimes = ref([]) // 下一轮执行时间的数组
/** 打开弹窗 */ /** 打开弹窗 */
@ -69,3 +79,4 @@ const open = async (id: number) => {
} }
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
</script> </script>

View File

@ -38,7 +38,19 @@ import * as JobLogApi from '@/api/infra/jobLog'
const dialogVisible = ref(false) // 弹窗的是否展示 const dialogVisible = ref(false) // 弹窗的是否展示
const detailLoading = ref(false) // 表单的加载中 const detailLoading = ref(false) // 表单的加载中
const detailData = ref({}) // 详情数据 const detailData = ref({
id: '',
jobId: '',
handlerName: '',
handlerParam: '',
executeIndex: '',
beginTime: new Date(),
endTime: new Date(),
duration: '',
status: '',
}) // 详情数据
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (id: number) => { const open = async (id: number) => {
@ -55,3 +67,4 @@ const open = async (id: number) => {
} }
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
</script> </script>

View File

@ -66,11 +66,13 @@ const formType = ref('') // 表单的类型create - 新增update - 修改
const linkData = ref({}) const linkData = ref({})
const formData = ref({ const formData = ref({
name: '', name: '',
onlineTime: '', onlineTime: [],
popupImage: '', popupImage: '',
buttonImage: '', buttonImage: '',
type: 0, type: 0,
link: '', link: '',
startTime: '',
endTime: ''
}) })
const formRules = reactive({ const formRules = reactive({
name: [ name: [
@ -105,7 +107,7 @@ const open = async (type: string, id?: number) => {
formLoading.value = false formLoading.value = false
} }
} else { } else {
formData.onlineTime = [] formData.value.onlineTime = []
} }
} }
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@ -145,11 +147,13 @@ const submitForm = async () => {
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
name: '', name: '',
onlineTime: '', onlineTime: [],
popupImage: '', popupImage: '',
buttonImage: '', buttonImage: '',
type: 0, type: 0,
link: '', link: '',
startTime: '',
endTime: ''
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
@ -159,3 +163,4 @@ function typeChange () {
linkData.value = {} linkData.value = {}
} }
</script> </script>

View File

@ -163,6 +163,8 @@
<script setup lang="ts" name="User"> <script setup lang="ts" name="User">
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import { ref, reactive } from 'vue'
import download from '@/utils/download' import download from '@/utils/download'
import * as UserApi from '@/api/member/user' import * as UserApi from '@/api/member/user'
import UserForm from './UserForm.vue' import UserForm from './UserForm.vue'

View File

@ -55,16 +55,42 @@ const { t } = useI18n() // 国际化
// const message = useMessage() // 消息弹窗 // const message = useMessage() // 消息弹窗
const dialogTitle = ref('') // 弹窗的标题 const dialogTitle = ref('') // 弹窗的标题
const drawer = ref(false) const drawer = ref(false)
const DetailData = ref({}) const DetailData = ref({
nickname: '',
realName: '',
userPhone: '',
userAddress: '',
orderId: '',
statusStr: '',
totalNum: '',
cost: '',
payPostage: '',
couponPrice: '',
useIntegral: '',
payPrice: '',
gainIntegral: '',
createTime: new Date(),
payTime: new Date(),
payType: '',
deliveryId: '',
deliveryName: '',
deliverySn: '',
userRespVO: {
nickname: ''
}
})
const nickname = ref('') const nickname = ref('')
const logisticResult = ref({}) interface LogisticResult {
acceptTime: string;
acceptStation: string;
}
const logisticResult = ref<LogisticResult[]>([])
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (type: string, id: number) => {
drawer.value = true drawer.value = true
dialogTitle.value = t('action.' + type) dialogTitle.value = t('action.' + type)
DetailData.value = await StoreOrderApi.getStoreOrder(id) DetailData.value = await StoreOrderApi.getStoreOrder(id)
nickname.value = DetailData.value.userRespVO.nickname nickname.value = DetailData.value.userRespVO.nickname
console.log('aa:'+DetailData.value.userRespVO.nickname )
} }
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 defineExpose({ open }) // 提供 open 方法,用于打开弹窗

View File

@ -69,12 +69,12 @@
<el-tag <el-tag
v-if="scope.row.status" v-if="scope.row.status"
type="success" type="success"
size="mini" size="small"
>开启</el-tag> >开启</el-tag>
<el-tag <el-tag
v-else v-else
type="danger" type="danger"
size="mini" size="small"
>关闭</el-tag> >关闭</el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -118,23 +118,35 @@
<script setup lang="ts" name="ShopAssistant"> <script setup lang="ts" name="ShopAssistant">
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
// import download from '@/utils/download' import { ref, reactive } from 'vue'
import * as ShopAssistantApi from '@/api/mall/shopAssistant' import * as ShopAssistantApi from '@/api/mall/shopAssistant'
import ShopAssistantForm from './ShopAssistantForm.vue' import ShopAssistantForm from './ShopAssistantForm.vue'
interface QueryParams {
pageNo: number;
pageSize: number;
storeId: string | undefined;
userId: string | undefined;
name: string | undefined;
phoneNo: string | undefined;
status: string | undefined;
createTime: any;
}
const message = useMessage() // 消息弹窗 const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化 const { t } = useI18n() // 国际化
const loading = ref(true) // 列表的加载中 const loading = ref(true) // 列表的加载中
const total = ref(0) // 列表的总页数 const total = ref(0) // 列表的总页数
const list = ref([]) // 列表的数据 const list = ref([]) // 列表的数据
const queryParams = reactive({ const queryParams:QueryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
storeId: null, storeId: undefined,
userId: null, userId: undefined,
name: null, name: undefined,
phoneNo: null, phoneNo: undefined,
status: null, status: undefined,
createTime: [] createTime: []
}) })
const queryFormRef = ref() // 搜索的表单 const queryFormRef = ref() // 搜索的表单

View File

@ -69,16 +69,6 @@
<Icon class="mr-5px" icon="ep:plus" /> <Icon class="mr-5px" icon="ep:plus" />
新增 新增
</el-button> </el-button>
<el-button
v-hasPermi="['system:role:export']"
:loading="exportLoading"
plain
type="success"
@click="handleExport"
>
<Icon class="mr-5px" icon="ep:download" />
导出
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</ContentWrap> </ContentWrap>
@ -164,7 +154,6 @@
<script lang="ts" name="SystemRole" setup> <script lang="ts" name="SystemRole" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as RoleApi from '@/api/system/role' import * as RoleApi from '@/api/system/role'
import RoleForm from './RoleForm.vue' import RoleForm from './RoleForm.vue'
import RoleAssignMenuForm from './RoleAssignMenuForm.vue' import RoleAssignMenuForm from './RoleAssignMenuForm.vue'
@ -185,7 +174,6 @@ const queryParams = reactive({
createTime: [] createTime: []
}) })
const queryFormRef = ref() // 搜索的表单 const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
/** 查询角色列表 */ /** 查询角色列表 */
const getList = async () => { const getList = async () => {
@ -242,21 +230,6 @@ const handleDelete = async (id: number) => {
} catch {} } catch {}
} }
/** 导出按钮操作 */
const handleExport = async () => {
try {
// 导出的二次确认
await message.exportConfirm()
// 发起导出
exportLoading.value = true
const data = await RoleApi.exportRole(queryParams)
download.excel(data, '角色列表.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
getList() getList()

View File

@ -192,6 +192,11 @@ import download from '@/utils/download'
import * as SmsChannelApi from '@/api/system/sms/smsChannel' import * as SmsChannelApi from '@/api/system/sms/smsChannel'
import * as SmsLogApi from '@/api/system/sms/smsLog' import * as SmsLogApi from '@/api/system/sms/smsLog'
import SmsLogDetail from './SmsLogDetail.vue' import SmsLogDetail from './SmsLogDetail.vue'
interface channelItem {
id: string;
signature: string;
code: string;
}
const message = useMessage() // 消息弹窗 const message = useMessage() // 消息弹窗
const loading = ref(false) // 列表的加载中 const loading = ref(false) // 列表的加载中
@ -201,7 +206,7 @@ const queryFormRef = ref() // 搜索的表单
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
channelId: null, channelId: '',
templateId: null, templateId: null,
mobile: '', mobile: '',
sendStatus: null, sendStatus: null,
@ -210,7 +215,7 @@ const queryParams = reactive({
receiveTime: [] receiveTime: []
}) })
const exportLoading = ref(false) // 导出的加载中 const exportLoading = ref(false) // 导出的加载中
const channelList = ref([]) // 短信渠道列表 const channelList = ref<channelItem[]>([]) // 短信渠道列表
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -264,3 +269,4 @@ onMounted(async () => {
channelList.value = await SmsChannelApi.getSimpleSmsChannelList() channelList.value = await SmsChannelApi.getSimpleSmsChannelList()
}) })
</script> </script>

View File

@ -145,7 +145,7 @@ const formRules = reactive({
}) })
const formRef = ref() // 表单 Ref const formRef = ref() // 表单 Ref
const deptList = ref<Tree[]>([]) // 树形结构 const deptList = ref<Tree[]>([]) // 树形结构
const postList = ref([]) // 岗位列表 const postList = ref<PostApi.PostVO[]>([]) // 岗位列表
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (type: string, id?: number) => {