el-dialog 只获取el-table中的最后一行
<el-table-column fixed="left" align="center" label="操作" width="100" v-if="!isPreview">
          <template slot-scope="scope">
               {{scope.$index+1}} 
            <el-tooltip class="item" effect="dark" content="编辑" placement="top">
              <el-button type="text" class="el-icon-edit" @click.self="editDialogVisible = true">
                <el-dialog title="编辑" :visible.sync="editDialogVisible" :modal-append-to-body='false' center>
                     {{scope.$index+1}} 
                  <el-form :model="scope.row" label-suffix=":" label-width="100px">
                    <el-form-item prop="planName" label=款项>
                      <el-input v-model="scope.row.planName" size="small" :disabled="isPreview"></el-input>
                    </el-form-item>
                  </el-form>
                </el-dialog>
              </el-button>
            </el-tooltip>
            <el-tooltip class="item" effect="dark" content="删除" placement="top">
              <el-button type="text" class="el-icon-delete" @click.self="delDialogVisible = true">
                <el-dialog title="删除" :visible.sync="delDialogVisible" center :modal-append-to-body='false'>
                </el-dialog>
              </el-button>
            </el-tooltip>
          </template>
        </el-table-column>

图片说明
第一个位置是获取到1的 但是点进去编辑就获取了最后一行 dialog里index就变成5了

图片说明
求大佬解答,哪里有问题????

后续

我按照大佬的方法修改了click的处理

 @click.self="showEditDialog(scope.row)

结果是我想要的 ,但还是 有个问题,我选中第一个,显示dialog后 遮罩层下面的提示自动跑到最后 一个去了,如图,求解

图片说明

1个回答

因为你所有的el-dialog 的值都变成可见了,你一次五个重叠都显示了,所以看起来好像是弹出了第五个,其实五个都弹出了

https://codepen.io/bettermo/pen/MxOMpM?editors=1010

附上修改后的代码

