Ver código fonte

移动端2.0:多账号绑定;

yanshi
dyy 2 anos atrás
pai
commit
53cfea6b76
3 arquivos alterados com 583 adições e 0 exclusões
  1. +16
    -0
      Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages.json
  2. +316
    -0
      Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/EducationalAdministration/LoginUserBind/list.vue
  3. +251
    -0
      Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/EducationalAdministration/LoginUserBind/single.vue

+ 16
- 0
Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages.json Ver arquivo

@@ -1060,8 +1060,24 @@
"style": {
"navigationBarTitleText": "党员评价"
}
},
//多账号绑定
{
"path": "pages/EducationalAdministration/LoginUserBind/list",
"style": {
"navigationBarTitleText": "多账号绑定"
}
},
{
"path": "pages/EducationalAdministration/LoginUserBind/single",
"style": {
"navigationBarTitleText": "详情"
}
}

],


+ 316
- 0
Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/EducationalAdministration/LoginUserBind/list.vue Ver arquivo

@@ -0,0 +1,316 @@
<template>
<view class="page">
<!-- 主列表页 -->
<view
:class="sideOpen ? 'show' : ''"
class="mainpage"
style="padding-top: 80rpx"
>
<!-- 顶部条目/分页信息栏 -->
<l-customlist-banner @buttonClick="sideOpen = true">{{
tips
}}</l-customlist-banner>

<!-- 滚动列表,跨端支持上拉/下拉 -->
<l-scroll-list
v-if="ready"
@pullDown="pullDown"
@toBottom="fetchList()"
ref="list"
>
<l-customlist :tips="loadState" showTips>
<!-- 单条记录 -->
<view class="customlist-item" v-for="item of list" :key="item.Id">
<view class="customlist-item-field">
<text class="customlist-item-field-title">绑定账号:</text>
{{ displayListItem(item, "BindUserAccount") }}
</view>

<view class="customlist-item-field">
<text class="customlist-item-field-title">绑定时间:</text>
{{ displayListItem(item, "CreateTime") }}
</view>

<l-customlist-action
showEdit
@edit="action('edit', item.Id)"
showDelete
@delete="action('delete', item.Id)"
@view="action('view', item.Id)"
/>
</view>
</l-customlist>
</l-scroll-list>
</view>

<!-- 关闭侧边抽屉按钮 -->
<view
@click="sideOpen = false"
:class="sideOpen ? 'show' : ''"
class="sideclose"
>
<l-icon type="pullright" color="blue" />
</view>

<!-- 侧边栏,用于设置查询条件 -->
<scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y>
<view v-if="ready" class="padding">
<l-input
v-model="queryData.BindUserAccount"
@change="searchChange"
title="绑定账号"
placeholder="按绑定账号查询"
/>

<!-- 重置查询条件按钮 -->
<view class="padding-tb">
<l-button @click="reset" line="orange" class="block" block
>重置查询条件</l-button
>
</view>
</view>
</scroll-view>

<l-customlist-add v-if="!sideOpen" @click="action('add')" />
</view>
</template>


<script>
/*
* 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
* Copyright (c) 2013-2021 上海力软信息技术有限公司
* 创建人:超级管理员
* 日 期:2021-03-08 10:36
* 描 述:会议纪要
*/

/**
* 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用
* 请在移动端 /pages.json 中的 pages 字段中添加一条记录:
* { "path": "pages/EducationalAdministration/LoginUserBind/list", "style": { "navigationBarTitleText": "表单列表页" } }
*
* (navigationBarTitleText 字段为本页面的标题文本,可以修改)
* (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件)
*/
import moment from "moment";
import get from "lodash/get";
import set from "lodash/set";
import pickBy from "lodash/pickBy";
import mapValues from "lodash/mapValues";

export default {
data() {
return {
// 数据项的数据类型、结构
scheme: {
BindUserAccount: { type: "text" },
CreateTime: { type: "datetime" },
},

// 查询条件
searchData: {},
defaultQueryData: {},
queryData: {
BindUserAccount: "",
},

// 数据源
dataSource: {},

// 页面相关参数
ready: false,
tips: "加载中...",
loadState: "向下翻以加载更多",
sideOpen: false,

// 列表与分页信息
page: 1,
total: 2,
list: [],
};
},

async onLoad() {
await this.init();
},
onUnload() {
this.OFF("EducationalAdministrationLoginUserBind-list-change");
},

methods: {
// 页面初始化
async init() {
this.ON(
"EducationalAdministrationLoginUserBind-list-change",
this.refreshList
);

// 拉取加载列表和数据源
await Promise.all([() => {}]);
await this.fetchList();
// 初始化查询条件
this.defaultQueryData = this.COPY(this.queryData);
this.ready = true;
},

// 拉取列表
async fetchList() {
if (this.page > this.total) {
return;
}
this.searchData.CreateUserId=this.GET_GLOBAL('loginUser').userId
const result = await this.HTTP_GET(
"learun/EducationalAdministration/LoginUserBind/pagelist",
{
// 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序)
// 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序
pagination: { rows: 10, page: this.page, sidx: "CreateTime desc", sord: "DESC" },
queryJson: JSON.stringify(this.searchData),
},
"加载数据时出错"
);

if (!result) {
return;
}

this.total = result.total;
this.page = result.page + 1;
this.list = this.list.concat(result.rows);

this.tips = `已加载 ${Math.min(result.page, result.total)} / ${
result.total
} 页,共 ${result.records} 项`;
this.loadState =
result.page >= result.total ? "已加载所有项目" : "向下翻以加载更多";
},

// 刷新清空列表
async refreshList() {
this.page = 1;
this.total = 2;
this.list = [];

await this.fetchList();
},

// 列表下拉
pullDown() {
this.refreshList().then(() => {
this.$refs.list.stopPullDown();
});
},

// 设置搜索条件
async searchChange() {
const result = {};

// 将其他查询项添加到查询 JSON 中
const queryObj = pickBy(this.queryData, (t) =>
Array.isArray(t) ? t.length > 0 : t
);
Object.assign(
result,
mapValues(queryObj, (t) => (Array.isArray(t) ? t.join(",") : t))
);
this.searchData = result;
await this.refreshList();
},

// 点击「清空查询条件」按钮
reset() {
this.queryData = this.COPY(this.defaultQueryData);
this.searchChange();
},

// 点击「编辑」、「查看」、「添加」、「删除」按钮
async action(type, id = "") {
switch (type) {
case "view":
this.NAV_TO(`./single?type=view&id=${id}`);
return;

case "add":
this.NAV_TO("./single?type=create");
return;

case "edit":
this.NAV_TO(`./single?type=edit&id=${id}`);
return;

case "delete":
if (!(await this.CONFIRM("删除项目", "确定要删除该项吗?", true))) {
return;
}

this.HTTP_POST(
"learun/EducationalAdministration/LoginUserBind/delete",
id,
"删除失败"
).then((success) => {
if (!success) {
return;
}
this.TOAST("删除成功", "success");
this.refreshList();
});
return;

default:
return;
}
},

// 显示列表中的标题项
displayListItem(item, field) {
const fieldItem = this.scheme[field];
const value = item[field];

switch (fieldItem.type) {
case "currentInfo":
case "organize":
return fieldItem.dataType === "time"
? value
: get(this.GET_GLOBAL(fieldItem.dataType), `${value}.name`, "");

case "radio":
case "select":
const selectItem = this.dataSource[field].find(
(t) => t.value === String(value)
);
return get(selectItem, "text", "");

case "checkbox":
if (!value || value.split(",").length <= 0) {
return "";
}
const checkboxItems = value.split(",");
return this.dataSource[field]
.filter((t) => checkboxItems.includes(t.value))
.map((t) => t.text)
.join(",");

case "datetime":
if (!value) {
return "";
}
return moment(value).format(
Number(fieldItem.dateformat) === 0
? "YYYY年 M月 D日"
: "YYYY-MM-DD HH:mm"
);

default:
return value === null || value === undefined ? "" : value;
}
},
},
};
</script>


<style lang="less" scoped>
@import "~@/common/css/sidepage.less";
@import "~@/common/css/customlist.less";
</style>

+ 251
- 0
Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/EducationalAdministration/LoginUserBind/single.vue Ver arquivo

@@ -0,0 +1,251 @@
<template>
<view class="page">
<view v-if="ready">
<l-input
@input="setValue('LoginUserBind.BindUserAccount', $event)"
:value="getValue('LoginUserBind.BindUserAccount')"
:readonly="!edit"
title="绑定账号"
/>
<l-input
@input="setValue('LoginUserBind.BindUserPassword', $event)"
:value="getValue('LoginUserBind.BindUserPassword')"
:readonly="!edit"
title="绑定密码"
/>
</view>

