提交 90fb4470 authored 作者: lidongxu's avatar lidongxu

fix(mobile_promotion): 移动端_促销计划修复部分问题

状态去左边_搜索归属人加输入框_终端名修复
上级 84c7f587
......@@ -47,6 +47,7 @@
"@vant/auto-import-resolver": "^1.3.0",
"@vitejs/plugin-vue": "5.0.5",
"cz-conventional-changelog": "^3.3.0",
"postcss-pxtorem": "^6.1.0",
"sass": "1.77.5",
"standard-version": "^9.5.0",
"unplugin-auto-import": "^0.17.6",
......
import request from '@/utils/request'
import { getToken } from '@/utils/auth'
// 提交其他报表超链接
export function submitOtherReportAPI(data) {
......@@ -18,3 +18,14 @@ export function enterOtherReportAPI(data) {
data
})
}
// 获取积木报表文件夹列表
export function getReportFolderListAPI() {
return request({
url: `/report/jmreport/category/list`,
headers: {
Token: getToken()
},
method: 'GET'
})
}
\ No newline at end of file
......@@ -57,7 +57,19 @@ import XlSelect from '@/components/XLSelect'
import OpenDialog from '@/components/OpenDialog'
// 只有在移动端引入 flexible.js
if (isMobile()) {
import('lib-flexible')
(function () {
const docEl = document.documentElement;
const designWidth = 375; // 设计稿宽度(375px设计稿)
const baseSize = 37.5; // 与 postcss-pxtorem 的 rootValue 一致
function setRem() {
const scale = Math.min(docEl.clientWidth / designWidth, 2);
docEl.style.setProperty('font-size', `${baseSize * scale}px`, 'important');
}
setRem();
window.addEventListener('resize', setRem);
})();
}
const app = createApp(App)
......
......@@ -9,14 +9,14 @@
<p>{{ planDetail.storeName }}</p>
</template>
<template #label>
<p>{{ planDetail.employeeName }}</p>
<p class="employee">{{ planDetail.employeeName }}</p>
<p v-if="planDetail.planStatus === 0">未执行</p>
<p v-else
class="plan-go">执行</p>
</template>
<template #value>
<p>{{ planDetail.pattern }}</p>
<p>{{ parseTime(planDetail.date, '{y}:{m}:{d}') }}</p>
<p v-if="planDetail.planStatus === 0">未执行</p>
<p v-else
class="plan-go">执行</p>
</template>
</van-cell>
</van-cell-group>
......@@ -76,7 +76,7 @@ const getPlanDetail = async () => {
planDetail.value = res.data.planInfo
// 循环多人打卡记录
planList.value = res.data.reporteds.map(o => {
planList.value = res.data.reporteds?.map(o => {
const { tgcjPhotoInfos: tgcjPhotoInfosList, tghdPhotoInfos: tghdPhotoInfosList, tgscPhotoInfos: tgscPhotoInfosList } = o.reported
if (tgscPhotoInfosList) {
var tgscPhotoInfos = [...tgscPhotoInfosList?.map(item => ({
......@@ -237,6 +237,17 @@ p {
}
}
}
}
::v-deep(.employee) {
margin-bottom: 5px !important;
}
::v-deep(.van-popup--right) {
width: 85% !important;
}
::v-deep(.van-cell__label) {
font-size: 14px !important;
}
</style>
\ No newline at end of file
......@@ -2,7 +2,9 @@
<div class="mobile-container">
<van-nav-bar left-text="新增"
right-text="搜索"
@click-right="showSearch = true" />
@click-right="showSearch = true"
placeholder
fixed />
<!-- 计划列表 -->
<van-pull-refresh v-model="refreshLoading"
:pull-distance="100"
......@@ -16,13 +18,16 @@
<van-cell v-for="item in planList"
:key="item.id"
:title="item.storeName"
:label="item.employeeName"
:to="`/promotion_detail/${item.id}`">
<template #label>
<p class="employee">{{ item.employeeName }}</p>
<p v-if="item.planStatus === 0">未执行</p>
<p v-else
class="plan-go">执行</p>
</template>
<template #value>
<span>{{ item.pattern }}</span>
<p>{{ parseTime(item.date, '{y}:{m}:{d}') }}</p>
<p v-if="item.planStatus === 0">未执行</p>
<p v-else class="plan-go">执行</p>
<p>{{ parseTime(item.date, '{y}-{m}-{d}') }}</p>
</template>
</van-cell>
</van-cell-group>
......@@ -110,13 +115,20 @@
<van-picker :model-value="planStatusStr"
:columns="employeeIdColumns"
@cancel="employeeIdShowPicker = false"
@confirm="onEmployeeConfirm" />
@confirm="onEmployeeConfirm">
<template #title>
<van-search v-model="searchEmployeeName"
placeholder="搜索归属人"
@update:model-value="onSearch"/>
</template>
</van-picker>
</van-popup>
<!-- 终端名 -->
<van-field v-model="query.storeNameLike"
label="终端名"
placeholder="请输入终端名"
@input="searchByStoreName" />
@update:model-value="searchByStoreName"
clearable />
<!-- 重置按钮 -->
<van-button icon="replay"
class="reset"
......@@ -126,10 +138,10 @@
<!-- 测试 url 参数用 -->
<div>
<p>{{ url }}</p>
<!-- <div>
<p class="my-p">{{ url }}</p>
<button @click="copy">复制 URL</button>
</div>
</div> -->
</div>
</template>
......@@ -217,14 +229,23 @@ const onPlanConfirm = (val) => {
getPlanList()
}
// 归属人
const searchEmployeeName = ref('')
const employeeIdShowPicker = ref(false)
const employeeIdStr = ref([])
// 所有归属人
const employeeIdColumnsAll = ref([])
// 展示归属人
const employeeIdColumns = ref([
])
const onSearch = (val) => {
employeeIdColumns.value = employeeIdColumnsAll.value.filter(item => {
return item.text.includes(searchEmployeeName.value)
})
}
const getEmployeeList = async () => {
const res = await getChargeListAPI()
employeeIdColumns.value = res.data.map(item => {
employeeIdColumnsAll.value = res.data.map(item => {
return {
text: item.name,
value: item.id,
......@@ -233,6 +254,7 @@ const getEmployeeList = async () => {
deptQcId: item.deptQcId
}
})
employeeIdColumns.value = employeeIdColumnsAll.value
}
getEmployeeList()
......@@ -276,7 +298,7 @@ const formatterEndDate = () => {
}
const searchByStoreName = (val) => {
query.storeNameLike = val.data
query.storeNameLike = val
planList.value = []
planQueryParams.pageNum = 1
getPlanList()
......@@ -294,27 +316,20 @@ const onRefresh = () => {
refreshLoading.value = true
setTimeout(() => {
refreshLoading.value = false
planQueryParams.pageNum = 1
query.activityStartDate = ''
query.activityEndDate = ''
query.planStatus = ''
query.employeeId = ''
query.storeNameLike = ''
planList.value = []
getPlanList()
resetFn()
}, 1000)
}
// 重置
const resetFn = () => {
query.activityStartDate = ''
query.activityEndDate = ''
query.planStatus = ''
query.employeeId = ''
query.storeNameLike = ''
planList.value = []
planQueryParams.pageNum = 1
getPlanList()
// query.activityStartDate = ''
// query.activityEndDate = ''
// query.planStatus = ''
// query.employeeId = ''
// query.storeNameLike = ''
// planList.value = []
// planQueryParams.pageNum = 1
// getPlanList()
}
</script>
......@@ -333,9 +348,10 @@ const resetFn = () => {
::v-deep(.van-cell__title) {
/* 强制一行显示 */
white-space: nowrap;
/* white-space: nowrap; */
}
p{
p {
margin: 0;
}
}
......@@ -343,6 +359,7 @@ const resetFn = () => {
.van-list {
min-height: 100vh;
/* overflow-x: hidden; */
}
.reset {
......@@ -351,8 +368,9 @@ const resetFn = () => {
::v-deep(.van-field):first-of-type {
.van-button {
margin: 0 5px;
margin: 0 2.5px;
padding: 0 5px;
font-size: 12px !important;
}
.van-cell__right-icon:first-of-type {
......@@ -360,7 +378,23 @@ const resetFn = () => {
}
}
.plan-go{
.plan-go {
color: #39bb74;
}
::v-deep(.employee) {
margin-bottom: 5px !important;
}
::v-deep(.van-popup--right) {
width: 85% !important;
}
::v-deep(.van-cell__label) {
font-size: 14px !important;
}
.van-search{
width: 60%;
}
</style>
\ No newline at end of file
......@@ -9,7 +9,19 @@
<el-form :model="form"
:rules="rules"
ref="reportRef"
label-width="100px">
label-width="140px">
<!-- 报表所属部门 -->
<el-form-item label="报表所属部门"
prop="id">
<el-select v-model="value"
placeholder="选择报表所属部门"
style="width: 240px">
<el-option v-for="item in deptList"
:key="item.value"
:label="item.title"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="报表名字"
prop="name">
<el-input v-model="form.name"
......@@ -34,7 +46,7 @@
<script setup>
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import { enterOtherReportAPI } from '@/api' // 假设你的API接口
import { enterOtherReportAPI, getReportFolderListAPI } from '@/api' // 假设你的API接口
const { proxy } = getCurrentInstance();
// 表单数据
const form = ref({
......@@ -45,6 +57,9 @@ const form = ref({
// 表单验证规则
const rules = ref({
id: [
{ required: true, message: '请选择报表所属部门', trigger: 'blur' }
],
name: [
{ required: true, message: '请输入报表名字', trigger: 'blur' }
],
......@@ -81,6 +96,14 @@ const handleSubmit = async () => {
}
})
}
// 获取积木报表文件夹分组一级
const deptList = ref([])
const getDeptList = async () => {
const res = await getReportFolderListAPI()
deptList.value = res.result
}
getDeptList()
</script>
<style scoped>
......
......@@ -149,6 +149,7 @@ checkFsLoginAuth()
// 检查-是否勤策回跳,并客户端登录
const checkQcLoginAuth = async () => {
isShowLogin.value = false
const isState = window.location.href.includes('state')
if (isState) {
loginByType('qc', window.location.href.split('?')[2])
......
import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
import pxtorem from 'postcss-pxtorem'
export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd())
......@@ -31,10 +32,8 @@ export default defineConfig(({ mode, command }) => {
changeOrigin: true,
rewrite: (p) => p.replace(/^\/promotion-api/, '')
},
'/ql_local': {
target: 'http://192.168.131.48:8080',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/ql_local/, '')
'ql_local': {
target: 'http://192.168.131.48'
}
}
},
......@@ -49,8 +48,16 @@ export default defineConfig(({ mode, command }) => {
atRule.remove();
}
}
}
}
},
},
pxtorem({
rootValue({ file }) {
// ? 后面调整 vant 大小
return file.indexOf('vant') !== -1 ? 37.5 : 37.5;
},
propList: ['*'],
exclude: file => !file.includes('mobile_views') && !file.includes('node_modules/vant')
})
]
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论