Compare commits

..

No commits in common. "9f2acfee68503178c2b8db1f77ca67d19c112fd8" and "c024fc8ca2ea06986215b3727ed3d190148f4a1c" have entirely different histories.

19 changed files with 103 additions and 499 deletions

View File

@ -97,7 +97,6 @@ export function updateUserPwd(oldPassword, newPassword) {
return request({
url: '/system/user/profile/updatePwd',
method: 'put',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: data
})
}

View File

@ -1175,9 +1175,7 @@ h6 {
.myInsertForm .el-tabs__item.is-active,
.myDetailForm .el-tabs__item.is-active,
.my_dialog .el-tabs__item.is-active,
.myInsertForm .el-tabs__item:hover,
.myDetailForm .el-tabs__item:hover,
.my_dialog .el-tabs__item:hover {
.el-tabs__item:hover {
font-family: Microsoft YaHei;
font-weight: 600;
font-size: 22px;

View File

@ -18,24 +18,8 @@
<img :src="icon_feedback" class="custom-icon" @click="handleFeedBack" />
</el-tooltip>
</div>
<!-- <img :src="userStore.avatar ? userStore.avatar : avatar_icon" class="user-avatar" /> -->
<el-dropdown @command="handleCommand" class="avatar-container right-menu-item hover-effect" trigger="hover">
<div class="avatar-wrapper">
<img :src="userStore.avatar ? userStore.avatar : avatar_icon" class="user-avatar" />
<span class="user-nickname"> {{ userStore.name }} </span>
</div>
<template #dropdown>
<el-dropdown-menu>
<router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link>
<!-- <el-dropdown-item divided command="logout">
<span>退出登录</span>
</el-dropdown-item> -->
</el-dropdown-menu>
</template>
</el-dropdown>
<img :src="userStore.avatar ? userStore.avatar : avatar_icon" class="user-avatar" />
<span class="user-nickname"> {{ userStore.name }} </span>
<div class="logout_icon">
<el-tooltip class="box-item" effect="dark" content="退出" placement="bottom-start">
<img :src="logout_icon" class="custom-icon" @click="logout" />
@ -86,10 +70,10 @@ import useSettingsStore from '@/store/modules/settings'
import { addSysReaddBusProblemFeedbackgion } from "@/api/problemFeedback"
const appStore = useAppStore()
const userStore = useUserStore()
const userStore = useUserStore()
const settingsStore = useSettingsStore()
const { proxy } = getCurrentInstance()
function toggleSideBar() {
appStore.toggleSideBar()
}

View File

@ -15,8 +15,8 @@ const useSettingsStore = defineStore(
state: () => ({
title: '',
theme: storageSetting.theme || '#409EFF',
sideTheme: 'theme-light', //storageSetting.sideTheme || sideTheme,
showSettings: false, //showSettings,
sideTheme: storageSetting.sideTheme || sideTheme,
showSettings: showSettings,
topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
tagsIcon: storageSetting.tagsIcon === undefined ? tagsIcon : storageSetting.tagsIcon,
@ -25,7 +25,7 @@ const useSettingsStore = defineStore(
dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle,
footerVisible: storageSetting.footerVisible === undefined ? footerVisible : storageSetting.footerVisible,
footerContent: footerContent,
isDark: false, // isDark.value
isDark: isDark.value
}),
actions: {
// 修改布局设置
@ -42,8 +42,8 @@ const useSettingsStore = defineStore(
},
// 切换暗黑模式
toggleTheme() {
// this.isDark = !this.isDark
// toggleDark()
this.isDark = !this.isDark
toggleDark()
}
}
})

View File

@ -34,7 +34,7 @@
</el-checkbox-group>
</el-tab-pane>
<el-tab-pane label="媒体报价信息" name="second">
<el-button-group class="exportGroup mb10">
<el-button-group class="mb10">
<el-button v-for="(item, index) in ToolOptions" :key="index"
:type="activeIndex === index ? 'primary' : 'default'" @click="handleChangeType(index)">
{{ item }}
@ -81,170 +81,6 @@ const exportOpen = ref(false)
const activeName = ref('first')
const curDeptIds = ref(null)
//
const ysBaseFild = ref([
{
displayName: "媒体名称",
propertyPath: "mediaName"
},
{
displayName: "媒体类型",
propertyPath: "mediaTypeStr"
},
{
displayName: "媒体大类",
propertyPath: "mediaCategoryStr"
},
{
displayName: "展示形式",
propertyPath: "displayFormStr"
},
{
displayName: "是否照明",
propertyPath: "hasLighting"
},
{
displayName: "播放时间",
propertyPath: "playbackTime"
},
{
displayName: "媒体尺寸",
propertyPath: "mediaSize"
},
{
displayName: "MR",
propertyPath: "mr"
},
{
displayName: "日均车流量",
propertyPath: "dailyAvgVehicleFlow"
},
{
displayName: "媒体朝向",
propertyPath: "mediaOrientation"
},
{
displayName: "省",
propertyPath: "provinceName"
},
{
displayName: "市",
propertyPath: "cityName"
},
{
displayName: "区",
propertyPath: "areaName"
},
{
displayName: "镇",
propertyPath: "townName"
},
{
displayName: "商圈",
propertyPath: "businessDistrictName"
},
{
displayName: "地址",
propertyPath: "address"
},
{
displayName: "纬度",
propertyPath: "mapY"
},
{
displayName: "经度",
propertyPath: "mapX"
},
{
displayName: "最小购买周期",
propertyPath: "minPurchaseCycle"
},
{
displayName: "首次制作安装费",
propertyPath: "firstInstallFee"
},
{
displayName: "换刊制作安装费",
propertyPath: "changeInstallFee"
},
{
displayName: "状态",
propertyPath: "state"
},
{
displayName: "作废原因",
propertyPath: "invalidReason"
},
{
displayName: "业务部门",
propertyPath: "dataScopeDeptName"
}
])
//
const wlBaseFild = ref([
{
displayName: "媒体名称",
propertyPath: "mediaName"
},
{
displayName: "媒体类型",
propertyPath: "mediaTypeStr"
},
{
displayName: "媒体大类",
propertyPath: "mediaCategoryStr"
},
{
displayName: "展示形式",
propertyPath: "displayFormStr"
},
{
displayName: "省",
propertyPath: "provinceName"
},
{
displayName: "市",
propertyPath: "cityName"
},
{
displayName: "区",
propertyPath: "areaName"
},
{
displayName: "镇",
propertyPath: "townName"
},
{
displayName: "商圈",
propertyPath: "businessDistrictName"
},
{
displayName: "地址",
propertyPath: "address"
},
{
displayName: "纬度",
propertyPath: "mapY"
},
{
displayName: "经度",
propertyPath: "mapX"
},
{
displayName: "状态",
propertyPath: "state"
},
{
displayName: "作废原因",
propertyPath: "invalidReason"
},
{
displayName: "业务部门",
propertyPath: "dataScopeDeptName"
}
])
//
const ysPriceFild = ref([
{
@ -1314,7 +1150,7 @@ const ckdxPriceFild = ref([
const exportForm = ref({
ids: undefined,
exportBaseFields: undefined,
mediaTypeExport: [],
exportPriceFields: false,
hasFiles: false
})
@ -1323,7 +1159,7 @@ const baseFieldCheckAll = ref(false)
const baseFieldIsIndeterminate = ref(false)
//
const baseFields = ref([])
// const _baseFields = ref(null)
const _baseFields = ref(null)
//
const checkedBaseFields = ref([])
@ -1359,88 +1195,20 @@ const handleCheckedBaseFieldChange = (value) => {
baseFieldIsIndeterminate.value = checkedCount > 0 && checkedCount < baseFields.value.length
}
//
const handleCheckAllPriceFieldChange = (val) => {
const handleCheckAllPriceFieldChange = (val) => {
checkedPriceFields.value = []
if (val) {
priceFields.value.forEach(element => {
checkedPriceFields.value.push(element.propertyPath)
});
if (ToolOptions.value.length == 8) {
//
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == activeIndex.value);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = [...checkedPriceFields.value] // 使
}
}
if (ToolOptions.value.length == 7) {
let jsType = activeIndex.value + 1
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == jsType);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = [...checkedPriceFields.value] // 使
}
}
if (ToolOptions.value.length == 0) {
//
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == 0);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = [...checkedPriceFields.value] // 使
}
}
} else {
if (ToolOptions.value.length == 8) {
//
const curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == activeIndex.value);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = []
}
}
if (ToolOptions.value.length == 7) {
let jsType = activeIndex.value + 1
const curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == jsType);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = []
}
}
if (ToolOptions.value.length == 0) {
const curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == 0);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = []
}
}
}
priceFieldIsIndeterminate.value = false
//
checkPriceFieldSelectStatus()
}
//
const handleCheckedPriceFieldChange = (value) => {
const handleCheckedPriceFieldChange = (value) => {
const checkedCount = value.length
priceFieldCheckAll.value = checkedCount === priceFields.value.length
priceFieldIsIndeterminate.value = checkedCount > 0 && checkedCount < priceFields.value.length
// exportForm
if (ToolOptions.value.length == 8) {
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == activeIndex.value);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = [...value]
}
}
if (ToolOptions.value.length == 7) {
let jsType = activeIndex.value + 1
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == jsType);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = [...value]
}
}
if (ToolOptions.value.length == 0) {
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == 0);
if (curPriceFields.length > 0) {
curPriceFields[0].exportPriceFields = [...value]
}
}
//
checkPriceFieldSelectStatus()
}
//
@ -1456,7 +1224,7 @@ const handleClick = (tab, event) => {
//
const handleSubmitExport = () => {
exportForm.value.exportBaseFields = checkedBaseFields
exportForm.value.mediaTypeExport = exportForm.value.mediaTypeExport.filter(item => item.exportPriceFields.length > 0)
exportForm.value.exportPriceFields = checkedPriceFields
exportMediaExcel(exportForm.value).then(res => {
const downLoadName = '媒体信息_' + getCurrentTime() + '.xlsx'
// a
@ -1487,15 +1255,20 @@ const getCurrentTime = () => {
//
const getMediaExcelBaseField = () => {
if (curDeptIds.value && curDeptIds.value.length == 2) baseFields.value = ysBaseFild.value
else if (curDeptIds.value && curDeptIds.value.length == 1) {
if (curDeptIds.value[0] == '219') {
//
baseFields.value = wlBaseFild.value
} else {
baseFields.value = ysBaseFild.value
mediaExcelBaseField().then(res => {
if (curDeptIds.value && curDeptIds.value.length == 2) baseFields.value = res.data
else if (curDeptIds.value && curDeptIds.value.length == 1) {
if (curDeptIds.value[0] == '219') {
//
_baseFields.value = "媒体名称,媒体类型,媒体大类,展示形式,省,市,区,镇,商圈,地址,经度,纬度,状态,废除原因, 部门"
} else {
_baseFields.value = "媒体名称,媒体类型,媒体大类,展示形式,是否照明,播放时间,媒体尺寸,mr,日均车流量,媒体朝向,省,市,区,镇,商圈,地址,经度,纬度,最小购买周期,首次制作安装费,换刊制作安装费,状态,废除原因, 部门"
}
baseFields.value = [...new Set( //
res.data.filter(item => _baseFields.value.includes(item.displayName))
)];
}
}
})
}
//
const getMediaExcelPriceField = () => {
@ -1503,148 +1276,93 @@ const getMediaExcelPriceField = () => {
ToolOptions.value = ['优势报价', '门禁', '候车厅', '道闸', '地铁', '高铁', '写字楼', '车库灯箱']
activeIndex.value = 0
priceFields.value = ysPriceFild.value
handleCheckPriceField(0)
}
else if (curDeptIds.value && curDeptIds.value.length == 1) {
if (curDeptIds.value[0] == '219') {
ToolOptions.value = ['门禁', '候车厅', '道闸', '地铁', '高铁', '写字楼', '车库灯箱']
activeIndex.value = 0
priceFields.value = mjPriceFild.value
handleCheckPriceField(1)
} else {
ToolOptions.value = []
activeIndex.value = 0
priceFields.value = ysPriceFild.value
handleCheckPriceField(0)
}
}
}
//
const handleCheckPriceField = (_mediaType) => {
//
const currentMediaTypeExport = [...exportForm.value.mediaTypeExport]; //
//
const filteredFields = currentMediaTypeExport.filter(item => item.type !== _mediaType);
//
const _mediaTypeArr = currentMediaTypeExport.filter(item => item.type == _mediaType);
//
if (_mediaTypeArr.length == 0) {
filteredFields.push({ type: _mediaType, exportPriceFields: [] }); // 使 push
exportForm.value.mediaTypeExport = [...filteredFields]; // ref
}
}
}
//
const handleChangeType = (_type) => {
activeIndex.value = _type
priceFieldCheckAll.value = false
priceFieldIsIndeterminate.value = false
//
let currentCheckedFields = []
if (ToolOptions.value.length == 8) {
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == _type);
if (curPriceFields.length > 0) {
currentCheckedFields = [...curPriceFields[0].exportPriceFields]
}
}
if (ToolOptions.value.length == 7) {
let wlType = _type + 1
let curPriceFields = exportForm.value.mediaTypeExport.filter(item => item.type == wlType);
if (curPriceFields.length > 0) {
currentCheckedFields = [...curPriceFields[0].exportPriceFields]
}
}
if (ToolOptions.value.length == 8) {
switch (_type) {
case 0:
priceFields.value = ysPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 1:
priceFields.value = mjPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 2:
priceFields.value = hctPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 3:
priceFields.value = dzPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 4:
priceFields.value = dtPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 5:
priceFields.value = gtPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 6:
priceFields.value = xzlPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 7:
priceFields.value = ckdxPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
}
handleCheckPriceField(_type)
}
if (ToolOptions.value.length == 7) {
switch (_type) {
case 0:
priceFields.value = mjPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 1:
priceFields.value = hctPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 2:
priceFields.value = dzPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 3:
priceFields.value = dtPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 4:
priceFields.value = gtPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 5:
priceFields.value = xzlPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
case 6:
priceFields.value = ckdxPriceFild.value
checkedPriceFields.value = currentCheckedFields
checkedPriceFields.value = []
break;
}
let wlType = _type + 1
handleCheckPriceField(wlType)
}
//
checkPriceFieldSelectStatus()
}
//
const checkPriceFieldSelectStatus = () => {
const checkedCount = checkedPriceFields.value.length
const totalCount = priceFields.value.length
priceFieldCheckAll.value = checkedCount === totalCount
priceFieldIsIndeterminate.value = checkedCount > 0 && checkedCount < totalCount
}
//
const checkBaseFieldSelectStatus = () => {
const checkedCount = checkedBaseFields.value.length
const totalCount = baseFields.value.length
baseFieldCheckAll.value = checkedCount === totalCount
baseFieldIsIndeterminate.value = checkedCount > 0 && checkedCount < totalCount
}
//
const initExportExcel = (_mediaIds, _curDeptIds) => {
@ -1654,10 +1372,6 @@ const initExportExcel = (_mediaIds, _curDeptIds) => {
exportOpen.value = true
getMediaExcelBaseField()
getMediaExcelPriceField()
//
checkBaseFieldSelectStatus()
checkPriceFieldSelectStatus()
}
// \
@ -1667,24 +1381,24 @@ defineExpose({
</script>
<style lang='scss'>
.exportGroup>.el-button {
.el-button-group>.el-button {
float: left;
position: relative;
height: 30px;
border: 1px solid #9C9C9C;
background: #9c9c9c1a;
height: 38px;
border: 1px solid #DFDFDF;
background: #ffffff;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 18px;
text-align: center;
color: #000000;
}
.exportGroup>.el-button--primary {
background: #1a75e6;
border: 1px solid #1A75E6;
}
.exportGroup .el-button--primary:last-child {
border-left-color: #1A75E6;
}
.exportGroup .el-button--primary:first-child {
border-right-color: #1A75E6;
.el-button-group>.el-button--primary {
background: #1f1f1f;
font-family: Microsoft YaHei;
font-weight: 600;
color: #FFFFFF;
border: 1px solid #1f1f1f;
}
</style>

View File

@ -13,8 +13,7 @@
value-format="YYYY-MM-DD HH:mm:ss" type="date" placeholder="结束时间" @change="validateEndTime" />
</el-form-item>
<el-form-item label="类型:" v-if="!readonly">
<el-select v-model="mediaType" placeholder="请选择" style="min-width: 120px;" clearable
@change="handleChangeMediaType">
<el-select v-model="mediaType" placeholder="请选择" style="min-width: 120px;" clearable @change="handleChangeMediaType" >
<el-option v-for="item in mediaTypes" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
@ -217,14 +216,7 @@ const initHistoryCharLine = () => {
_historyChar.value.setOption({
tooltip: {
trigger: 'item',
// formatter: "{b} : {c} /" //
formatter: function (params) {
//
const originalData = historyList.value; //
const time = originalData[params.dataIndex].createTime;
return `${params.name}: ${params.value} 元/天<br/>时间: ${time}`;
}
formatter: "{b} : {c} 元/天" //
},
grid: {
left: '3%',
@ -312,14 +304,7 @@ const initHistoryCharBar = () => {
_historyChar.value.setOption({
tooltip: {
trigger: 'item',
// formatter: "{b} : {c} /" //
formatter: function (params) {
//
const originalData = historyList.value; //
const time = originalData[params.dataIndex].createTime;
return `${params.name}: ${params.value} 元/天<br/>时间: ${time}`;
}
formatter: "{b} : {c} 元/天" //
},
grid: {
left: '3%',
@ -403,7 +388,7 @@ const initHistoryCharBar = () => {
// _historyChar.value.resize()
// })
}
const handleChangeMediaType = (val) => {
const handleChangeMediaType = (val) => {
getMediaPriceList()
}
const handleChangeType = (val) => {
@ -439,6 +424,8 @@ const getMediaPriceList = () => {
itemYDate = (convertIntTotalRegularPrice / (item.buyCycle * 7)).toFixed(2)
} else {
const repliceValue = parseInt(item.buyCycle.replace('个月', '').replace('月', ''))
console.log('会输入月份的原始值', item.buyCycle)
console.log('替换会输入月份的结果', repliceValue)
itemYDate = (convertIntTotalRegularPrice / (repliceValue * 31)).toFixed(2)
}
}
@ -476,7 +463,7 @@ const validateEndTime = (val) => {
}
};
//
const initHistoryData = (_mediaId, _readonly) => {
const initHistoryData = (_mediaId, _readonly) => {
historyDataOpen.value = true
readonly.value = _readonly
nextTick(() => {

View File

@ -38,7 +38,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商/媒体形式/名称" prop="business_department">
<el-form-item label="媒体形式/名称" prop="business_department">
{{ detailForm.mediaName }}
</el-form-item>
</el-col>
@ -113,7 +113,7 @@
</el-row>
<div class="splineBar" />
<el-row :gutter="30" class="my_form_row">
<el-col :span="12">
<el-col :span="18">
<el-form-item label="城市" prop="business_department">
<span v-if="detailForm.provinceName">{{ detailForm.provinceName }}</span>
<span v-if="detailForm.cityName">-{{ detailForm.cityName }}</span>
@ -121,7 +121,7 @@
<span v-if="detailForm.townName">-{{ detailForm.townName }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="商圈" prop="business_department">
{{ detailForm.businessDistrictName }}
</el-form-item>

View File

@ -8,7 +8,7 @@
</el-icon>
</div>
</template>
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="180px" class="myInsertForm">
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="160px" class="myInsertForm">
<el-collapse class="my-collapse" v-model="activeNames" @change="handleChange">
<el-collapse-item title="业务部门" name="1">
<el-row :gutter="30" class="my_form_row">
@ -31,7 +31,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商/媒体形式/名称" prop="mediaName" >
<el-form-item label="媒体形式/名称" prop="mediaName">
<el-input v-model="ruleForm.mediaName" placeholder="请输入" />
</el-form-item>
</el-col>

View File

@ -13,26 +13,7 @@
<div class="tool-content">
<el-row :gutter="20" style="margin: 0 -10px 30px -10px;">
<el-col :span="24">
<div class="toolItemTitle mb20">
上传文件
<el-dropdown placement="bottom">
<el-button class="downloadTemplateBtnDrow" text>下载模板</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="downloadExcelTemplate('mj')">门禁校准模板</el-dropdown-item>
<el-dropdown-item
@click="downloadExcelTemplate('hct')">候车厅校准模板</el-dropdown-item>
<el-dropdown-item @click="downloadExcelTemplate('dz')">道闸校准模板</el-dropdown-item>
<el-dropdown-item @click="downloadExcelTemplate('dt')">地铁校准模板</el-dropdown-item>
<el-dropdown-item @click="downloadExcelTemplate('gt')">高铁校准模板</el-dropdown-item>
<el-dropdown-item
@click="downloadExcelTemplate('xzl')">写字楼校准模板</el-dropdown-item>
<el-dropdown-item
@click="downloadExcelTemplate('ckdx')">车库灯箱校准模板</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
<div class="toolItemTitle mb20">上传文件</div>
<el-upload class="my-upload-demo" drag action="#" :http-request="requestDocUpload"
:file-list="docUploadList" :before-upload="beforeDocUpload" :on-remove="removeDocUpload">
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
@ -66,7 +47,6 @@
</template>
</el-table-column>
<el-table-column label="操作时间" align="center" prop="createTime" width="210" />
<el-table-column label="异常信息" align="center" prop="errorMessage" width="210" />
<el-table-column label="操作" :width="160" align="center">
<template #default="scope">
<el-button v-if="scope.row.progress == 100" link type="primary"
@ -197,7 +177,7 @@
<el-table-column label="总净价" align="right" prop="totalRegularPrice" width="120" />
<el-table-column label="总净价单位" align="center" prop="totalRegularPriceUnit" width="130" />
<el-table-column label="底价" align="right" prop="floorPrice" width="120" />
<el-table-column label="价总" align="right" prop="minPrice" width="120" />
<el-table-column label="价总" align="right" prop="minPrice" width="120" />
<el-table-column label="制作费" align="right" prop="makeFee" width="130" />
<el-table-column label="媒体费总价" align="right" prop="mediaFeeTotalPrice" width="130" />
<el-table-column label="单日覆盖人流量" align="center" prop="dailyAvgPeopleFlow" width="150" />
@ -367,41 +347,6 @@ const getTaskRecordPageList = () => {
loading.value = false
})
}
//
const downloadExcelTemplate = (tempLateType) => {
const link = document.createElement('a')
if (tempLateType == 'mj') {
link.href = '/jzTemplate/门禁校准平台模板.xlsx'
link.download = '门禁校准平台模板.xlsx' //
}
if (tempLateType == 'hct') {
link.href = '/jzTemplate/候车厅校准平台模板.xlsx'
link.download = '候车厅校准平台模板.xlsx' //
}
if (tempLateType == 'dz') {
link.href = '/jzTemplate/道闸校准平台模板.xlsx'
link.download = '道闸校准平台模板.xlsx' //
}
if (tempLateType == 'dt') {
link.href = '/jzTemplate/地铁校准平台模板.xlsx'
link.download = '地铁校准平台模板.xlsx' //
}
if (tempLateType == 'gt') {
link.href = '/jzTemplate/高铁校准平台模板.xlsx'
link.download = '高铁校准平台模板.xlsx' //
}
if (tempLateType == 'xzl') {
link.href = '/jzTemplate/写字楼校准平台模板.xlsx'
link.download = '写字楼校准平台模板.xlsx' //
}
if (tempLateType == 'ckdx') {
link.href = '/jzTemplate/车库灯箱校准平台模板.xlsx'
link.download = '车库灯箱校准平台模板.xlsx' //
}
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
//
const requestDocUpload = (options) => {
@ -482,7 +427,7 @@ const handleExportCalibraTionResult = () => {
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
proxy.$modal.msgSuccess("导出成功")
handleCloseModal()
})
@ -636,21 +581,4 @@ defineExpose({
font-size: 16px;
color: #67C23A;
}
.downloadTemplateBtnDrow {
width: 100px;
height: 36px;
font-family: Microsoft YaHei;
font-weight: 700;
font-size: 16px;
text-align: center;
color: #409eff !important;
background: transparent !important;
margin-top: 4px;
}
.downloadTemplateBtnDrow:hover {
background: transparent !important;
color: #409eff !important;
}
</style>

View File

@ -77,7 +77,6 @@
<span>{{ moment(scope.row.created_at, "ddd, DD MMM YYYY HH:mm:ss [GMT]").format('YYYY-MM-DD HH:mm:ss') }}</span>
</template>
</el-table-column>
<el-table-column label="异常信息" align="center" prop="errorMessage" width="210" />
<el-table-column label="操作" :width="160" align="center">
<template #default="scope">
<el-button v-if="scope.row.progress == 100" link type="primary"

View File

@ -2,11 +2,11 @@
<div class="app-container">
<el-row :gutter="20">
<el-col :span="6" :xs="24">
<el-card class="box-card" style="min-height: calc(100vh - 100px);">
<el-card class="box-card">
<template v-slot:header>
<div class="clearfix">
<span>个人信息</span>
</div>
<div class="clearfix">
<span>个人信息</span>
</div>
</template>
<div>
<div class="text-center">
@ -14,7 +14,7 @@
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item">
<svg-icon icon-class="user" />用户账号
<svg-icon icon-class="user" />用户名称
<div class="pull-right">{{ state.user.userName }}</div>
</li>
<li class="list-group-item">
@ -27,8 +27,7 @@
</li>
<li class="list-group-item">
<svg-icon icon-class="tree" />所属部门
<div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{
state.postGroup }}</div>
<div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}</div>
</li>
<li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色
@ -43,13 +42,13 @@
</el-card>
</el-col>
<el-col :span="18" :xs="24">
<el-card style="min-height: calc(100vh - 100px);">
<el-card>
<template v-slot:header>
<div class="clearfix">
<span>基本资料</span>
</div>
<div class="clearfix">
<span>基本资料</span>
</div>
</template>
<el-tabs class="demo-tabs" v-model="selectedTab">
<el-tabs v-model="selectedTab">
<el-tab-pane label="基本资料" name="userinfo">
<userInfo :user="state.user" />
</el-tab-pane>
@ -67,33 +66,29 @@
import userAvatar from "./userAvatar"
import userInfo from "./userInfo"
import resetPwd from "./resetPwd"
import otherbg from '@/assets/images/otherbg.png'
import { getUserProfile } from "@/api/system/user"
import { useBackgroundStore } from '@/store/modules/background'
const bgStore = useBackgroundStore()
const route = useRoute()
const selectedTab = ref("userinfo")
const state = reactive({
user: {},
roleGroup: {},
postGroup: {}
user: {},
roleGroup: {},
postGroup: {}
})
function getUser() {
getUserProfile().then(response => {
state.user = response.data
state.roleGroup = response.roleGroup
state.postGroup = response.postGroup
})
getUserProfile().then(response => {
state.user = response.data
state.roleGroup = response.roleGroup
state.postGroup = response.postGroup
})
}
onMounted(() => {
bgStore.setBgImage(otherbg)
const activeTab = route.params && route.params.activeTab
if (activeTab) {
selectedTab.value = activeTab
}
getUser()
const activeTab = route.params && route.params.activeTab
if (activeTab) {
selectedTab.value = activeTab
}
getUser()
})
</script>

View File

@ -1,7 +1,7 @@
<template>
<el-form ref="userRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="用户姓名" prop="realName">
<el-input v-model="form.realName" maxlength="30" />
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" maxlength="30" />
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" maxlength="11" />
@ -35,7 +35,7 @@ const { proxy } = getCurrentInstance()
const form = ref({})
const rules = ref({
realName: [{ required: true, message: "用户姓名不能为空", trigger: "blur" }],
nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
email: [{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
})
@ -61,7 +61,7 @@ function close() {
//
watch(() => props.user, user => {
if (user) {
form.value = { realName: user.realName, phonenumber: user.phonenumber, email: user.email, sex: user.sex }
form.value = { nickName: user.nickName, phonenumber: user.phonenumber, email: user.email, sex: user.sex }
}
},{ immediate: true })
</script>