|
|
@@ -0,0 +1,322 @@
|
|
|
+/*******************************************************************************
|
|
|
+ * Copyright(c) 2024 dongke All rights reserved. / Confidential
|
|
|
+ * 类的信息:
|
|
|
+ * 1.程序名称:
|
|
|
+ * 2.功能描述:一览界面混入
|
|
|
+ * 编辑履历:
|
|
|
+ * 作者 日期 版本 修改内容
|
|
|
+ * 周兴 2024-1-19 1.00 新建
|
|
|
+ *******************************************************************************/
|
|
|
+const api = require('../utils/api.js');
|
|
|
+const constants = require('../utils/constants.js')
|
|
|
+const app = getApp()
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+ data: {
|
|
|
+ // 加载中
|
|
|
+ loading: false,
|
|
|
+ // 没有更多
|
|
|
+ noMore:false,
|
|
|
+ // 路由名称
|
|
|
+ routeObjName:null,
|
|
|
+ // 主键Id
|
|
|
+ primaryKey:null,
|
|
|
+ // 分页
|
|
|
+ pageInfo: {
|
|
|
+ pageSize: constants.PAGE_SIZE,
|
|
|
+ currentPage: 1
|
|
|
+ },
|
|
|
+ // 查询条件实体
|
|
|
+ searchForm: null,
|
|
|
+ // 保存参数
|
|
|
+ params:null,
|
|
|
+ // 查询结果集
|
|
|
+ tableData:[],
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 查询共通方法
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/19
|
|
|
+ */
|
|
|
+ searchData(e) {
|
|
|
+ // 加载中
|
|
|
+ this.setData({
|
|
|
+ loading: true
|
|
|
+ })
|
|
|
+ // 给参数赋值
|
|
|
+ let params = this._setSearchParams();
|
|
|
+ this._getData(params).then(res=>{
|
|
|
+ this.setData({
|
|
|
+ loading: false
|
|
|
+ })
|
|
|
+ // res.data.data = {
|
|
|
+ // code:200,
|
|
|
+ // list:[{name:'t1',label:'t1'},{name:'t2',label:'t2'}],
|
|
|
+ // message:''
|
|
|
+ // }
|
|
|
+ if(res && res.code === constants.SUCESS_CODE){
|
|
|
+ let tableData = this.data.tableData;
|
|
|
+ let list = res.data.data.list;
|
|
|
+ if(!list || list.length === 0){
|
|
|
+ // 如果不是翻页,需要清空
|
|
|
+ if(e != 'more'){
|
|
|
+ this.setData({
|
|
|
+ list: [],
|
|
|
+ noMore: false
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.setData({
|
|
|
+ noMore: true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 如果返回数据小于页数,就不能再继续翻页了
|
|
|
+ if (list.length < this.data.pageInfo.pageSize) {
|
|
|
+ this.setData({
|
|
|
+ noMore: false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 把查询数据加入到结果集中
|
|
|
+ tableData = tableData.concat(list)
|
|
|
+ this.setData({
|
|
|
+ tableData:tableData
|
|
|
+ })
|
|
|
+ console.log('table',this.data.tableData,tableData);
|
|
|
+ // 如果页面需要后续处理,再进行处理
|
|
|
+ if(this.handleData){
|
|
|
+ this.handleData(tableData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 给查询实体赋值
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/19
|
|
|
+ */
|
|
|
+ _setSearchParams(){
|
|
|
+ let params = this.data.searchForm?this.data.searchForm:{};
|
|
|
+ params.pageSize = this.data.pageInfo.pageSize;
|
|
|
+ params.currentPage = this.data.pageInfo.currentPage;
|
|
|
+ if(this.setSearchParams){
|
|
|
+ // 调用参数赋值
|
|
|
+ params = this.setSearchParams(params);
|
|
|
+ }
|
|
|
+ return params;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 执行查询共通方法
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/19
|
|
|
+ */
|
|
|
+ _getData(params){
|
|
|
+ return new Promise(resolve => {
|
|
|
+ let res = this.getData(params);
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 点击按钮
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/22
|
|
|
+ */
|
|
|
+ open(e){
|
|
|
+ // 如果没有路由就不往下进行
|
|
|
+ if(!this.routeObjName)return;
|
|
|
+ let name;
|
|
|
+ let item;
|
|
|
+ if(typeof e === 'object'){
|
|
|
+ name = e.currentTarget.dataset.name;
|
|
|
+ item = e.currentTarget.dataset.item;
|
|
|
+ if(this.primaryKey){
|
|
|
+ item.id = item[this.primaryKey]
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ name = e;
|
|
|
+ }
|
|
|
+ let routeUrl = app.globalData['routeUrl'][this.routeObjName][name];
|
|
|
+ if(!routeUrl)return;
|
|
|
+ // 如果有链接,就跳转
|
|
|
+ // console.log('url',routeUrl);
|
|
|
+ if(routeUrl.url){
|
|
|
+ wx.navigateTo({
|
|
|
+ url: routeUrl.url,
|
|
|
+ success:function(res){
|
|
|
+ res.eventChannel.emit('data',item);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ // 如果是方法就执行方法
|
|
|
+ if(routeUrl.method){
|
|
|
+ this[routeUrl.method](item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 执行保存方法
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/22
|
|
|
+ */
|
|
|
+ save({saveFlag=true,url,dialogMes}){
|
|
|
+ // 校验
|
|
|
+ this._validData().then(res => {
|
|
|
+ if (!res) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.loading = true;
|
|
|
+ // 设置参数
|
|
|
+ this._setParams();
|
|
|
+ // 如果需要有询问
|
|
|
+ if(dialogMes){
|
|
|
+ Dialog.confirm({
|
|
|
+ message: dialogMes,
|
|
|
+ }).then(()=>{
|
|
|
+ // 执行保存方法
|
|
|
+ if(saveFlag){
|
|
|
+ this._handleSaveData();
|
|
|
+ }else{
|
|
|
+ wx.navigateTo({
|
|
|
+ url: url,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ // 执行保存方法
|
|
|
+ if(saveFlag){
|
|
|
+ this._handleSaveData();
|
|
|
+ }else{
|
|
|
+ wx.navigateTo({
|
|
|
+ url: url,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 保存方法
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/22
|
|
|
+ */
|
|
|
+ _handleSaveData(){
|
|
|
+ this._saveData(this.params).then(result=>{
|
|
|
+ this.setData({
|
|
|
+ loading: false
|
|
|
+ })
|
|
|
+ if(result.code = constants.SUCESS_CODE){
|
|
|
+ wx.showToast({
|
|
|
+ title: '保存成功',
|
|
|
+ image: '/static/image/success.png',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ // 如果页面需要后续处理,再进行处理
|
|
|
+ if(this.handleData){
|
|
|
+ this.handleData();
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ wx.showToast({
|
|
|
+ title: result.message,
|
|
|
+ image: '/static/image/warning.png',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 给查询实体赋值
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/19
|
|
|
+ */
|
|
|
+ _setParams(){
|
|
|
+ params = {};
|
|
|
+ if(this.setParams){
|
|
|
+ // 调用参数赋值
|
|
|
+ this.setParams(params);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 校验,(不给外部调用)
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/22 14:13
|
|
|
+ */
|
|
|
+ _validData() {
|
|
|
+ return new Promise(resolve => {
|
|
|
+ // 页面校验
|
|
|
+ if (this.validData) {
|
|
|
+ let flag = this.validData();
|
|
|
+ resolve(flag);
|
|
|
+ } else {
|
|
|
+ resolve(true);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 给参数赋值(不给外部调用)
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/22 14:33
|
|
|
+ */
|
|
|
+ _saveData(params) {
|
|
|
+ return new Promise(resolve => {
|
|
|
+ let res = this.saveData(params);
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 执行方法
|
|
|
+ * @author : 周兴
|
|
|
+ * @date : 2024/1/22
|
|
|
+ */
|
|
|
+ excute(service, method, params,showMessage = true,button = ''){
|
|
|
+ if(service && method){
|
|
|
+ let res = api.request(service.prefix + method, 'POST', params);
|
|
|
+ if(res){
|
|
|
+ res.then(t =>{
|
|
|
+ if(showMessage){
|
|
|
+ if(t.code === constants.SUCESS_CODE){
|
|
|
+ if(button == ''){
|
|
|
+ button = constants.Messages.save_sucess;
|
|
|
+ }
|
|
|
+ wx.showToast({
|
|
|
+ title: button,
|
|
|
+ image: '/static/image/success.png',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ if (searchFlag) {
|
|
|
+ this.searchData();
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (t.message) {
|
|
|
+ wx.showToast({
|
|
|
+ title: t.message,
|
|
|
+ image: '/static/image/warning.png',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onLoad() {
|
|
|
+ // this.searchData();
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 页面上拉触底事件的处理函数
|
|
|
+ * @author : 于继渤
|
|
|
+ * @date : 2022/5/24 12:16
|
|
|
+ */
|
|
|
+ onReachBottom: function () {
|
|
|
+ if (this.data.loading || this.data.noMore) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ pageInfo: {
|
|
|
+ pageSize: this.data.pageInfo.pageSize,
|
|
|
+ currentPage: this.data.pageInfo.currentPage + 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 执行查询方法
|
|
|
+ this.searchData('more')
|
|
|
+ },
|
|
|
+};
|