风风雨雨说民生

资深股民分享投资经验,强调自我研究的重要性,并对民生银行的投资价值进行分析。提醒投资者要具备正确心态,谨慎入市。

股友提示:如果是你没有信心的票,你买它做什么呢?你要买一只票不是光靠问就能问出什么来。自己去找资料,自己评估,自己掌握它的走势。

如果要来炒股就要有学习的心态,认真负责的心,不要太随意,这个跟你做人有很大的关系,如果你到现在还没有想明白,自己为什么会亏钱?还没有想着对它负责,请离开股市,要不很容易让你破产。

——博友nowcs先生摘自天涯

=============================================================

老股民提示:因为我所研究的大多数是我所持有的,所以,请你注意我或有可能的看好偏见。请你自己为自己的人民币负责,你应该明白,你的人民币不是桔子皮,而是你省吃俭用的血汗钱。假如你盲目买入我在研究的股票,那么,赚钱了你就自个儿乐吧,亏钱了你就自个儿负责吧,谢谢!

请新来的朋友浪费些时间看看以前的文章及留言(估计需要3-6个月)。

股市有风险!一定要用“闲钱”投资!千万不要借钱!也不要用影响正常生活的钱!如股价下跌会影响你的生活,会影响你的心情,那么千万不要模仿我满仓。

=============================================================

特别提示:考虑到银行股内在的经营风险,考虑到过去的大蓝筹深发展曾经资不抵债,考虑到我在这里不会长久,请不懂银行业经营风险的朋友不要随意买入银行股作为长期投资!因为到时候万一有什么问题你也不会卖出的,而我,哪怕到时候兴业等等在5元以下也会坚决卖出。

=============================================================

请新来的朋友务必认真阅读、理解我的卷首提示!

 

民生银行,是我看好的银行股,目前的大盘的腥风血雨、小非的肆虐下弱不禁风,摇摇欲坠,真可谓是惨不忍睹。没办法,证券市场就是那么的残酷,残酷的证券市场,人吃人的市场啊!朋友们!

我有时候真的不明白人究竟是什么动物,为什么可以看见我看好民生就可以奋不顾身的买进,买进以后,在下跌以后又是那么的楚楚动人或恶语相向。但是,为什么就没看见我一遍又一遍说大多数人是不适合这个市场的话语?为什么就不听我一遍又一遍告诫各位认真的思考一下自己是否适合这个市场?

我从去年的年中开始就一遍又一遍说:这是牛尾巴行情,不适合大多数人参与,我一遍又一遍说大多数人是不适合参与炒股票的,我一遍又一遍的说证券市场是人吃人的市场,我一遍又一遍的说大家该重新审视自己的能力,我一遍又一遍的说为了你的幸福为了你的家庭幸福炒股要谨慎,我一遍又一遍的说90%的人是会输钱的。

但是,为什么你们就可以视而不见呢?为什么??

好股票需要时间,需要时间来赚钱,市场的涨涨跌跌是没人能控制能预测的。在大幅度下跌以后问我怎么办?

我又能怎么说?我让你今天卖出,明天上涨以后怎么办?我让你长期投资,明天继续下跌怎么办?对于你的心态来说,我是没办法能说什么的。

真的,我不想伤害你的自尊心,我不忍心在此时此刻伤害你的自尊心,所以我不能说什么,因为,我同情你,我与你同在!

 

假如真的非要让我说什么,对于持有股票在下跌时惶惶不可终日的人,那么,我建议,你卖出,全部卖出,从此离开这个市场,远远的离开,永远的离开。就算是碰上了我这个骗子,一次性的骗子!好吗?

因为,虽然你今天的卖出会亏损,但相对于未来更多的亏损,今天的亏损是并不多的,未来的亏损将让你更吃苦。你相信吗?

我在证券市场赚的钱,就是千百万炒股票老百姓的血汗钱!你能明白吗?

 

今天的民生收盘价,民生的投资价值,民生的内在价值,我在此完全可以那样说:民生银行,价值低估!只要你持有,输的仅仅是时间或未来不可预测的下跌,但赚钱是不容怀疑的。

