lsw 1 vuosi sitten
vanhempi
commit
ce75edb85a

+ 3 - 0
admin-ui/src/views/system/user/profile/userInfo.vue

@@ -60,6 +60,9 @@ export default {
         if (valid) {
           updateUserProfile(this.user).then((response) => {
             this.$modal.msgSuccess('修改成功');
+            setTimeout(() => {
+              location.reload(true);
+            }, 1000);
           });
         }
       });

+ 53 - 53
admin-ui/src/views/work/statement/manage/index.vue

@@ -18,7 +18,7 @@
     <el-table :data="response.rows" border height="calc(100vh - 235px)">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column type="index" label="序号" align="center" width="80" />
-      <el-table-column label="结算单号" align="center" prop="num"/>
+      <el-table-column label="结算单号" align="center" prop="num" />
       <el-table-column label="结算批次" align="center" prop="batchName" />
       <el-table-column label="服务公司" align="center">
         <template slot-scope="scope">
@@ -43,7 +43,7 @@
       <el-table-column label="操作" align="center" width="200">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-view" @click="op('detail', scope.row)" v-hasPermi="['work:statement:manage']">详情</el-button>
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('submit', scope.row)" v-hasPermi="['work:statement:manage']" v-if="scope.row.audit === 0">提交审核</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('submit', scope.row)" v-hasPermi="['work:statement:manage']" v-if="scope.row.audit === 0||scope.row.audit ===3">提交审核</el-button>
           <el-button size="mini" type="text" icon="el-icon-circle-close" @click="op('cancel', scope.row)" v-hasPermi="['work:statement:manage']" v-if="scope.row.audit === 1">撤回</el-button>
         </template>
       </el-table-column>
@@ -56,62 +56,62 @@
 </template>
 
 <script>
