Commit 149f135a authored by 柳 佳乐's avatar 柳 佳乐
Browse files

20221115

parent 2423ec69
......@@ -101,9 +101,17 @@ export const componentMap = {
'spendreimbursementList_Update': () => import('@/views/Spendreimbursement/spendreimbursementListUpdate.vue').then(m => m.default),
// 公司文件模块
'company_file_list':()=>import('@/views/companyFile/companyFileList').then(m=>m.default),
'self_file_list':()=>import('@/views/companyFile/selfFileList').then(m=>m.default),
'company_file_add':()=>import('@/views/companyFile/companyFileAdd').then(m=>m.default),
'company_file_list': () => import('@/views/companyFile/companyFileList').then(m => m.default),
'self_file_list': () => import('@/views/companyFile/selfFileList').then(m => m.default),
'company_file_add': () => import('@/views/companyFile/companyFileAdd').then(m => m.default),
//公司资产
'assets_List': () => import('@/views/assets/assetslist').then(m => m.default),
'assets_Upedata': () => import('@/views/assets/assetsUpedata').then(m => m.default),
'administration_lsit': () => import('@/views/assets/administration/administrationlist').then(m => m.default),
'administration_Update': () => import('@/views/assets/administration/administrationUpdate').then(m => m.default),
'administration_select': () => import('@/views/assets/administration/administrationselect').then(m => m.default),
'assetuse_list': () => import('@/views/assets/assetuse/assetuselist').then(m => m.default),
}
/**
......
......@@ -113,9 +113,9 @@ export function pathValid (rule, value, callback) {
}
}
//定义金额校验
//定义金额校验
export function money(rule, value, callback) {
let RegExp = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/;
let RegExp = /(^([-]?)[1-9]([0-9]+)?(\.[0-9]{1,6})?$)|(^([-]?)(0){1}$)|(^([-]?)[0-9]\.[0-9]([0-9])?$)/;
if (RegExp.test(value)) {
callback();
} else {
......
......@@ -12,11 +12,7 @@
<el-col :span="6">
<div class="grid-content bg-purple">
<!-- projectId -->
<el-form-item
label="报销项目"
:label-width="formLabelWidth"
prop="projectId"
>
<el-form-item label="报销项目" prop="projectId">
<el-select
placeholder="请选择"
v-model="spendreimbursementform.projectId"
......@@ -669,16 +665,13 @@ export default {
let time = this.timestampToTime(val);
this.spendreimbursementform.applyTime = time;
}
},
// 计算天数
}, // 计算天数
DateDiff(sDate1, sDate2) {
//sDate1和sDate2是2006-12-18格式
var aDate, oDate1, oDate2, iDays;
aDate = sDate1.split("-");
oDate1 = new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]); //转换为12-18-2006格式
aDate = sDate2.split("-");
oDate2 = new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]);
let oDate1, oDate2, iDays;
oDate1 = new Date(sDate1);
oDate2 = new Date(sDate2);
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
console.log(iDays);
return iDays;
},
//开始结束 时间的处理 计算天数
......
<template>
<div class="container">
<!-- 添加按钮 -->
<div class="total_top">
<el-button
type="success"
icon="el-icon-circle-plus"
@click="insertreimebursementItem"
>申请出差报销</el-button
>
</div>
<!-- 表格内容区域 -->
<div class="total_content">
<el-table :data="tableData" style="width: 100%" border>
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left" class="demo-table-expand">
<el-descriptions
title="报销详情"
:column="5"
border
style="width: 100%"
>
<el-descriptions-item label="组长审批状态" :span="2">
<el-tag
:type="
props.row.tripStatus == 0
? 'info'
: props.row.tripStatus == 2
? 'danger'
: 'success'
"
>
{{
props.row.tripStatus == 0
? "待审批"
: props.row.tripStatus == 2
? "驳回"
: "通过"
}}
</el-tag>
</el-descriptions-item>
<el-descriptions-item
label="组长审批时间"
:span="3"
:formatter="timestampToTime"
>{{ props.row.headmanTime }}</el-descriptions-item
>
<el-descriptions-item label="组长驳回缘由" :span="5">{{
props.row.headmanRefute || ""
}}</el-descriptions-item>
<el-descriptions-item label="财务审批状态" :span="2">
<el-tag
:type="
props.row.tripStatus == 4
? 'danger'
: props.row.tripStatus == 3
? 'success'
: 'info'
"
>
{{
props.row.tripStatus == 4
? "驳回"
: props.row.tripStatus == 3
? "通过"
: "待审批"
}}
</el-tag>
</el-descriptions-item>
<el-descriptions-item
label="财务审批时间"
:span="3"
:formatter="timestampToTime"
>{{ props.row.financeTime }}</el-descriptions-item
>
<el-descriptions-item label="财务驳回缘由" :span="5">{{
props.row.finaceRefute || ""
}}</el-descriptions-item>
<el-descriptions-item label="查看详情" :span="5">
<el-button
@click="getdetails(props.row)"
type="primary"
style="margin: 5px"
size="mini"
>查看详情</el-button
>
</el-descriptions-item>
</el-descriptions>
</el-form>
</template>
</el-table-column>
<el-table-column label="序号" width="50px">
<template slot-scope="scope">
{{
(queryitem.pageNum - 1) * queryitem.pageSize + scope.$index + 1
}}
</template>
</el-table-column>
<el-table-column label="项目列表" prop="projectName"> </el-table-column>
<el-table-column label="申报总金额" prop="applyTotalAmountSmall">
</el-table-column>
<el-table-column label="核报总金额">
<template slot-scope="props">
{{ props.row.verifyTotalAmountSmall || "还未核实金额" }}
</template>
</el-table-column>
<el-table-column label="组长审批人">
<template slot-scope="props">
{{ props.row.financeName || "暂无" }}
</template>
</el-table-column>
<el-table-column label="财务审批人">
<template slot-scope="props">
{{ props.row.financeName || "暂无" }}
</template>
</el-table-column>
<el-table-column
label="报销日期"
prop="applyTime"
:formatter="timestampToTime"
>
</el-table-column>
<el-table-column label="状态">
<template slot-scope="props">
<el-tag
:type="
props.row.tripStatus == 0
? 'info'
: props.row.tripStatus == 1 || props.row.tripStatus == 3
? 'success'
: 'danger'
"
>
{{
props.row.tripStatus == 0
? "待审批"
: props.row.tripStatus == 1
? "小组长通过"
: props.row.tripStatus == 2
? "小组长驳回"
: props.row.tripStatus == 3
? "财务通过"
: props.row.tripStatus == 4
? "财务驳回"
: "不存在"
}}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
style="margin: 5px"
size="mini"
icon="el-icon-edit"
type="info"
@click="updatereimbursementList(scope.row)"
v-if="scope.row.tripStatus != 3 && scope.row.tripStatus != 1"
>修改信息</el-button
>
<el-button
style="margin: 5px"
size="mini"
icon="el-icon-edit-outline"
type="success"
@click="updatebtn(scope.row)"
v-if="scope.row.tripStatus != 3 && scope.row.tripStatus != 1"
>修改随行人员</el-button
>
<el-button
style="margin: 5px"
size="mini"
type="danger"
@click="Resubmit(scope.row)"
v-if="scope.row.tripStatus == 2 || scope.row.tripStatus == 4"
>重新提交</el-button
>
<el-button
style="margin: 5px"
size="mini"
type="info"
@click="withdraw(scope.row)"
v-if="scope.row.tripStatus == 0"
>
撤回</el-button
>
<el-link
type="success"
style="margin: 5px"
size="mini"
v-if="scope.row.tripStatus == 3"
>已通过</el-link
>
<el-link
type="info"
style="margin: 5px"
size="mini"
v-if="scope.row.tripStatus == 1"
>待审批</el-link
>
</template>
</el-table-column>
</el-table>
<!-- 查看详情 -->
<el-drawer
title="查看详情"
:visible.sync="drawer"
:direction="direction"
size="50%"
>
<el-form :inline="true" label-width="180px">
<el-row>
<el-col :span="12">
<div>
<el-form-item label="审批状态">
<el-tag
:type="
paramlist.tripStatus == 0
? 'info'
: paramlist.tripStatus == 1 || paramlist.tripStatus == 3
? 'success'
: 'danger'
"
>
{{
paramlist.tripStatus == 0
? "待审批"
: paramlist.tripStatus == 1
? "小组长通过"
: paramlist.tripStatus == 2
? "小组长驳回"
: paramlist.tripStatus == 3
? "财务通过"
: paramlist.tripStatus == 4
? "财务驳回"
: "不存在"
}}
</el-tag>
</el-form-item>
<el-form-item label="附件数量">
<span>{{ paramlist.enclosureNumber }}</span>
</el-form-item>
<el-form-item label="出差理由">
<span>{{ paramlist.tripReason }}</span>
</el-form-item>
<el-form-item label="出发地点">
<span>{{ paramlist.fromPlace }}</span>
</el-form-item>
<el-form-item label="目的地点">
<span>{{ paramlist.purposePlace }}</span>
</el-form-item>
<el-form-item label="经过地点">
<span>{{ paramlist.transitPlace }}</span>
</el-form-item>
<el-form-item label="交通工具">
<span>{{ paramlist.vehicle }}</span>
</el-form-item>
<el-form-item label="伙食补贴">
<span>{{ paramlist.foodAllowance }}</span>
</el-form-item>
<el-form-item label="公杂补贴">
<span>{{ paramlist.publicMiscellaneousSubsidy }}</span>
</el-form-item>
<el-form-item label="随从人员">
<span
v-for="item in paramlist.entouragelist"
:key="item.tripId"
style="margin: 0px 5px"
>{{ item.userName }}</span
>
</el-form-item>
</div>
</el-col>
<el-col :span="12">
<div>
<el-form-item label="火车/汽车/轮船费">
<span>{{ paramlist.tripCost }}</span>
</el-form-item>
<el-form-item label="机票费">
<span>{{ paramlist.planeTicket }}</span>
</el-form-item>
<el-form-item label="汽油费">
<span>{{ paramlist.trafficCost }}</span>
</el-form-item>
<el-form-item label="住宿费">
<span>{{ paramlist.lodgingCost }}</span>
</el-form-item>
<el-form-item label="其他费用">
<span>{{ paramlist.otherCost }}</span>
</el-form-item>
<el-form-item label="备注">
<span>{{ paramlist.remarks }}</span>
</el-form-item>
<el-form-item label="无票据说明">
<span>{{ paramlist.nobillExplain }}</span>
</el-form-item>
<el-form-item label="是否领取补贴">
<span>{{ paramlist.receiveSubsidy == 0 ? "否" : "是" }}</span>
</el-form-item>
<el-form-item label="天数">
<span>{{ paramlist.days }}</span>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
</el-drawer>
<!-- 对话框1 -->
<el-dialog title="修改随从人员" :visible.sync="dialogFormVisible">
<!-- 输入框的布局 -->
<el-row :gutter="20">
<el-col :span="16"
><div class="grid-content bg-purple">
<el-input placeholder="请输入..."></el-input></div
></el-col>
<el-col :span="8"
><div class="grid-content bg-purple">
<el-button type="primary" @click="onSubmit">查询</el-button>
</div></el-col
>
</el-row>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="员工" name="first">
<!-- v-model 绑定的是 数据少的那个数组 -->
<el-checkbox-group v-model="peopleId">
<el-checkbox
v-for="item in collectProjectpeople"
:label="item.userId"
:key="item.userId"
>{{ item.userName }}</el-checkbox
>
</el-checkbox-group>
</el-tab-pane>
<el-tab-pane label="财务人员" name="second">财务人员</el-tab-pane>
<el-tab-pane label="小组长" name="third">小组长</el-tab-pane>
<button @click="btn">测试</button>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogFormVisible = false"
>确 定</el-button
>
</div>
</el-dialog>
</div>
<!-- 分页区域 -->
<div class="block">
<el-pagination
layout="->, total, prev, pager, next"
:total="10"
:page-size="queryitem.pageSize"
@current-change="getpagelist"
>
</el-pagination>
</div>
</div>
</template>
<script>
import { queryBypage } from "@/api/spendreimbursement";
import { selectAll } from "@/api/spendreimbursement";
import { reimbursementListid, resubmit } from "@/api/spendreimbursement";
// insertId
import { insertId } from "@/api/spendreimbursement.js";
//selectProjectpeople
import { selectProjectpeople } from "@/api/spendreimbursement.js";
export default {
created() {
this.Projectpeople.companyId = this.$store.getters.companyId;
// 获取 userId
this.queryitem.userId = this.$store.getters.urId;
this.reimebursementprojectpeopleItem();
this.getpagelist();
},
data() {
return {
activeName: "second",
list1: [],
queryitem: {
pageNum: 1,
pageSize: 10,
userId: null,
},
//抽屉
drawer: false,
// 对话框
dialogFormVisible: false,
// 接受的数据
tableData: [],
// 收集随从人员进行展示
collectProjectpeople: [],
// 随从成员
Projectpeople: {
companyId: null,
},
// 随从人员
entouragelist: [],
paramlist: {},
peopleId: [],
// 收集所选择的随从人员
insertBatch: [
{
personnelId: null,
tripId: null,
},
],
list: [],
};
},
methods: {
handleClick(tab, event) {
console.log(event);
},
// 这是测试的数据
btn() {
console.log(this.peopleId);
console.log(this.list1);
// this.insertBatch.splice(this.insertBatch.indexOf(0), 1);
// this.peopleId.forEach((item) => {
// let obj = {};
// obj.personnelId = item;
// obj.tripId = 3;
// this.insertBatch.push(obj);
// });
// insertId(this.insertBatch)
// .then((result) => {
// if (result.success) {
// console.log(result);
// } else {
// this.$message.error(result.msg);
// }
// })
// .catch((error) => {
// this.$message.error("失败");
// });
// this.insertBatch = [];
},
// 修改随从人员
updatereimbursementPeople() {
// 第二个方法
insertId(this.insertBatch)
.then((result) => {
if (result.success) {
this.$message.success("添加成功!");
// 添加成功以后 把表单的数据清空
this.$refs.ruleform.resetFields();
} else {
this.$message.error(result.msg);
}
})
.catch((error) => {
this.$message.error("失败");
});
},
// 查询de所有随从人员
reimebursementprojectpeopleItem() {
selectProjectpeople(this.Projectpeople)
.then((res) => {
if (res.code == 20000) {
this.collectProjectpeople = res.data;
} else {
this.$message.error("失败");
}
})
.catch((error) => {
this.$message.error("查询失败");
});
},
//添加的方法
insertreimebursementItem() {
this.$router.push("/spendreimbursementAdd");
},
// 展示数据的方法
getpagelist(pager = 1) {
this.queryitem.pageNum = pager;
queryBypage(this.queryitem)
.then((res) => {
if (res.success) {
this.tableData = res.data.list;
res.data.list.forEach((item) => {
selectAll({ tripId: item.tripId })
.then((resu) => {
if (resu.success) {
item.entouragelist = resu.data;
this.list = resu.data;
resu.data.forEach((element) => {
let obj = {};
let personnelId = "";
personnelId = element.personnelId;
obj.personnelId = element.personnelId;
obj.tripId = element.tripId;
this.peopleId.push(personnelId);
this.list1.push(obj);
});
} else {
this.$message.error(resu.msg);
}
})
.catch((error) => {
this.$message.error("失败");
});
});
} else {
this.$message.error(res.msg);
}
})
.catch((error) => {
this.$message.error("查询失败");
});
},
// 跳转修改页面
updatereimbursementList(data) {
this.$router.push({
path: "/spendreimbursementListUpdate",
//query 找到我们需要的字段
query: {
tripid: data.tripId,
},
});
},
// 弹窗展示
updatebtn() {
this.dialogFormVisible = true;
},
// 查看详情
getdetails(data) {
this.drawer = true;
this.paramlist = data;
},
// 从新提交
Resubmit(data) {
resubmit(data)
.then((res) => {
if (res.success) {
this.$message.success("重新提交成功,等待审批");
this.getpagelist();
} else {
this.$message.error(res.msg);
}
})
.catch((error) => {
this.$message.error("重新提交失败");
});
},
// 撤回申请
withdraw(data) {
reimbursementListid(data.tripId).then((res) => {
if (res.success) {
this.getpagelist();
}
});
},
//时间处理
timestampToTime(row, column, cellValue) {
return cellValue.split(" ")[0];
},
},
};
</script>
<style scoped>
.total_content {
padding: 0px 15px;
}
.demo-table-expand {
font-size: 0;
padding: 0px 100px;
width: 100%;
}
.demo-table-expand label {
width: 90px;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 150px;
margin-bottom: 0;
width: 80%;
}
.total_top {
margin: 15px 20px;
}
</style>
\ No newline at end of file
......@@ -79,6 +79,7 @@
import { insert } from "@/api/assets";
import { secletAllStaff } from "@/api/user";
import user from "../../store/modules/user";
import { money } from "@/utils/myValidate";
export default {
data() {
return {
......@@ -109,7 +110,8 @@ export default {
{ required: true, message: "请输入活动名称", trigger: "change" }
],
fixedCode: [
{ required: true, message: "请收入资产编号", trigger: "change" }
{ required: true, message: "请收入资产编号", trigger: "change" },
{ validator: this.checkData, trigger: "blur" }
],
fixedAddress: [
{
......@@ -121,8 +123,7 @@ export default {
fixedMoney: [
{ required: true, message: "请输入资产金额", trigger: "change" },
{
pattern: /(^([-]?)[1-9]([0-9]+)?(\.[0-9]{1,6})?$)|(^([-]?)(0){1}$)|(^([-]?)[0-9]\.[0-9]([0-9])?$)/,
message: "输入资产金额不合法",
validator: money,
trigger: "change"
}
]
......@@ -131,7 +132,7 @@ export default {
nowDate: null, //存放年月日变量时分秒变量
timer: "", //定义一个定时器的变量
currentTime: new Date(), // 获取当前时间
name:"选择负责人",
name: "选择负责人"
};
},
created() {
......@@ -174,12 +175,12 @@ export default {
grtselect() {
if (this.falesId == true) {
this.falesId = false;
this.name="确定负责人"
this.name = "确定负责人";
} else {
if (this.options.length > 0) {
this.FixedAssetsAddDTO.fixedController = this.user.userId;
this.falesId = true;
this.name="修改负责人"
this.name = "修改负责人";
console.log(this.FixedAssetsAddDTO.fixedController);
} else {
this.$message.error("没有负责人哦亲");
......@@ -249,22 +250,30 @@ export default {
console.log(this.FixedAssetsAddDTO);
this.$refs.ruleForm.validate(valid => {
if (valid) {
insert(this.FixedAssetsAddDTO)
.then(res => {
if (res.success) {
this.$message({
showClose: true,
message: "提交资产成功",
type: "success"
});
this.$router.push("/assetslist");
} else {
this.$message.error(res.msg);
}
})
.catch(error => {
this.$message.error(error.msg);
if (this.FixedAssetsAddDTO.fixedController!=null) {
insert(this.FixedAssetsAddDTO)
.then(res => {
if (res.success) {
this.$message({
showClose: true,
message: "提交资产成功",
type: "success"
});
this.$router.push("/assetslist");
} else {
this.$message.error(res.msg);
}
})
.catch(error => {
this.$message.error(error.msg);
});
} else {
this.$message({
showClose: true,
message: "还没有添加管理员哦!!",
type: "warning"
});
}
}
});
},
......@@ -285,6 +294,17 @@ export default {
registerRemarks: null, //登记备注
registerTime: null //登记时间
};
},
//不能为中文的校验
checkData(rule, value, callback) {
if (value) {
if (/[\u4E00-\u9FA5]/g.test(value)) {
callback(new Error("资产编码由数字或字符组成!"));
} else {
callback();
}
}
callback();
}
},
beforeDestroy() {
......
......@@ -31,6 +31,7 @@
</el-input>
</el-form-item>
<el-form-item label="上传公司文件">
<el-upload
class="upload-demo"
drag
......@@ -46,6 +47,7 @@
</div>
<div class="el-upload__tip" slot="tip">文件大小不超过500kb</div>
</el-upload>
</el-form-item>
<br />
<div class="items">
......@@ -104,6 +106,7 @@ export default {
},
//返回
returnback() {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.push("/selfFileList");
},
},
......
<template>
<!-- 公司文件列表(查询公司全部的文件信息) -->
<div class="container">
<!-- 头部 -->
<div class="header">
<el-form :inline="true" :model="companyFileQurey">
<el-form-item label="文件名称">
<el-input
v-model="companyFileQurey.conmpanyFileName"
placeholder="文件名称"
></el-input>
</el-form-item>
<!-- <el-form-item label="提交人姓名">
<el-input
v-model="companyFileQurey.userName"
placeholder="提交人姓名"
></el-input>
</el-form-item> -->
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
@click="querycompanyFile()"
>查询</el-button
>
<el-button
type="primary"
icon="el-icon-refresh-right"
@click="reset()"
>重置</el-button
>
</el-form-item>
</el-form>
</div>
<!-- 中间 -->
<div class="center">
<el-table
:data="companyFIleList"
style="width: 100%"
text-align:
center
border
>
<el-table-column label="序号" width="100px" align="center">
<template slot-scope="scope">
{{
(companyFileQurey.pageNum - 1) * companyFileQurey.pageSize +
scope.$index +
1
}}
</template>
</el-table-column>
<el-table-column prop="conmpanyFileName" label="文件名称" align="center">
</el-table-column>
<el-table-column prop="fileRemarks" label="文件备注" align="center"> </el-table-column>
<el-table-column prop="userName" label="提交人" align="center"> </el-table-column>
<el-table-column prop="submitTime" label="上传时间" align="center" > </el-table-column>
<el-table-column prop="prop" label="操作" width="130px" align="center">
<template slot-scope="scope">
<el-button type="success" size="mini" @click="download(scope.row)"
>点击下载</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<!-- 尾部 -->
<div class="footer">
<el-pagination
@current-change="handleCurrentChange"
:current-page.sync="companyFileQurey.pageNum"
:page-size="companyFileQurey.pageSize"
layout="total, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</div>
</template>
<script>
import { queryBypage } from "@/api/companyFile";
export default {
data() {
return {
companyFileQurey: {
conmpanyFileName: null,
pageNum: 1,
pageSize: 10,
companyId: null,
},
companyFIleList: [], //公司合同文件表格区域
total: 0,
};
},
created() {
this.companyFileQurey.companyId = this.$store.getters.companyId;
this.getCompanyFileList();
},
methods: {
//重置
reset(){
this.companyFileQurey={
pageNum: 1,
pageSize: 10,
companyId: null,
userId: null,
}
this.companyFileQurey.companyId = this.$store.getters.companyId;
this.getCompanyFileList();
},
//下载
download(row) {
console.log(row);
var a = document.createElement("a"); //创建一个<a></a>标
a.href = process.env.VUE_APP_BASE_API + row.companyFile; // 给a标签的href属性值加上地址,注意,这里是绝对路径,不用加 点.
a.target = "_blank";
a.style.display = "none"; // 障眼法藏起来a标签
document.body.appendChild(a); // 将a标签追加到文档对象中
a.click(); // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
a.remove(); // 一次性的,用完就删除a标签
},
//查询
querycompanyFile() {
this.companyFileQurey.pageNum = 1;
this.getCompanyFileList();
},
//分页查询(查询全公司的)
getCompanyFileList() {
queryBypage(this.companyFileQurey)
.then((res) => {
if (res.success) {
this.companyFIleList = res.data.list;
this.total = res.data.total;
} else {
this.$message.error(res.msg);
}
})
.catch((error) => {
this.$message.error("获取数据失败");
});
},
//换页
handleCurrentChange(val) {
this.companyFileQurey.pageNum = val;
this.getCompanyFileList();
},
},
};
</script>
<style scoped>
.container {
padding: 10px;
}
.header {
padding: 10px;
}
.center {
margin-bottom: 10px;
}
.footer {
text-align: right;
}
</style>
\ No newline at end of file
......@@ -91,6 +91,20 @@
</template>
</el-table-column>
<el-table-column prop="mone" label="发票金额"></el-table-column>
<el-table-column prop="prop" label="发票文件" width="120px">
<template slot-scope="scope">
<div v-if="formatProtocolType(scope.row)">
<el-image
style="width: 80px; height: 80px"
:src="getimagin(scope.row)"
:preview-src-list="srcList"
></el-image>
</div>
<div v-else>
<a class="a-style" @click="handlePreView(scope.row)">点击查看文件</a>
</div>
</template>
</el-table-column>
<el-table-column prop="status" label="发票状态" width="90px">
<template slot-scope="scope">
<el-tag
......@@ -145,10 +159,18 @@
class="demo-ruleForm"
>
<el-form-item label="发票代码" prop="code">
<el-input v-model="addTO.code" maxlength="12" onkeyup="this.value=this.value.replace(/\D|^0/g,'')"></el-input>
<el-input
v-model="addTO.code"
maxlength="12"
onkeyup="this.value=this.value.replace(/\D|^/g,'')"
></el-input>
</el-form-item>
<el-form-item label="发票号码" prop="number">
<el-input v-model="addTO.number" maxlength="8" onkeyup="this.value=this.value.replace(/\D|^0/g,'')"></el-input>
<el-input
v-model="addTO.number"
maxlength="8"
onkeyup="this.value=this.value.replace(/\D|^/g,'')"
></el-input>
</el-form-item>
<el-form-item label="发票时间" required prop="time">
<el-date-picker
......@@ -216,11 +238,8 @@
</template>
<script>
import {
insertList,
queryBypageIncomeAdd,
deleteexpen
} from "@/api/project";
import { insertList, queryBypageIncomeAdd, deleteexpen } from "@/api/project";
import { money } from "@/utils/myValidate";
export default {
data() {
return {
......@@ -320,8 +339,7 @@ export default {
mone: [
{ required: true, message: "请输入发票金额", trigger: "change" },
{
pattern: /(^([-]?)[1-9]([0-9]+)?(\.[0-9]{1,6})?$)|(^([-]?)(0){1}$)|(^([-]?)[0-9]\.[0-9]([0-9])?$)/,
message: "输入发票金额不合法",
validator: money,
trigger: "change"
}
]
......@@ -359,7 +377,9 @@ export default {
total: 10,
//收集数据
newList: [],
visible: false //确认删除
visible: false, //确认删除
//查看发票图片
srcList: []
};
},
computed: {
......@@ -440,11 +460,21 @@ export default {
if (res.success) {
this.invoicegetList = res.data;
this.total = res.data.total;
let list = [];
res.data.list.forEach((item, index) => {
list.push({
status: item.status
});
// let list = [];
// res.data.list.forEach((item, index) => {
// list.push({
// status: item.status
// });
// });
this.srcList = [];
res.data.list.forEach(e => {
let fileNamepdf = e.filePath;
let fileType = fileNamepdf.substring(
fileNamepdf.lastIndexOf(".")
);
if (fileType != ".pdf") {
this.srcList.push(process.env.VUE_APP_BASE_API + e.filePath);
}
});
} else {
this.$message.errror(res.msg);
......@@ -587,6 +617,30 @@ export default {
.catch(e => {
this.$message.error(e.msg);
});
},
//图片格式
formatProtocolType(row) {
//这里判断的是是否有文件
if (row.filePath == null) {
return false;
} else {
let fileNamepdf = row.filePath;
let fileType = fileNamepdf.substring(fileNamepdf.lastIndexOf("."));
if (fileType != ".pdf") {
return true;
} else {
return false;
}
}
},
getimagin(row) {
return process.env.VUE_APP_BASE_API + row.filePath;
},
//点击查看发票
handlePreView(row) {
const photopath = process.env.VUE_APP_BASE_API + row.filePath;
console.log(photopath);
window.open(photopath, "_blank");
}
}
};
......
......@@ -98,7 +98,7 @@
</span>
</el-dialog>
<el-drawer :visible.sync="drawerVisible" size="50%" :with-header="false" @closed="">
<el-drawer :visible.sync="drawerVisible" size="50%" :with-header="false" >
<div class="drawerHeader">
申请详情
</div>
......@@ -137,7 +137,7 @@
<div class="drawerContainer">
<div class="repay-timeline">
<el-timeline>
<el-timeline-item v-for="(item, index) in repayDetailList" :key="item.repaymentId"
<el-timeline-item v-for="item in repayDetailList" :key="item.repaymentId"
:type="approveResult[item.repaymentApproval].type" :timestamp="item.repaymentTime">
<el-tag
......
......@@ -90,7 +90,7 @@
</span>
</el-dialog>
<el-drawer :visible.sync="drawerVisible" size="50%" :with-header="false" @closed="">
<el-drawer :visible.sync="drawerVisible" size="50%" :with-header="false">
<div class="drawerHeader">
申请详情
</div>
......@@ -128,7 +128,7 @@
<div class="drawerContainer ">
<div class="repay-timeline">
<el-timeline>
<el-timeline-item v-for="(item, index) in repayDetailList" :key="item.repaymentId"
<el-timeline-item v-for="item in repayDetailList" :key="item.repaymentId"
:type="approveResult[item.repaymentApproval].type" :timestamp="item.repaymentTime">
<el-tag
......
......@@ -76,7 +76,7 @@
<el-table-column prop="expendTime" label="支出时间" />
<el-table-column prop="expendInformation" label="支出详情" />
<el-table-column prop="expendRemarks" label="支出备注" />
<el-table-column prop="prop" label="发票图片">
<el-table-column prop="prop" label="发票文件">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="ReviseImage(scope.row)">点击查看</el-button>
</template>
......
......@@ -85,7 +85,7 @@
<el-table-column prop="incomeBody" label="收入内容" />
<el-table-column prop="incomeTime" label="收入时间" />
<el-table-column prop="prop" label="发票图片">
<el-table-column prop="prop" label="发票文件">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="ReviseImage(scope.row)">点击查看</el-button>
</template>
......
......@@ -7,7 +7,7 @@
<el-input v-model="projectFrom.projectName"></el-input>
</el-form-item>
<el-form-item label="项目编号" prop="projectNumber">
<el-input v-model="projectFrom.projectNumber"></el-input>
<el-input v-model="projectFrom.projectNumber" ></el-input>
</el-form-item>
<el-form-item label="项目合同金额" prop="projectAmount">
<el-input v-model="projectFrom.projectAmount"></el-input>
......@@ -97,6 +97,7 @@
<script>
import { insert } from "@/api/project";
import { selectAllByCompanyId, insertBatch, secletAllByRlid } from "@/api/role";
import { money } from "@/utils/myValidate";
export default {
data() {
return {
......@@ -132,7 +133,8 @@ export default {
{ required: true, message: "请输入项目名称", trigger: "blur" }
],
projectNumber: [
{ required: true, message: "请输入项目编号", trigger: "blur" }
{ required: true, message: "请输入项目编号", trigger: "blur" },
{ validator: this.checkData, trigger: "blur" }
],
projectAmount: [
{
......@@ -141,8 +143,7 @@ export default {
trigger: "blur"
},
{
pattern: /(^([-]?)[1-9]([0-9]+)?(\.[0-9]{1,6})?$)|(^([-]?)(0){1}$)|(^([-]?)[0-9]\.[0-9]([0-9])?$)/,
message: "输入项目合同金额不合法",
validator: money,
trigger: "change"
}
],
......@@ -209,9 +210,9 @@ export default {
AddSelect(row) {
if (this.projectLeaderList.indexOf(row.userId) > -1) {
this.userIdAdd.push(row.userName);
}else{
let index = this.userIdAdd.indexOf(row.userName);
this.userIdAdd.splice(index, 1);
} else {
let index = this.userIdAdd.indexOf(row.userName);
this.userIdAdd.splice(index, 1);
}
console.log(this.userIdAdd);
},
......@@ -290,6 +291,17 @@ export default {
var s =
date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
return Y + M + D + h + m + s;
},
//不能为中文的校验
checkData(rule, value, callback) {
if (value) {
if (/[\u4E00-\u9FA5]/g.test(value)) {
callback(new Error("项目编码由数字或字符组成!"));
} else {
callback();
}
}
callback();
}
}
};
......
......@@ -72,14 +72,12 @@ export default {
projectExpend: 0,
projectExpense:0,
projectStartTime: null,
projecteEndTime: null,
projectEndTime: null,
projectFile: null,
userId: null,
companyId: null,
projectPartyb:null,
projectInformation:null,
timeSlot: null,
},
rules: {
......@@ -122,8 +120,8 @@ export default {
getProject(){
selectByProjectId({projectId:this.projectId}).then((res)=>{
if(res.success){
res.data.timeSlot = [res.data.projectStartTime,res.data.projectEndTime]
this.projectFrom = res.data
this.projectFrom.timeSlot = this.Stime(res.data)
}else{
this.$message.error(res.msg)
this.back()
......@@ -135,17 +133,16 @@ export default {
},
//时间处理
time(val) {
console.log("123123")
if (val == null) {
this.projectFrom.projectStartTime = null;
this.projectFrom.projecteEndTime = null;
this.projectFrom.projectEndTime = null;
} else {
this.projectFrom.projectStartTime = val[0];
this.projectFrom.projecteEndTime = val[1];
this.projectFrom.projectStartTime = this.timestampToTime(val[0]);
this.projectFrom.projectEndTime = this.timestampToTime(val[1]);
}
},
Stime(value){
return [value.projectStartTime,value.projectEndTime]
},
//重置数据
resetForm(){
this.$refs.form.resetFields()
......@@ -174,7 +171,24 @@ export default {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.push("/projectList")
},
//时间处理
timestampToTime(date) {
var Y = date.getFullYear() + "-";
var M =
(date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-";
var D =
(date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
var h =
(date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";
var m =
(date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()) +
":";
var s =
date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
return Y + M + D + h + m + s;
}
},
};
</script>
......
......@@ -3,12 +3,12 @@
<div>
<el-form :inline="true" :model="reimbursementQurey">
<el-form-item>
<!-- <el-button
type="success"
icon="el-icon-circle-plus-outline"
@click="addreimbursement()"
>申请报销</el-button
> -->
<el-form-item label="报销人">
<el-input v-model="reimbursementQurey.userName" placeholder="根据报销人姓名搜索"></el-input>
</el-form-item>
<el-form-item label="项目名称">
<el-input v-model="reimbursementQurey.userName" placeholder></el-input>
</el-form-item>
</el-form-item>
</el-form>
</div>
......
This diff is collapsed.
......@@ -3,6 +3,23 @@
<!-- 申请报销头部模块 -->
<div>
<el-form :inline="true" :model="reimbursementQurey">
<el-form-item label="项目名称">
<el-input v-model="reimbursementQurey.projectName" placeholder="根据项目名称搜索"></el-input>
</el-form-item>
<el-form-item label="审批状态">
<el-select v-model="reimbursementQurey.reimbursementState" placeholder="根据状态搜索">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="qurey()">查询</el-button>
<el-button type="primary" icon="el-icon-refresh-right" @click="reset()">重置</el-button>
</el-form-item>
<el-form-item>
<el-button
type="success"
......@@ -556,10 +573,34 @@ export default {
//label样式
labelStyle: { width: "80px" },
reimbursementQurey: {
reimbursementState:null,
projectName:null,
userId: null,
pageNum: 1,
pageSize: 10,
},
options:[
{
value: 0,
label: '待小组长审批'
},
{
value: 1,
label: '待财务审批'
},
{
value: 2,
label: '小组长驳回'
},
{
value: 3,
label: '审批全通过'
},
{
value: 4,
label: '财务驳回'
}
],
total: 0,
reimbursementList: [],
//抽屉
......@@ -746,6 +787,18 @@ export default {
this.$message.error("回去数据失败");
});
},
//查询
qurey(){
this.reimbursementQurey.pageNum = 1
this.getReimbursement()
},
//重置
reset(){
this.reimbursementQurey.projectName = null
this.reimbursementQurey.pageNum = 1
this.reimbursementQurey.reimbursementState = null
this.getReimbursement()
},
//修改信息
updataReimbursement(data) {
//data是列表中所有的数据
......
......@@ -11,14 +11,12 @@
</el-form-item>
<el-form-item label="员工手机号">
<el-input
v-model="staffQurey.companyAddress"
v-model="staffQurey.userPhone"
placeholder="员工手机号"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="qurey()"
>查询</el-button
>
<el-button type="primary" icon="el-icon-search" @click="qurey()">查询</el-button>
<el-button
type="primary"
icon="el-icon-refresh-right"
......
<template>
<!-- 员工管理 -->
<div class="container">
<div class="header">
<el-form :inline="true" :model="staffQurey">
<el-form-item label="员工姓名">
<el-input
v-model="staffQurey.userName"
placeholder="员工姓名"
></el-input>
</el-form-item>
<el-form-item label="员工手机号">
<el-input
v-model="staffQurey.companyAddress"
placeholder="员工手机号"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="qurey()"
>查询</el-button
>
<el-button
type="primary"
icon="el-icon-refresh-right"
@click="reset()"
>重置</el-button
>
<el-button
type="success"
icon="el-icon-circle-plus-outline"
@click="addstaff()"
>添加员工</el-button
>
</el-form-item>
</el-form>
</div>
<div class="conter">
<el-table
:data="staffList"
style="width: 100%; text-align: center"
border
>
<el-table-column label="序号" width="50px">
<template slot-scope="scope">
{{
(staffQurey.pageNum - 1) * staffQurey.pageSize + scope.$index + 1
}}
</template>
</el-table-column>
<el-table-column prop="userName" label="姓名" />
<el-table-column prop="userSex" label="性别" >
<template slot-scope="scope">
{{scope.row.userSex == '0' ? '' : ''}}
</template>
</el-table-column>
<el-table-column prop="userPhone" label="手机号" />
<el-table-column prop="userIdentification" label="身份证" />
<el-table-column prop="userBankNumber" label="银行卡号" />
<el-table-column prop="userBankAddress" label="开户银行" />
<el-table-column label="员工角色" >
<template slot-scope="scope">
<el-tag v-for="item in scope.row.roleList" :key="item.rlId" style="margin-right:10px;">{{item.rlName}}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" >
<template slot-scope="scope">
<el-button style="margin:5px" size="mini" icon="el-icon-edit" type="info" @click="updataStaff(scope.row)">修改信息</el-button>
<el-button style="margin:5px" size="mini" icon="el-icon-edit" type="info" @click="staffrole(scope.row)" :disabled="scope.row.roles.indexOf(2)>-1">修改员工角色</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="footer">
<el-pagination
@current-change="handleCurrentChange"
:current-page.sync="staffQurey.pageNum"
:page-size="staffQurey.pageSize"
layout="total, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
<el-dialog
:title="staffdata.userName"
:visible.sync="dialogVisible"
width="30%"
>
<p>角色</p>
<el-checkbox-group v-model="staffdata.roles">
<el-checkbox v-for="item in rolesList" :key="item.rlId" :label="item.rlId" name="type" >{{item.rlName}}</el-checkbox>
</el-checkbox-group>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="updataStaffRole">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {selectAllByCompanyId} from '@/api/role'
import {secletStaff,updateRole} from '@/api/user'
export default {
data() {
return {
staffQurey: {
companyId: null,
pageNum: 1,
pageSize: 10,
userName: null,
userPhone: null,
},
total: 0,
staffList: [],
dialogVisible:false,
staffdata:{},
rolesList:[],
};
},
created() {
this.staffQurey.companyId = this.$store.getters.companyId
this.getSatff()
this.getRoles();
},
methods: {
//获取权限
getRoles() {
selectAllByCompanyId({companyId:this.$store.getters.companyId}).then((res)=>{
if(res.status == "success"){
this.rolesList = res.data
}else{
this.$message.error(res.data)
}
}).catch((error)=>{
this.$message.error("查询角色失败")
})
},
//获取员工
getSatff(){
secletStaff(this.staffQurey).then((res)=>{
if(res.status == 'success'){
// console.log(res.status)
this.staffList = res.data.list
this.total = res.data.total
}else{
this.$message.error(res.data)
}
}).catch((error)=>{
this.$message.error("获取员工失败")
})
},
//查询
qurey() {
this.staffQurey.pageNum = 1
this.getSatff()
},
//重置
reset() {
this.staffQurey = {
companyId: this.$store.getters.companyId,
pageNum: 1,
pageSize: 10,
userName: null,
userPhone: null,
}
this.getSatff()
},
//添加员工
addstaff() {
this.$router.push('/addStaff')
},
//换页
handleCurrentChange(val) {
this.staffQurey.pageNum = val
this.getSatff()
},
//修改员工信息
updataStaff(data){
this.$router.push({
path: '/updataStaff',
query:{
id:data.userId,
}
})
},
//修改员工角色
staffrole(data){
let roles = this.$store.getters.roles
console.log(data)
if(roles.indexOf(2) > -1){
this.staffdata = data
this.dialogVisible = true
}else{
this.$message.warning("只有管理员有权限修改员工角色")
}
},
//修改员工角色提交方法
updataStaffRole(){
// console.log(this.staffdata)
let param={
userId:this.staffdata.userId,
roles:this.staffdata.roles
}
console.log(param)
updateRole(param).then(res=>{
if(res.status == 'success'){
this.getSatff()
}else{
this.$message.error(res.data)
}
})
this.dialogVisible=false
}
},
};
</script>
<style scoped>
.container {
padding: 10px;
}
.conter {
margin-bottom: 10px;
}
.footer {
text-align: right;
}
</style>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment