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

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

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