Toggle navigation
Toggle navigation
This project
Loading...
Sign in
developOne
/
harmonyPool
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
张善主
2024-05-16 14:45:25 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ffeec0e515e6a9083ca26cc1156a3c923c42fa69
ffeec0e5
1 parent
ed1dc1d8
feat(意见反馈):UI调整
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
217 additions
and
46 deletions
sight_harmony/commons/wdNetwork/src/main/ets/http/HttpCommonParams.ets
sight_harmony/commons/wdNetwork/src/main/ets/http/HttpUrlUtils.ets
sight_harmony/commons/wdRouter/src/main/ets/utils/ProcessUtils.ets
sight_harmony/commons/wdWebComponent/src/main/ets/pages/JsBridgeBiz.ets
sight_harmony/features/wdBean/Index.ets
sight_harmony/features/wdBean/src/main/ets/bean/detail/FeedbackImageItem.ts
sight_harmony/features/wdBean/src/main/ets/bean/detail/MultiPictureDetailPageDTO.ts
sight_harmony/features/wdComponent/src/main/ets/components/DynamicDetailComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/FeedBackActivity.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardview/Card19Component.ets
sight_harmony/features/wdComponent/src/main/ets/components/reusable/CustomTitleUI.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/MultiPictureDetailViewModel.ets
sight_harmony/features/wdComponent/src/main/resources/base/element/float.json
sight_harmony/features/wdComponent/src/main/resources/base/element/string.json
sight_harmony/commons/wdNetwork/src/main/ets/http/HttpCommonParams.ets
View file @
ffeec0e
...
...
@@ -7,6 +7,7 @@ import { HostEnum, HostManager } from './HttpHostManager';
* 网络请求参数工具类,TODO 不对外暴露,收缩权限
*/
export class HttpParams {
static buildHeaders(): Record<string, string> {
let headers: Record<string, string> = {};
// 通用请求头
...
...
@@ -90,8 +91,17 @@ export class HttpParams {
return '10000';
}
p
rivate
static getVersionName() {
p
ublic
static getVersionName() {
// TODO 读取配置
return '1.0.0';
}
//获取机型
static getPhoneModel() {
return 'getPhoneModel'
}
//获取当前手机系统版本号
static getSystemVersion() {
return 'getSystemVersion'
}
}
\ No newline at end of file
...
...
sight_harmony/commons/wdNetwork/src/main/ets/http/HttpUrlUtils.ets
View file @
ffeec0e
...
...
@@ -329,6 +329,11 @@ export class HttpUrlUtils {
*/
static readonly MESSAGE_UN_READ_DATA_PATH: string = "/api/rmrb-inside-mail/zh/c/inside-mail/private/polymerizationInfo?createTime=";
/**
* 意见反馈-提交
*/
static readonly FEEDBACK_COMMIT_PATH: string = "/api/rmrb-interact/interact/zh/c/user/feedBack";
static getHost(): string {
return HostManager.getHost();
}
...
...
sight_harmony/commons/wdRouter/src/main/ets/utils/ProcessUtils.ets
View file @
ffeec0e
import { Action, ContentDTO, Params, PhotoListBean, commentInfo } from 'wdBean';
import { ExtraDTO } from 'wdBean/src/main/ets/bean/component/extra/ExtraDTO';
import { Logger } from 'wdKit';
import { Logger
, SPHelper
} from 'wdKit';
import { StringUtils } from 'wdKit/src/main/ets/utils/StringUtils';
import { WDRouterRule, WDRouterPage } from '../../../../Index';
import { ContentConstants } from 'wdConstant';
import { ContentConstants
, SpConstants
} from 'wdConstant';
import { common, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { CompAdvMatInfoBean } from 'wdBean/src/main/ets/bean/adv/CompAdvInfoBean';
...
...
@@ -449,7 +449,13 @@ export class ProcessUtils {
/**
* 意见反馈
*/
public static gotoFeedBackActivity() {
public static async gotoFeedBackActivity() {
// 未登录,跳转登录
const user_id = await SPHelper.default.get(SpConstants.USER_ID, '')
if (!user_id) {
WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
return
}
let taskAction: Action = {
type: 'JUMP_INNER_NEW_PAGE',
params: {
...
...
sight_harmony/commons/wdWebComponent/src/main/ets/pages/JsBridgeBiz.ets
View file @
ffeec0e
...
...
@@ -122,7 +122,8 @@ function handleJsCallReceiveH5Data(data: Message) {
width: item.width,
height: item.height,
picPath: item.pic,
picDesc: ''
picDesc: '',
itemType:2
}
return photo
})
...
...
sight_harmony/features/wdBean/Index.ets
View file @
ffeec0e
...
...
@@ -175,4 +175,3 @@ export { ReserveItemBean } from './src/main/ets/bean/live/ReserveItemBean';
export { FeedbackTypeBean } from './src/main/ets/bean/detail/FeedbackTypeBean';
export { FeedbackImageItem } from './src/main/ets/bean/detail/FeedbackImageItem';
\ No newline at end of file
...
...
sight_harmony/features/wdBean/src/main/ets/bean/detail/FeedbackImageItem.ts
deleted
100644 → 0
View file @
ed1dc1d
export
interface
FeedbackImageItem
{
//1添加图片,2图片
itemType
:
number
;
path
:
string
;
selectionPath
:
string
;
}
\ No newline at end of file
sight_harmony/features/wdBean/src/main/ets/bean/detail/MultiPictureDetailPageDTO.ts
View file @
ffeec0e
...
...
@@ -8,6 +8,8 @@ export interface PhotoListBean {
width
:
number
;
picPath
:
string
;
picDesc
:
string
;
//1添加图片,2图片
itemType
:
number
;
}
export
interface
InputMethodProperty
{
...
...
sight_harmony/features/wdComponent/src/main/ets/components/DynamicDetailComponent.ets
View file @
ffeec0e
...
...
@@ -45,6 +45,10 @@ import { detailedSkeleton } from './skeleton/detailSkeleton';
const TAG = 'DynamicDetailComponent'
const PATTERN_DATE_CN_RN: string = 'yyyy年MM月dd日 HH:mm';
/**
* @author wd-zsz
* */
// @Preview
@Component
export struct DynamicDetailComponent {
...
...
sight_harmony/features/wdComponent/src/main/ets/components/FeedBackActivity.ets
View file @
ffeec0e
import { FeedbackImageItem, FeedbackTypeBean } from 'wdBean/Index';
import { FastClickUtil, Logger, NetworkUtil } from 'wdKit/Index';
import { FeedbackTypeBean, PhotoListBean } from 'wdBean/Index';
import { FastClickUtil, Logger, NetworkUtil, StringUtils, ToastUtils, UserDataLocal } from 'wdKit/Index';
import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel';
import { CustomTitleUI } from './reusable/CustomTitleUI'
import { ArrayList } from '@kit.ArkTS';
import { picker } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { router } from '@kit.ArkUI';
import { CommonConstants } from 'wdConstant/Index';
import { ProcessUtils } from 'wdRouter/Index';
import { HashMap } from '@kit.ArkTS';
import { HttpParams } from 'wdNetwork/src/main/ets/http/HttpCommonParams';
const TAG = 'FeedBackActivity'
// 意见反馈页面
/**
* 意见反馈页面
* @author wd-zsz
* */
@Entry
@Component
export struct FeedBackActivity {
contact: string = "";
email: string = "";
//UI
scroller: Scroller = new Scroller();
...
...
@@ -19,8 +28,8 @@ export struct FeedBackActivity {
@State feedbackTypeBeans: FeedbackTypeBean[] = [] as FeedbackTypeBean[]
//添加图片
addPic: FeedbackImageItem = {itemType:1} as FeedbackImageItem
@State pics: FeedbackImageItem[] = [this.addPic] as FeedbackImageItem[]
addPic: PhotoListBean = {itemType:1} as PhotoListBean
@State pics: PhotoListBean[] = [this.addPic] as PhotoListBean[]
// 选择媒体文件的最大数目
selectNum = 3;
...
...
@@ -31,58 +40,66 @@ export struct FeedBackActivity {
build() {
Column() {
//标题栏目
CustomTitleUI({ titleName:
"意见反馈"
})
CustomTitleUI({ titleName:
$r('app.string.feedback')
})
Stack({ alignContent: Alignment.Bottom }) {
Scroll(this.scroller) {
Column() {
Text(
'请选择问题类型'
)
Text(
$r('app.string.feedback_opinion_type')
)
.fontColor($r('app.color.color_222222'))
.fontSize($r('app.float.font_size_16'))
.fontWeight(FontWeight.Bold)
.width('100%')
.margin({ left: $r('app.float.vp_15'), top: $r('app.float.vp_14') })
GridRow({
gutter: { x: 2, y: 2 }
columns:3,
}) {
ForEach(this.feedbackTypeBeans, (feedbackTypeBean: FeedbackTypeBean, index: number) => {
GridCol({
span: 12
}) {
Row(){
Toggle({ type: ToggleType.Checkbox, isOn: false })
Text(feedbackTypeBean.classifyName)
.fontColor($r('app.color.color_222222'))
.fontSize($r('app.float.font_size_14'))
.fontWeight(FontWeight.Bold)
.margin({ left: $r('app.float.vp_4') })
}
.width(115)
.height(22)
.width($r('app.float.margin_115'))
.height($r('app.float.vp_22'))
.margin({bottom:$r('app.float.margin_16')})
.backgroundColor($r('app.color.color_fff'))
}
})
}
.width('100%')
.margin({top:$r('app.float.vp_16')})
Blank()
.height(0.5)
.margin({ left: $r('app.float.vp_16'), top: $r('app.float.vp_12'), right: $r('app.float.vp_16') })
.backgroundColor($r('app.color.color_EDEDED'))
Text('描述您的问题')
.height($r('app.float.margin_5'))
.backgroundColor($r('app.color.color_F5F5F5'))
Text($r('app.string.feedback_opinion_tv'))
.fontColor($r('app.color.color_222222'))
.fontSize($r('app.float.font_size_16'))
.fontWeight(FontWeight.Bold)
.width(CommonConstants.FULL_WIDTH)
.margin({ left: $r('app.float.vp_16'), top: $r('app.float.vp_12') })
Stack() {
TextInput({ placeholder: '您的宝贵意见是我们前行的动力' })
Stack({ alignContent: Alignment.BottomEnd }) {
TextInput({ placeholder: $r('app.string.feedback_comments') })
.width(CommonConstants.FULL_WIDTH)
.height(CommonConstants.FULL_HEIGHT)
.backgroundColor($r('app.color.color_F5F5F5'))
.align(Alignment.TopStart)
.onChange((value) => {
// Logger.debug(TAG, "onChange" + value + "/" + this.passwordContent)
this.contact = value
})
GridRow({
gutter: { x: 2, y: 2 }
columns:3,
}) {
ForEach(this.pics, (feedbackImageItem:
FeedbackImageItem
, index: number) => {
ForEach(this.pics, (feedbackImageItem:
PhotoListBean
, index: number) => {
GridCol({
span: 12
}) {
if(1 == feedbackImageItem.itemType){
Image($r('app.media.
icon_add_attention
'))
Image($r('app.media.
feekback_add
'))
.width(60)
.height(60)
.onClick(async (event: ClickEvent) => {
...
...
@@ -93,7 +110,7 @@ export struct FeedBackActivity {
})
}else{
Stack({alignContent: Alignment.TopEnd}) {
Image(feedbackImageItem.path)
Image(feedbackImageItem.p
icP
ath)
.width(60)
.height(60)
.borderRadius($r('app.float.margin_1'))
...
...
@@ -104,12 +121,21 @@ export struct FeedBackActivity {
}
.width(60)
.height(60)
.onClick(async (event: ClickEvent) => {
if(await FastClickUtil.isMinDelayTime()){
return
}
//查看图片 fixme 去除添加按钮
ProcessUtils.gotoMultiPictureListPage(this.pics, index)
})
}
}
})
}
.width(CommonConstants.FULL_WIDTH)
.margin({bottom: $r('app.float.vp_12'), right: $r('app.float.vp_12'),left: $r('app.float.vp_12')})
Text('0/500')
.margin({bottom: $r('app.float.vp_12'), right: $r('app.float.vp_11')})
}
.height(200)
.width('100%')
...
...
@@ -117,26 +143,39 @@ export struct FeedBackActivity {
.backgroundColor($r('app.color.color_F5F5F5'))
.borderRadius(4)
Text(
'期待您留下联系方式,我们将提供更好的服务'
)
Text(
$r('app.string.feedback_email')
)
.fontColor($r('app.color.color_222222'))
.fontSize($r('app.float.font_size_14'))
.fontWeight(FontWeight.Bold)
.width('100%')
.margin({ left: $r('app.float.vp_16'), top: $r('app.float.margin_24') })
Row() {
Text(
'电话或者邮箱'
)
Text(
$r('app.string.feedback_mail')
)
.fontColor($r('app.color.color_222222'))
.fontSize($r('app.float.font_size_14'))
.fontWeight(FontWeight.Bold)
.margin({ left: $r('app.float.vp_12') })
TextInput({ placeholder: '请输入电话或者邮箱' })
TextInput({ placeholder: $r('app.string.feedback_hideemail') })
.width(CommonConstants.FULL_WIDTH)
.height(CommonConstants.FULL_HEIGHT)
.backgroundColor($r('app.color.color_F5F5F5'))
.onChange((value) => {
// Logger.debug(TAG, "onChange" + value + "/" + this.passwordContent)
this.email = value
})
}
.height(44)
.margin({ left: $r('app.float.vp_16'), right: $r('app.float.vp_12'), top: $r('app.float.margin_16') })
.backgroundColor($r('app.color.color_F5F5F5'))
.borderRadius(4)
Blank().layoutWeight(1)
}
}
.width(CommonConstants.FULL_WIDTH)
.height(CommonConstants.FULL_HEIGHT)
.scrollBar(BarState.Off)
.alignSelf(ItemAlign.Start)
.padding({ bottom: 44 })
Text($r('app.string.submit'))
.height(44)
.fontColor($r('app.color.color_9E9E9E_40'))
...
...
@@ -144,6 +183,12 @@ export struct FeedBackActivity {
.margin({ left: $r('app.float.vp_16'), right: $r('app.float.vp_16'), top: $r('app.float.vp_15') })
.backgroundColor($r('app.color.color_ED2800_99'))
.borderRadius(4)
.onClick(async (event: ClickEvent) => {
if(await FastClickUtil.isMinDelayTime()){
return
}
this.reportCommit()
})
}
}
}
...
...
@@ -188,7 +233,7 @@ export struct FeedBackActivity {
let startIndex = this.pics.length-1;
array.forEach((value) => {
let pic:
FeedbackImageItem = {itemType:2,path:value} as FeedbackImageItem
let pic:
PhotoListBean = {itemType:2,picPath:value} as PhotoListBean
this.pics[startIndex] = pic
startIndex = startIndex+1;
mediaFlag = true;
...
...
@@ -219,4 +264,55 @@ export struct FeedBackActivity {
}, router.RouterMode.Standard);
}
//提交
async reportCommit(){
//问题类型必选
let selectType = ""
this.feedbackTypeBeans.forEach((value) => {
if(value.isselect){
selectType = selectType+","
}
})
if(!StringUtils.isEmpty(selectType)){
selectType = selectType.substring(0,selectType.length-1)
}else{
//
ToastUtils.shortToast($r('app.string.feedback_opinion_type'))
return
}
//内容必填
if(StringUtils.isEmpty(this.contact) || this.contact.length < 10 || this.contact.length>500){
ToastUtils.shortToast($r('app.string.res_feedback_commentsFail'))
return
}
try {
let map: HashMap<String,String> = {} as HashMap<String,String>
//反馈内容
map.set("content", this.contact);
//投诉类型 id
map.set("classifyFlagIds", selectType);
if(!StringUtils.isEmpty(this.email)){
//邮箱
map.set("userContact", this.email);
}
//用户名称
if (!StringUtils.isEmpty(UserDataLocal.getUserName())) {
map.set("userName", UserDataLocal.getUserName());
}
//设备
map.set("appVersion", "V" + HttpParams.getVersionName());
map.set("appDevice", "harmony" + HttpParams.getSystemVersion() + " " + HttpParams.getPhoneModel());
// //投诉图片
// if (imageUrl.size() > 0) {
// String[] str = imageUrl.toArray(new String[imageUrl.size()]);
// map.set("imageUrls", str);
// }
await MultiPictureDetailViewModel.feedBackCommit(map)
} catch (exception) {
console.log('请求失败',JSON.stringify(exception))
}
}
}
\ No newline at end of file
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardview/Card19Component.ets
View file @
ffeec0e
...
...
@@ -40,7 +40,8 @@ export struct Card19Component {
width: item.weight,
height: item.height,
picPath: item.fullUrl,
picDesc: ''
picDesc: '',
itemType:2
}
return photo
})
...
...
sight_harmony/features/wdComponent/src/main/ets/components/reusable/CustomTitleUI.ets
View file @
ffeec0e
...
...
@@ -3,7 +3,7 @@ import router from '@ohos.router'
@Component
export struct CustomTitleUI {
imgBack:boolean = true
titleName:
string
= "默认标题"
titleName:
ResourceStr
= "默认标题"
build() {
RelativeContainer() {
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/MultiPictureDetailViewModel.ets
View file @
ffeec0e
import { Logger } from 'wdKit';
import { ResponseDTO } from 'wdNetwork';
import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork';
import { HashMap } from '@kit.ArkTS';
import { ContentDetailDTO,
batchLikeAndCollectParams,
batchLikeAndCollectResult,
...
...
@@ -156,4 +157,17 @@ export class MultiPictureDetailViewModel {
})
})
}
static async feedBackCommit(params:HashMap<String,String>): Promise<ResponseDTO> {
return new Promise<ResponseDTO>((success, error) => {
Logger.info(TAG, `fetchDetailData start`);
WDHttp.post(HttpUrlUtils.getHost() + HttpUrlUtils.FEEDBACK_COMMIT_PATH,params).then((resDTO: ResponseDTO) => {
success(resDTO);
}).catch((err: Error) => {
Logger.error(TAG, `fetchDetailData catch, error.name : ${err.name}, error.message:${err.message}`);
error(err);
})
})
}
}
...
...
sight_harmony/features/wdComponent/src/main/resources/base/element/float.json
View file @
ffeec0e
...
...
@@ -295,6 +295,10 @@
{
"name"
:
"vp_13"
,
"value"
:
"13vp"
},
{
"name"
:
"margin_115"
,
"value"
:
"115vp"
}
]
}
...
...
sight_harmony/features/wdComponent/src/main/resources/base/element/string.json
View file @
ffeec0e
...
...
@@ -67,5 +67,40 @@
"name"
:
"feedback"
,
"value"
:
"意见反馈"
}
,
{
"name"
:
"res_feedback_commentsFail"
,
"value"
:
"请输入 10-500 个字以内"
}
,
{
"name"
:
"feedback_opinion_type"
,
"value"
:
"请选择问题类型"
}
,
{
"name"
:
"feedback_comments"
,
"value"
:
"您的宝贵意见是我们前行的动力"
}
,
{
"name"
:
"feedback_opinion_tv"
,
"value"
:
"描述您的问题"
}
,
{
"name"
:
"feedback_email"
,
"value"
:
"期待您留下联系方式,我们将提供更好的服务"
}
,
{
"name"
:
"feedback_mail"
,
"value"
:
"电话或者邮箱"
}
,
{
"name"
:
"feedback_hideemail"
,
"value"
:
"请输入电话或者邮箱"
}
]
}
\ No newline at end of file
...
...
Please
register
or
login
to post a comment