当前位置: 首页 > news >正文

新手做网站免费教程做网站需要懂程序吗

新手做网站免费教程,做网站需要懂程序吗,聚美优品一个专注于做特价的网站,wordpress上一篇文章需求&#xff1a;点击左边的tab页签&#xff0c;请求右侧表格数据&#xff1b;如果返回的接口数据存在taskuser字段并不为null&#xff0c;那么按照这个字段去回勾数据。如果存在数据&#xff0c;但与后面所勾选的数据项不同&#xff0c;按照后面勾选的为主。 <el-tabs tab-…

需求:点击左边的tab页签,请求右侧表格数据;如果返回的接口数据存在taskuser字段并不为null,那么按照这个字段去回勾数据。如果存在数据,但与后面所勾选的数据项不同,按照后面勾选的为主。

    <el-tabs tab-position="left" v-model="dialogInfo.activeTab" style="height: 350px" class="demo-tabs" @tab-change="tabChange"><el-tab-pane v-for="tab in dialogInfo.tabs" :key="tab.id" :label="tab.text" :name="tab.text"><div class="tableDiv"><el-tableref="refTableV":data="tableConfig.tableData":header-cell-style="{ background: '#F5F7FA', height: '30px' }"style="width: 100%; margin: 0 auto"height="100%"align="center"row-key="empName"stripeborder@select="select"><el-table-column type="selection" width="40" fixed label="操作" /><el-table-column fixed prop="userName" label="用户编号" width="120" align="center" /><el-table-column fixed prop="empName" label="用户姓名" min-width="150" align="center" /><el-table-column fixed prop="expiresdate" label="过期日期" min-width="150" align="center"><template v-slot="scope"><el-date-pickerv-if="dialogInfo.tabs[dialogInfo.activeTabIndex].allot?.empName === scope.row.empName"v-model="scope.row.expiresdate"type="date"placeholder="选择日期"size="small"@change="handleDateChange(scope.row)"value-format="YYYY-MM-DD"/><span v-else @click="changeLeader(scope.row)">{{ scope.row.expiresdate || '' }}</span></template></el-table-column><el-table-column fixed prop="leaderNames" label="直接领导" min-width="150" align="center"><template v-slot="scope"><span v-if="scope.row.leaderNames && scope.row.leaderNames !== ''" size="small" @click="leaderSearch(scope.row)">{{ scope.row.leaderNames || '选择领导' }}</span><span v-else-if="dialogInfo.tabs[dialogInfo.activeTabIndex].allot?.empName === scope.row.empName"><el-button size="small" @click="leaderSearch(scope.row)">{{ '选择领导' }}</el-button></span></template></el-table-column></el-table></div></el-tab-pane></el-tabs>
const refTableV = ref(null) //表格
const refTree = ref(null)
const dialogInfo = reactive({tabs: [],dialogText: '任务分配',dialogFormVisible: false,activeTab: '',searchstrId: '',list: [],treeLearder: {},str: []
})const tableConfig = reactive({allot: {},tableData: [],loading: false,page: 1,selectedData: [], // 存储当前勾选的数据项lastSelectedRow: {},paramsData: {},activeTabIndex: 0
})

 首先openInit 这个方法是我打开弹层的第一步,tabs数据是左侧的角色信息;我会给每一项的tab数据添加selectedData和allot 这个在后面取值会用到。

