Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
swx_weapp
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Authored by
hookehuyr
2022-10-22 00:28:06 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
83bf6e9b2f1473d49a6bd38262ac5e321dd45e86
83bf6e9b
1 parent
423a1fcf
创建主办方业务逻辑优化
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
99 additions
and
52 deletions
src/api/Host/index.js
src/api/fn.js
src/pages/createProject/index.vue
src/pages/editProject/index.vue
src/api/Host/index.js
View file @
83bf6e9
/*
* @Date: 2022-10-14 17:26:56
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-10-2
1 22:59:04
* @LastEditTime: 2022-10-2
2 00:24:38
* @FilePath: /swx/src/api/Host/index.js
* @Description: 活动相关接口
*/
...
...
@@ -10,6 +10,7 @@ import { fn, fetch } from '../fn';
const
Api
=
{
HOST_LIST
:
'/srv/?a=host_list'
,
HOST_INFO
:
'/srv/?a=host_info'
,
HOST_ADD
:
'/srv/?a=host_add'
,
HOST_EDIT
:
'/srv/?a=host_edit'
,
HOST_DELETE
:
'/srv/?a=host_del'
,
ACTIVITY_ADD
:
'/srv/?a=activity_add'
,
...
...
@@ -31,6 +32,12 @@ export const hostListAPI = (params) => fn(fetch.get(Api.HOST_LIST, params));
export
const
hostInfoAPI
=
(
params
)
=>
fn
(
fetch
.
get
(
Api
.
HOST_INFO
,
params
));
/**
* @description: 新增主办方
* @returns
*/
export
const
addHostAPI
=
(
params
)
=>
fn
(
fetch
.
post
(
Api
.
HOST_ADD
,
params
));
/**
* @description: 修改主办方
* @returns
*/
...
...
src/api/fn.js
View file @
83bf6e9
/*
* @Date: 2022-05-18 22:56:08
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-10-
18 15:06:40
* @LastEditTime: 2022-10-
22 00:12:46
* @FilePath: /swx/src/api/fn.js
* @Description: 文件描述
*/
import
axios
from
'@/utils/request'
;
import
T
oast
from
'@/components/vant-weapp/toast/toast'
;
import
T
aro
from
'@tarojs/taro'
import
qs
from
'Qs'
/**
...
...
@@ -22,8 +22,11 @@ export const fn = (api) => {
}
else
{
// tslint:disable-next-line: no-console
console
.
warn
(
res
);
if
(
!
res
.
data
.
show
)
return
false
;
Toast
.
fail
(
res
.
data
.
msg
);
Taro
.
showToast
({
title
:
res
.
data
.
msg
,
icon
:
'none'
,
duration
:
2000
});
return
false
;
}
})
...
...
@@ -49,8 +52,11 @@ export const uploadFn = (api) => {
}
else
{
// tslint:disable-next-line: no-console
console
.
warn
(
res
);
if
(
!
res
.
data
.
show
)
return
false
;
Toast
.
fail
(
res
.
data
.
msg
);
Taro
.
showToast
({
title
:
res
.
data
.
msg
,
icon
:
'none'
,
duration
:
2000
});
return
false
;
}
})
...
...
src/pages/createProject/index.vue
View file @
83bf6e9
<!--
* @Date: 2022-09-19 14:11:06
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-10-
10 10:55:06
* @LastEditTime: 2022-10-
22 00:26:20
* @FilePath: /swx/src/pages/createProject/index.vue
* @Description: 新建主办方页面
-->
...
...
@@ -47,7 +47,7 @@
<text class="bg-gradient">用户类型</text>
</view>
<view style="width: 22rem;">
<van-field :value="add_user_type" label-class="label-class" input-class="input-class" rows="1" autosize label="用户类型"
<van-field :value="add_user_type
.name
" label-class="label-class" input-class="input-class" rows="1" autosize label="用户类型"
type="textarea" placeholder="请输入用户类型(6个字以内)" placeholder-style="color: #999;" customStyle="" inputAlign=""
rightIcon="" :required="true" :border="true" @change="onChangeType" />
<van-row>
...
...
@@ -75,7 +75,7 @@
<text class="bg-gradient">用户状态</text>
</view>
<view style="width: 22rem;">
<van-field :value="add_user_status" label-class="label-class" input-class="input-class" rows="1" autosize label="用户状态"
<van-field :value="add_user_status
.name
" label-class="label-class" input-class="input-class" rows="1" autosize label="用户状态"
type="textarea" placeholder="请输入用户状态(6个字以内)" placeholder-style="color: #999;" customStyle="" inputAlign=""
rightIcon="" :required="true" :border="true" @change="onChangeStatus" />
<van-row>
...
...
@@ -103,86 +103,83 @@ import { ref } from "vue";
import { AtInput } from 'taro-ui-vue3'
import "taro-ui-vue3/dist/style/components/input.scss";
import bottomButton from "@/components/bottom-button";
import request from '../../utils/request';
import Toast from '@/components/vant-weapp/toast/toast';
import { addHostAPI } from '@/api/Host/index';
import { randomId } from '@/utils/tools'
const name = ref('');
const user_type = ref([]);
const user_status = ref([]);
const add_user_type= ref('');
const add_user_status = ref('');
const onSave = () => {
if (!name.value) {
Toast.fail('名称不能为空');
return false;
}
let temp_user_type = userType.value.filter(element => element.checked);
user_type.value = temp_user_type.map(element => element.label);
let temp_user_status = userStatus.value.filter(element => element.checked);
user_status.value = temp_user_status.map(element => element.label);
// 保存主办方信息
request.post('/srv/?a=host_add', {
name: name.value,
user_type: user_type.value,
user_status: user_status.value,
})
.then(res => {
if (res.data.code) {
Toast.success('保存成功');
Taro.navigateBack({
delta: 1
});
} else {
console.warn(res.data.msg);
}
})
.catch(err => {
console.error(err);
});
}
const add_user_type= ref({});
const add_user_status = ref({});
const userType = ref([{
key: 'first',
label: '首次参与',
checked: 1,
nop: true
}, {
key: 'old',
label: '老用户',
checked: 1,
nop: true
}]);
const userStatus = ref([{
key: 'follow',
label: '跟踪',
checked: 1,
nop: true
}, {
key: 'guide',
label: '引导',
checked: 1,
nop: true
}]);
// 用户类型弹框操作
const onTapType = (item) => {
item.checked = !item.checked
if (item.nop) return false; // 如果是固定字段不能操作
item.checked = !item.checked;
}
const is_long_press = ref(false); // 是否是长按激活
const onLongPressType = (item) => {
if (item.nop) return false; // 如果是固定字段不能操作
show_edit_type.value = true;
is_long_press.value = true;
add_user_type.value.key = item.key;
add_user_type.value.name = item.label;
}
const show_edit_type = ref(false)
const onChangeType = ({ detail }) => {
add_user_type.value = detail;
add_user_type.value
.name
= detail;
}
const closeEditType = () => {
show_edit_type.value = false;
is_long_press.value = false;
}
const confirmEditType = () => {
if (!add_user_type.value) {
Toast.fail('名称不能为空');
} else {
show_edit_type.value = false;
if (is_long_press.value) {
userType.value.forEach(item => {
if (item.key === add_user_type.value.key) { // key值相同
item.label = add_user_type.value.name;
}
});
} else {
userType.value.push({
label: add_user_type.value,
key: randomId(5),
label: add_user_type.value.name,
checked: 1,
});
add_user_type.value = '';
}
add_user_type.value = {};
is_long_press.value = false;
}
}
const addSign = () => {
...
...
@@ -191,10 +188,17 @@ const addSign = () => {
// 用户状态
const onTapStatus = (item) => {
item.checked = !item.checked
if (item.nop) return false; // 如果是固定字段不能操作
item.checked = !item.checked;
}
const is_long_press_status = ref(false); // 是否是长按激活
const onLongPressStatus = (item) => {
if (item.nop) return false; //如果是固定字段不能操作
show_edit_status.value = true;
is_long_press_status.value = true;
add_user_status.value.key = item.key;
add_user_status.value.name = item.label;
}
const show_edit_status= ref(false)
const onChangeStatus = ({ detail }) => {
...
...
@@ -202,23 +206,55 @@ const onChangeStatus = ({ detail }) => {
}
const closeEditStatus = () => {
show_edit_status.value = false;
is_long_press_status.value = false;
}
const confirmEditStatus = () => {
if (!add_user_status.value) {
Toast.fail('名称不能为空');
} else {
show_edit_status.value = false;
if (is_long_press.value) {
userStatus.value.forEach(item => {
if (item.key === add_user_status.value.key) { // key值相同
item.label = add_user_status.value.name;
}
});
} else {
userStatus.value.push({
key: randomId(5),
label: add_user_status.value,
checked: 1,
})
add_user_status.value = '';
}
add_user_status.value = {};
is_long_press_status.value = false;
}
}
const addStatus = () => {
show_edit_status.value = true;
}
const onSave = async () => {
if (!name.value) {
Toast.fail('名称不能为空');
return false;
}
let temp_user_type = userType.value.filter(element => element.checked && !element.nop);
user_type.value = temp_user_type.map(element => element.label);
let temp_user_status = userStatus.value.filter(element => element.checked && !element.nop);
user_status.value = temp_user_status.map(element => element.label);
// 新增主办方信息
const params = {
name: name.value,
user_type: JSON.stringify(user_type.value),
user_status: JSON.stringify(user_status.value),
}
const { code, data } = await addHostAPI(params);
if (code) {
Toast.success('新增成功');
Taro.navigateBack();
}
}
</script>
<script>
...
...
src/pages/editProject/index.vue
View file @
83bf6e9
<!--
* @Date: 2022-09-19 14:11:06
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-10-2
1 23:42:11
* @LastEditTime: 2022-10-2
2 00:22:28
* @FilePath: /swx/src/pages/editProject/index.vue
* @Description: 新建主办方页面
-->
...
...
@@ -103,12 +103,10 @@ import { ref, onMounted } from "vue";
import { AtInput } from 'taro-ui-vue3'
import "taro-ui-vue3/dist/style/components/input.scss";
import bottomButton from "@/components/bottom-button";
import request from '../../utils/request';
import Toast from '@/components/vant-weapp/toast/toast';
import { hostInfoAPI, editHostAPI } from '@/api/Host/index';
import { getCurrentPageParam } from "@/utils/weapp";
import { randomId } from '@/utils/tools'
import { json } from 'stream/consumers';
onMounted(async () => {
...
...
Please
register
or
login
to post a comment