那么,今天的民生银行,相对于民生历史上什么时期的价格呢?就相等于2005年初的价格,那时候的价格在6元左右,2004年的每股净利润是0.39元,市盈率15.38倍;2005年在十送二以后的每股净利润是0.37元,动态市盈率为13.51倍。

目前民生银行的市盈率为21.63倍,高于05年初的市盈率。假如今年的民生银行能完成120个亿,那么每股净利润为0.638元,今天收盘价7.28元,动态市盈率为11.42倍,低于05年初的动态市盈率。这样吧,我们就保守一点计算,就算是民生今年完成净利润100个亿吧,那么每股净利润为0.531元,动态市盈率为13.70倍。与05年初的动态市盈率相当。

那么,05年初那时候买进的民生银行现在怎么样呢?我就计算给你看看结果吧,我就不考虑现金分红,就计算收购的部分。就花6万元买进1万股计算。

2004年分红十送二,持有12000股。

2005年分红十送四,持有16800股。

股权分置105.02416,持有25241股。

2006年分红十送1.90,持有30037股。

2007年分红十送三,持有39048股。

今天的收盘价7.28元,今天的市值为284269元,利润率373.78%,年均利润率47.53%

当然,不可否认,民生银行除了今年的增长率会大大的超过05年的增长率以外,未来几年的成长性可能会低于以前的成长性。但是,相对于前四年的年均利润47%来说,哪怕是打对折,那么还有24%的年均利润呢。不知道你能否满意?

如此恐慌而非理性,难道我国的世纪未日到了?

如此,你还怕吗?

我真不知道,也不明白,这恐惧从何而来?!

面对着非理性的市场,面对着非理性的参与者,面对着人们的恐惧,我还能说什么呢?

 

这样吧,今天我开放留言,假如你骂我一下能减轻你的苦恼,那么你就骂我吧,我能承受。我能做到的,就仅仅是这一点了。

 