<view
v-if="ready"
class="bg-white margin-tb padding"
style="padding-top: 0; overflow: hidden"
>
<l-button
v-if="edit"
@click="action('save')"
size="lg"
color="green"
class="block margin-top"
block
>
提交保存
</l-button>
<l-button
v-if="!edit && mode !== 'create'"
@click="action('edit')"
size="lg"
line="orange"
class="block margin-top"
block
>
编辑本页
</l-button>
<l-button
v-if="edit && mode !== 'create'"
@click="action('reset')"
size="lg"
line="red"
class="block margin-top"
block
>
取消编辑
</l-button>
<l-button
v-if="!edit && mode !== 'create'"
@click="action('delete')"
size="lg"
line="red"
class="block margin-top"
block
>
删除
</l-button>
</view>
</view>
</template>


<script>
/*
* 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
* Copyright (c) 2013-2021 上海力软信息技术有限公司
* 创建人:超级管理员
* 日 期:2021-03-08 10:36
* 描 述:会议纪要
*/

/**
* 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用
* 请在移动端 /pages.json 中的 pages 字段中添加一条记录:
* { "path": "pages/EducationalAdministration/LoginUserBind/single", "style": { "navigationBarTitleText": "表单详情页" } }
*
* (navigationBarTitleText 字段为本页面的标题文本,可以修改)
* (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件)
*/

import get from "lodash/get";
import set from "lodash/set";
import moment from "moment";
import customPageMixins from "@/common/custompage.js";

export default {
mixins: [customPageMixins],

data() {
return {
// 页面相关参数
id: null,
mode: null,
edit: null,
ready: false,

// 表单数据
current: {},
origin: {},

// 表单项数据结构
scheme: {
LoginUserBind: {
BindUserAccount: { type: "text", title: "绑定账号" },
BindUserPassword: { type: "text", title: "绑定密码" },
},
},

// 数据源
dataSource: {
LoginUserBind: {},
},
};
},

async onLoad({ type, id }) {
await this.init(type, id);
},

methods: {
// 页面初始化
async init(type, id) {
this.LOADING("加载数据中...");

this.id = id;
this.mode = type;
this.edit = ["create", "edit"].includes(this.mode);

// 拉取表单数据,同时拉取所有来自数据源的选单数据
await Promise.all([() => {}]);
await this.fetchForm();

this.ready = true;
this.HIDE_LOADING();
},

// 加载表单数据
async fetchForm() {
if (this.mode === "create") {
this.origin = await this.getDefaultForm();
} else {
const result = await this.HTTP_GET(
"learun/EducationalAdministration/LoginUserBind/form",
this.id
);
this.origin = await this.formatFormData(result);
}
this.current = this.COPY(this.origin);
},

// 点击 「编辑」、「重置」、「保存」、「删除」 按钮
async action(type) {
switch (type) {
case "edit":
this.edit = true;
break;

case "reset":
this.current = this.COPY(this.origin);
this.edit = false;
break;

case "save":
const verifyResult = this.verifyForm();
if (verifyResult.length > 0) {
this.CONFIRM("表单验证失败", verifyResult.join("\n"));
return;
}

if (
!(await this.CONFIRM(
"提交确认",
"确定要提交本页表单内容吗?",
true
))
) {
return;
}

this.LOADING("正在提交...");
const postData = await this.getPostData(this.id);
var aa = JSON.parse(postData.strEntity);
aa.BindUserPasswordTemp = this.MD5(aa.BindUserPassword);
postData.strEntity = JSON.stringify(aa);
//todo:
this.HTTP_POST(
"learun/EducationalAdministration/LoginUserBind/save",
postData,
"表单提交保存失败"
).then((success) => {
console.log(success);
this.HIDE_LOADING();
if (!success) {
return;
}

this.EMIT("EducationalAdministrationLoginUserBind-list-change");
this.NAV_BACK();
this.TOAST("提交保存成功");
});
break;

case "delete":
if (!(await this.CONFIRM("删除项目", "确定要删除本项吗?", true))) {
return;
}

this.LOADING("提交删除中...");
this.HTTP_POST(
"learun/EducationalAdministration/LoginUserBind/delete",
this.id,
"删除失败"
).then((success) => {
this.HIDE_LOADING();
if (!success) {
return;
}

this.EMIT("EducationalAdministrationLoginUserBind-list-change");
this.NAV_BACK();
this.this.TOAST("删除成功", "success");
});
break;

default:
break;
}
},

// 获取表单值
getValue(path) {
return get(this.current, path);
},

// 设置表单值
setValue(path, val) {
set(this.current, path, val);
},
},
};
</script>



Carregando…
Cancelar
Salvar