From 9b8baee48d0bdd95ea157be10e7c24711c511dc1 Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期五, 19 九月 2025 09:26:03 +0800 Subject: [PATCH] 最新版本541200007 --- admin/src/components/common/CommonHeader.vue | 243 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 186 insertions(+), 57 deletions(-) diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue index 5afc768..2e95744 100644 --- a/admin/src/components/common/CommonHeader.vue +++ b/admin/src/components/common/CommonHeader.vue @@ -2,13 +2,19 @@ <div class="common-header"> <div class="header"> <div class="logo"> - <div>{{ title }}</div> + <div class="title">{{ title }}</div> <div class="list"> - <div class="item">鏈嶅姟涓績</div> - <div class="item">瀹夐槻涓績</div> - <div class="item">娑堥槻涓績</div> - <div class="item">鑳界涓績</div> - <div class="item">椹鹃┒鑸�</div> + <div class="item active"> + <div>鏈嶅姟涓績</div> + <div class="linellae"></div> + </div> + <div class="item" v-for="(item,index) in topMenuList.list" :key="item.id" @click="getHeaderNav(item)" :index="index">{{item.label}}</div> +<!-- <div class="item" @click="getHeaderNav('0')">瀹夐槻涓績</div> + <div class="item" @click="getHeaderNav('1')">娑堟帶涓績</div> + <div class="item" @click="getHeaderNav('2')">鑳界涓績</div> + <div class="item" @click="getHeaderNav('7')">鍚庡嫟涓績</div> + <div class="item" @click="getHeaderNav('3')">椹鹃┒鑸�</div>--> + <!-- <div class="item" @click="handleTest">娴嬭瘯</div> --> </div> <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> --> </div> @@ -16,61 +22,35 @@ <el-dropdown v-if="isLogined" trigger="click"> <span class="el-dropdown-link"> <!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> --> - <img - v-if="userInfo != null" - style="width: 30px !important" - src="@/assets/avatar/man.png" - alt="" - />{{ userInfo | displayName + <img v-if="userInfo != null" style="width: 30px !important" src="@/assets/avatar/man.png" alt="" />{{ + userInfo | displayName }}<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu slot="dropdown"> - <el-dropdown-item @click.native="changePwd" - >淇敼瀵嗙爜</el-dropdown-item - > + <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item> <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </div> </div> <!-- 淇敼瀵嗙爜 --> - <GlobalAlertWindow - title="淇敼瀵嗙爜" - :visible.sync="visible.changePwd" - @confirm="confirmChangePwd" - @close="visible.changePwd = false" - > - <el-form - :model="changePwdData.form" - ref="changePwdDataForm" - :rules="changePwdData.rules" - > + <GlobalAlertWindow title="淇敼瀵嗙爜" :visible.sync="visible.changePwd" + :showClose="userInfo && (!userInfo.needChangePwd || userInfo.needChangePwd == '0')" + :showCancel="userInfo && (!userInfo.needChangePwd || userInfo.needChangePwd == '0')" @confirm="confirmChangePwd" + @close="visible.changePwd = false"> + <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules"> <el-form-item label="鍘熷瀵嗙爜" prop="oldPwd" required> - <el-input - v-model="changePwdData.form.oldPwd" - type="password" - placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�" - maxlength="30" - show-password - ></el-input> + <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�" maxlength="30" + show-password></el-input> </el-form-item> <el-form-item label="鏂板瘑鐮�" prop="newPwd" required> - <el-input - v-model="changePwdData.form.newPwd" - type="password" - placeholder="璇疯緭鍏ユ柊瀵嗙爜" - maxlength="30" - show-password - ></el-input> + <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛屽瘑鐮侀渶鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ" + maxlength="20" show-password></el-input> </el-form-item> + <!-- <div style="font-size: 12px;color:#999999">瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ</div> --> <el-form-item label="纭鏂板瘑鐮�" prop="confirmPwd" required> - <el-input - v-model="changePwdData.form.confirmPwd" - type="password" - placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜" - maxlength="30" - show-password - ></el-input> + <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜" maxlength="20" + show-password></el-input> </el-form-item> </el-form> </GlobalAlertWindow> @@ -81,6 +61,7 @@ import { mapState, mapMutations } from 'vuex' import GlobalAlertWindow from './GlobalAlertWindow' import { logout, updatePwd } from '@/api/system/common' +import { getAppHeaderNav } from '@/api' export default { name: 'CommonHeader', components: { GlobalAlertWindow }, @@ -90,9 +71,10 @@ default: true } }, - data() { + data () { return { title: process.env.VUE_APP_TITLE, + headerNavData: {}, visible: { // 淇敼瀵嗙爜 changePwd: false @@ -114,7 +96,8 @@ { required: true, message: '璇疯緭鍏ュ師濮嬪瘑鐮�' } ], newPwd: [ - { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜' } + { required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' }, + { validator: this.validatePassword, trigger: 'blur' } ], confirmPwd: [ { required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' } @@ -124,14 +107,23 @@ } }, computed: { - ...mapState(['menuData', 'userInfo']), + ...mapState(['menuData', 'userInfo', 'topMenuList']) // title () { // return this.$route.meta.title // } }, + created () { + + }, + mounted () { + // needChangePwd 0 : 榛樿瀵嗙爜闇�瑕佷慨鏀癸紝1 涓嶉渶瑕� + if (this.userInfo && (!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0')) { + this.visible.changePwd = true + } + }, filters: { // 灞曠ず鍚嶇О - displayName(userInfo) { + displayName (userInfo) { if (userInfo == null) { return '' } @@ -144,14 +136,108 @@ methods: { ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo']), // 淇敼瀵嗙爜 - changePwd() { + changePwd () { this.visible.changePwd = true this.$nextTick(() => { this.$refs.changePwdDataForm.resetFields() }) }, + validatePassword (rule, value, callback) { + if (!value) { + callback(new Error('璇疯緭鍏ュ瘑鐮�')) + } else { + const lengthValid = /^.{6,20}$/.test(value) + const hasLetter = /[a-zA-Z]/.test(value) + const hasNumber = /[0-9]/.test(value) + const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value) + + const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length + + if (!lengthValid) { + callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�')) + } else if (typesCount < 2) { + callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ')) + } else { + callback() // 楠岃瘉閫氳繃 + } + } + }, + getHeaderNav (item) { + if (item.url && item.url === 'goHKAF' && item.params != null) { + this.getHKAFHeaderNav(item.params) + } else if (item.url && item.url.indexOf('http') === 0) { + window.open(item.url, '_blank') + } + }, + getHKAFHeaderNav (type) { + getAppHeaderNav(type).then(res => { + window.open(res, '_blank') + }) + }, + handleTest () { + const myWindow = window.open('https://10.50.250.253/portal/ui/index?componentId=dfe&componentMenuId=process_apply') + setTimeout(() => { + const params = { + componentId: 'dfe', + componentMenuId: 'process_apply', + callback: { + method: 'dealTlncMsg', + argument: { + msgId: '98c256b9-aaff-11ef-8347-fa163ee2c57c', + moduleId: 'dfeFlowTodoModuleId', + msgTitle: '璇峰強鏃跺鐞�13856591439鍙戣捣鐨勮鍋囩敵璇�', + msgStatus: '0', + msgCreateTime: '浠婂ぉ 15:33', + msgCreateTimeIso: '2024-11-25T15:33:42.000+08:00', + serverTime: 1732531014591, + menuCode: 'process_apply', + msgStatusStr: '寰呭鐞�', + comId: 'dfe', + userId: '13856591439', + extendNoShow: '{"processInstanceId":"98a57fe0-aaff-11ef-8347-fa163ee2c57c","processId":"process_dabcfdd39f1b6f46d36a9f4ff6ce1080","param":{"sourceType":"todo","modelCode":"tb_leave_dfe_for_dfe_runtime","processNodeId":"UserTask_dde7d83377343a2d5fa1f60c23b023ef","taskId":"98c256b9-aaff-11ef-8347-fa163ee2c57c"},"process.param.appId":"32ca8770-6f85-11ec-b5a3-991864da52a6","appId":"32ca8770-6f85-11ec-b5a3-991864da52a6","name":"璇峰亣鐢宠","taskId":"98c256b9-aaff-11ef-8347-fa163ee2c57c","taskNodeId":"UserTask_dde7d83377343a2d5fa1f60c23b023ef","url":"/dfe-form/process/tlnc/apply"}', + targetComId: 'dfe', + moduleName: '娴佺▼寰呭姙', + tid: '99cad778-aaff-11ef-9dbf-ff08ba71965c', + msgEndTime: null, + msgEndTimeIso: '', + picUrl: '', + extendJson: '{"key1":"璇峰強鏃跺鐞嗛檲楦块鍙戣捣鐨勮鍋囩敵璇�"}', + extendParam: null, + extendCascade: null, + createUser: '13856591439', + webCascadeUrl: null, + h5CascadeUrl: null, + cascadeTodoOpenType: null, + cascadeSourceConfigId: null, + h5Url: '/h5/pages/form-page/form-page?returnPath=-1&appId=32ca8770-6f85-11ec-b5a3-991864da52a6&taskId=98c256b9-aaff-11ef-8347-fa163ee2c57c&processNodeId=UserTask_dde7d83377343a2d5fa1f60c23b023ef&modelCode=tb_leave_dfe_for_dfe_runtime&type=flowHandle&component=form-apply&_sn=true', + segmentId: 'dfe-form', + lastUsers: '闄堥缚椋�', + currentUsers: '闄堥缚椋�', + todoTypeCode: 'dfe@@tlnc_placeholder_tlnc@@dfeFlowTodoModuleId', + currentUserIds: '13856591439', + lastUserIds: '13856591439', + msgDesc: null, + widgetUrl: null, + detailType: null, + widgetWidth: null, + widgetHeight: null, + userIdList: null, + statusName: null, + arriveTime: null, + stayTime: null, + todoType: null, + cascadePort: null, + openMode: null + } + }, + msgType: 'tlnc' + } + const argus = JSON.stringify(params) + myWindow.postMessage('{"method":"goToApp","argument":' + argus + '}', '*') + }, 8000) + }, // 纭畾淇敼瀵嗙爜 - confirmChangePwd() { + confirmChangePwd () { if (this.isWorking.changePwd) { return } @@ -172,10 +258,11 @@ }) .then(() => { this.$tip.apiSuccess('淇敼鎴愬姛') + this.$store.commit('setUserInfo', { needChangePwd: 1 }) this.visible.changePwd = false }) .catch(e => { - // this.$tip.apiFailed(e) + // this.$tip.apiFailed(e) }) .finally(() => { this.isWorking.changePwd = false @@ -183,7 +270,7 @@ }) }, // 閫�鍑虹櫥褰� - logout() { + logout () { logout() .then(() => { this.clearUserInfo() @@ -201,9 +288,40 @@ <style scoped lang="scss"> @import "@/assets/style/variables.scss"; + .common-header { background-color: #2080f7; } + +.list { + flex: 1; + display: flex; + align-items: center; + margin-left: 60px; + + .item { + margin-right: 40px; + font-size: 16px; + font-weight: 400; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + height: 40px; + cursor: pointer; + + .linellae { + width: 64px; + height: 2px; + background: #FFFFFF; + } + } + + .active { + font-weight: 500; + } +} + .header { overflow: hidden; // background: #fff; @@ -214,7 +332,7 @@ .logo { /* background: url("../../assets/images/top_ic_chilun@2x.png") no-repeat; */ box-sizing: border-box; - min-width: 280px; + min-width: 360px; height: 56px; padding: 10px 30px; // flex-shrink: 0; @@ -224,6 +342,11 @@ color: #fff; display: flex; align-items: center; + + .title { + width: 240px; + } + // display: inline; .title-en { font-size: 11px; @@ -231,18 +354,22 @@ color: rgb(202, 214, 238); } } + .user { - width: 712px; + width: 212px; box-sizing: border-box; height: 56px; padding-right: 25px; background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat; flex-shrink: 0; text-align: right; + cursor: pointer; + .el-dropdown { top: 2px; color: #fff; } + img { width: 32px; position: relative; @@ -251,9 +378,11 @@ } } } + // 涓嬫媺鑿滃崟妗� .el-dropdown-menu { width: 140px; + .el-dropdown-menu__item:hover { background: #e3edfb; color: $primary-color; -- Gitblit v1.9.3