<template> <div> <div style="margin: 20px 0"> <el-button @click="showWin = !showWin" size="mini" type="primary" plain> {{ showWin ? '关闭' : '打开' }}会话列表 </el-button> <el-button @click="showRightBox = !showRightBox" size="mini" type="danger" plain> {{ showRightBox ? '关闭' : '打开' }}右侧组件 </el-button> <el-button @click="Rightopen = !Rightopen" size="mini" type="success" plain> 切换:{{ Rightopen ? '公告通知' : '快速回复' }}-组件 </el-button> </div> <JwChat-index ref="jwChat" v-model="inputMsg" :taleList="taleList" :scrollType="scrollType" :toolConfig="tool" :placeholder="placeholder" :config="config" :winBarConfig="winBarConfig" :showRightBox="showRightBox" @enter="bindEnter" @clickTalk="talkEvent" > <JwChat-talk v-if="Rightopen" class="rightSlot" :Talelist="talk" :config="quickConfig" @event="bindTalk" /> <JwChat-rightbox v-else class="rightSlot" :config="rightConfig" @click="rightClick" /> <template slot="tools"> <div style="width: 20rem; text-align: right" @click="toolEvent(12)"> <JwChat-icon type="icon-lishi" title="自定义" /> </div> </template> </JwChat-index> </div> </template> <script> export default { data() { return { scrollType: 'scroll', // scroll noroll 俩种类型 scroll (滚动到最新消息) noroll (停留当期位置) placeholder: '', inputMsg: '', taleList: [], tool: { callback: this.toolEvent, }, //当前聊天窗口 config: { img: '../image/cover.png', name: 'JwChat', dept: '最简单、最便捷11111', callback: this.bindCover, historyConfig: { show: true, tip: '加载更多提示框,可以直接使用组件的1234', callback: this.bindLoadHistory, }, //快捷回复 quickList: [ { text: '这里是jwchat,您想了解什么问题。', id: 3 }, { text: 'jwchat是最好的聊天组件', id: 4 }, { text: '谁将烟焚散,散了纵横的牵绊;听弦断,断那千痴缠。', id: 5 }, { text: '长夏逝去。山野间的初秋悄然涉足。', id: 6 }, { text: '江南风骨,天水成碧,天教心愿与身违。', id: 7 }, { text: '总在不经意的年生。回首彼岸。纵然发现光景绵长。', id: 8 }, { text: '外面的烟花奋力的燃着,屋里的人激情的着情话', id: 10 }, { text: '假如你是云,我就是雨,一生相伴,风风雨雨;', id: 11 }, { text: '即使泪水在眼中打转,我依旧可以笑的很美,这是你学不来的坚强。', id: 12, }, { text: ' 因为不知来生来世会不会遇到你,所以今生今世我会加倍爱你。', id: 13, }, ], maxlength: 30, }, //公告信息栏 rightConfig: { listTip: '人员列表-在线', notice: '【公告】这是一款高度自由的聊天组件,基于AVue、Vue、Element-ui开发。点个赞再走吧 ', filterTip: '好友过滤', list: [ { name: 'JwChat1', img: '../image/cover.png', id: 1, }, { id: 2, name: 'JwChat', img: 'image/three.jpeg', }, { id: 3, name: 'JwChat', img: 'image/three.jpeg', }, { id: 4, name: '留恋人间不羡仙', img: 'image/one.jpeg', }, { name: '只盼流星不盼雨', img: 'image/two.jpeg', }, ], }, //快捷回复 talk: ['快捷回复1', '快捷回复2', '快捷回复3', '快捷回复4', '快捷回复5', '快捷回复6'], quickConfig: { nav: ['快捷回复', '超级回复'], showAdd: true, maxlength: 200, showHeader: true, showDeleteBtn: true, }, //右侧快捷栏开关 showRightBox: false, showWin: false, //左侧快捷栏 winBarConfig: { active: 'win00', width: '180px', listHeight: '60px', list: [ { id: 'win00', img: '../image/two.jpeg', name: 'JwChat', dept: '最简单、最便捷', readNum: 1, }, { id: 'win01', img: '@/assets/wx/cover.png', name: '阳光明媚爱万物', dept: '沙拉黑油', readNum: 12, }, { id: 'win02', img: 'image/two.jpeg', name: '只盼流星不盼雨', dept: '最后的话', readNum: 12, }, { id: 'win03', img: 'image/one.jpeg', name: '留恋人间不羡仙', dept: '这里可以放万物', readNum: 0, }, { id: 'win04', img: 'image/three.jpeg', name: '阳光明媚爱万物', dept: '官方客服', }, { id: 'win05', img: 'image/three.jpeg', name: '测试', dept: '官方客服', }, ], callback: this.bindWinBar, }, } }, methods: { /** * @description: 点击加载更多的回调函数 * @param {*} * @return {*} */ async bindLoadHistory() { const history = new Array(3).fill().map((i, j) => { return { date: '2020/05/20 23:19:07', text: { text: j + new Date() }, mine: false, name: 'JwChat', img: 'image/three.jpeg', } }) let list = history.concat(this.taleList) this.taleList = list console.log('加载历史', list, history) // 加载完成后通知组件关闭加载动画 this.config.historyConfig.tip = '加载完成' this.$nextTick(() => { this.$refs.jwChat.finishPullDown() }) }, bindEnter(e) { console.log(e) const msg = this.inputMsg if (!msg) return const msgObj = { date: '2020/05/20 23:19:07', text: { text: msg }, mine: true, name: 'JwChat', img: '../image/three.jpeg', } this.list.push(msgObj) }, toolEvent(type, obj) { console.log('tools', type, obj) }, talkEvent(play) { console.log(play) }, rightClick(type) { console.log('rigth', type) }, bindTalk(play) { console.log('talk', play) const { key, value } = play if (key === 'navIndex') this.talk = [1, 1, 1, 1, 1, 1, 1, 1].reduce((p) => { p.push('随机修改颜色 #' + Math.random().toString(16).substr(-6)) return p }, []) if (key === 'select') { this.inputMsg = value this.bindEnter() } if (key === 'delIndex') { this.talk.splice(value, 1) } }, }, mounted() { const img = 'https://www.baidu.com/img/flexible/logo/pc/result.png' const list = [ { date: '2020/04/25 21:19:07', text: { text: '起床不' }, mine: false, name: '留恋人间不羡仙', img: '../image/one.jpeg', }, { date: '2020/04/25 21:19:07', text: { text: "<audio data-src='https://www.w3school.com.cn/i/horse.mp3'/>" }, mine: false, name: '只盼流星不盼雨', img: '../image/two.jpeg', }, { date: '2020/04/25 21:19:07', text: { text: "<img data-src='" + img + "'/>" }, mine: false, name: '只盼流星不盼雨', img: '../image/two.jpeg', }, { date: '2020/04/25 21:19:07', text: { text: "<img data-src='../image/three.jpeg'/>" }, mine: false, name: '只盼流星不盼雨', img: '../image/two.jpeg', }, { date: '2020/04/16 21:19:07', text: { text: "<video data-src='https://www.w3school.com.cn/i/movie.mp4' controls='controls' />" }, mine: false, name: 'JwChat', img: '../image/three.jpeg', }, { date: '2021/03/02 13:14:21', mine: false, name: '留恋人间不羡仙', img: '../image/one.jpeg', text: { system: { title: '在接入人工前,智能助手将为您首次应答。', subtitle: '猜您想问:', content: [ { id: `system1`, text: '组件如何使用', }, { id: `system2`, text: '组件参数在哪里查看', }, { id: 'system', text: '我可不可把组件用在商业', }, ], }, }, }, { date: '2020/04/25 21:19:07', text: { text: "<i class='el-icon-document-checked' style='font-size:2rem;'/>", subLink: { text: 'a.txt', prop: { underline: false, }, }, }, mine: false, name: '留恋人间不羡仙', img: '../image/one.jpeg', }, ] this.taleList = list }, } </script> 修改以上代码,思路如下 1.添加import { listMessage, addMessage } from '@/api/mod/nkimxx' 可以通过listMessage获取fromId为消息发ID,toId为消息接ID,sendTime为消息发时间,content为消息内容 addMessage 为消息发代码 2.然后添加import { getUserProfile, listUser } from '@/api/system/user' listUser 获取用户信息 通过userID=fromId、userID=toId,提取用户的头像avatar=以上代码的img,用户姓名nickName=以上代码的name,部门dept.deptName=以上代码的dept getUserProfile,可以获取当前登录用户信息
08-30
<think> 我们将在原有代码基础上进行修改,主要步骤如下: 1. 导入所需的API函数: - listMessage: 用于获取消息列表 - addMessage: 用于发消息 - listUser: 用于获取用户列表(用于根据用户ID获取用户信息) - getUserProfile: 用于获取当前登录用户信息 2. 在data中,我们需要添加一些状态来管理: - 当前聊天窗口的对方用户ID(toId)和当前登录用户ID(当前用户即为消息发方fromId) - 可能需要一个用户信息映射表(userMap),用于根据用户ID快速获取用户信息(头像、昵称、部门) 3. 修改taleList的初始化,不再使用本地模拟数据,而是通过API获取消息列表,并转换为组件所需的格式。 4. 修改bindEnter方法,当用户发消息时,调用addMessage接口将消息发到服务器,并更新本地消息列表(为了实时显示,我们可以先在前端添加一条临时消息,等发成功后再更新为服务器返回的消息,或者直接使用本地消息并标记为发中,然后根据发结果更新状态。但为了简化,我们假设发成功后再更新到列表) 5. 在mounted中,我们需要: a. 获取当前登录用户信息(getUserProfile)并存储,以便在发消息时使用。 b. 根据当前聊天的对方用户ID(这里可能需要从路由或状态管理中获取,示例中我们假设为固定值)和当前用户ID,调用listMessage获取消息记录,并转换为taleList需要的格式。 c. 同时,我们需要获取相关用户(当前用户和对方用户)的信息,用于展示头像和名称。 6. 实现一个方法,用于将API返回的消息转换为组件需要的格式。每条消息需要包含: - date: 消息时间(sendTime) - text: 消息内容(content),这里可能需要根据消息类型(文本、图片等)进行解析,但示例中都是文本,所以我们可以直接使用{ text: content } - mine: 是否是自己发的消息(通过比较fromId和当前登录用户ID) - name: 发者的昵称(从userMap中获取) - img: 发者的头像(从userMap中获取) 7. 在加载历史消息(bindLoadHistory)时,同样需要调用listMessage(带分页参数)来获取更早的消息。 8. 注意:原有代码中的一些模拟数据(如用户列表、快捷回复等)可以根据需要保留或修改。 由于修改内容较多,我们逐步调整代码。 步骤: 1. 导入API 2. 在data中添加必要的数据:currentUser(当前登录用户)、toUser(对方用户,这里假设只有一个聊天对象,可能是从路由参数获取,这里我们先写死一个用户ID,实际项目需要动态获取)、userMap(用户信息映射) 3. 修改mounted,在其中获取当前用户信息,然后获取消息列表,并获取相关用户信息(当前用户和对方用户)存入userMap。 4. 修改bindEnter,改为调用addMessage发消息,并在发成功后,将返回的消息添加到taleList(注意转换格式)。 5. 修改bindLoadHistory,实现加载更多消息(分页查询)。 注意:由于原有代码中使用了JwChat组件,我们尽量保持其原有结构,只修改数据获取和发部分。 考虑到代码量,我们只展示关键修改部分。 由于实际API返回的数据结构未知,这里我们假设API返回的数据格式,并做相应转换。如果实际数据结构不同,请调整转换逻辑。 修改后的代码: </think> 我将根据您的需求修改代码,实现API集成和用户信息绑定。以下是修改后的完整代码: ```vue <template> <div> <!-- 按钮控制区域保持不变 --> <div style="margin: 20px 0"> <!-- ...原有按钮代码... --> </div> <JwChat-index ref="jwChat" v-model="inputMsg" :taleList="taleList" :scrollType="scrollType" :toolConfig="tool" :placeholder="placeholder" :config="config" :winBarConfig="winBarConfig" :showRightBox="showRightBox" @enter="bindEnter" @clickTalk="talkEvent" > <!-- 右侧插槽保持不变 --> <template slot="tools"> <!-- ...原有工具代码... --> </template> </JwChat-index> </div> </template> <script> // 1. 添加API导入 import { listMessage, addMessage } from '@/api/mod/nkimxx' import { getUserProfile, listUser } from '@/api/system/user' export default { data() { return { // ...原有数据属性保持不变... // 添加当前用户和用户映射 currentUser: null, userMap: new Map(), // 存储用户ID到用户信息的映射 } }, methods: { // ...原有方法保持不变... // 2. 修改消息发方法 async bindEnter(e) { const msg = this.inputMsg if (!msg || !this.currentUser) return try { // 构建发消息对象 const messageData = { fromId: this.currentUser.userId, toId: this.config.currentToId, // 需要添加当前聊天对象ID content: msg, sendTime: new Date().toISOString() } // 调用API发消息 const response = await addMessage(messageData) // 添加到本地消息列表 const msgObj = this.formatMessage({ ...messageData, id: response.data.id // 假设返回消息ID }, true) this.taleList.push(msgObj) this.inputMsg = '' // 清空输入框 } catch (error) { console.error('消息发失败:', error) this.$message.error('消息发失败') } }, // 3. 添加消息格式化方法 formatMessage(msg, isMine = false) { return { id: msg.id, date: new Date(msg.sendTime).toLocaleString(), text: { text: msg.content }, mine: isMine, name: this.getUserName(msg.fromId), img: this.getUserAvatar(msg.fromId), dept: this.getUserDept(msg.fromId) } }, // 4. 添加用户信息获取方法 getUserName(userId) { return this.userMap.get(userId)?.nickName || '未知用户' }, getUserAvatar(userId) { return this.userMap.get(userId)?.avatar || 'default-avatar.png' }, getUserDept(userId) { return this.userMap.get(userId)?.dept?.deptName || '未知部门' }, // 5. 添加加载消息方法 async loadMessages() { try { if (!this.currentUser || !this.config.currentToId) return const params = { fromId: this.currentUser.userId, toId: this.config.currentToId, pageNum: 1, pageSize: 20 } const response = await listMessage(params) this.taleList = response.rows.map(msg => this.formatMessage(msg, msg.fromId === this.currentUser.userId) ) } catch (error) { console.error('加载消息失败:', error) this.$message.error('加载消息失败') } }, // 6. 修改历史加载方法 async bindLoadHistory() { try { // 实现分页加载 const params = { fromId: this.currentUser.userId, toId: this.config.currentToId, pageNum: this.currentPage + 1, pageSize: 10 } const response = await listMessage(params) if (response.rows.length === 0) { this.config.historyConfig.tip = '没有更多消息了' return } const newMessages = response.rows.map(msg => this.formatMessage(msg, msg.fromId === this.currentUser.userId) ) this.taleList = [...newMessages, ...this.taleList] this.currentPage += 1 } catch (error) { console.error('加载历史消息失败:', error) } finally { this.$nextTick(() => { this.$refs.jwChat.finishPullDown() }) } }, // 7. 添加加载用户信息方法 async loadUsers(userIds) { try { if (!userIds.length) return const response = await listUser({ userIds }) response.rows.forEach(user => { this.userMap.set(user.userId, { nickName: user.nickName, avatar: user.avatar, dept: { deptName: user.dept?.deptName } }) }) } catch (error) { console.error('加载用户信息失败:', error) } } }, async mounted() { try { // 8. 获取当前登录用户 const userRes = await getUserProfile() this.currentUser = userRes.data this.userMap.set(this.currentUser.userId, { nickName: this.currentUser.nickName, avatar: this.currentUser.avatar, dept: { deptName: this.currentUser.dept?.deptName } }) // 9. 初始化配置中的当前聊天对象 // 假设默认第一个用户为聊天对象 if (this.winBarConfig.list.length > 0) { this.config.currentToId = this.winBarConfig.list[0].id this.config.name = this.winBarConfig.list[0].name this.config.img = this.winBarConfig.list[0].img } // 10. 加载相关用户信息 const userIds = [ this.currentUser.userId, this.config.currentToId, ...this.winBarConfig.list.map(u => u.id), ...this.rightConfig.list.map(u => u.id) ] await this.loadUsers([...new Set(userIds)]) // 11. 加载初始消息 await this.loadMessages() // 12. 更新窗口列表中的用户信息 this.winBarConfig.list = this.winBarConfig.list.map(user => ({ ...user, name: this.getUserName(user.id), img: this.getUserAvatar(user.id), dept: this.getUserDept(user.id) })) // 13. 更新右侧列表中的用户信息 this.rightConfig.list = this.rightConfig.list.map(user => ({ ...user, name: this.getUserName(user.id), img: this.getUserAvatar(user.id) })) } catch (error) { console.error('初始化失败:', error) } }, // 14. 添加当前页码跟踪 data() { return { currentPage: 1, // ...其他原有数据... } } } </script> ``` ### 代码修改明: 1. **API集成**: - 导入 `listMessage` 和 `addMessage` 用于消息获取和发 - 导入 `getUserProfile` 和 `listUser` 用于用户信息管理 2. **用户信息管理**: - 添加 `userMap` 存储用户ID到用户信息的映射 - 实现 `getUserName`, `getUserAvatar`, `getUserDept` 方法获取用户信息 - 添加 `loadUsers` 方法批量加载用户信息 3. **消息处理**: - 重构 `bindEnter` 方法使用 `addMessage` API 发消息 - 添加 `formatMessage` 方法将API数据转换为组件所需格式 - 实现 `loadMessages` 方法加载初始消息列表 4. **历史消息加载**: - 修改 `bindLoadHistory` 实现分页加载历史消息 - 添加 `currentPage` 跟踪当前页码 5. **初始化流程**: - 在 `mounted` 中获取当前用户信息 - 加载所有相关用户信息到 `userMap` - 初始化加载消息记录 - 更新窗口列表和右侧列表的用户信息 6. **数据结构适配**: - 将 API 返回的用户信息映射到组件所需的字段: - `nickName` → `name` - `avatar` → `img` - `dept.deptName` → `dept` ### 使用注意事项: 1. 需要在 `config` 对象中添加 `currentToId` 属性跟踪当前聊天对象 2. 需要添加错误处理和加载状态提示 3. 分页加载需要后端API支持分页参数 4. 用户ID字段需要根据实际API响应调整(可能是 `userId` 或 `id`) 5. 头像字段可能需要处理相对路径和完整URL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值