微信小程序:选择页面单选实现(多页面均可选择)

发布于:2025-06-24 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、效果展示

1、主页面

展示了两个选择行

2、选择页面

根据传递的参数决定员工展示的数据,并且单选,可将数据传递给主页面

二、主页面实现

1、视图层

写入了采购员和库管员的行选择信息

<view class="item flex flex-between">
  <view class="item_title">采购员:</view>
  <view class="item_info">
    <view class="pickertext" bind:tap="select_poperson">
      <text style="color: {
  {!poperson_sel ? '#8d8d8d' : ''}}">{
  {poperson_sel?poperson_sel.employee_name:'请选择'}}<text class="sel_btn">></text></text>
    </view>
  </view>
</view>
<view class="item flex flex-between">
  <view class="item_title">库管员:</view>
  <view class="item_info">
    <view class="pickertext" bind:tap="select_warseperson">
      <text style="color: {
  {!warehouse_sel ? '#8d8d8d' : ''}}">{
  {warehouse_sel?warehouse_sel.employee_name:'请选择'}}<text class="sel_btn">></text></text>
    </view>
  </view>
</view>

2、逻辑层

(1)参数定义

在data中写入必要的参数(对应到视图层的数据)

data: {
    poperson_sel: '', //选择的采购员
    warehouse_sel: '', //选择的库管员
},

(2)处理选择页面返回的数据

执行方法,可得到返回的数据,并且根据数据进行赋值

//员工选择的数据展示
setSelectedEmployee(employee, field, source) {
    console.log('接收到字段:', field, '来源:', source, '员工信息:', employee);
    this.setData({
      [field]: employee
    });
    console.log(this.data.poperson_sel)
},

(3)处理视图层的点击事件

定义点击事件,如果有已经选择的需要获取其工号,并一并传递给选择页面

传递的参数:

        sel_em_old:之前选择的数据

        field:规定需要定义的字段(该字段决定视图层展示的内容)

        source:规定传递的名称(其实不用可以省略,主要是区别不同的字段)

        pageinfo:这个用于定义不同的请求数据,例如A查询的是员工1,员工2,员工3;但是B查询的数据是员工4,员工5,员工6。那么就需要用这个,主要写入后端

        itemid:也是用于后端,主要是在有父级层面使用的

//选择采购员
select_poperson() {
    const poperson_sel = this.data.poperson_sel;
    const employee_num = poperson_sel?.employee_num;
    wx.navigateTo({
      url: `/pages/commonpage/sel_employee_param_radio/sel_employee?sel_em_old=${encodeURIComponent(JSON.stringify([employee_num]))}&field=poperson_sel&source=popersond`
    });
},

//选择库管员
select_warseperson() {
    const warehouse_sel = this.data.warehouse_sel;
    const employee_num = warehouse_sel?.employee_num;
    wx.navigateTo({
      url: `/pages/commonpage/sel_employee_param_radio/sel_employee?sel_em_old=${encodeURIComponent(JSON.stringify([employee_num]))}&field=warehouse_sel&source=stock&pageinfo=add_emgroup&itemid=1`
    });
},

三、选择页面

1、视图层

(1)搜索栏

搜索栏使用input事件执行提交

<view class="top">
  <view class="search">
    <view class="search_in">
      <!-- 使用代码请更改图片路径 -->
      <image src="{
  {search}}"></image>
      <input type="text" placeholder="请输入工号" placeholder-style="color:#CCCCCC" bindinput="search" />
    </view>
  </view>
</view>

(2)主要内容

如果行中checked为true,需要有一个选中效果:checked_parameter

<view class="center">
  <view class="pages_name">
    <view class="li"></view>
    <view class="li2">员工信息</view>
  </view>
</view>
<view class="all">
  <view class="item_all" data-id="{
  {item.id}}" wx:for="{
  {info}}" wx:key="index">
    <view class='position parameter-info text-over {
  {item.checked?"checked_parameter":""}}' data-id="{
  {item.id}}" bindtap='select_single'>
      <view class="content">
        <view class="vv_1">
          工号:
          <text>{
  {item.employee_num}}</text>
        </view>
        <view class="vv_1">
         姓名:
          <text>{
  {item.employee_name}}</text>
        </view>
      </view>
    </view>
  </view>
</view>

(3)翻页功能

如果数据过多需要用到翻页

<view class="pagination">
  <view class="page-button" bindtap="prevPage">上一页</view>
  <view class="page-info">{
  { page }}</view>
  <view class="page-info">/</view>
  <view class="page-info">{
  { totalPage }}</view>
  <view class="page-button" bindtap="nextPage">下一页</view>
</view>

(4)确认按钮

<view class="button_sure" bindtap=

网站公告

今日签到

点亮在社区的每一天
去签到