sinat_26046027
luffy! 回复下一个喵呜: 噢噢噢噢 感谢
10 个月之前 回复
baidu_33552969
下一个喵呜 回复luffy! : 本来就不应该在button里面放奇怪的东西,你要是一列30个数据就会有30个dialog,不合理
10 个月之前 回复
sinat_26046027
luffy! 我找到问题了 我把dialog提出来 不写在 button 下就可以了,不晓得具体的原因
10 个月之前 回复
sinat_26046027
luffy! 感觉,但是还有个问题,能麻烦帮我看下嘛?我已经重新编辑了
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于el-table无法渲染的问题,求大佬指教
* 从ElementUI的官网新建了VUE组件,使用这段代码 ``` <template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="150"> </el-table-column> <el-table-column label="配送信息"> <el-table-column prop="name" label="姓名" width="120"> </el-table-column> <el-table-column label="地址"> <el-table-column prop="province" label="省份" width="120"> </el-table-column> <el-table-column prop="city" label="市区" width="120"> </el-table-column> <el-table-column prop="address" label="地址" width="300"> </el-table-column> <el-table-column prop="zip" label="邮编" width="120"> </el-table-column> </el-table-column> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [{ date: '2016-05-03', name: '王小虎', province: '上海', city: '普陀区', address: '上海市普陀区金沙江路 1518 弄', zip: 200333 }] } } } </script> ``` * * * * * * * * * * * * * * * * * * router里的index文件 ``` import Vue from 'vue' import Router from 'vue-router' import NewFile from '@/components/NewFile' Vue.use(Router) export default new Router({ routes: [ { path: '/NewFile', components: { newfile: NewFile, } } ] }) ``` src下的App.vue和Main.js文件 ``` <template> <div class="container" id="vueApp"> <router-view name="newfile"></router-view> </div> </template> <script> export default { } </script> <style> </style> ``` ``` import Vue from 'vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import Table from 'element-ui'; import App from './App' import router from './router' import store from './store' import 'babel-polyfill' Vue.config.productionTip = false Vue.use(ElementUI); Vue.use(Table); /* eslint-disable no-new */ new Vue({ el: '#app', render: h => h(App), router, store, components: { App }, template: '<App/>' }) ``` package.json里的依赖: ``` "dependencies": { "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "element-ui": "^2.13.0", "express": "^4.17.1", "mysql": "^2.17.1", "vue": "^2.5.2", "vue-axios": "^2.1.5", "vue-router": "^3.0.1", "vuex": "^3.1.2" } ``` 单独新建一个VUE项目可以运行,但是在原有这个项目运行无法渲染页面,并弹出以下问题,不知道有无相关 ![图片说明](https://img-ask.csdn.net/upload/202001/06/1578300263_899632.png) ![图片说明](https://img-ask.csdn.net/upload/202001/06/1578299380_894423.png) 另外elementUI的其他组件,比如el-form和el-dialog,做登录页时也是单独项目可渲染,但是在这个项目里无法渲染,但是也没有相关报错,求大佬指教
利用Props将表单中写的数据传入到一个组件中的数组中,点击提交没有反应,在线等,求救救孩子。
求大佬们帮忙看看,是哪儿出问题了 ``` <template> <div> <el-form ref="form" :model="form" label-width="80px" class="form-item-require-lable"> <el-form-item label="任务类型"> <el-select v-model="form.kind" placeholder="请选择您要新建的任务类型"> <el-option label="学习任务" value="xuexi"></el-option> <el-option label="工作任务" value="gongzuo"></el-option> <el-option label="生活任务" value="shenghuo"></el-option> </el-select> </el-form-item> <el-form-item label="任务主题"> <el-input type="textarea" v-model="form.name"></el-input> </el-form-item> <el-form-item label="任务时间"> <el-col :span="11"> <el-date-picker type="datetime" placeholder="选择任务开始日期时间" v-model="form.beginTime" style="width: 100%;"></el-date-picker> </el-col> <el-col class="line" :span="2">-</el-col> <el-col :span="11"> <el-date-picker type="datetime" placeholder="选择任务结束日期时间" v-model="form.endTime" style="width: 100%;"></el-date-picker> </el-col> </el-form-item> <el-form-item label="任务内容"> <el-input type="textarea" v-model="form.content"></el-input> </el-form-item> <el-form-item label="任务标记"> <el-radio-group v-model="form.biaoji"> <el-radio label="重要任务" name="type"></el-radio> <el-radio label="普通任务" name="type"></el-radio> </el-radio-group> </el-form-item> <el-form-item > <el-button type="primary" @click="resetForm(form)">取消</el-button> <el-button type="success" @onclick="submitForm(form)">提交</el-button> </el-form-item> </el-form> <el-dialog> </el-dialog> </div> </template> <script> import Sousuo from './Sousuo.vue' export default { name: 'Xinjian', components:{Sousuo}, props: ['value'], //xinjian_value data() { return { form: { //form要与前面的定义一样 kind: '', name: '', beginTime: '', endTime: '', content: '', biaoji: '', } } }, methods: { SubmitForm(form) { /*this.$api.SubmitForm(data =>{ window.location.reload(); },*/ //this.props.close(); this.xinjian0=false; var data={ kind:form.kind, name:form.name, beginTime:form.beginTime, endTime:form.endTime, content:form.content, biaoji:form.biaoji, } this.tableData.push(data) this.$emit('update',tableData); console.log('submit!'); }, } } </script> <style scoped> .form-item-require-label{ margin: center, } </style> ``` ``` <template> <div> <el-table :data="tabledata" stripe style="width: 100%;"> <el-table-column prop="kind" label="任务类型" width="160" style="height:30px" > </el-table-column> <el-table-column prop="name" label="任务标题" width="160" style="height:30px"> </el-table-column> <el-table-column prop="beginTime" label="起始时间" width="160" style="height:30px"> </el-table-column> <el-table-column prop="endTime" label="结束时间" width="160" style="height:30px"> </el-table-column> <el-table-column prop="content" label="任务内容" width="160" style="height:30px"> </el-table-column> <el-table-column prop="biaoji" label="任务标记" width="160" style="height:30px"> </el-table-column> <el-table-column prop="zhuangtai" label="任务状态" width="160" style="height:30px"> <template slot-scope="scope"> <el-progress :text-inside="false" :stroke-width="8" :percentage="scope.row.percentage" :color="green"> </el-progress> </template> <!--el-progress :percentage="percentage" status="exception"></el-progress--> </el-table-column> <el-table-column label="操作" style="height:30px"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index,scope.row)">编辑</el-button> <el-button @click="handleDelete(scope.$index, tabledata)" size="small">移除 </el-button> <!--el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> <el-button size="mini" type="danger" @click.native.prevent="handleDelete(scope.$index, tableData)">删除</el-button><scope.row--> </template> </el-table-column> </el-table> <!--渲染v-for--> <el-dialog title="编辑任务" :visible.sync="bianji0" :append-to-body="true"> <Bianjiform :bianjiformData.sync="tabledata" v-bind="tabledata"></Bianjiform> </el-dialog> <el-dialog title="新建任务" :visible.sync="xinjian0" :append-to-body="true"> <Xinjian :xinjian_value="value"></Xinjian> </el-dialog> </div> </template> <script> import Bianjiform from './Bianjiform.vue' import Xinjian from './Xinjian.vue' export default { components: {Bianjiform,Xinjian}, name: 'Taskform', props:['message'], data() { return { tabledata: [{ kind: '学习任务', name: 'vue', beginTime: '2016-05-02', endTime: '2016-05-03', content: '学习vue', biaoji: '重要任务', percentage: 50, }, { kind: '学习任务', name: 'vue', beginTime: '2016-05-02', endTime: '2016-05-03', content: '学习vue', biaoji: '重要任务', percentage: 2, }, { kind: '学习任务', name: 'vue', beginTime: '2016-05-02', endTime: '2016-05-03', content: '学习vue', biaoji: '重要任务', zhuangtai: '完成', }, { kind: '学习任务', name: 'vue', beginTime: '2016-05-02', endTime: '2016-05-03', content: '学习vue', biaoji: '重要任务', percentage: 50, },{ kind: '学习任务', name: 'vue', beginTime: '2016-05-02', endTime: '2016-05-03', content: '学习vue', biaoji: '重要任务', percentage: 100, },{ kind: '学习任务', name: 'vue', beginTime: '2016-05-02', endTime: '2016-05-03', content: '学习vue', biaoji: '重要任务', percentage: 90, }], form: { kind: '', name: '', beginTime: '', endTime: '', content: '', biaoji: '', }, bianji0: false, //xinjian0: false, } }, methods: { handleEdit(index,row){ this.form={ kind:row.kind, name:row.name, beginTime:row.beginTime, endTime:row.endTime, content:row.content, biaoji:row.biaoji, } this.bianji0=true; //this.xinjian0=true; }, handleDelete(index, row) { //console.log(index, row); this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.$message({ type: 'success', message: '删除成功!', }); row.splice(index,1); }).catch(() => { this.$message({ type: 'info', message: '已取消删除' }); }); }, } } </script> <style scoped> </style> ```
vue 选中input中搜索按钮弹框中数据如何绑定到input上
![图片说明](https://img-ask.csdn.net/upload/201903/29/1553836847_447320.png)![图片说明](https://img-ask.csdn.net/upload/201903/29/1553836858_133883.png) ``` <el-form-item> 产品代码 <el-input title="产品搜索帮助" size="mini" placeholder="请输入产品代码" ></el-input> <el-button icon="el-icon-search" @click="dialogFormVisible2 = true" circle ></el-button> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-new" @click="getList">查询</el-button> </el-form-item> ``` ``` <el-dialog title="整车主文件搜索帮助" :visible.sync="dialogFormVisible2"> <el-form > <el-form-item> 产品代码<el-input id="carId"></el-input> <!-- 车型代码<el-input v-model="input"></el-input> --> 最大限制数量<el-input type="number" id="carNum" ></el-input> </el-form-item> <el-form-item prop="busType"> <el-radio v-model="radio" label="1">模糊查询</el-radio> </el-form-item> <el-form-item> <el-button type="primary" @click="getList2" >查询</el-button> </el-form-item> <div class="table"> <!-- 产品代码 --> <el-table height="350" :data="tableData2"> <el-table-column prop="VProductCode" label="产品代码"></el-table-column> <el-table-column prop="VProductName" label="产品名称"></el-table-column> </el-table> </div> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="dialogFormVisible2 = false">确 定</el-button> <el-button @click="dialogFormVisible2 = false">取 消</el-button> </div> </el-dialog> ```
vue工程中$emit()无法调用
子组件代码 ``` <template> <div> <!--查询表单--> <el-form :model="params"> 标签: <el-input v-model="params.tag" style="width:160px"></el-input> 原始名称: <el-input v-model="params.fileName" style="width:160px"></el-input> 处理状态: <el-select v-model="params.processStatus" placeholder="请选择处理状态"> <el-option v-for="item in processStatusList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> <br/> <el-button type="primary" v-on:click="query" size="small">查询</el-button> <router-link class="mui-tab-item" :to="{path:'/upload'}"> <el-button type="primary" size="small" v-if="ischoose != true">上传文件</el-button> </router-link> </el-form> <!--列表--> <el-table :data="list" highlight-current-row v-loading="listLoading" style="width: 100%;"> <el-table-column type="index" width="30"> </el-table-column> <el-table-column prop="fileOriginalName" label="原始文件名称" width="220"> </el-table-column> <el-table-column prop="fileName" label="文件名称" width="220"> </el-table-column> <el-table-column prop="fileUrl" label="访问url" width="260"> </el-table-column> <el-table-column prop="tag" label="标签" width="100"> </el-table-column> <el-table-column prop="fileSize" label="文件大小" width="120"> </el-table-column> <el-table-column prop="processStatus" label="处理状态" width="100" :formatter="formatProcessStatus"> </el-table-column> <el-table-column prop="uploadTime" label="创建时间" width="110" :formatter="formatCreatetime"> </el-table-column> <el-table-column label="开始处理" width="100" v-if="ischoose == true"> <template slot-scope="scope"> <el-button size="small" type="primary" plain @click="process(scope.row.fileId)">开始处理 </el-button> </template> </el-table-column> <el-table-column label="选择" width="80" v-if="ischoose != true"> <template slot-scope="scope"> <el-button size="small" type="primary" plain @click="choose(scope.row)">选择</el-button> </template> </el-table-column> </el-table> <!--分页--> <el-col :span="24" class="toolbar"> <el-pagination background layout="prev, pager, next" @current-change="changePage" :page-size="this.params.size" :total="total" :current-page="this.params.page" style="float:right;"> </el-pagination> </el-col> </div> </template> <script> import * as mediaApi from '../api/media' import utilApi from '@/common/utils'; import * as courseApi from '../api/course' export default{ props: ['ischoose'], data(){ return { params:{ page:1,//页码 size:10,//每页显示个数 tag:'',//标签 fileName:'',//文件名称 processStatus:''//处理状态 }, listLoading:false, list:[], total:0, processStatusList:[] } }, methods:{ formatCreatetime(row, column){ var createTime = new Date(row.uploadTime); if (createTime) { return utilApi.formatDate(createTime, 'yyyy-MM-dd hh:mm:ss'); } }, formatProcessStatus(row,column){ var processStatus = row.processStatus; if (processStatus) { if(processStatus == '303001'){ return "处理中"; }else if(processStatus == '303002'){ return "处理成功"; }else if(processStatus == '303003'){ return "处理失败"; }else if(processStatus == '303004'){ return "无需处理"; } } }, choose(mediaFile){ if(mediaFile.processStatus !='303002' && mediaFile.processStatus !='303004'){ this.$message.error('该文件未处理,不允许选择'); return ; } if(!mediaFile.fileUrl){ this.$message.error('该文件的访问url为空,不允许选择'); return ; } /*let teachplanMedia ={} teachplanMedia.mediaId =mediaFile.fileId; teachplanMedia.mediaFileOriginalName =mediaFile.fileOriginalName; teachplanMedia.mediaUrl =mediaFile.fileUrl; teachplanMedia.courseId =this.courseid; //课程计划 teachplanMedia.teachplanId=this.teachplanId courseApi.savemedia(teachplanMedia).then(res=>{ if(res.success){ this.$message.success("选择视频成功") //查询课程计划 this.findTeachplan() }else{ this.$message.error(res.message) } })*/ //调用父组件的choosemedia方法 this.$emit('choosemedia',mediaFile.fileId,mediaFile.fileOriginalName,mediaFile.fileUrl); }, changePage(page){ this.params.page = page; this.query() }, process (id) { console.log(id) mediaApi.media_process(id).then((res)=>{ console.log(res) if(res.success){ this.$message.success('开始处理,请稍后查看处理结果'); }else{ this.$message.error('操作失败,请刷新页面重试'); } }) }, query(){ mediaApi.media_list(this.params.page,this.params.size,this.params).then((res)=>{ console.log(res) this.total = res.queryResult.total this.list = res.queryResult.list }) } }, created(){ //默认第一页 this.params.page = Number.parseInt(this.$route.query.page||1); }, mounted() { //默认查询页面 this.query() //初始化处理状态 this.processStatusList = [ { id:'', name:'全部' }, { id:'303001', name:'处理中' }, { id:'303002', name:'处理成功' }, { id:'303003', name:'处理失败' }, { id:'303004', name:'无需处理' } ] } } </script> <style> </style> ``` 父组件代码 ``` <template> <div> <el-button type="primary" @click="teachplayFormVisible = true">添加课程计划</el-button> <el-tree :data="teachplanList" :props="defaultProps" node-key="id" default-expand-all :expand-on-click-node="false" :render-content="renderContent"> </el-tree> <el-dialog title="添加课程计划" :visible.sync="teachplayFormVisible" > <el-form ref="teachplanForm" :model="teachplanActive" label-width="140px" style="width:600px;" :rules="teachplanRules" > <el-form-item label="上级结点" > <el-select v-model="teachplanActive.parentid" placeholder="不填表示根结点"> <el-option v-for="item in teachplanList" :key="item.id" :label="item.pname" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item label="章节/课时名称" prop="pname"> <el-input v-model="teachplanActive.pname" auto-complete="off"></el-input> </el-form-item> <el-form-item label="课程类型" > <el-radio-group v-model="teachplanActive.ptype"> <el-radio class="radio" label='1'>视频</el-radio> <el-radio class="radio" label='2'>文档</el-radio> </el-radio-group> </el-form-item> <el-form-item label="学习时长(分钟) 请输入数字" > <el-input type="number" v-model="teachplanActive.timelength" auto-complete="off" ></el-input> </el-form-item> <el-form-item label="排序字段" > <el-input v-model="teachplanActive.orderby" auto-complete="off" ></el-input> </el-form-item> <el-form-item label="章节/课时介绍" prop="description"> <el-input type="textarea" v-model="teachplanActive.description" ></el-input> </el-form-item> <el-form-item label="状态" prop="status"> <el-radio-group v-model="teachplanActive.status" > <el-radio class="radio" label="0" >未发布</el-radio> <el-radio class="radio" label='1'>已发布</el-radio> </el-radio-group> </el-form-item> <el-form-item > <el-button type="primary" v-on:click="addTeachplan">提交</el-button> <el-button type="primary" v-on:click="resetForm">重置</el-button> </el-form-item> </el-form> </el-dialog> <el-dialog title="选择媒资文件" :visible.sync="mediaFormVisible"> <media-list v-bind:ischoose="true" @choosemedia="choosemedia"></media-list> </el-dialog> </div> </template> <script> let id = 1000; import * as courseApi from '../../api/course'; import utilApi from '../../../../common/utils'; import * as systemApi from '../../../../base/api/system'; import mediaList from '@/module/media/page/media_list.vue'; export default { components:{ mediaList }, data() { return { mediaFormVisible:false, teachplayFormVisible:false,//控制添加窗口是否显示 teachplanList : [{ id: 1, pname: '一级 1', children: [{ id: 4, pname: '二级 1-1', children: [{ id: 9, pname: '三级 1-1-1' }, { id: 10, pname: '三级 1-1-2' }] }] }], defaultProps:{ children: 'children', label: 'pname' }, teachplanRules: { pname: [ {required: true, message: '请输入课程计划名称', trigger: 'blur'} ], status: [ {required: true, message: '请选择状态', trigger: 'blur'} ] }, teachplanActive:{}, teachplanId:'' } }, methods: { //选择视频,打开窗口 choosevideo(data){ //得到当前的课程计划 this.teachplanId = data.id // alert(this.teachplanId) this.mediaFormVisible = true;//打开窗口 }, //保存选择的视频 choosemedia(mediaId, fileOriginalName, mediaUrl){ alert(111) //保存视频到课程计划表中 let teachplanMedia ={} teachplanMedia.mediaId =mediaId; teachplanMedia.mediaFileOriginalName =fileOriginalName; teachplanMedia.mediaUrl =mediaUrl; teachplanMedia.courseId =this.courseid; //课程计划 teachplanMedia.teachplanId=this.teachplanId courseApi.savemedia(teachplanMedia).then(res=>{ if(res.success){ this.$message.success("选择视频成功") //查询课程计划 this.findTeachplan() }else{ this.$message.error(res.message) } }) }, //提交课程计划 addTeachplan(){ //校验表单 this.$refs.teachplanForm.validate((valid) => { if (valid) { //调用api方法 //将课程id设置到teachplanActive this.teachplanActive.courseid = this.courseid courseApi.addTeachplan(this.teachplanActive).then(res=>{ if(res.success){ this.$message.success("添加成功") //刷新树 this.findTeachplan() }else{ this.$message.error(res.message) } }) } }) }, //重置表单 resetForm(){ this.teachplanActive = {} }, append(data) { const newChild = { id: id++, label: 'testtest', children: [] }; if (!data.children) { this.$set(data, 'children', []); } data.children.push(newChild); }, edit(data){ //alert(data.id); }, remove(node, data) { const parent = node.parent; const children = parent.data.children || parent.data; const index = children.findIndex(d => d.id === data.id); children.splice(index, 1); }, renderContent(h, { node, data, store }) { return ( <span style="flex: 1; display: flex; align-items: center; justify-content: space-between; font-size: 14px; padding-right: 8px;"> <span> <span>{node.label}</span> </span> <span> <el-button style="font-size: 12px;" type="text" on-click={ () => this.choosevideo(data) }>{data.mediaFileOriginalName}&nbsp;&nbsp;&nbsp;&nbsp; 选择视频</el-button> <el-button style="font-size: 12px;" type="text" on-click={ () => this.edit(data) }>修改</el-button> <el-button style="font-size: 12px;" type="text" on-click={ () => this.remove(node, data) }>删除</el-button> </span> </span>); }, findTeachplan(){ this.teachplanList = [] //查询课程计划 courseApi.findTeachplanList(this.courseid).then(res=>{ if(res && res.children){ this.teachplanList = res.children; } }) } }, mounted(){ //课程id this.courseid = this.$route.params.courseid; //查询课程计划 this.findTeachplan() } } </script> <style> </style> ``` 在子组件想用这个方法调用父组件中方法,但无法调用,控制台上也没提示.后来发现,在webstorm中按着Ctrl键追踪不到.鼠标放上去提示Unresolved function or method $emit()
vue 修改的时候报undefind错误
<template> <el-container v-loading="loadingData" style="height: 100%" class="app-container calendar-list-container"> <el-header height="62px" class="filter-container"> <el-row> <el-col :span="21"> <el-form :inline="true" :model="formSearch" class="demo-form-inline"> <el-form-item> <el-input v-model="formSearch.value" placeholder="请输入水道名称" clearable></el-input> </el-form-item> <el-form-item> <el-select v-model="formSearch.type" filterable clearable placeholder="请选择水道类型"> <el-option v-for="item in dataType" :key="item.value" :label="item.text" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item> <el-select v-model="formSearch.official" placeholder="请选择水道性质" filterable clearable> <el-option key="true" label="正式水道" value="true"></el-option> <el-option key="false" label="测试水道" value="false"></el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" @click="loadMain" size="small" icon="el-icon-search" round>搜索</el-button> </el-form-item> </el-form> </el-col> <el-col :span="3" style="text-align: right"> <el-button @click="handleAdd" v-show="visibleBtnAdd" type="success" size="small" icon="el-icon-plus" round>新增水道</el-button> </el-col> </el-row> </el-header> <el-main ref="layoutMain" class="table-container"> <el-table :data="dataMain" :height="heightMain" stripe highlight-current-row class="el-table-border"> <el-table-column prop="name" label="水道名称"></el-table-column> <el-table-column prop="swzName" label="水位站"></el-table-column> <el-table-column prop="typeName" label="水道类型" width="100"></el-table-column> <el-table-column prop="isOfficial" label="水道性质" align="center" width="100" :formatter="formatOfficial"></el-table-column> <el-table-column prop="startName" label="水道起点" width="100"></el-table-column> <el-table-column prop="endName" label="水道讫点" width="100"></el-table-column> <el-table-column label="里程" width="100"> <template slot-scope="scope">{{ Math.abs(scope.row.endMileage - scope.row.startMileage) + '公里' }}</template> </el-table-column> <el-table-column prop="remark" label="水道概况" width="200"></el-table-column> <el-table-column label="操作" align="center" fixed="right" width="150"> <template slot-scope="scope"> <el-button @click="handleEdit(scope.row)" v-show="visibleBtnEdit" type="primary" size="mini" round plain>编辑</el-button> <el-button @click="handleDelete(scope.row)" v-show="visibleBtnDelete" type="danger" size="mini" round plain>删除</el-button> </template> </el-table-column> </el-table> </el-main> <el-footer> <el-pagination @size-change="handlePageSizeChange" @current-change="handlePageCurrentChange" :current-page="dataPage" :page-sizes="[10, 20, 50, 100]" :page-size="dataSize" :total="dataTotal" layout="total, sizes, prev, pager, next, jumper"> </el-pagination> </el-footer> <el-dialog :title="dataRecordTitle[actionDialogRecord]" :visible.sync="visibleDialogRecord" :close-on-click-modal="false" :before-close="handleClose" > <el-form class="large-space" ref="formRecord" :model="formRecord" :rules="ruleRecord" label-position="left" label-width="90px"> <el-row :gutter="24"> <el-col :span="4"><strong>图片信息</strong></el-col> <el-col :span="20"> <el-upload :action="imageUpload" :headers="headers" :with-credentials="true" list-type="picture-card" :file-list="formRecord.waterInfomationPicDTO" :on-success="handleAvatarSuccess" :on-preview="handlePictureCardPreview" :before-upload="beforeAvatarUpload" :on-remove="handleRemove" style="float: left; margin-bottom: 10px"> <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible" size="tiny"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </el-col> </el-row> <el-form-item label="水道名称" prop="name"> <el-input v-model="formRecord.name"></el-input> </el-form-item> <el-row :gutter="20"> <el-col :span="12"><el-form-item label="水道类型" prop="type"> <el-select v-model="formRecord.type" filterable placeholder="请选择水道类型" style="width: 100%"> <el-option v-for="item in dataType" :key="item.value" :label="item.text" :value="item.value"> </el-option> </el-select> </el-form-item></el-col> <el-col :span="12"><el-form-item label="水道性质" prop="official"> <el-switch v-model="formRecord.official" :disabled.sync="disabledSelOfficial" active-text="正式水道" inactive-text="测试水道" ></el-switch> </el-form-item></el-col> </el-row> <!-- <el-form-item label="位置" prop="waterway"> <map-box v-loading="loadingWaterway" @mapReady="handleMapReady" class="map-box"></map-box> </el-form-item> --> <el-row :gutter="20"> <el-col :span="12"><el-form-item label="水道起点" prop="start"> <el-select ref="selStart" v-model="formRecord.start" filterable placeholder="请选择水道起点" style="width: 100%"> <el-option v-for="item in dataNode" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item></el-col> <el-col :span="12"><el-form-item label="水道讫点" prop="end"> <el-select ref="selEnd" v-model="formRecord.end" filterable placeholder="请选择水道讫点" style="width: 100%"> <el-option v-for="item in dataNode" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item></el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"><el-form-item label="水位站" prop="swzId"> <el-select ref="selStation" v-model="formRecord.swzId" filterable placeholder="请选择关联水位站" style="width: 100%"> <el-option v-for="item in dataWaterStation" :key="item[0]" :label="item[1]" :value="item[0]"> </el-option> </el-select> </el-form-item></el-col> </el-row> <el-form-item label="水道概况" prop="remark"> <el-input type="textarea" v-model="formRecord.remark"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="handleCancel">取消</el-button> <el-button @click="handleSave" type="primary">保存</el-button> </div> </el-dialog> </el-container> </template> <style rel="stylesheet/scss" lang="scss" scoped> .map-box { height: 200px; overflow: auto; border: 1px solid #ebeef5; } </style> <script> import $ from 'jquery' import waves from '@/directive/waves/index.js' import MapBox from '@/components/mapBox.vue' import { addGraphicsLayer, RAddListGraphic, RegClick } from '@/filters/RMapUitl.js' import { queryWaterwayList, queryWaterwayPointList, waterInfomationList } from '@/api/base/waterway' import { debounce, getTableHeight } from '@/utils' import { queryNodeList } from '@/api/base/node' import { queryChannelTypeList, queryChannelFullList, queryChannelAdd, queryChannelEdit, queryChannelDelete } from '@/api/base/channel' import { fetchSelectData, getCoordinate, addWaterStation, getWaterStation, updateWaterStation, getUpload, deletePicByid, fetchCjjmDetail } from '@/api/water/waterStation.js' import {getToken} from '@/utils/auth' // 验权 export default { name: 'channel_page', directives: { waves }, components: { MapBox }, data() { return { visibleBtnAdd: true, visibleBtnEdit: true, visibleBtnDelete: true, formSearch: { type: undefined, value: '', official: undefined }, formRecord: { id: null, name: '', type: null, official: false, waterway: null, startId: null, endId: null, start: null, end: null, swzId: null, remark: '', waterInfomationPicDTO: [] }, imageUpload: getUpload(), headers: {'X-Token': getToken()}, heightMain: getTableHeight(10), dataWaterway: [], dataWaterStation: [], dataType: [], dataNode: [], dataMain: [], dataTotal: 0, dataPage: 1, dataSize: 10, loadingData: false, loadingWaterway: false, visibleDialogRecord: false, disabledSelOfficial: false, actionDialogRecord: '', fullscreenLoading: false, dialogVisible: false, dialogImageUrl: '' } }, computed: { ruleRecord: () => { return { name: [ { required: true, message: '请输入水道名称', trigger: 'blur' }, { max: 30, message: '长度不得超过30个字符', trigger: 'blur' } ], type: [ { required: true, message: '请选择水道类型', trigger: 'blur' } ], waterway: [ { required: true, message: '请选择水道位置', trigger: 'blur' } ], start: [ { required: true, message: '请选择水道起点', trigger: 'blur' } ], end: [ { required: true, message: '请选择水道讫点', trigger: 'blur' } ], swzId: [ { required: true, message: '请选择水位站', trigger: 'blur' } ], remark: [ { max: 100, message: '长度不得超过100个字符', trigger: 'blur' } ] } }, dataRecordTitle: () => { return { add: '新增水道', edit: '编辑水道' } } }, beforeDestroy() { window.removeEventListener('resize', this.__resizeHanlder) }, mounted() { this.__resizeHanlder = debounce(() => { this.heightMain = getTableHeight(10) }, 100) window.addEventListener('resize', this.__resizeHanlder) this.loadMain() queryChannelTypeList(null, result => { this.dataType = result }) this.dataWaterway = [] queryWaterwayList(null, result => { if (result) { for (const i in result) { const record = result[i] queryWaterwayPointList({ 'waterway': record.id }, ((me, polyline) => { return result => { if (result) { for (const i in result) { const record = result[i] if (polyline.geometry.length > 0) { polyline.geometry += '#' } polyline.geometry += record.long + ',' + record.lat } } me.dataWaterway.push(polyline) } })(this, { 'id': record.id, 'xtype': 'polyline', 'style': { 'stype': 'lineSymbol' }, 'geometry': '' })) } } }), // 新建水道->水位站选项数据获取 waterInfomationList(null, result => { if (result) { this.dataWaterStation = result } }) }, methods: { // 上传照片之前判断是否符合格式要求 beforeAvatarUpload(file) { // 照片格式 const picArr = ['image/jpeg', 'image/JPEG', 'image/png', 'image/PNG'] // 照片大小 const isLt2M = file.size / 1024 / 1024 < 2 // 一次上传照片数量 const maxLength = this.formRecord.waterInfomationPicDTO.length < 5 if (picArr.indexOf(file.type) < 0) { this.$message.error('上传图片只能是 JPG 或者 PNG 格式!') return false } if (!maxLength) { this.$message.error('图片最多只能上传五张!') return false } if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB!') return false } this.imgLoading = true }, // 上传照片成功 handleAvatarSuccess(res) { if (res.status) { const urlObj = {} urlObj.url = res.imageUrl this.formRecord.waterInfomationPicDTO.push(urlObj) this.imgLoading = false } }, // 删除照片 handleRemove(file, fileList) { deletePicByid(file.id).then(() => { }) this.formRecord.waterInfomationPicDTO = fileList }, // 放大图片 handlePictureCardPreview(file) { this.dialogImageUrl = file.url this.dialogVisible = true }, beforeClose() { this.$refs.formRecord.resetFields() this.actionDialogRecord = '' this.disabledSelOfficial = false this.formRecord.id = null this.formRecord.name = '' this.formRecord.type = null this.formRecord.official = false this.formRecord.waterway = null this.formRecord.startId = null this.formRecord.endId = null this.formRecord.swzId = null this.formRecord.remark = '' }, resetSearch() { this.formSearch.type = undefined this.formSearch.value = '' this.formSearch.official = undefined this.dataPage = 1 }, loadNode() { debugger const param = {} if (this.formRecord.waterway !== null) { param.waterway = this.formRecord.waterway } queryNodeList(param, result => { this.dataNode = result }, null, () => { if (this.formRecord.start) { this.formRecord.startId = this.formRecord.start } if (this.formRecord.end) { this.formRecord.endId = this.formRecord.end } this.formRecord.start = null this.formRecord.end = null for (const i in this.dataNode) { const node = this.dataNode[i] if (this.formRecord.startId && node.id === this.formRecord.startId) { this.formRecord.start = node.id } if (this.formRecord.endId && node.id === this.formRecord.endId) { this.formRecord.end = node.id } } }) }, loadMain() { this.loadingData = true const param = {} if (this.formSearch.type) { param.type = this.formSearch.type } if (this.formSearch.value) { param.value = this.formSearch.value } if (this.formSearch.official) { param.isOfficial = this.formSearch.official } queryChannelFullList(param, this.dataPage, this.dataSize, (data, total) => { if (data) { this.dataMain = data } else { this.dataMain = [] } if (total) { this.dataTotal = total } else { this.dataTotal = this.dataMain.length } }, null, () => { this.loadingData = false }) }, formatOfficial(row, column) { const value = row[column.property] if (value === undefined || value === null) { return '' } else { if (value === true || value === 'true' || value === '1') { return '正式水道' } else { return '测试水道' } } }, handleMapReady() { this.loadingWaterway = true addGraphicsLayer({ 'type': 'GraphicsLayer', 'layerid': 'WaterwayLayer' }, (me => { return layer => { RAddListGraphic(layer, me.dataWaterway) RegClick(layer, me.handleMapLineClick) } })(this)) this.loadingWaterway = false }, handleMapLineClick(evt) { this.formRecord.waterway = evt.graphic.attributes.id this.loadNode() }, handleAdd() { this.loadNode() this.actionDialogRecord = 'add' this.visibleDialogRecord = true }, handleEdit(r) { this.disabledSelOfficial = true this.formRecord.id = r.id this.formRecord.name = r.name this.formRecord.type = r.typeId this.formRecord.official = r.isOfficial //this.formRecord.waterway = r.waterwayId this.formRecord.startId = r.startId this.formRecord.endId = r.endId this.formRecord.remark = r.remark this.loadNode() this.actionDialogRecord = 'edit' this.visibleDialogRecord = true }, handleDelete(r) { this.$confirm('确认删除?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.fullscreenLoading = true queryChannelDelete({ 'id': r.id }, () => { this.resetSearch() this.loadMain() this.$notify({ type: 'success', title: '成功', message: '操作成功!' }) }, null, () => { this.fullscreenLoading = false }) }) }, handlePageSizeChange(v) { this.dataSize = v this.loadMain() }, handlePageCurrentChange(v) { this.dataPage = v this.loadMain() }, handleSave() { this.$refs.formRecord.validate((valid) => { if (valid) { const param = { 'name': this.formRecord.name, 'type': this.formRecord.type, 'waterway': this.formRecord.waterway, 'start': this.formRecord.start, 'end': this.formRecord.end, 'swzId': this.formRecord.swzId, 'sdzp': this.formRecord.waterInfomationPicDTO } if (this.formRecord.remark) { param['remark'] = this.formRecord.remark } const done = () => { this.handleCancel() this.resetSearch() this.loadMain() this.$notify({ type: 'success', title: '成功', message: '操作成功!' }) } const always = () => { this.fullscreenLoading = false } this.fullscreenLoading = true switch (this.actionDialogRecord) { case 'add': param['isOfficial'] = this.formRecord.official queryChannelAdd(param, done, null, always) break case 'edit': param['id'] = this.formRecord.id param['waterway'] = 0 queryChannelEdit(param, done, null, always) break default: always() } } else { return false } }) }, handleCancel() { this.beforeClose() this.visibleDialogRecord = false }, handleClose(done) { this.beforeClose() done() } } } </script>
为什么在vue created方法中手动打开弹框后,关不了 html
<div id="rrapp" v-cloak> <div><input type="button" @click="dakai" v-model="name"></div> <div class="modal fade" id="TSBModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <!-- style=“width:900px--> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> <h4 class="modal-title" id="myModalLabel1">漏洞检测任务</h4> </div> <div class="modal-body"> <table class="table table-condensed"> <tbody> <div clas="form-group"> <div class="col-xs-4"> <button id="t1" data-toggle="modal" data-target="#TSBModal3" onclick="vm.check2()">人工分析</button> </div> <div class="col-xs-4"> <button id="t2">自动化检测</button> </div> </div> <!-- <label class="col-sm-1 control-label" style="white-space : nowrap;font-size: 14px;margin-right: 10px;margin-top: 4px" >人工报告</label>--> </tbody> </table> </div> <div class="modal-footer"> <input type="hidden" value="=1" id="t"> <button type="button" class="btn btn-primary btn-sm" data-dismiss="modal" onclick="vm.fanhui()">返回 </button> <!-- <button type="button" class="btn btn-danger btn-sm" data-dismiss="modal" @click="sendLog()">提交 </button>--> </div> </div><!-- /.modal-content --> </div><!-- /.modal --> </div> </div> var vm = new Vue({ el: '#rrapp', data: { }, created: function () { this.getPageChange() }, methods: { getPageChange:function () { console.log(123123123) $("#TSBModal1").modal('show'); //手动开启 console.log(222); }, fanhui: function(){ $("#TSBModal1").modal('hide'); //手动关闭 },
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
小白学 Python 爬虫(25):爬取股票信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
小知识:浅谈二维码的生成和识别原理
目录 前言 条形码 静态二维码 二进制生成图形码 二维码的定位 前言 不知不觉中,我们的生活到处充满了二维码。登录账户需要二维码;加好友需要二维码;共享单车需要二维码;商品包装上也有二维码;甚至连楼下卖水果的阿姨手里都拿张二维码收款。那么,有没有想过这个二维码到底是什么东西呢?那么这个二维码的图案会不会多到不小心重合了呢? 条形码 在二维码出现之前,大行其道的...
[享学Jackson] 一、初识Jackson -- 世界上最好的JSON库
Jackson是一个简单的、功能强大的、基于Java的**应用库**。它可以很方便完成**Java对象**和**json对象(xml文档or其它格式)**进行互转。Jackson社区相对比较活跃,更新速度也比较快。Jackson库有如下几大特性: - 高性能,稳定:低内存占用,对大/小JSON串,大/小对象的解析表现均很优秀 - 流行度高:是很多流行框架的默认实现 - 容易使用:提供高层次的API,极大简化了日常使用 - 无需自己手动创建映射:内置了绝大部分序列化时和Java类型的映射关系 - 干净的JSO
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
世界上最牛的网络设备,价格低廉,其貌不扬......
夜深人静,电视和电脑都已经关机休息,但是我还在默默工作,我安静地趴在你家中的某个地方,7*24小时不眠不休,任劳任怨,目的只有一个,能让你舒服地躺在床上,畅快地刷手机!没错,这就是我,...
《面试宝典》2019年springmvc面试高频题(java)
前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了。如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 1、什么是Spring MVC ?简单...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试一个ArrayList我都能跟面试官扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
2020年1月中国编程语言排行榜,python是2019增长最快编程语言
编程语言比例 排名 编程语言 最低工资 工资中位数 最低工资 最高工资 人头 人头百分比 1 rust 20713 17500 5042 46250 480 0.14% 2 typescript 18503 22500 6000 30000 1821 0.52% 3 lua 18150 17500 5250 35000 2956 0.84% 4 go 17989 16...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一文带你看清 HTTP 所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
立即提问