const openInit = (list) => {dialogInfo.str = []list.forEach((item) => dialogInfo.str.push(item.factory + ',' + item.materialscode))tableConfig.selectedData = [] // 存储当前勾选的数据项tableConfig.lastSelectedRow = {}tableConfig.allot = {}dialogInfo.list = JSON.parse(JSON.stringify(list))dialogInfo.treeLearder = {}getPropertyList({searchstr: {taskType: 'SPAREPARTSTASKROLE'}}).then((res) => {const tabs = res.data.rows || []dialogInfo.searchstrId = ''if (tabs.length > 0) {dialogInfo.searchstrId = tabs[0].iddialogInfo.activeTab = tabs[0].texttabs.forEach((row) => {row.selectedData = []row.allot = {}})dialogInfo.tabs = tabsdialogInfo.activeTabIndex = 0dialogInfo.dialogFormVisible = truegetTable() // 获取表格数据}})
}const getTable = () => {preTaskAssign({searchstr: {id: dialogInfo.searchstrId,eventcodes: dialogInfo.str.join(';')}}).then((res) => {const tableData = res.data.row?.teapSysUserEntityList || []const taskuser = res.data.row?.taskuser || ''refTableV.value[dialogInfo.activeTabIndex].clearSelection()const strLength = dialogInfo.str.lengthif (strLength === 1) {if (tableData && tableData.length > 0) {tableData.forEach((newRow) => {if (newRow.userName === taskuser) {dialogInfo.tabs[dialogInfo.activeTabIndex].selectedData = [newRow]dialogInfo.tabs[dialogInfo.activeTabIndex].allot = newRownextTick(() => {refTableV.value[dialogInfo.activeTabIndex].toggleRowSelection(newRow, true)})}})}}tableConfig.tableData = tableData})
}

代码主要就是针对勾选数据 保存数据,切换tab页签 再次回来后数据的勾选处理 

const select = (selectedRows) => {// 获取当前 tab 的数据const currentTab = dialogInfo.tabs[dialogInfo.activeTabIndex]refTableV.value[dialogInfo.activeTabIndex].clearSelection()// 清空上一次选中的数据currentTab.selectedData = []currentTab.allot = {}// 更新当前 tab 的 selectedData 和 allotif (selectedRows.length === 1) {currentTab.selectedData = selectedRowscurrentTab.allot = selectedRows[0] // 如果有 allot 数据,更新为第一个选中的数据nextTick(() => {refTableV.value[dialogInfo.activeTabIndex].toggleRowSelection(currentTab.allot, true)})} else {ElMessage.warning('只能选择一条数据,请取消已勾选项后再进行选择')}// 更新当前 tab 的 selectedData 和 allotdialogInfo.tabs[dialogInfo.activeTabIndex] = currentTab
}// 选择领导的弹层
const tabChange = (name) => {// 查找当前 tab 索引dialogInfo.activeTab = namedialogInfo.searchstrId = dialogInfo.tabs.find((item) => item.text === name).idlet index = nulldialogInfo.tabs.some((item, ind) => {if (item.text === name) {index = indreturn true // 找到就停止遍历}return false})dialogInfo.activeTabIndex = indexconst currentTab = dialogInfo.tabs[index]// 保存当前勾选状态const { selectedData, allot } = currentTab// 在切换 tab 时,将勾选状态存储到 dialogInfo 中dialogInfo.tabs[index].selectedData = selectedData || []dialogInfo.tabs[index].allot = allot || {}// 重新加载当前 tab 的数据,保持选中状态preTaskAssign({searchstr: {id: dialogInfo.searchstrId,eventcodes: dialogInfo.str.join(';') // 外面行勾选的数据 工厂加物料编号传字符串}}).then((res) => {// 获取从接口返回的表格数据const tableDataList = res.data.row?.teapSysUserEntityList || []const taskuser = res.data.row?.taskuser || ''// 更新表格数据tableConfig.tableData = tableDataListrefTableV.value[dialogInfo.activeTabIndex].clearSelection()// 使用一些逻辑优化遍历,找到合适的行就停止let isFound = falsetableDataList.forEach((row) => {if (isFound) return // 如果已经找到匹配项,直接跳过后续行const selectedUserName = selectedData[0]?.userNameif (taskuser) {if (selectedData.length === 0) {// 1. 如果有taskuser但是selectedData为空,依照taskuser去筛选数据if (row.userName === taskuser) {dialogInfo.tabs[dialogInfo.activeTabIndex].selectedData = [row]dialogInfo.tabs[dialogInfo.activeTabIndex].allot = rownextTick(() => {refTableV.value[dialogInfo.activeTabIndex].toggleRowSelection(row, true)})isFound = true // 标记为已找到匹配项,跳出循环}} else if (selectedUserName !== taskuser) {// 2. 如果同时存在,但是匹配不上,那么按照selectedData中的数据去筛选if (row.userName === selectedUserName) {dialogInfo.tabs[dialogInfo.activeTabIndex].selectedData = [row]dialogInfo.tabs[dialogInfo.activeTabIndex].allot = rownextTick(() => {refTableV.value[dialogInfo.activeTabIndex].toggleRowSelection(row, true)})isFound = true // 标记为已找到匹配项,跳出循环}} else if (selectedUserName === taskuser) {// 3. 如果同时存在,匹配的上,按照taskuser判断nextTick(() => {const selectedRow = dialogInfo.tabs[dialogInfo.activeTabIndex].selectedData[0]refTableV.value[dialogInfo.activeTabIndex].toggleRowSelection(selectedRow, true)})isFound = true // 标记为已找到匹配项,跳出循环}} else {// 4. taskuser不存在,按照selectedData去筛选if (row.userName === selectedUserName) {dialogInfo.tabs[dialogInfo.activeTabIndex].selectedData = [row]dialogInfo.tabs[dialogInfo.activeTabIndex].allot = rownextTick(() => {refTableV.value[dialogInfo.activeTabIndex].toggleRowSelection(row, true)})isFound = true // 标记为已找到匹配项,跳出循环}}})})
}const leaderSearch = (row) => {// 查找与勾选行对应的数据const exObj = tableConfig.tableData.find((item) => item.userId === dialogInfo.tabs[dialogInfo.activeTabIndex].allot.userId)// 检查过期日期是否为空if (exObj.expiresdate === '' || exObj.expiresdate == null) return ElMessage.warning('请先设置时间')const str = dialogInfo.tabs[dialogInfo.activeTabIndex].id // 这个就是左边角色的idrefTree.value.openInit(JSON.parse(JSON.stringify(row)), str)
}

http://www.dtcms.com/a/445199.html

相关文章:

  • 中兴建设有限公司网站南京地铁最新消息
  • 和顺网站建设怎么自己创建一个网页
  • 科站网站建设一个58一样的网站多少钱
  • 建立网站需要多少钱 激发湖南岚鸿汕头网站开发
  • 北京国贸网站建设怎么能自己创建网站
  • 做网站的合同范文网站响应时间方案
  • 哪些做直播卖食品的网站有哪些上海新闻报道
  • 煤矿网站建设wordpress 静态缓存
  • 北京织梦网站建设响应式网站设计图
  • 网站建设客户群体分析服装加盟的网站建设
  • 男女做那个全面视频网站wordpress 关注公众号
  • seo网站怎么建设wordpress菜单图标
  • 礼服购物车网站模板十大导航软件
  • oss做下载网站wordpress 的客户端
  • cnzz站长统计怎么添加到博客网站一键生成原创动漫
  • 彩票网站维护需要几天提升学历有哪些渠道
  • 网站读取速度慢wordpress 微网站
  • 做源码演示的网站株洲制作网站
  • 网站用什么语言做中山营销型网站设计
  • 佛山企业网站建设流程服务平台app
  • 重庆网站建设seo公司建设人才库网站
  • 下载学校网站模板聊城房地产网站建设
  • 学校网站建设阶段性目标h5页面制作工具哪个好
  • 网站建设外包宜宾市做网站多少钱
  • 北京企业建站服务中企不良广告入口
  • 北京专业做网站推广苏州建设交易中心网站
  • 做旅游网站的原因公司做网站的费用怎么做账
  • 做电影网站资源哪里来的台州做网站联系方式
  • 做片头片尾比较好的网站北京建筑设计院待遇好吗
  • 如何建设百度网站个人理财的网站开发