Commit c39a1801 authored by 罗超's avatar 罗超

完成用户登录

parent d455f5c2
VUE_APP_API_URL = 'http://192.168.10.214/api/common/post'
VUE_APP_API_URL = 'http://localhost:8001/api/common/post'
VUE_APP_UPLOADURLAPI_URL = 'http://192.168.10.214:8120'
VUE_APP_SHARE_URL = 'http://127.0.0.1:8080'
\ No newline at end of file
......@@ -164,6 +164,12 @@ page {
/* left: 50% !important; */
/* margin-left: -2px !important; */
}
.primary-borders-thin{
border:1px solid #d14424 !important;
}
.transparent-borders{
border:1px solid transparent;
}
.bg-transparent{
background: transparent !important;
}
......@@ -222,7 +228,10 @@ page {
}
.q-px-xl{
padding-left: 30px;
padding-right: 300px;
padding-right: 30px;
}
.q-pa-xl{
padding: 30px;
}
.display-none{
display: none;
......@@ -275,6 +284,24 @@ page {
margin-right:10px;
margin-left:10px;
}
.q-my-xl{
margin-top: 30px;
margin-bottom: 30px;
}
.q-py-xl{
padding-top: 30px;
padding-bottom: 30px;
}
.q-mt-xl{
margin-top: 30px;
}
.q-mb-xl{
margin-bottom: 30px;
}
.q-py-xl{
padding-top: 30px;
padding-bottom: 30px;
}
.q-mr-md{
margin-right:10px
}
......@@ -297,6 +324,13 @@ page {
.bg-primary{
background-color: #0b40fe !important;
}
.text-grey-8{
color: grey;
}
.cusor-pointer,
.cursor-pointer{
cursor: pointer;
}
.q-px-lg{
padding-left: 20px;
padding-right: 20px;
......@@ -380,6 +414,13 @@ page {
.q-mb-lg{
margin-bottom:20px
}
.text-weight-bold{
font-weight: bold;
}
.text-weight-bolder{
font-weight: bolder;
}
.rounded{
border-radius: 6px;
-webkit-border-radius: 6px;
......
<template>
<el-popover :width="300" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;" >
<template #reference>
<div class="row items-center cursor-pointer">
<el-avatar :size="40" :src="userInfo.photo" v-if="userInfo.photo && userInfo.photo.includes('http')"></el-avatar>
<el-avatar :size="40" v-else class="bg-primary text-white">{{ userInfo.nickname[0] }}</el-avatar>
<div class="q-ml-md">
<div class="" style="font-size: 16px; line-height: 1">{{ userInfo.nickname }}</div>
<img :src="vipIcon" style="height: 15px;"/>
</div>
</div>
</template>
<template #default>
<div class="row items-center text-small" >
<span class="text-grey-8">个人账号ID:</span>
<span class="col text-info" >1572131810</span>
<el-button class="text-grey-8" link>退出登录</el-button>
</div>
</template>
</el-popover>
</template>
<script lang="ts" setup>
import { useUserStore } from '@/store'
import { storeToRefs } from 'pinia'
const useUser = useUserStore()
const {userInfo} = storeToRefs(useUser)
const vipIcon = 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1712478244000_568.png'
</script>
<style scoped>
</style>
\ No newline at end of file
import { createRouter, createWebHistory } from 'vue-router'
import routes from './router'
import { userStore } from '@/store/user';
import { useUserStore } from '@/store/user';
import { ElLoading } from 'element-plus';
const router = createRouter({
......@@ -14,7 +14,7 @@ const managerMenu = ['/market','/editor_admin']
let loadingInstance:any = null
router.beforeEach((to:any, from:any, next:any) => {
const user = userStore()
const user = useUserStore()
if(!loadingInstance){
loadingInstance = ElLoading.service({
fullscreen:true,
......@@ -22,7 +22,7 @@ router.beforeEach((to:any, from:any, next:any) => {
})
}
if ((whiteList.includes(to.path) || user.getUserToken!='') && !to.query.uid) {
if(managerMenu.includes(to.path) && user.getUser.IsEditTripTemplate!=1){
if(managerMenu.includes(to.path) && user.getUser.isTemplate!=1){
next('/notfound');
}
if (to.meta.title) {
......@@ -30,8 +30,11 @@ router.beforeEach((to:any, from:any, next:any) => {
}
next();
} else {
if(to.query && to.query.uid){
next(`/autoLogin?forword=${encodeURIComponent(to.fullPath)}`)
} else if(user.getUserToken=='') {
next(`/login`)
}
next('/notfound');
}
......
......@@ -9,6 +9,13 @@ const routes: RouteRecordRaw[] = [
title:'个人空间'
}
},
{
path: '/login',
component: () => import('@/views/Auth/Login.vue'),
meta:{
title:'登录 Travel Design'
}
},
{
path: '/notfound',
component: () => import('@/views/ErrorNotFound.vue'),
......
......@@ -3,9 +3,14 @@ import Api,{ HttpResponse, Result } from './../utils/request';
class UserServices{
static async LoginAsync(userId:number):Promise<HttpResponse>{
static async AutoLoginAsync(userId:number):Promise<HttpResponse>{
let msg = {EmployeeId:userId}
return Api.Post("admin_get_GetErpLoginInfoByUid",msg)
}
static async PasswordLoginAsync(account:string,pwd:string,tid:string=''):Promise<HttpResponse>{
let msg = {account,pwd,tid}
return Api.Post("travel_login_password",msg)
}
}
export default UserServices;
\ No newline at end of file
......@@ -6,6 +6,7 @@ import { useScreenStore } from './screen'
import { useFontStore } from './font'
import { useMapStore } from './map'
import { useSellTemplateStore } from './sellTemplate'
import { useUserStore } from './user'
export {
useMainStore,
......@@ -15,5 +16,6 @@ export {
useScreenStore,
useFontStore,
useMapStore,
useSellTemplateStore
useSellTemplateStore,
useUserStore
}
\ No newline at end of file
import { ApiResult } from '@/configs/axios';
import UserService from '@/services/UserService';
import { defineStore } from 'pinia';
import { StorageLike } from 'pinia-plugin-persistedstate';
......@@ -15,7 +16,13 @@ const st: StorageLike = {
return ls.get(key);
},
}
export const userStore = defineStore('user', {
export interface UserLoginResult {
status:'ERROR'|'CHOSEN'|'SUCCESS',
data?:any[]
}
export const useUserStore = defineStore('user', {
state:()=>({
token:'' as string,
userInfo:{} as any
......@@ -29,16 +36,44 @@ export const userStore = defineStore('user', {
},
},
actions:{
async setUserLoginAsync(userId:number){
async setUserAutoLoginAsync(userId:number){
try {
let response = await UserService.LoginAsync(userId)
if (response.data.resultCode == 1) {
this.token = response.data.data.token
this.userInfo = response.data.data
let response = await UserService.AutoLoginAsync(userId)
if (response.data.resultCode == ApiResult.SUCCESS) {
const d = response.data.data
this.token = d.token
d.nickname=d.emName
d.photo = d.Icon
d.company = d.GroupName
d.logo = d.GroupPic
d.isTemplate = d.IsEditTripTemplate
this.userInfo = d
return true
}
} catch (error) {}
return false
},
setUserLoginOut(){
this.token=''
this.userInfo={}
window.location.href='/login'
},
async setUserPasswordLoginAsync(account:string,pwd:string,tid:string='') {
try {
let response = await UserService.PasswordLoginAsync(account,pwd,tid)
if (response.data.resultCode == ApiResult.SUCCESS) {
if(!Array.isArray(response.data.data)) {
this.token = response.data.data.token
this.userInfo = response.data.data.userinfo
return { status:'SUCCESS' } as UserLoginResult
} else {
return { status:'CHOSEN', data:response.data.data } as UserLoginResult
}
}
} catch (error) {}
return { status:'ERROR' } as UserLoginResult
}
},
persist: {
......
import service, { ApiResult } from "../configs/axios";
import { userStore } from "@/store/user";
import { useUserStore } from "@/store/user";
import md5 from "md5-ts";
export interface HttpResponse {
......@@ -24,9 +24,9 @@ class Api{
datas = msg
msg = datas??{}
let token = userStore().getUserToken??''
let token = useUserStore().getUserToken??''
let key = ""
let groupId = userStore().getUser?.groupId
let groupId = useUserStore().getUser?.groupId
let timestamp = (new Date()).valueOf();
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
......
......@@ -5,7 +5,7 @@
</template>
<script setup lang="ts">
import { userStore } from '@/store/user';
import { useUserStore } from '@/store/user';
import { query } from '@/utils/common';
import { ElLoading } from 'element-plus';
import { ref } from 'vue';
......@@ -22,13 +22,13 @@ const userLoginHandler = async ()=>{
lock:true
})
if(param.uid){
let response = await userStore().setUserLoginAsync(parseInt(param.uid))
let response = await useUserStore().setUserAutoLoginAsync(parseInt(param.uid))
if(response){
if(param.model=='0') {
router.push({
path: `/team_editor/${param.ConfigId}`
})
} else if(param.model=='1' && userStore().getUser.IsEditTripTemplate==1) {
} else if(param.model=='1' && useUserStore().getUser.isTemplate==1) {
router.push({
path: `/market`
})
......
<template>
<div class="login-box q-pa-xl row">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708239425000_437.png" class="logo" />
<div class="col column">
<div class="col column flex-center items-center">
<div class="wel">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1711705161000_818.png" />
<h1 style="font-size: 32px; text-dark" class="q-my-lg">快速,智能,美观</h1>
<div class="text-info text-small" style="font-size: 13px;">这里有上百种行程设计模板供你选择</div>
<div class="text-info text-small q-my-md" style="font-size: 13px;">我们为你提供了大量的插件,支持快速实现自己想要的行程</div>
<div class="text-info text-small" style="font-size: 13px;">AI助手的辅助让你报价与设计快人一步</div>
</div>
</div>
<div class="text-center text-small text-info full-width">@2012-2024 成都微途科技有限公司 版权所有 蜀ICP备13024891号-9</div>
</div>
<div class="login-form q-pa-xl column flex-center items-center" style="padding: 30px 100px;" v-if="token==''">
<div style="font-size: 36px; " class="text-dark">登录</div>
<div class="text-info text-small">你的创作空间</div>
<template v-if="!multipleUsers || multipleUsers.length==0">
<div class="q-py-xl row items-center full-width">
<div class="login-type row items-center col">
<img src="../../assets/img/wechat.png" alt="">
<span class="q-ml-md">使用微信扫码登录</span>
</div>
<div class="login-type row items-center col q-ml-md">
<img src="../../assets/img/phone.png" alt="">
<span class="q-ml-md">使用短信验证登录</span>
</div>
</div>
<el-divider> <span class="text-info">或者账号登录</span> </el-divider>
<el-form ref="loginFormRef" :model="model" :rules="rules" label-width="0px" size="large" class="full-width q-mt-lg">
<el-form-item label="" prop="account">
<el-input v-model="model.account" placeholder="账号" />
</el-form-item>
<el-form-item label="" prop="password">
<el-input v-model="model.password" type="password" placeholder="密码" autocomplete="new-password" show-password class="q-mt-lg"/>
</el-form-item>
<div class="text-right">
<el-button link type="primary" class="q-mb-lg">忘记密码?</el-button>
</div>
<el-form-item>
<el-button type="primary" class="full-width q-mb-lg" @click="submitForm(loginFormRef)" :loading="loading">登录</el-button>
</el-form-item>
<div class="text-info text-small row flex-center">
<span>还没有账号?</span>
<el-button link type="primary" class="q-mb-lg">立即注册</el-button>
</div>
</el-form>
</template>
<template v-if="multipleUsers && multipleUsers.length>0">
<el-divider> <span class="text-info">选择你需要登录的组织</span> </el-divider>
<div v-for="x in multipleUsers" @click="()=>model.tid=x.tid" class="light-shadow q-pa-md row items-center full-width rounded q-mt-xl cursor-pointer q-mb-md transparent-borders" :class="{'primary-borders-thin':model.tid==x.tid}">
<el-avatar :size="30" :src="x.logo"></el-avatar>
<div class="q-ml-lg">
<div class="text-weight-bold" style="font-size: 20px;">{{ x.nickname }}</div>
<div class="text-info text-small">{{ x.tenantname }}</div>
</div>
</div>
<el-button type="primary" size="large" class="full-width q-mt-lg" @click="loginByCompany" :loading="loading" :disabled="model.tid==''">登录</el-button>
<div class="text-center q-mt-lg">
<el-button link type="primary" class="q-mb-lg" @click="clearCompanyChoosenHandler">重新登录</el-button>
</div>
</template>
</div>
<div class="login-form q-pa-xl column flex-center items-center" style="padding: 30px 100px;" v-else>
<div style="font-size: 36px; " class="text-dark">已登录</div>
<div class="text-info text-small">你的创作空间</div>
<div class="q-py-xl flex-center items-center column">
<el-avatar :size="100" :scr="userInfo.photo">
{{ userInfo.photo && userInfo.photo.includes('http') ? '' :userInfo.nickname[0] }}
</el-avatar>
<div class="q-mt-md text-weight-bold" style="font-size: 18px;">{{ userInfo.nickname }}</div>
<div class="q-mt-md text-small text-info">{{ userInfo.company }}</div>
<div class="q-mt-lg row items-center">
<el-button @click="loginOutHandler">退出登录</el-button>
<el-button class="q-ml-md" type="primary" @click="forwardWorkspaceHandler">进入工作台</el-button>
</div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { useUserStore } from '@/store/user';
import { ElMessage, FormInstance, FormRules } from 'element-plus';
import { reactive, ref } from 'vue';
interface RuleForm {
account: string
password: string
}
const model = ref<{account:string,password:string,tid:string}>({
account:'',
password:'',
tid:''
})
const loginFormRef = ref<FormInstance>()
const loading = ref(false)
const user = useUserStore()
const token = user.getUserToken??''
const userInfo = user.getUser
const multipleUsers = ref<any[]>([])
const rules = reactive<FormRules<RuleForm>>({
account: [
{ required: true, message: '请输入你的账号', trigger: 'blur' },
{ min: 6, message: '请输入正确的账号', trigger: 'blur' },
],
password: [
{ required: true, message: '请输入你的密码', trigger: 'blur' },
{ min: 6,max:20, message: '请输入正确的密码', trigger: 'blur' },
]
})
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return
loading.value=true
await formEl.validate(async (valid) => {
if (valid) {
await userLoginHandler()
}
})
loading.value=false
}
const loginByCompany = async ()=>{
if(model.value.tid=='') ElMessage.error({message:'请选择需要登录的组织'})
else {
loading.value=true
await userLoginHandler()
loading.value=false
}
}
const userLoginHandler = async ()=>{
const result = await user.setUserPasswordLoginAsync(model.value.account,model.value.password,model.value.tid)
if(result.status=='SUCCESS'){
ElMessage.success({message:'登录成功'})
location.href='/';
}else if(result.status=='CHOSEN' && Array.isArray(result.data)){
multipleUsers.value = result.data
}else{
ElMessage.error({message:'账号或密码错误'})
}
}
const forwardWorkspaceHandler = ()=>{
location.href='/';
}
const clearCompanyChoosenHandler = ()=>{
multipleUsers.value=[]
model.value.tid=''
}
const loginOutHandler = ()=>{
user.setUserLoginOut()
}
</script>
<style>
.login-box{
background-color: #f8f7fc;
background-image: url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1711704450000_818.jpeg');
background-position: center;
background-attachment: fixed;
background-size: cover;
width: 100vw;
height: 100vh;
position: relative;
}
.login-box .logo{
height: 30px;
width: auto;
top: 80px;
left: 80px;
position: absolute;
z-index: 2;
}
.login-box .foot-box{
position: absolute;
bottom: 30px;
}
.login-box .login-form{
width:600px;
background-color: #FFF;
border-radius: 15px;
}
.login-box .wel{
text-align: center;
}
.login-box .wel img{
width: 300px;
height: auto;
}
.login-box .login-type{
border:1px solid #dbdfe9;
padding:10px 20px;
border-radius: 6px;
text-align: center;
cursor: pointer;
font-size: 14px;
}
.login-box .login-type:hover{
background-color: #f8f7fc;
color:var(--el-color-primary);
}
.login-box .login-type img{
width:16px;
}
</style>
\ No newline at end of file
......@@ -65,7 +65,7 @@
<div class="arrow-btn"><IconDown class="arrow" /></div>
</Popover>
</div> -->
<div class="group-menu-item" v-if="userInfo.IsEditTripTemplate==1&&model==1">
<div class="group-menu-item" v-if="userInfo.isTemplate==1&&model==1">
<div class="menu-item" v-tooltip="'导入PSD'" @click="UploadPsdHandler">
<IconUpload class="icon" />
</div>
......@@ -74,10 +74,10 @@
<IconDownload class="icon" />
</div>
<el-button type="primary"
v-if="(userInfo.IsEditTripTemplate==1||ConfigId>0)&&model!=2"
v-if="(userInfo.isTemplate==1||ConfigId>0)&&model!=2"
size="small" :loading="datas.loading"
@click="setTemplate" style="color: #ffff;margin-left: 10px;">
<template v-if="userInfo.IsEditTripTemplate==1&&model==1">
<template v-if="userInfo.isTemplate==1&&model==1">
保存{{searchData.TemplateType!=2?'模板':'广告'}}
</template>
<template v-if="ConfigId>0&&model!=2">
......@@ -150,7 +150,7 @@ import useScreening from '@/hooks/useScreening'
import useImport from '@/hooks/useImport'
import useSlideHandler from '@/hooks/useSlideHandler'
import type { DialogForExportTypes } from '@/types/export'
import { userStore } from "@/store/user";
import { useUserStore } from "@/store/user";
import { useScreenStore } from "@/store/screen";
import ConfigService from '@/services/ConfigService'
import { injectKeyDataSource, injectKeyTemplate } from '@/types/injectKey'
......@@ -197,7 +197,7 @@ const titleValue = ref('')
const { setNewDatasList } = useEditor()
const autoSave = inject("SellTravelSave") as any
const { userInfo } = storeToRefs(userStore())
const { userInfo } = storeToRefs(useUserStore())
const datas = reactive({
DataSource:{},
......@@ -490,7 +490,7 @@ const setTemplate = async (type) =>{
if(dataLoading.value){
dataLoadingStore.setDataLoading(0)
}
if(model.value==1&&userInfo.value.IsEditTripTemplate==1){
if(model.value==1&&userInfo.value.isTemplate==1){
arr.forEach(x=>{
if(searchData.value.TemplateType==2) {
x.pageType = 0
......@@ -547,7 +547,7 @@ const setTemplate = async (type) =>{
}
queryObj.value.TempData = JSON.stringify(arr)
if(model.value==1&&userInfo.value.IsEditTripTemplate==1){
if(model.value==1&&userInfo.value.isTemplate==1){
datas.loading = true
await SetTripTemplateSlide()
}else if(ConfigId.value&&model.value!=2){
......
......@@ -22,7 +22,7 @@
import { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'
import { deleteDiscardedDB } from '@/utils/database'
import { isPC, query } from '@/utils/common'
import { userStore } from '@/store/user'
import { useUserStore } from '@/store/user'
import { injectKeyTemplate } from '@/types/injectKey'
import ConfigService from '@/services/ConfigService'
import { domainManager } from '@/utils/domainManager'
......@@ -58,7 +58,7 @@
const slidesStore = useSlidesStore()
const { databaseId } = storeToRefs(mainStore)
const { screening, market, model, ConfigId } = storeToRefs(useScreenStore())
const { userInfo } = storeToRefs(userStore())
const { userInfo } = storeToRefs(useUserStore())
const { SalesEditor, SalesTripId } = storeToRefs(useSellTemplateStore())
const { slides } = storeToRefs(useSlidesStore())
const { enterScreeningFromStart } = storeToRefs(useScreenStore())
......@@ -84,7 +84,7 @@
ConfigIdStore.setConfigId(ConfigId)
modelStore.setModel(model)
try {
if(param.uid) await userStore().setUserLoginAsync(userId)
if(param.uid) await useUserStore().setUserAutoLoginAsync(userId)
if(ConfigId>0&&model!=2) await GetTripConfig(ConfigId)
} catch (error) {}
if(userId>0)isFinish.value=true
......
......@@ -16,7 +16,7 @@
<el-col :span="6" style="text-align: right;">
<el-dropdown split-button
size="small" type="primary"
v-if="userInfo.IsEditTripTemplate==1 && model==1"
v-if="userInfo.isTemplate==1 && model==1"
@click="addTemplate(1)">
<span style="font-size: 23px;margin-right: 10px;"> + </span> <span>创建</span>
<template #dropdown>
......@@ -196,7 +196,7 @@
<el-button class="MarketIndexButtom" type="primary"
@click="goToTemplate(item)">选择该{{item.TemplateType!=2?'模版':'广告'}}</el-button>
</div>
<div class="q-mt-lg" v-if="userInfo.IsEditTripTemplate==1 && model==1">
<div class="q-mt-lg" v-if="userInfo.isTemplate==1 && model==1">
<el-button class="MarketIndexButtom" type="primary"
@click="deleteTemplate(item)">删除</el-button>
</div>
......@@ -239,7 +239,7 @@
import { reactive, ref, inject, watch, onMounted} from "vue";
import LineService from '@/services/LineService'
import ConfigService from '@/services/ConfigService'
import { userStore } from "@/store/user";
import { useUserStore } from "@/store/user";
import { useSellTemplateStore } from '@/store'
import { useScreenStore } from "@/store/screen";
import { storeToRefs } from "pinia";
......@@ -250,7 +250,7 @@ import { useRouter } from "vue-router";
const {
userInfo
} = storeToRefs(userStore())
} = storeToRefs(useUserStore())
const router = useRouter();
const lines = ref([] as Array < any > ) //线路
const countriesOther = ref(['日本', '韩国', '老挝', '法国', '意大利'] as Array < any > ) //国家
......
......@@ -6,8 +6,9 @@
<SearchDocument @open-position="openFilePosition"></SearchDocument>
</div>
<div class="user">
<el-avatar :size="30" :src="userInfo.Icon" v-if="userInfo.Icon"/>
<el-avatar :size="30" v-else> {{ userInfo.EmName[0] }} </el-avatar>
<!-- <el-avatar :size="30" :src="userInfo.photo" v-if="userInfo.photo"/>
<el-avatar :size="30" v-else> {{ userInfo.nickname[0] }} </el-avatar> -->
<UserCard></UserCard>
</div>
</div>
<div class="col row">
......@@ -87,22 +88,23 @@
</div>
</template>
<script setup lang="ts">
import { userStore } from '@/store/user';
import { useUserStore } from '@/store/user';
import { storeToRefs } from 'pinia';
import { ref,reactive,provide,inject } from 'vue';
import { ref } from 'vue';
import SearchDocument from './components/SearchDocument.vue'
import BrowsingHistory from './BrowsingHistory.vue'
import StarTarget from './StarTarget.vue'
import ShareList from './Share.vue';
import journeyAds from './journeyAds.vue'
import RecycleBin from './RecycleBin.vue'
import UserCard from '@/components/User/UserCard.vue'
import { Plus,ArrowDown,Clock,Star,Share,Picture,Management,Delete } from '@element-plus/icons-vue';
import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store'
import { useRouter } from 'vue-router';
import { openNewBlank } from '@/utils/common';
const router = useRouter();
const {userInfo} = storeToRefs(userStore())
const {userInfo} = storeToRefs(useUserStore())
console.log(userInfo.value)
const currentMenu = ref<number>(0)
const position = ref<{FileId:number,FileType:1|2,Position:{FileId:number,FileName:string}[]}|null>(null)
......
......@@ -51,7 +51,7 @@
import { inject, ref } from 'vue';
import { Search } from '@element-plus/icons-vue';
import ConfigService from '@/services/ConfigService';
import { userStore } from '@/store/user';
import { useUserStore } from '@/store/user';
import { storeToRefs } from 'pinia';
import {formatDateTimeToRead} from '@/utils/common'
import { useScreenStore, useSellTemplateStore, useSlidesStore } from '@/store';
......@@ -62,7 +62,7 @@ const emit = defineEmits<{
(event: 'open-position',playload:any): void
}>()
const {userInfo} = storeToRefs(userStore())
const {userInfo} = storeToRefs(useUserStore())
const searchKey = ref<string>('')
const isSearchFocus = ref(false)
const searchType = ref<string>('0')
......@@ -73,7 +73,7 @@ const searchData = ref({} as any);
searchData.value = inject(injectKeyTemplate);
const showRightContent = ref(0)
const loggedder = ref('')
loggedder.value = userInfo.value.emName
loggedder.value = userInfo.value.nickname
const searchHandler = ()=>{
if(loading.value) return
......
......@@ -180,7 +180,7 @@
emit('success')}"></TreeFileRecover>
</template>
<script setup lang="ts">
import { userStore } from '@/store/user';
import { useUserStore } from '@/store/user';
import { storeToRefs } from 'pinia';
import { ApiResult } from '@/configs/axios';
import OrgService from '@/services/OrgService';
......@@ -257,8 +257,8 @@ import { useRouter } from 'vue-router';
});
const SalesEditorStore = useSellTemplateStore();
const marketStore = useScreenStore();
const { userInfo } = storeToRefs(userStore())
datas.loggedder = userInfo.value.emName
const { userInfo } = storeToRefs(useUserStore())
datas.loggedder = userInfo.value.nickname
const router = useRouter()
const dataList = ref([] as Array<any>);
dataList.value = props.list
......@@ -609,8 +609,8 @@ import { useRouter } from 'vue-router';
else DeleteFile(row);
} else {
if (row.FileType) {
const cp =userInfo.value.emName!=row.CreateName&&row.IsView==0?0:1
const ep =userInfo.value.emName!=row.CreateName&&row.IsDownLoad==0?0:1
const cp =userInfo.value.nickname!=row.CreateName&&row.IsView==0?0:1
const ep =userInfo.value.nickname!=row.CreateName&&row.IsDownLoad==0?0:1
//@TODO:返回字段中缺少CreateBy,
const url = createSaleEditorLink(row.FileId,row.TempId,row.FileType,row.ParentFileId,ep,cp)
router.push({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment