提交 0d9e986a authored 作者: 吴强's avatar 吴强

人口上传头像,有点问题,就是无法改名字

上级 3b113569
......@@ -111,7 +111,7 @@ android {
targetSdkVersion 25
multiDexEnabled true
versionCode 1
versionName "1.0.2"
versionName "1.0.4"
ndk {
abiFilters "armeabi-v7a", "x86"
}
......
......@@ -68,7 +68,7 @@ class CameraComponent extends React.Component {
this.switchCam = this.switchCam.bind(this);
this.recording = this.recording.bind(this);
this.takePicture = this.takePicture.bind(this);
this.uploadImage = this.uploadImage.bind(this);
// this.uploadImage = this.uploadImage.bind(this);
this.clear = this.clear.bind(this);
this.goToUpload = this.goToUpload.bind(this);
}
......@@ -189,7 +189,7 @@ class CameraComponent extends React.Component {
}
goToUpload() {
this.props.navigation.navigate('DSRInfoTuPian', { imageURI: this.state.imageURI, pID: this.props.navigation.state.params.pID, TableName: this.props.navigation.state.params.TableName });
this.props.navigation.navigate('DSRInfoTuPian', { imageURI: this.state.imageURI, pID: this.props.navigation.state.params.pID, tableName: this.props.navigation.state.params.tableName });
}
render() {
......
import React, { Component } from 'react';
import {
Platform,
ActionSheetIOS,
} from 'react-native';
import PhotoBrowser from 'react-native-photo-browser';
export default class HomeScreen extends Component {
......@@ -7,24 +11,24 @@ export default class HomeScreen extends Component {
header: null,
};
// onSelectionChanged = (media, index, selected) => {
// console.info(`${media.photo} selection status: ${selected}`);
// };
onSelectionChanged = (media, index, selected) => {
console.info(`${media.photo} selection status: ${selected}`);
};
// onActionButton = (media, index) => {
// if (Platform.OS === 'ios') {
// ActionSheetIOS.showShareActionSheetWithOptions(
// {
// url: media.photo,
// message: media.caption,
// },
// () => {},
// () => {},
// );
// } else {
// console.info(`handle sharing on android for ${media.photo}, index: ${index}`);
// }
// };
onActionButton = (media, index) => {
if (Platform.OS === 'ios') {
ActionSheetIOS.showShareActionSheetWithOptions(
{
url: media.photo,
message: media.caption,
},
() => {},
() => {},
);
} else {
console.info(`handle sharing on android for ${media.photo}, index: ${index}`);
}
};
render() {
const {
......@@ -37,7 +41,6 @@ export default class HomeScreen extends Component {
enableGrid,
alwaysDisplayStatusBar,
} = this.props.navigation.state.params.example;
return (
<PhotoBrowser
onBack={this.props.navigation.pop}
......
......@@ -11,6 +11,7 @@ import {
import TagInput from 'react-native-tag-input';
import { InputItem } from 'antd-mobile';
import { createOperations, editResource, uploadResource } from '../services/resource';
import { currentDomain } from '../services/domain';
const styles = StyleSheet.create({
container: {
......@@ -84,12 +85,16 @@ class UploadPageComponent extends PureComponent {
onUploadPhoto = () => {
uploadResource(
this.state.imageURI,
(uploadId, arg) => console.info(arg),
(uploadId, arg) => {
editResource(arg, createOperations().setName(this.state.imageName).setTags(this.state.tags).use(`rel://path/${this.state.tableName}/${this.state.pID}`)).then().catch(err => console.info(`上传后改名字改tag:${err}`));
currentDomain()
.then((result) => {
editResource(arg, createOperations().setName(this.state.imageName).setTags(this.state.tags).use(`rel://${result.path}/${this.state.tableName}/${this.state.pID}`)).then(cc => console.info(cc)).catch(err => console.info(`上传后改名字改tag:${err}`));
console.info('跳转');
this.props.navigation.navigate('DSRInfoDetail', this.props.navigation.state.params.pID);
this.props.navigation.navigate('DSRInfoDetail', { id: this.props.navigation.state.params.pID });
})
.catch(err => console.info(err));
},
(uploadId, arg) => console.info(arg),
)
.then(uploadId => console.log(`start task ${uploadId}`))
.catch(err => console.log(`上传失败:${err}`));
......
......@@ -12,21 +12,17 @@ export default {
effects: {
*login({ payload }, { call, put }) { // 这里的put 代表 跟dispatch一样的功能,只是在effects中叫做put
const payloads = { ...payload, type: 'userName', authType: 'password' };
console.info(payloads);
const result = yield call(login, payloads);
const { tokenId, authResponse, remainedAuthRequirements } = result;
if (authResponse.status !== 'authed' && authResponse.status !== 'skipped') {
throw errors.wrongPassword();
}
console.log(authResponse);
const { requirements } = remainedAuthRequirements;
if (requirements.length > 0) {
throw errors.unsupportedAuthType(requirements);
}
console.log(requirements);
yield call(setToken, tokenId);// 这里的yield ,跟C#中的await一样
const uInfo = yield call(userInfo);
console.log(uInfo);
yield call(setUser, uInfo.id, uInfo.name); // 保存用户名密码
yield put(NavigationActions.navigate({
routeName: 'Main',
......
......@@ -7,7 +7,9 @@ import { NavigationActions } from 'react-navigation';
import { getData, getMeta } from '../../utils/DataTemplate';
import { datasourceApi } from '../../services/datasource';
import { scan } from '../../services/idcard';
import {createOperations, editResource, uploadResource} from "../../services/resource";
import { createOperations, editResource, uploadResource } from '../../services/resource';
import { currentDomain } from '../../services/domain';
import { processError } from '../../utils/error';
export default {
namespace: 'peopleInfo',
......@@ -73,18 +75,23 @@ export default {
};
const api = datasourceApi(coordinate);
const result = yield call(api.create, payload);
console.info(result);
const { detailData } = yield select(state => state.peopleInfo);
console.info(detailData);
try {
const { arg } = yield call(uploadResource, detailData.photoUri);
yield call(editResource, arg, createOperations().setName(detailData.identityCard).setTags('身份证头像').use(`rel://DangShiRenRenKouXinXi/${result}`));
} catch (e) {
console.info(e);
}
if (result === null) {
Toast.fail('信息重复!', 2);
} else {
try {
yield call(uploadResource, detailData.photoUri, () => {}, (uploadId, uri) => {
currentDomain().then(({ path }) => {
const operations = createOperations()
.setName(detailData.identityCard)
.setTags('身份证头像')
.use(`rel://${path}/DangShiRenRenKouXinXi/${result}`);
return editResource(uri, operations);
}).catch(err => console.info(err));
});
} catch (e) {
processError(e);
}
Toast.success('录入成功!', 1);
}
yield put(NavigationActions.navigate({
......
......@@ -11,6 +11,7 @@ export default {
namespace: 'welcome',
state: {
percent: 0,
promptText: '',
},
reducers: {
setPercent(state, { payload }) {
......@@ -19,25 +20,30 @@ export default {
percent: payload.progress,
};
},
setPromptText(state, { payload }) {
return {
...state,
promptText: payload.promptText,
};
},
},
effects: {
*init(ignored, { put, call }) {
try {
// yield call(codePush.sync);
// const result = yield call(checkUpdate);
// const { action, deploymentInfo, tokenId } = result;
// if (action === 'update') {
// const token = encrypt(tokenId);
// // console.info(`${config.updateContextPath}/resource/${token}/${encodeURIComponent(deploymentInfo.uri)}`);
// console.log('开始');
// yield call(
// update, `${config.updateContextPath}/resource/${token}/${encodeURIComponent(deploymentInfo.uri)}`,
// (event) => {
// app.getStore().dispatch({ type: 'welcome/setPercent', payload: { progress: event.progress } });
// },
// );
// console.log('结束结束结束结束结束结束结束结束结束结束');
// }
const result = yield call(checkUpdate);
console.info(result);
const { action, deploymentInfo, tokenId } = result;
if (action === 'update' || action === 'rollback') {
yield put({ type: 'setPromptText', payload: { promptText: `${action === 'update' ? '更新中...' : '回滚中'}` } });
const token = encrypt(tokenId);
yield call(
update, `${config.updateContextPath}/resource/${token}/${encodeURIComponent(deploymentInfo.uri)}`,
(event) => {
app.getStore().dispatch({ type: 'welcome/setPercent', payload: { progress: event.progress } });
},
);
}
} catch (e) {
console.log(e); // eslint-disable-line no-console
}
......
......@@ -39,6 +39,7 @@ export const update = async (url, cb) => {
});
});
}
console.info(Updater);
await Updater.update(url);
if (handle1) {
handle1.remove();
......
......@@ -8,6 +8,7 @@ import { List, InputItem, Toast, WhiteSpace, WingBlank } from 'antd-mobile';
import Icon from 'react-native-vector-icons/FontAwesome';
import { connect } from 'react-redux';
import { createAction } from '../../../utils';
import { currentDomain } from '../../../services/domain';
@connect(({ DSRInfoDetail }) => ({ DSRInfoDetail }))
class DSRInfoDetailScreen extends React.Component {
......@@ -17,7 +18,7 @@ class DSRInfoDetailScreen extends React.Component {
}
onEdit =() => {
// this.props.dispatch(createAction('DSRInfoDetail/setEnable')(true));
this.props.navigation.navigate('CameraPhoto', { pID: this.props.navigation.state.params, TableName: 'DangShiRenInfo' });
this.props.navigation.navigate('CameraPhoto', { pID: this.props.navigation.state.params.id, tableName: 'DangShiRenInfo' });
};
onSubmit = () => {
this.props.form.validateFields({ force: true }, (error, value) => {
......@@ -29,8 +30,14 @@ class DSRInfoDetailScreen extends React.Component {
});
};
goToViewPage =() => {
currentDomain()
.then((result) => {
console.info(result);
console.info(`rel://${result.path}/DangShiRenInfo/${this.props.navigation.state.params.id}`);
this.props.navigation.navigate('DSRInfoFileView', { usage: `rel://${result.path}/DangShiRenInfo/${this.props.navigation.state.params.id}` });
})
.catch(err => console.info(err));
// this.props.dispatch(createAction('DSRInfoDetail/setEnable')(true));
this.props.navigation.navigate('DSRInfoFileView', { usage: `rel://DangShiRenInfo/${this.props.navigation.state.params.id}` });
};
validateNoNull = (rule, value, callback) => {
if (value) {
......
......@@ -5,7 +5,8 @@ import { StackNavigator } from 'react-navigation';
import PeopleInfo from './peopelInfo';
import PeopleDetailInfo from './peopleDetailInfo';
import AddPeopleInfo from './addPeopleInfo';
import peopleDetailEditScreen from "./peopleDetailEditScreen";
import peopleDetailEditScreen from './peopleDetailEditScreen';
import FileViewList from '../dangshireninfo/fileViewList';
const peopleInfoErJiScreen = StackNavigator(
{
......@@ -21,6 +22,9 @@ const peopleInfoErJiScreen = StackNavigator(
peopleInfoDetailEdit: {
screen: peopleDetailEditScreen,
},
peopleInfoFileView: {
screen: FileViewList,
},
},
{
headerMode: 'none',
......
......@@ -3,10 +3,11 @@
*/
import React from 'react';
import { View, ScrollView } from 'react-native';
import { List, InputItem, WhiteSpace, WingBlank } from 'antd-mobile';
import { List, WhiteSpace, WingBlank } from 'antd-mobile';
import { connect } from 'react-redux';
import Icon from 'react-native-vector-icons/FontAwesome';
import { createAction } from '../../../utils';
import { currentDomain } from '../../../services/domain';
@connect(({ peopleInfo }) => ({ peopleInfo }))
class PeopleDetailInfo extends React.Component {
......@@ -18,6 +19,14 @@ class PeopleDetailInfo extends React.Component {
const { id } = this.props.navigation.state.params;
this.props.dispatch(createAction('peopleInfo/GoToPeopleDetailEditScreen')(id));
};
goToViewPage =() => {
currentDomain()
.then((result) => {
this.props.navigation.navigate('peopleInfoFileView', { usage: `rel://${result.path}/DangShiRenRenKouXinXi/${this.props.navigation.state.params.id}` });
})
.catch(err => console.info(err));
// this.props.dispatch(createAction('DSRInfoDetail/setEnable')(true));
};
render() {
const { detailData, metas } = this.props.peopleInfo;
return (
......@@ -25,14 +34,14 @@ class PeopleDetailInfo extends React.Component {
<WhiteSpace />
<WhiteSpace />
<WingBlank>
<View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
{/* <Icon.Button
name="edit"
<View style={{ flexDirection: 'row', justifyContent: 'flex-end' }}>
<Icon.Button
name="eye"
backgroundColor="#08BBF9"
onPress={this.onEdit}
onPress={this.goToViewPage}
>
编辑
</Icon.Button> */}
资料查看
</Icon.Button>
</View>
<WhiteSpace />
<List>
......
......@@ -13,13 +13,20 @@ class WelcomeScreen extends Component {
SplashScreen.hide();// 隐藏启动平
}
IsUpdate = () => {
if (this.props.welcome.promptText !== '') {
return <PercentageCircle radius={60} percent={this.props.welcome.percent} color="#3498db" />;
}
};
// 待改进,改成启动页,目前因为时间和技术的问题,搁置。wq write
render() {
return (
<View style={styles.container}>
<Text>wlecome</Text>
<Text>{this.props.welcome.promptText === '' ? 'welcome' : this.props.welcome.promptText}</Text>
<View>
<PercentageCircle radius={60} percent={this.props.welcome.percent} color="#3498db" />
{
this.IsUpdate()
}
</View>
</View>
);
......
......@@ -30,9 +30,10 @@ const config = {
productId: 'manager-app-sz',
footerText: '上海铂蓝信息科技有限公司',
contextPath: '',
updateContextPath: 'http://192.168.1.22:8080/app',
// apiContextPath: 'http://14.21.68.149:9089/test',
apiContextPath: 'http://192.168.1.22:8080/sz',
updateContextPath: 'http://14.21.68.149:9088/app',
apiContextPath: 'http://14.21.68.149:9087/sz01',
// updateContextPath: 'http://192.168.1.22:8080/app',
// apiContextPath: 'http://192.168.1.22:8080/sz',
defaultDateFormat,
defaultTimeFormat,
defaultDateTimeFormat,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论