-import record from './record';
-export default {
-  data() {
-    return {
-      showSearch: true,
-      response: {},
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        num: null,
-        batchName: null,
-        projectId: null,
-        orderByColumn: 's.id',
-        isAsc: 'desc'
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    getList() {
-      this.ajax({ url: '/work/statement/manage', data: this.queryParams }).then((response) => {
-        this.response = response;
-      });
+  import record from './record';
+  export default {
+    data() {
+      return {
+        showSearch: true,
+        response: {},
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          num: null,
+          batchName: null,
+          projectId: null,
+          orderByColumn: 's.id',
+          isAsc: 'desc'
+        }
+      };
     },
-    handleQuery() {
-      this.queryParams.pageNum = 1;
+    created() {
       this.getList();
     },
-    resetQuery() {
-      this.resetForm('queryForm');
-      this.handleQuery();
-    },
-    op(tag, row) {
-      const id = row.id;
-      if (tag == 'detail') {
-        this.iframe({ obj: record, param: { form: row, detail: true }, title: '查看结算单详情', width: '75%', height: '65%' });
-      }
-      if (tag == 'submit') {
-        this.$confirm('是否提交审核?', '警告', { type: 'warning' }).then(() => {
-          this.ajax({ url: '/work/statement/manage/submit/' + id, data: { id: id } }).then((response) => {
-            this.$modal.msgSuccess('提交成功');
-            this.getList();
-          });
+    methods: {
+      getList() {
+        this.ajax({ url: '/work/statement/manage', data: this.queryParams }).then((response) => {
+          this.response = response;
         });
-      }
-      if (tag == 'cancel') {
-        this.$confirm('是否撤销审核?', '警告', { type: 'warning' }).then(() => {
-          this.ajax({ url: '/work/statement/manage/cancel/' + id, data: { id: id } }).then((response) => {
-            this.$modal.msgSuccess('撤销成功');
-            this.getList();
+      },
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      resetQuery() {
+        this.resetForm('queryForm');
+        this.handleQuery();
+      },
+      op(tag, row) {
+        const id = row.id;
+        if (tag == 'detail') {
+          this.iframe({ obj: record, param: { form: row, detail: true }, title: '查看结算单详情', width: '75%', height: '65%' });
+        }
+        if (tag == 'submit') {
+          this.$confirm('是否提交审核?', '警告', { type: 'warning' }).then(() => {
+            this.ajax({ url: '/work/statement/manage/submit/' + id }).then((response) => {
+              this.$modal.msgSuccess('提交成功');
+              this.getList();
+            });
           });
-        });
+        }
+        if (tag == 'cancel') {
+          this.$confirm('是否撤销审核?', '警告', { type: 'warning' }).then(() => {
+            this.ajax({ url: '/work/statement/manage/cancel/' + id }).then((response) => {
+              this.$modal.msgSuccess('撤销成功');
+              this.getList();
+            });
+          });
+        }
       }
     }
-  }
-};
+  };
 </script>

+ 0 - 264
app/pages/clsd/my/index.vue

@@ -1,264 +0,0 @@
-<template>
-	<view class="main">
-		<view class="user" @click="go('info')">
-			<image :src="user.avatarUrl ? user.avatarUrl : '../../../static/favicon.png'" class="head"></image>
-			<view class="con" v-if="user.id">
-				<view class="nickName">微信用户</view>
-				<view class="welcome">欢迎使用爱就业咨询服务平台</view>
-			</view>
-			<view class="con" v-else>
-				<view class="nickName">你还没登录</view>
-				<view class="welcome">欢迎使用爱就业咨询服务平台</view>
-			</view>
-			<view class="icon">&#xe62b;</view>
-		</view>
-		<view class="rows">
-			<view class="row">
-				<view class="out">
-					<view class="int">
-						<view class="num">12</view>
-						<view class="desc">全职投递</view>
-					</view>
-				</view>
-			</view>
-			<view class="row">
-				<view class="out">
-					<view class="int">
-						<view class="num">0</view>
-						<view class="desc">兼职投递</view>
-					</view>
-				</view>
-			</view>
-			<view class="row">
-				<view class="out">
-					<view class="int">
-						<view class="num">0.00</view>
-						<view class="desc">账户余额</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!--政务服务-->
-		<view class="mtt">政务服务</view>
-		<view class="menu">
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #f44336">&#xe6be;</view>
-						<view class="title">失业登记</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #4581fb">&#xe64a;</view>
-						<view class="title">就业补贴</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #ff9800">&#xe73c;</view>
-						<view class="title">培训指导</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #00BCD4">&#xe998;</view>
-						<view class="title">法务服务</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="mtt">企业服务</view>
-		<view class="menu">
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #03A9F4">&#xe627;</view>
-						<view class="title">任务列表</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #3f51b5">&#xec5e;</view>
-						<view class="title">合同列表</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #795548">&#xe61d;</view>
-						<view class="title">交付进度</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #607d8b">&#xe60a;</view>
-						<view class="title">邀请列表</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="mtt">求职服务</view>
-		<view class="menu">
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #3f51b5">&#xe606;</view>
-						<view class="title">我的简历</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #4caf50">&#xe605;</view>
-						<view class="title">面试邀约</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #607d8b">&#xe68a;</view>
-						<view class="title">投递历史</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="mtt">更多服务</view>
-		<view class="menu">
-			<view class="cd" @click="go('index')">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #ffc107">&#xe725;</view>
-						<view class="title">结算广场</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #2196f3">&#xe680;</view>
-						<view class="title">设置</view>
-					</view>
-				</view>
-			</view>
-			<view class="cd">
-				<view class="out">
-					<view class="int">
-						<view class="icon" style="background-color: #FF5722">&#xe616;</view>
-						<view class="title">分享有利</view>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-	export default {
-		data() {
-			return {
-				ip: this.http.ip,
-				user: {}
-			};
-		},
-		onShow() {
-			/* 		 		   this.user = {
-				token: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImI0M2FmZjFmLWQ1YWMtNDk3Yi1hNDNiLTEwYTRiMmJmYmI4YiJ9.2IEItPPaVUBQw416MK9SA6OM_PE5WgcpvTdVf_-KJ8AQsI1J9PzMlRiA2ZCQT6gdHbY9l9wS1ZxQzdIxTx9PjQ'
-			};
-			uni.setStorageSync('user', this.user); */
-			if (this.hasLogin()) {
-				this.getUserInfo();
-			}
-		},
-		methods: {
-			getUserInfo() {
-				this.http.request({
-					url: '/app/user/info',
-					success: (res) => {
-						this.user = res.data.data;
-					}
-				});
-			},
-			go(url) {
-				if (this.hasLogin()) {
-					if (url == 'index') {
-						uni.navigateTo({ url: '/pages/index/index' });
-					}
-					if (url == 'auth') {
-						uni.navigateTo({ url: '/pages/auth/index' });
-					}
-					if (url == 'company' && this.user.isAuthentication === 1) {
-						uni.navigateTo({ url: '/pages/company/index' });
-					}
-					if (url == 'packages' && this.user.isCompany > 0 && this.user.isContract == 1) {
-						uni.switchTab({ url: '/pages/packages/index' });
-					}
-					if (url == 'contract' && this.user.isContract == 1) {
-						this.look();
-					}
-					if (url == 'info') {
-						uni.navigateTo({ url: '/pages/user/info' });
-					}
-				} else {
-					uni.navigateTo({ url: '/pages/user/login' });
-				}
-			},
-			//查看合同
-			look() {
-				uni.showLoading({ title: '正在打开合同...', mask: true });
-				uni.downloadFile({
-					url: this.user.isContract == 0 ? this.ip + this.contract.url : this.ip + '/app/contract/look',
-					header: { Authorization: this.getUser().token },
-					success: (res) => {
-						uni.openDocument({
-							filePath: res.tempFilePath,
-							showMenu: true,
-							success: (res) => {
-								uni.hideLoading();
-							}
-						});
-					},
-					fail: (res) => {
-						uni.hideLoading();
-					}
-				});
-			},
-			//退出登录
-			exit(url) {
-				uni.showModal({
-					title: '提示',
-					content: '确定退出登录?',
-					success: (res) => {
-						if (res.confirm) {
-							this.http.request({
-								url: this.http.urls.logout,
-								success: (res) => {
-									uni.removeStorageSync('user');
-									uni.$emit('top');
-									uni.switchTab({
-										url: '/pages/index/index'
-									});
-								}
-							});
-						}
-					}
-				});
-			}
-		}
-	};
-</script>
-<style lang="scss">
-	@import 'index.scss';
-</style>

+ 0 - 0
app/pages/clsd/index/index.scss → app/pages/index/index.scss


+ 0 - 0
app/pages/clsd/index/index.vue → app/pages/index/index.vue


+ 0 - 0
app/pages/clsd/job/company.vue → app/pages/job/company.vue


+ 0 - 0
app/pages/clsd/job/detail.vue → app/pages/job/detail.vue


+ 0 - 0
app/pages/clsd/job/full_time.vue → app/pages/job/full_time.vue


+ 0 - 0
app/pages/clsd/job/part_time.vue → app/pages/job/part_time.vue


+ 0 - 0
app/pages/clsd/serve/index.scss → app/pages/serve/index.scss


+ 0 - 0
app/pages/clsd/serve/index.vue → app/pages/serve/index.vue


+ 149 - 0
app/pages/statement/auth/index.vue

@@ -0,0 +1,149 @@
+<template>
+	<view>
+		<view class="tips" v-if="item.isAuthentication === 1">
+			<text class="icon">&#xe600;</text>
+			<text>实名认证成功</text>
+		</view>
+		<view class="tips" v-else>
+			<text class="icon">&#xe634;</text>
+			<text>为保障资金安全,用户需进行实名认证,请务必认真填写</text>
+		</view>
+		<view class="main">
+			<view v-if="step === 1">
+				<u-divider text="本人二代身份证"></u-divider>
+				<view class="r">
+					<view class="r50">
+						<card v-model="item.p1" text="点击拍摄/上传人像面" icon="&#xe690;" :read="item.isAuthentication === 1" side="face" @success="success"></card>
+					</view>
+					<view class="r50">
+						<card v-model="item.p2" text="点击拍摄/上传国徽面" icon="&#xe61e;" :read="item.isAuthentication === 1" side="back" @success="success"></card>
+					</view>
+				</view>
+			</view>
+			<view v-else>
+				<view class="form">
+					<view class="form_group">
+						<view class="lable re">姓名</view>
+						<input type="text" placeholder="请输入姓名" v-model="item.name" :disabled="true" />
+					</view>
+					<view class="form_group">
+						<view class="lable re">身份证</view>
+						<input type="text" placeholder="请输入身份证" v-model="item.idCard" :disabled="true" />
+					</view>
+				</view>
+				<view class="form" style="margin-top: 15px">
+					<view class="form_group">
+						<view class="lable re">手机号</view>
+						<input type="text" placeholder="请输入手机号" v-model="item.phone" />
+					</view>
+					<view class="form_group">
+						<view class="lable re">支付宝</view>
+						<input type="text" placeholder="请输入支付宝账号" v-model="item.alipay" />
+					</view>
+				</view>
+			</view>
+			<view class="form" v-if="item.isAuthentication === 1" style="margin-top: 10px">
+				<view class="form_group">
+					<view class="lable">姓名</view>
+					<input type="text" v-model="item.name" :disabled="true" />
+				</view>
+				<view class="form_group">
+					<view class="lable">身份证</view>
+					<input type="text" v-model="item.idCard" :disabled="true" />
+				</view>
+				<view class="form_group">
+					<view class="lable">有效期</view>
+					<input type="text" v-model="item.endDate" :disabled="true" />
+				</view>
+			</view>
+			<button class="btn" @click="next()" v-if="step === 1 && item.isAuthentication != 1">下一步</button>
+			<button class="btn" @click="save()" v-if="step === 2 && item.isAuthentication != 1">确定</button>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			step: 1,
+			item: {}
+		};
+	},
+	onLoad() {
+		this.getData();
+	},
+	methods: {
+		getData() {
+			this.http.request({
+				url: '/app/user/info',
+				data: this.item,
+				success: (res) => {
+					this.item = res.data.data;
+					if (this.item.isAuthentication === 1) {
+						uni.setNavigationBarTitle({ title: '我的认证' });
+					}
+				}
+			});
+		},
+		success(res) {
+			if (res.side == 'face') {
+				this.item.name = res.data.name;
+				this.item.idCard = res.data.num;
+				this.item.sex = res.data.sex;
+				this.item.address = res.data.address;
+				this.item.nationality = res.data.nationality;
+				this.item.birth = res.data.birth;
+			} else {
+				this.item.endDate = res.data.end_date;
+			}
+		},
+		next() {
+			if (!this.item.name) {
+				uni.showModal({ content: '请上传身份证人像面', showCancel: false });
+				return;
+			}
+			if (!this.item.endDate) {
+				uni.showModal({ content: '请上传身份证国徽面', showCancel: false });
+				return;
+			}
+			this.step = 2;
+		},
+		save() {
+			let rule = [
+				{ name: 'name', checkType: 'notnull', errorMsg: '请输入姓名' },
+				{ name: 'idCard', checkType: 'notnull', errorMsg: '请输入身份证' },
+				{ name: 'p1', checkType: 'notnull', errorMsg: '请上传身份证人面像' },
+				{ name: 'p2', checkType: 'notnull', errorMsg: '请上传身份证人徽面' },
+				{ name: 'phone', checkType: 'phone', errorMsg: '请请输入手机号' },
+				{ name: 'alipay', checkType: 'notnull', errorMsg: '请输入支付宝账号' }
+			];
+			if (!this.verify.check(this.item, rule)) {
+				uni.showModal({ content: this.verify.error, showCancel: false });
+				return false;
+			}
+			this.http.request({
+				url: '/app/user/auth',
+				data: this.item,
+				method: 'POST',
+				success: (res) => {
+					uni.showModal({
+						title: '提示',
+						content: '实名认证成功。',
+						showCancel: false,
+						success: (res) => {
+							uni.navigateBack();
+						}
+					});
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.btn {
+	margin-top: 30px;
+}
+</style>

+ 191 - 0
app/pages/statement/company/index.vue

@@ -0,0 +1,191 @@
+<template>
+	<view>
+		<view class="tab">
+			<u-tabs :list="tab" :current="current" @click="click"></u-tabs>
+		</view>
+		<view class="list">
+			<view class="item" v-for="(item, index) in list" :key="index">
+				<view class="title">{{ item.companyName }}</view>
+				<view class="op">
+					<text>{{ item.createTime }}</text>
+					<text class="add" @click="del(item)" v-if="current == 0">点击关联</text>
+					<text class="del" @click="del(item)" v-else>解除</text>
+				</view>
+			</view>
+			<view class="loading" v-if="loadMore"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+			<u-empty v-if="!loadMore && list.length == 0" text="尚未关联公司"></u-empty>
+		</view>
+		<view class="footer">
+			<view class="db"><button class="btn" @click="show = true">手动关联</button></view>
+		</view>
+		<u-action-sheet round="20" :actions="actions" @select="selectClick" cancelText="取消" :show="show" @close="show = false"></u-action-sheet>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			tab: [{ name: '企业大厅' }, { name: '我的关联' }],
+			show: false,
+			current: 0,
+			actions: [{ name: '扫码关联' }, { name: '搜索企业' }],
+			list: [],
+			param: { pageNum: 1, pageSize: 10 },
+			loadMore: true
+		};
+	},
+	onLoad(e) {
+		this.getData();
+		uni.$on('company', (res) => {
+			this.refresh();
+		});
+	},
+	methods: {
+		getData() {
+			this.http.request({
+				url: this.current == 0 ? '/app/company/list' : '/app/relate/list',
+				data: this.param,
+				loading: 'false',
+				success: (res) => {
+					this.loadMore = res.data.pages > this.param.pageNum ? true : false;
+					res.data.rows.forEach((item) => {
+						item.createTime = uni.$u.timeFrom(Date.parse(item.createTime));
+						this.list.push(item);
+					});
+				}
+			});
+		},
+		click(e) {
+			this.current = e.index;
+			this.param.state = e.index === 1 ? 0 : 1;
+			this.refresh();
+		},
+		selectClick(e) {
+			if (e.name == '搜索企业') {
+				uni.navigateTo({ url: '/pages/company/search' });
+			} else {
+				uni.scanCode({
+					success: (res) => {
+						this.http.request({
+							url: '/app/relate/add',
+							data: { companyId: res.result, way: '扫码关联' },
+							method: 'POST',
+							success: (res) => {
+								uni.showModal({
+									title: '提示',
+									content: '关联成功',
+									showCancel: false,
+									success: (res) => {
+										this.refresh();
+									}
+								});
+							}
+						});
+					},
+					fail: (res) => {}
+				});
+			}
+		},
+		del(item) {
+			uni.showModal({
+				title: '提示',
+				content: this.current == 0 ? '确定关联该企业?' : '确定解除该企业关联?',
+				success: (res) => {
+					if (res.confirm) {
+						if (this.current == 0) {
+							this.http.request({
+								url: '/app/relate/add',
+								data: { companyId: item.id, way: '手动关联' },
+								method: 'POST',
+								success: (res) => {
+									uni.showModal({
+										title: '提示',
+										content: '关联成功',
+										showCancel: false,
+										success: (res) => {
+											this.current = 1;
+											this.refresh();
+										}
+									});
+								}
+							});
+						} else {
+							this.http.request({
+								url: '/app/relate/remove',
+								data: { companyId: item.companyId },
+								method: 'POST',
+								success: (res) => {
+									uni.showToast({ title: '解除成功' });
+									this.list.splice(this.list.indexOf(item), 1);
+								}
+							});
+						}
+					}
+				}
+			});
+		},
+		//刷新数据
+		refresh() {
+			this.loadMore = true;
+			this.param.pageNum = 1;
+			this.list = [];
+			this.getData();
+		}
+	},
+	//下拉刷新
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.refresh();
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	//上拉加载
+	onReachBottom() {
+		if (this.loadMore) {
+			this.param.pageNum++;
+			this.getData();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.list {
+	padding: 10px 10px 90px 10px;
+	.item {
+		background-color: white;
+		padding: 15px;
+		border-radius: 5px;
+		margin-bottom: 10px;
+		.title {
+			padding-bottom: 10px;
+		}
+		.op {
+			border-top: 1px solid $line;
+			padding-top: 10px;
+			color: #676767;
+			font-size: 14px;
+			.del {
+				float: right;
+				color: #f44336;
+			}
+			.add {
+				float: right;
+				color: $main-color;
+			}
+		}
+	}
+}
+.footer {
+	position: fixed;
+	width: 100%;
+	bottom: 0px;
+	padding-bottom: 13px;
+	background-color: white;
+	border-top: 1px solid $line;
+	.db {
+		padding: 15px 35px 10px 35px;
+	}
+}
+</style>

+ 107 - 0
app/pages/statement/company/search.vue

@@ -0,0 +1,107 @@
+<template>
+	<view>
+		<view class="search"><u-search placeholder="企业名称" v-model="companyName" :showAction="false" @search="getData()" @clear="clear()"></u-search></view>
+		<view class="list">
+			<view class="item" v-for="(item, index) in list" :key="index" @click="detail(item)">
+				<text>{{ item.companyName }}</text>
+				<text class="icon">&#xe62b;</text>
+			</view>
+			<view class="loading" v-if="loadMore"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+			<u-empty v-if="!loadMore && list.length == 0"></u-empty>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			list: [],
+			companyName: '',
+			param: { pageNum: 1, pageSize: 10 },
+			loadMore: false
+		};
+	},
+	watch: {
+		companyName(val) {
+			if (val.length > 3) {
+				this.refresh();
+			}
+		}
+	},
+	methods: {
+		getData() {
+			this.http.request({
+				url: '/app/company/list',
+				data: { companyName: this.companyName },
+				success: (res) => {
+					this.loadMore = res.data.pages > this.param.pageNum ? true : false;
+					res.data.rows.forEach((item) => {
+						this.list.push(item);
+					});
+				}
+			});
+		},
+		detail(item) {
+			uni.showModal({
+				title: '提示',
+				content: '确定关联该企业?',
+				success: (res) => {
+					if (res.confirm) {
+						this.http.request({
+							url: '/app/relate/add',
+							data: { companyId: item.id, way: '手动关联' },
+							method: 'POST',
+							success: (res) => {
+								uni.showModal({
+									title: '提示',
+									content: '关联成功',
+									showCancel: false,
+									success: (res) => {
+										uni.$emit('company');
+										uni.navigateBack();
+									}
+								});
+							}
+						});
+					}
+				}
+			});
+		},
+		clear() {
+			this.list = [];
+		},
+		//刷新数据
+		refresh() {
+			this.loadMore = true;
+			this.param.pageNum = 1;
+			this.list = [];
+			this.getData();
+		}
+	},
+	//上拉加载
+	onReachBottom() {
+		if (this.loadMore) {
+			this.param.pageNum++;
+			this.getData();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.search {
+	padding: 12px 20px 12px 20px;
+	background-color: white;
+}
+.list {
+	.item {
+		padding: 17px;
+		background-color: white;
+		margin-top: 10px;
+		.icon {
+			float: right;
+		}
+	}
+}
+</style>

+ 264 - 0
app/pages/statement/index/index.vue

@@ -0,0 +1,264 @@
+<template>
+	<view class="main">
+		<!--轮播图-->
+		<view class="banner">
+			<u-swiper circular :radius="5" :indicator="true" keyName="pic" :list="bannerList" :height="150" class="uni-swiper" @click="click"></u-swiper>
+		</view>
+		<!--通知公告-->
+		<view class="notice">
+			<u-notice-bar color="#848484" :text="noticeList" :step="true" direction="column" mode="link" bgColor="white" speed="300" url="/pages/notice/index"></u-notice-bar>
+		</view>
+		<view class="flow">
+			<!--实名认证-->
+			<view class="item" @click="go('auth')">
+				<view class="out">
+					<view class="int">
+						<view class="icon tb" style="color: rgb(72, 154, 253)">&#xe600;</view>
+						<view class="con">
+							<view class="bt">实名认证</view>
+							<view class="zt">{{ !user.isAuthentication || user.isAuthentication == 0 ? '尚未提交资料' : '已认证' }}</view>
+						</view>
+						<view class="state" v-if="!user.isAuthentication || user.isAuthentication === 0">
+							<view class="go">去认证</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<!--关联企业-->
+			<view class="item" @click="go('company')">
+				<view class="out">
+					<view class="int">
+						<view class="icon tb" style="color: rgb(250, 178, 46)">&#xe623;</view>
+						<view class="con">
+							<view class="bt">关联企业</view>
+							<view class="zt">{{ !user.isCompany || user.isCompany == 0 ? '尚未关联企业' : '已关联' }} {{ user.isCompany > 0 ? user.isCompany + '家' : '' }}</view>
+						</view>
+						<view class="state" v-if="!user.isCompany || user.isCompany == 0">
+							<view class="go" :style="{ backgroundColor: user.isAuthentication === 1 ? '#5a7afc' : '#d6d6d6' }">去关联</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<!--电子签约-->
+			<view class="item" @click="go('contract')">
+				<view class="out">
+					<view class="int">
+						<view class="icon tb" style="color: rgb(255, 87, 34)">&#xe6ed;</view>
+						<view class="con">
+							<view class="bt">电子签约</view>
+							<view class="zt">{{ !user.isContract || user.isContract == 0 ? '尚未签约' : '已签约' }}</view>
+						</view>
+						<view class="state">
+							<view class="go" :style="{ backgroundColor: user.isCompany > 0 ? '#5a7afc' : '#d6d6d6' }" v-if="!user.isContract || user.isContract == 0">去签约</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<!--开始接包-->
+			<view class="item" @click="go('packages')">
+				<view class="out">
+					<view class="int">
+						<view class="icon tb" style="color: rgb(250, 83, 118)">&#xe604;</view>
+						<view class="con">
+							<view class="bt">进入结算</view>
+							<view class="zt">{{ !user.isCompany || user.isCompany == 0 ? '请先签约' : '开始' }}</view>
+						</view>
+						<view class="state">
+							<view class="go" :style="{ backgroundColor: user.isCompany > 0 && user.isContract == 1 ? '#5a7afc' : '#d6d6d6' }" v-if="!user.isCompany || user.isCompany == 0 || user.isContract == 0">进入</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<u-action-sheet round="20" :actions="actions" @select="selectClick" cancelText="取消" :show="show" @close="show = false"></u-action-sheet>
+		<signature ref="sig" @sign="sign"></signature>
+	</view>
+</template>
+<script>
+	export default {
+		data() {
+			return {
+				ip: this.http.ip,
+				user: {},
+				bannerList: [],
+				noticeList: [],
+				contract: {},
+				show: false,
+				actions: [{ name: '查看合同' }, { name: '去签字' }]
+			};
+		},
+		onShow() {
+			if (this.hasLogin()) {
+				this.getUserInfo();
+			}
+		},
+		onLoad() {
+			this.getData();
+		},
+		methods: {
+			getUserInfo() {
+				this.http.request({
+					url: '/app/user/info',
+					success: (res) => {
+						this.user = res.data.data;
+					}
+				});
+			},
+			getData() {
+				this.http.request({
+					url: '/app/home/index',
+					success: (res) => {
+						this.contract = res.data.data.contract;
+						this.bannerList = res.data.data.bannerList;
+						res.data.data.noticeList.forEach((item) => {
+							this.noticeList.push(item.title);
+						});
+					}
+				});
+			},
+			go(url) {
+				if (this.hasLogin()) {
+					if (url == 'auth') {
+						uni.navigateTo({ url: '/pages/auth/index' });
+					}
+					if (url == 'company' && this.user.isAuthentication === 1) {
+						uni.navigateTo({ url: '/pages/company/index' });
+					}
+					if (url == 'packages' && this.user.isCompany > 0 && this.user.isContract == 1) {
+						uni.navigateTo({ url: '/pages/packages/index' });
+					}
+					if (url == 'contract' && this.user.isContract == 1) {
+						this.look();
+					}
+					if (url == 'contract' && this.user.isContract == 0) {
+						this.show = true;
+					}
+				} else {
+					uni.navigateTo({ url: '/pages/user/login' });
+				}
+			},
+			selectClick(e) {
+				if (e.name == '查看合同') {
+					this.look();
+				} else {
+					this.$refs.sig.getSyncSignature();
+				}
+			},
+			//查看合同
+			look() {
+				uni.showLoading({ title: '正在打开合同...', mask: true });
+				uni.downloadFile({
+					url: this.user.isContract == 0 ? this.ip + this.contract.url : this.ip + '/app/contract/look',
+					header: { Authorization: this.getUser().token },
+					success: (res) => {
+						uni.openDocument({
+							filePath: res.tempFilePath,
+							showMenu: true,
+							success: (res) => {
+								uni.hideLoading();
+							},
+							fail: (res) => {
+								uni.hideLoading();
+								uni.showModal({ title: '提示', content: '打开合同失败', showCancel: false });
+							}
+						});
+					},
+					fail: (res) => {
+						uni.hideLoading();
+					}
+				});
+			},
+			//电子签名
+			sign(val) {
+				this.http.request({
+					url: '/app/contract/add',
+					data: { contractId: this.contract.id, url: val },
+					method: 'POST',
+					success: (res) => {
+						uni.showModal({
+							title: '提示',
+							content: '签约成功',
+							showCancel: false,
+							success: (res) => {
+								this.getUserInfo();
+							}
+						});
+					}
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.main {
+		padding: 5px 15px 15px 15px;
+	}
+	.banner {}
+	.notice {
+		margin-top: 10px;
+		margin-bottom: -10px;
+	}
+	.flow {
+		padding-top: 20px;
+		.title {
+			font-size: 15px;
+			margin-bottom: 10px;
+		}
+		.item {
+			border-radius: 10px;
+			overflow: hidden;
+			float: left;
+			width: 50%;
+			.out {
+				padding: 5px;
+				.int {
+					padding: 15px;
+					background-color: white;
+					overflow: hidden;
+					border-radius: 9px;
+					text-align: center;
+					.tb {
+						margin: 0 auto;
+						width: 40px;
+						height: 40px;
+						padding: 10px;
+						line-height: 39px;
+						color: $main-color;
+						box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+						border-radius: 50%;
+						font-size: 27px;
+					}
+					.con {
+						padding-top: 8px;
+						.bt {
+							font-size: 18px;
+						}
+						.zt {
+							font-size: 13px;
+							padding-top: 5px;
+							color: #909090;
+						}
+					}
+					.state {
+						padding-top: 11px;
+						.zt {
+							font-size: 13px;
+							color: $main-color;
+						}
+						.icon {
+							color: #909090;
+						}
+						.go {
+							padding: 5px 12px;
+							font-size: 14px;
+							background-color: #5a7afc;
+							color: white;
+							border-radius: 20px;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 184 - 0
app/pages/statement/packages/index.vue

@@ -0,0 +1,184 @@
+<template>
+	<view class="main">
+		<view class="tab">
+			<u-tabs :list="tab" :current="current" @click="click"></u-tabs>
+		</view>
+		<view class="list">
+			<view class="item" v-for="(item, index) in list" :key="index">
+				<view class="it">
+					<view class="lable">项目名称</view>
+					<view class="desc">{{ item.projectName }}</view>
+				</view>
+				<view class="it">
+					<view class="lable">发包公司</view>
+					<view class="desc">{{ item.companyName }}</view>
+				</view>
+				<view class="it">
+					<view class="lable">项目周期</view>
+					<view class="desc">{{ item.startDate }} 至 {{ item.finishDate }}</view>
+				</view>
+				<view class="it">
+					<view class="lable">结算日期</view>
+					<view class="desc">{{ item.balanceDate }}</view>
+				</view>
+				<view class="op">
+					<text>{{ item.createTime }}</text>
+					<text class="add" @click="add(item)" v-if="current == 0">接任务</text>
+					<text class="add" @click="voucher(item)" v-if="current == 1 && item.audit == 0">上传凭证</text>
+					<text class="add" @click="voucher(item)" v-if="current == 1 && item.audit == 1">已上传凭证</text>
+					<text class="add" @click="voucher(item)" v-if="current == 1 && item.audit == 3" style="background-color: #f44336">凭证驳回,请重新上传</text>
+					<text v-if="current == 2" class="state">已完成</text>
+				</view>
+			</view>
+			<view class="loading" v-if="loadMore"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+			<u-empty v-if="!loadMore && list.length == 0"></u-empty>
+		</view>
+		<voucher ref="voucher" @success="success()"></voucher>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			show: false,
+			current: 0,
+			tab: [{ name: '待接任务' }, { name: '已接任务' }, { name: '完成任务' }],
+			list: [],
+			param: { pageNum: 1, pageSize: 10, state: 0 },
+			loadMore: true
+		};
+	},
+	onLoad() {
+		this.getData();
+	},
+	methods: {
+		getData() {
+			this.http.request({
+				url: this.current === 0 ? '/app/project/list' : '/app/packages/list',
+				data: this.param,
+				loading: 'false',
+				success: (res) => {
+					this.loadMore = res.data.pages > this.param.pageNum ? true : false;
+					res.data.rows.forEach((item) => {
+						item.createTime = uni.$u.timeFrom(Date.parse(item.createTime));
+						this.list.push(item);
+					});
+				}
+			});
+		},
+		click(e) {
+			this.current = e.index;
+			this.param.state = e.index === 1 ? 0 : 1;
+			this.refresh();
+		},
+		add(item) {
+			uni.showModal({
+				title: '提示',
+				content: '确定接包?',
+				success: (res) => {
+					if (res.confirm) {
+						this.http.request({
+							url: '/app/packages/add',
+							data: { projectId: item.id, companyId: item.companyId },
+							method: 'POST',
+							success: (res) => {
+								uni.showModal({
+									title: '提示',
+									content: '接包成功',
+									showCancel: false,
+									success: (res) => {
+										this.refresh();
+									}
+								});
+							}
+						});
+					}
+				}
+			});
+		},
+		//上传凭证
+		voucher(item) {
+			this.$refs.voucher.init(JSON.parse(JSON.stringify(item)));
+		},
+		success() {
+			this.refresh();
+		},
+		//刷新数据
+		refresh() {
+			this.loadMore = true;
+			this.param.pageNum = 1;
+			this.list = [];
+			this.getData();
+		}
+	},
+	//下拉刷新
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.refresh();
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	//上拉加载
+	onReachBottom() {
+		if (this.loadMore) {
+			this.param.pageNum++;
+			this.getData();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.main {
+	padding: 0px 15px 10px 15px;
+}
+.tab {
+	background-color: white;
+	border-radius: 7px;
+	padding-bottom: 10px;
+}
+.list {
+	padding-top: 13px;
+	.item {
+		background-color: white;
+		padding: 15px;
+		border-radius: 5px;
+		margin-bottom: 10px;
+		.it {
+			overflow: hidden;
+			padding: 7px 0px 7px 0px;
+			.lable {
+				float: left;
+				font-size: 14px;
+				color: #787878;
+			}
+			.desc {
+				float: right;
+				font-size: 14px;
+				width: 60%;
+				text-align: right;
+			}
+		}
+		.op {
+			border-top: 1px solid $line;
+			padding-top: 10px;
+			color: #676767;
+			font-size: 14px;
+			.add {
+				float: right;
+				color: white;
+				background-color: $main-color;
+				padding: 3px 20px;
+				border-radius: 20px;
+			}
+			.state {
+				float: right;
+			}
+		}
+		.cz {
+			float: right;
+		}
+	}
+}
+</style>

+ 0 - 0
app/pages/clsd/my/index.scss → app/pages/user/index.scss


+ 236 - 135
app/pages/user/index.vue

@@ -1,163 +1,264 @@
 <template>
 	<view class="main">
 		<view class="user" @click="go('info')">
-			<image :src="user.avatarUrl ? user.avatarUrl : '../../static/favicon.png'" class="head"></image>
+			<image :src="user.avatarUrl ? user.avatarUrl : '../../../static/favicon.png'" class="head"></image>
 			<view class="con" v-if="user.id">
 				<view class="nickName">微信用户</view>
-				<view class="welcome">欢迎使用承揽时代</view>
+				<view class="welcome">欢迎使用爱就业咨询服务平台</view>
 			</view>
 			<view class="con" v-else>
 				<view class="nickName">你还没登录</view>
-				<view class="welcome">欢迎使用承揽时代</view>
+				<view class="welcome">欢迎使用爱就业咨询服务平台</view>
 			</view>
 			<view class="icon">&#xe62b;</view>
 		</view>
-		<view class="cmd">
-			<view class="s_item" @click="go('auth')">
-				<text class="icon ic">&#xe600;</text>
-				<text class="title">我的认证</text>
-				<text class="icon arrow">&#xe62b;</text>
-			</view>
-			<view class="s_item" @click="go('contract')">
-				<text class="icon ic">&#xe6ed;</text>
-				<text class="title">我的签约</text>
-				<text class="icon arrow">&#xe62b;</text>
-			</view>
-			<view class="s_item" @click="go('company')">
-				<text class="icon ic">&#xe623;</text>
-				<text class="title">关联企业</text>
-				<text class="icon arrow">&#xe62b;</text>
-			</view>
-			<view class="s_item" @click="go('packages')">
-				<text class="icon ic">&#xe604;</text>
-				<text class="title">我的承揽</text>
-				<text class="icon arrow">&#xe62b;</text>
+		<view class="rows">
+			<view class="row">
+				<view class="out">
+					<view class="int">
+						<view class="num">12</view>
+						<view class="desc">全职投递</view>
+					</view>
+				</view>
+			</view>
+			<view class="row">
+				<view class="out">
+					<view class="int">
+						<view class="num">0</view>
+						<view class="desc">兼职投递</view>
+					</view>
+				</view>
+			</view>
+			<view class="row">
+				<view class="out">
+					<view class="int">
+						<view class="num">0.00</view>
+						<view class="desc">账户余额</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!--政务服务-->
+		<view class="mtt">政务服务</view>
+		<view class="menu">
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #f44336">&#xe6be;</view>
+						<view class="title">失业登记</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #4581fb">&#xe64a;</view>
+						<view class="title">就业补贴</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #ff9800">&#xe73c;</view>
+						<view class="title">培训指导</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #00BCD4">&#xe998;</view>
+						<view class="title">法务服务</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="mtt">企业服务</view>
+		<view class="menu">
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #03A9F4">&#xe627;</view>
+						<view class="title">任务列表</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #3f51b5">&#xec5e;</view>
+						<view class="title">合同列表</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #795548">&#xe61d;</view>
+						<view class="title">交付进度</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #607d8b">&#xe60a;</view>
+						<view class="title">邀请列表</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="mtt">求职服务</view>
+		<view class="menu">
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #3f51b5">&#xe606;</view>
+						<view class="title">我的简历</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #4caf50">&#xe605;</view>
+						<view class="title">面试邀约</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #607d8b">&#xe68a;</view>
+						<view class="title">投递历史</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="mtt">更多服务</view>
+		<view class="menu">
+			<view class="cd" @click="go('index')">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #ffc107">&#xe725;</view>
+						<view class="title">结算广场</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #2196f3">&#xe680;</view>
+						<view class="title">设置</view>
+					</view>
+				</view>
+			</view>
+			<view class="cd">
+				<view class="out">
+					<view class="int">
+						<view class="icon" style="background-color: #FF5722">&#xe616;</view>
+						<view class="title">分享有利</view>
+					</view>
+				</view>
 			</view>
 		</view>
-		<!-- <button class="btn exit" @click="exit()" v-if="user.id">退出登录</button> -->
 	</view>
 </template>
 <script>
-export default {
-	data() {
-		return {
-			ip: this.http.ip,
-			user: {}
-		};
-	},
-	onShow() {
-/* 		 		   this.user = {
-			token: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImI0M2FmZjFmLWQ1YWMtNDk3Yi1hNDNiLTEwYTRiMmJmYmI4YiJ9.2IEItPPaVUBQw416MK9SA6OM_PE5WgcpvTdVf_-KJ8AQsI1J9PzMlRiA2ZCQT6gdHbY9l9wS1ZxQzdIxTx9PjQ'
-		};
-		uni.setStorageSync('user', this.user); */
-		if (this.hasLogin()) {
-			this.getUserInfo();
-		}
-	},
-	methods: {
-		getUserInfo() {
-			this.http.request({
-				url: '/app/user/info',
-				success: (res) => {
-					this.user = res.data.data;
-				}
-			});
+	export default {
+		data() {
+			return {
+				ip: this.http.ip,
+				user: {}
+			};
 		},
-		go(url) {
+		onShow() {
+			/* 		 		   this.user = {
+				token: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImI0M2FmZjFmLWQ1YWMtNDk3Yi1hNDNiLTEwYTRiMmJmYmI4YiJ9.2IEItPPaVUBQw416MK9SA6OM_PE5WgcpvTdVf_-KJ8AQsI1J9PzMlRiA2ZCQT6gdHbY9l9wS1ZxQzdIxTx9PjQ'
+			};
+			uni.setStorageSync('user', this.user); */
 			if (this.hasLogin()) {
-				if (url == 'auth') {
-					uni.navigateTo({ url: '/pages/auth/index' });
-				}
-				if (url == 'company' && this.user.isAuthentication === 1) {
-					uni.navigateTo({ url: '/pages/company/index' });
-				}
-				if (url == 'packages' && this.user.isCompany > 0 && this.user.isContract == 1) {
-					uni.switchTab({ url: '/pages/packages/index' });
-				}
-				if (url == 'contract' && this.user.isContract == 1) {
-					this.look();
-				}
-				if (url == 'info') {
-					uni.navigateTo({ url: '/pages/user/info' });
-				}
-			} else {
-				uni.navigateTo({ url: '/pages/user/login' });
+				this.getUserInfo();
 			}
 		},
-		//查看合同
-		look() {
-			uni.showLoading({ title: '正在打开合同...', mask: true });
-			uni.downloadFile({
-				url: this.user.isContract == 0 ? this.ip + this.contract.url : this.ip + '/app/contract/look',
-				header: { Authorization: this.getUser().token },
-				success: (res) => {
-					uni.openDocument({
-						filePath: res.tempFilePath,
-						showMenu: true,
-						success: (res) => {
-							uni.hideLoading();
-						}
-					});
-				},
-				fail: (res) => {
-					uni.hideLoading();
+		methods: {
+			getUserInfo() {
+				this.http.request({
+					url: '/app/user/info',
+					success: (res) => {
+						this.user = res.data.data;
+					}
+				});
+			},
+			go(url) {
+				if (this.hasLogin()) {
+					if (url == 'index') {
+						uni.navigateTo({ url: '/pages/index/index' });
+					}
+					if (url == 'auth') {
+						uni.navigateTo({ url: '/pages/auth/index' });
+					}
+					if (url == 'company' && this.user.isAuthentication === 1) {
+						uni.navigateTo({ url: '/pages/company/index' });
+					}
+					if (url == 'packages' && this.user.isCompany > 0 && this.user.isContract == 1) {
+						uni.switchTab({ url: '/pages/packages/index' });
+					}
+					if (url == 'contract' && this.user.isContract == 1) {
+						this.look();
+					}
+					if (url == 'info') {
+						uni.navigateTo({ url: '/pages/user/info' });
+					}
+				} else {
+					uni.navigateTo({ url: '/pages/user/login' });
 				}
-			});
-		},
-		//退出登录
-		exit(url) {
-			uni.showModal({
-				title: '提示',
-				content: '确定退出登录?',
-				success: (res) => {
-					if (res.confirm) {
-						this.http.request({
-							url: this.http.urls.logout,
+			},
+			//查看合同
+			look() {
+				uni.showLoading({ title: '正在打开合同...', mask: true });
+				uni.downloadFile({
+					url: this.user.isContract == 0 ? this.ip + this.contract.url : this.ip + '/app/contract/look',
+					header: { Authorization: this.getUser().token },
+					success: (res) => {
+						uni.openDocument({
+							filePath: res.tempFilePath,
+							showMenu: true,
 							success: (res) => {
-								uni.removeStorageSync('user');
-								uni.$emit('top');
-								uni.switchTab({
-									url: '/pages/index/index'
-								});
+								uni.hideLoading();
 							}
 						});
+					},
+					fail: (res) => {
+						uni.hideLoading();
 					}
-				}
-			});
+				});
+			},
+			//退出登录
+			exit(url) {
+				uni.showModal({
+					title: '提示',
+					content: '确定退出登录?',
+					success: (res) => {
+						if (res.confirm) {
+							this.http.request({
+								url: this.http.urls.logout,
+								success: (res) => {
+									uni.removeStorageSync('user');
+									uni.$emit('top');
+									uni.switchTab({
+										url: '/pages/index/index'
+									});
+								}
+							});
+						}
+					}
+				});
+			}
 		}
-	}
-};
+	};
 </script>
 <style lang="scss">
-.main {
-	padding: 20px;
-}
-.user {
-	overflow: hidden;
-	image {
-		float: left;
-		width: 60px;
-		height: 60px;
-		border-radius: 50%;
-	}
-	.con {
-		float: left;
-		padding-left: 15px;
-		.nickName {
-			padding-top: 5px;
-		}
-		.welcome {
-			font-size: 13px;
-			padding-top: 5px;
-			color: #989898;
-		}
-	}
-	.icon {
-		float: right;
-		margin-top: 14px;
-	}
-}
-.exit {
-	margin-top: 20px;
-}
-</style>
+	@import 'index.scss';
+</style>

+ 1 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/News.java

@@ -38,6 +38,7 @@ public class News{
     @ApiModelProperty(value = "简介")
     private String brief;
 
+    @NotBlank(message = "内容不能为空")
     @ApiModelProperty(value = "内容")
     private String contents;
 

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/StatementServiceImpl.java

@@ -229,7 +229,7 @@ public class StatementServiceImpl extends ServiceImpl<StatementMapper, Statement
         if (statement == null || !statement.getCompanyId().equals(SecurityUtils.getLoginUser().getUser().getCompanyId())) {
             return AjaxResult.error("结算单不存在或非法操作");
         }
-        if (statement.getAudit() != 0) {
+        if (statement.getAudit() != 0 && statement.getAudit() != 3) {
             return AjaxResult.error("不可操作");
         }
         statement.setAudit(1);