|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<view class="content-area">
|
|
|
- <view class="content-area-title font12 mtb5 plr10" v-if="!state.form.id">{{state.form.id}}实时保存,保存时间 {{ saveTime }}</view>
|
|
|
+ <view class="content-area-title font12 mtb5 plr10" v-if="!state.form.id">{{ state.form.id }}实时保存,保存时间 {{ saveTime }}</view>
|
|
|
|
|
|
<view class="content-area-item p10 bg-white">
|
|
|
<view class="font14 weight mb10 required">工作内容</view>
|
|
@@ -67,30 +67,29 @@
|
|
|
</view>
|
|
|
<view class="content-area-item mt10 p10 bg-white">
|
|
|
<view class="font14 weight mb10">图片上传</view>
|
|
|
- <view style="color:#f56c6c;font-size:11px;margin-bottom:10px">( 注:不可同步钉钉,最多上传5张 )</view>
|
|
|
+ <view style="color: #f56c6c; font-size: 11px; margin-bottom: 10px">( 注:不可同步钉钉,最多上传5张 )</view>
|
|
|
<oa-upload :uploadCount="5" :uploadList="reportImage1" :uploadListSrc="'url'" @uploadSuccessChange="uploadSuccessChange" @uploadDeleteChange="uploadDeleteChange"></oa-upload>
|
|
|
</view>
|
|
|
<view class="content-area-item mt10 p10 bg-white">
|
|
|
<view class="font14 weight mb10">附件上传</view>
|
|
|
- <view style="color:#f56c6c;font-size:11px;margin-bottom:10px">( 注:不可同步钉钉,最多上传5个 )</view>
|
|
|
- <uni-file-picker limit="5"
|
|
|
- @select='selectUpload'
|
|
|
- v-model="reportFile1"
|
|
|
- :auto-upload='false'
|
|
|
- file-extname='git,pdf,docx,doc,xls,xlsx,ppt,pptx,txt,zip,rar,7z,gz,bz2,tar,tgz,tbz,txz,apk,ipa,mp3,mp4,avi,flv,rmvb,wmv,mkv,mov,wma,aac,m4a,amr,ogg,flac,wav,amr,ape,m4r,aac,ac3,dts,m4b,m4p,m4v,mp2,mpe,mpeg,mpg,mpv,ogv,rm,swf,vob,wmv,3gp,3g2,asf,asx,avi,flv,m2ts,m4v,mkv,mov,mp4,mpg,mpeg,rm,swf,vob,wmv,3gp,3g2,asf,asx,avi,'
|
|
|
- file-mediatype="all"
|
|
|
- >
|
|
|
+ <view style="color: #f56c6c; font-size: 11px; margin-bottom: 10px">( 注:不可同步钉钉,最多上传5个 )</view>
|
|
|
+ <uni-file-picker
|
|
|
+ limit="5"
|
|
|
+ @select="selectUpload"
|
|
|
+ v-model="reportFile1"
|
|
|
+ :auto-upload="false"
|
|
|
+ file-extname="git,pdf,docx,doc,xls,xlsx,ppt,pptx,txt,zip,rar,7z,gz,bz2,tar,tgz,tbz,txz,apk,ipa,mp3,mp4,avi,flv,rmvb,wmv,mkv,mov,wma,aac,m4a,amr,ogg,flac,wav,amr,ape,m4r,aac,ac3,dts,m4b,m4p,m4v,mp2,mpe,mpeg,mpg,mpv,ogv,rm,swf,vob,wmv,3gp,3g2,asf,asx,avi,flv,m2ts,m4v,mkv,mov,mp4,mpg,mpeg,rm,swf,vob,wmv,3gp,3g2,asf,asx,avi,"
|
|
|
+ file-mediatype="all"
|
|
|
+ >
|
|
|
</uni-file-picker>
|
|
|
- <!-- 文件列表回显 -->
|
|
|
- <br>
|
|
|
- <view v-for="(file, index) in reportFile1" :key="index" style="border-bottom:1px solid #eee;margin:6px;padding:6px;font-size:12px">
|
|
|
- <uni-link :href="file.url" text="file.url">{{file.name}}</uni-link>
|
|
|
- <uni-icons type="closeempty" size="12" style="float:right" @click="delectFile(file)"></uni-icons>
|
|
|
+ <!-- 文件列表回显 -->
|
|
|
+ <br />
|
|
|
+ <view v-for="(file, index) in reportFile1" :key="index" style="border-bottom: 1px solid #eee; margin: 6px; padding: 6px; font-size: 12px">
|
|
|
+ <uni-link :href="file.url" text="file.url">{{ file.name }}</uni-link>
|
|
|
+ <uni-icons type="closeempty" size="12" style="float: right" @click="delectFile(file)"></uni-icons>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
-
|
|
|
-
|
|
|
<view class="content-area-item mt10 p10 bg-white">
|
|
|
<view class="font14 weight mb10">抄送到人</view>
|
|
|
<avatarList :userList="userList" @deleteUsers="deleteUsers" />
|
|
@@ -144,51 +143,38 @@
|
|
|
<view class="app-button-padding"></view>
|
|
|
<view class="app-button-fixed">
|
|
|
<!-- {{ form }} -->
|
|
|
- <u-button class="app-buttom" type="primary" @click="handleSubmit('提交')" shape="circle"> {{ form.isRegularlySend == 1 &&form.reportStatus!=1 ? "保 存" : "确 定" }} </u-button>
|
|
|
+ <u-button class="app-buttom" type="primary" @click="handleSubmit('提交')" shape="circle"> {{ form.isRegularlySend == 1 && form.reportStatus != 1 ? "保 存" : "确 定" }} </u-button>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
<u-datetime-picker :show="timeShow" v-model="timeValue" mode="datetime" :closeOnClickOverlay="true" @cancel="timeShow = false" @confirm="timeConfirm"></u-datetime-picker>
|
|
|
|
|
|
<u-modal :show="modalShow" title="" :confirmText="'确定'" :cancelText="'取消'" :zoom="false" :showCancelButton="true" @confirm="modalConfirm" @cancel="modalShow = false">
|
|
|
- <view class="slot-content" style="max-height: 45vh;overflow:auto">
|
|
|
-
|
|
|
- <view v-if="projectsList.length > 0">
|
|
|
-
|
|
|
- <u-checkbox-group v-model="projectsCheck" placement="row" :size="14" style="max-height: 100%; overflow: auto">
|
|
|
- <view class="checkbox-group-title">最近使用</view>
|
|
|
- <block v-for="(item, index) in projectsList">
|
|
|
- <u-checkbox v-if="item.submissions>0"
|
|
|
- :customStyle="{ marginBottom: '8px', width: '50%' }"
|
|
|
- :label="item.projectName+' ('+item.submissions+'次)'"
|
|
|
- :name="item.id"
|
|
|
- :activeColor="proxy.$settingStore.themeColor.color"
|
|
|
- >
|
|
|
- </u-checkbox>
|
|
|
- </block>
|
|
|
- <u-line class="u-line" color="info" style="margin:10px 0"></u-line>
|
|
|
-
|
|
|
-
|
|
|
- <view class="checkbox-group-title">其他</view>
|
|
|
-
|
|
|
- <block v-for="(item, index) in projectsList">
|
|
|
- <u-checkbox v-if="!item.submissions"
|
|
|
- :customStyle="{ marginBottom: '8px', width: '50%' }"
|
|
|
- :label="item.projectName"
|
|
|
- :name="item.id"
|
|
|
- :activeColor="proxy.$settingStore.themeColor.color"
|
|
|
- >
|
|
|
- </u-checkbox>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- </block>
|
|
|
-
|
|
|
-
|
|
|
- </u-checkbox-group>
|
|
|
-
|
|
|
- <!-- <u-checkbox-group v-else v-model="projectsCheck" placement="row" :size="14" style="max-height: 100%; overflow: auto">
|
|
|
+ <view class="slot-content" style="max-height: 45vh; overflow: auto">
|
|
|
+ <view v-if="projectsList.length > 0">
|
|
|
+ <u-checkbox-group v-model="projectsCheck" placement="row" :size="14" style="max-height: 100%; overflow: auto">
|
|
|
+ <view class="checkbox-group-title">最近使用</view>
|
|
|
+ <block v-for="(item, index) in projectsList">
|
|
|
+ <u-checkbox
|
|
|
+ v-if="item.submissions > 0"
|
|
|
+ :customStyle="{ marginBottom: '8px', width: '50%' }"
|
|
|
+ :label="item.projectName + ' (' + item.submissions + '次)'"
|
|
|
+ :name="item.id"
|
|
|
+ :activeColor="proxy.$settingStore.themeColor.color"
|
|
|
+ >
|
|
|
+ </u-checkbox>
|
|
|
+ </block>
|
|
|
+ <u-line class="u-line" color="info" style="margin: 10px 0"></u-line>
|
|
|
+
|
|
|
+ <view class="checkbox-group-title">其他</view>
|
|
|
+
|
|
|
+ <block v-for="(item, index) in projectsList">
|
|
|
+ <u-checkbox v-if="!item.submissions" :customStyle="{ marginBottom: '8px', width: '50%' }" :label="item.projectName" :name="item.id" :activeColor="proxy.$settingStore.themeColor.color">
|
|
|
+ </u-checkbox>
|
|
|
+ </block>
|
|
|
+ </u-checkbox-group>
|
|
|
+
|
|
|
+ <!-- <u-checkbox-group v-else v-model="projectsCheck" placement="row" :size="14" style="max-height: 100%; overflow: auto">
|
|
|
<u-checkbox
|
|
|
:customStyle="{ marginBottom: '8px', width: '50%' }"
|
|
|
v-for="(item, index) in projectsList"
|
|
@@ -199,8 +185,8 @@
|
|
|
>
|
|
|
</u-checkbox>
|
|
|
</u-checkbox-group> -->
|
|
|
- </view>
|
|
|
-
|
|
|
+ </view>
|
|
|
+
|
|
|
<view v-else>请联系项目管理人员给您分配项目后重试!</view>
|
|
|
</view>
|
|
|
</u-modal>
|
|
@@ -255,8 +241,8 @@ const state = reactive({
|
|
|
userDate: [],
|
|
|
saveTime: "",
|
|
|
});
|
|
|
-const reportImage1=ref([])//图片
|
|
|
-const reportFile1=ref([])//附件
|
|
|
+const reportImage1 = ref([]); //图片
|
|
|
+const reportFile1 = ref([]); //附件
|
|
|
const { timeShow, timeValue, modalShow } = toRefs(modal);
|
|
|
const { form, projectsCheck, projectsList, userList, userDate, saveTime } = toRefs(state);
|
|
|
|
|
@@ -264,11 +250,9 @@ const { form, projectsCheck, projectsList, userList, userDate, saveTime } = toRe
|
|
|
* @初始化
|
|
|
*/
|
|
|
function init() {
|
|
|
- dUserList().then((res) => {
|
|
|
- state.userDate = res.data;
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
+ // dUserList().then((res) => {
|
|
|
+ // state.userDate = res.data;
|
|
|
+ // });
|
|
|
}
|
|
|
|
|
|
/** 时间选择器确定按钮点击事件 */
|
|
@@ -288,10 +272,11 @@ function switchChage(e, key) {
|
|
|
|
|
|
/** 添加人员按钮事件 */
|
|
|
function insertUsers() {
|
|
|
- //将人员选中数据传入store中
|
|
|
- systemStore.mallList.activeUserList = state.userList;
|
|
|
-
|
|
|
- proxy.$tab.navigateTo(`/pages/business/common/projectMange/mall/index?number=200&type=3`);
|
|
|
+ proxy.$tab.navigateTo(`/pages/business/common/projectMange/mall/index?number=200&title=选择抄送人`).then(() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.$emit("FathertuSon__UserMall", state.userList); //将值存储监听器
|
|
|
+ }, 500);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/** 删除人员按钮事件 */
|
|
@@ -316,7 +301,7 @@ function insertProjects() {
|
|
|
|
|
|
/** 实时保存填写数据 */
|
|
|
function realTimeSaving() {
|
|
|
- if(!state.form.id){
|
|
|
+ if (!state.form.id) {
|
|
|
state.saveTime = proxy.$time.formatterDate(new Date(), "hh:mm");
|
|
|
storageSystem.set("project", state);
|
|
|
}
|
|
@@ -352,57 +337,52 @@ function modalConfirm() {
|
|
|
/**
|
|
|
* @图片上传成功回调
|
|
|
*/
|
|
|
- function uploadSuccessChange(e) {
|
|
|
+function uploadSuccessChange(e) {
|
|
|
reportImage1.value.push({
|
|
|
name: e.name,
|
|
|
url: e.url,
|
|
|
- })
|
|
|
- reportImage1.value=reportImage1.value.slice(0,5)
|
|
|
- realTimeSaving()
|
|
|
+ });
|
|
|
+ reportImage1.value = reportImage1.value.slice(0, 5);
|
|
|
+ realTimeSaving();
|
|
|
}
|
|
|
/**
|
|
|
* @图片删除回调
|
|
|
*/
|
|
|
- function uploadDeleteChange(e) {
|
|
|
+function uploadDeleteChange(e) {
|
|
|
reportImage1.value = e;
|
|
|
- realTimeSaving()
|
|
|
+ realTimeSaving();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* @文件删除
|
|
|
*/
|
|
|
-function delectFile(param){
|
|
|
+function delectFile(param) {
|
|
|
reportFile1.value = reportFile1.value.filter(function (item) {
|
|
|
- return item.name!=param.name;
|
|
|
+ return item.name != param.name;
|
|
|
});
|
|
|
- realTimeSaving()
|
|
|
+ realTimeSaving();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* @文件上传
|
|
|
*/
|
|
|
function selectUpload(e) {
|
|
|
// console.log('上传:', e)
|
|
|
|
|
|
- e.tempFilePaths.forEach((item,index) => {
|
|
|
- uni.uploadFile({
|
|
|
- url: config.baseUrl+'/service-file/upload',
|
|
|
- filePath: item,
|
|
|
- name: 'file',
|
|
|
- success: (uploadFileRes) => {
|
|
|
- reportFile1.value.push(JSON.parse(uploadFileRes.data).data)
|
|
|
- realTimeSaving()
|
|
|
- },
|
|
|
- fail: (err) => {
|
|
|
- console.log(err);
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
+ e.tempFilePaths.forEach((item, index) => {
|
|
|
+ uni.uploadFile({
|
|
|
+ url: config.baseUrl + "/service-file/upload",
|
|
|
+ filePath: item,
|
|
|
+ name: "file",
|
|
|
+ success: (uploadFileRes) => {
|
|
|
+ reportFile1.value.push(JSON.parse(uploadFileRes.data).data);
|
|
|
+ realTimeSaving();
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ console.log(err);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
// function delectUpload(e){
|
|
|
// console.log(e)
|
|
@@ -414,8 +394,6 @@ function selectUpload(e) {
|
|
|
// console.log('上传失败:', e)
|
|
|
// }
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/** 提交 */
|
|
|
function handleSubmit() {
|
|
|
state.form.sendDingTalk == true ? 1 : 0;
|
|
@@ -425,27 +403,26 @@ function handleSubmit() {
|
|
|
state.form.workContents.forEach((e) => {
|
|
|
e.workTime = Number(e.workTime);
|
|
|
});
|
|
|
- state.form.reportImage=JSON.stringify(reportImage1.value);
|
|
|
- state.form.reportFile=JSON.stringify(reportFile1.value);
|
|
|
+ state.form.reportImage = JSON.stringify(reportImage1.value);
|
|
|
+ state.form.reportFile = JSON.stringify(reportFile1.value);
|
|
|
projectApi()
|
|
|
.ReportInsert(state.form)
|
|
|
.then((requset) => {
|
|
|
proxy.$tab.redirectTo("/pages/business/common/projectMange/record/index"); //返回到需要执行方法的页面
|
|
|
|
|
|
// storageSystem.set("project", state);
|
|
|
- }).catch((err) => {
|
|
|
-
|
|
|
- });;
|
|
|
+ })
|
|
|
+ .catch((err) => {});
|
|
|
}
|
|
|
watch(
|
|
|
() => reportFile1.value.length,
|
|
|
(val) => {
|
|
|
- var element = document.querySelector('.files-button');
|
|
|
- if(reportFile1.value.length>=5){
|
|
|
- element.style.display = 'none';
|
|
|
- }else{
|
|
|
- element.style.display = 'block';
|
|
|
- }
|
|
|
+ var element = document.querySelector(".files-button");
|
|
|
+ if (reportFile1.value.length >= 5) {
|
|
|
+ element.style.display = "none";
|
|
|
+ } else {
|
|
|
+ element.style.display = "block";
|
|
|
+ }
|
|
|
}
|
|
|
);
|
|
|
|
|
@@ -457,18 +434,19 @@ watch(
|
|
|
state.projectsList = [];
|
|
|
state.form.reportImage = [];
|
|
|
state.form.reportFile = [];
|
|
|
-
|
|
|
+
|
|
|
Object.keys(props.projectList).forEach((key) => {
|
|
|
state.form[key] = props.projectList[key];
|
|
|
});
|
|
|
-
|
|
|
- reportImage1.value=state.form.reportImage?JSON.parse(state.form.reportImage):[];
|
|
|
- reportFile1.value=state.form.reportFile?JSON.parse(state.form.reportFile):[];
|
|
|
+
|
|
|
+ reportImage1.value = state.form.reportImage ? JSON.parse(state.form.reportImage) : [];
|
|
|
+ reportFile1.value = state.form.reportFile ? JSON.parse(state.form.reportFile) : [];
|
|
|
state.form.workContents.forEach((e) => {
|
|
|
state.projectsCheck.push(e.projectId);
|
|
|
});
|
|
|
var ccTo = state.form.ccTo.length > 0 ? state.form.ccTo.split(",").map((num) => Number(num)) : [];
|
|
|
- // setTimeout(function () {
|
|
|
+ dUserList().then((res) => {
|
|
|
+ state.userDate = res.data;
|
|
|
state.userDate.forEach((e) => {
|
|
|
if (ccTo.includes(e.userId)) {
|
|
|
state.userList.push({
|
|
@@ -487,44 +465,38 @@ watch(
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
- // }, 300);
|
|
|
+ });
|
|
|
|
|
|
- if(!state.form.id){
|
|
|
- storageSystem.set("project", state);
|
|
|
- }
|
|
|
+ if (!state.form.id) {
|
|
|
+ storageSystem.set("project", state);
|
|
|
+ }
|
|
|
}
|
|
|
);
|
|
|
|
|
|
onReady(() => {});
|
|
|
|
|
|
onShow(() => {
|
|
|
-
|
|
|
init();
|
|
|
|
|
|
-
|
|
|
//循环将缓存数据遍历
|
|
|
|
|
|
- if(!state.form.id){
|
|
|
+ if (!state.form.id) {
|
|
|
var storages = storageSystem.get("project");
|
|
|
Object.keys(storages).forEach((key) => {
|
|
|
state[key] = storages[key];
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
|
|
|
// 监听组件返回数据
|
|
|
- uni.$on("UserMall", function (value) {
|
|
|
+ uni.$on("SontoFather__UserMall", function (value) {
|
|
|
state.userList = value;
|
|
|
- if(!state.form.id){
|
|
|
+ if (!state.form.id) {
|
|
|
realTimeSaving();
|
|
|
}
|
|
|
-
|
|
|
});
|
|
|
});
|
|
|
|
|
|
onLoad((options) => {
|
|
|
-
|
|
|
if (options.id) {
|
|
|
state.form.id = options.id;
|
|
|
} else {
|
|
@@ -533,24 +505,24 @@ onLoad((options) => {
|
|
|
});
|
|
|
|
|
|
onUnload(() => {
|
|
|
- uni.$off("UserMall"); //将值删除监听器
|
|
|
+ uni.$off("SontoFather__UserMall"); //将值删除监听器
|
|
|
});
|
|
|
</script>
|
|
|
-<style lang="scss" >
|
|
|
- :deep(.uni-file-picker__lists, .is-text-box){
|
|
|
- display:none!important;
|
|
|
- opacity:0!important;
|
|
|
- height:0!important;
|
|
|
+<style lang="scss">
|
|
|
+:deep(.uni-file-picker__lists, .is-text-box) {
|
|
|
+ display: none !important;
|
|
|
+ opacity: 0 !important;
|
|
|
+ height: 0 !important;
|
|
|
}
|
|
|
</style>
|
|
|
<style lang="scss" scoped>
|
|
|
-
|
|
|
-.checkbox-group-title{
|
|
|
- display:block;width:100%;
|
|
|
- font-size:16px;
|
|
|
- font-weight:bold;
|
|
|
+.checkbox-group-title {
|
|
|
+ display: block;
|
|
|
+ width: 100%;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
note-color: #909399;
|
|
|
- margin-bottom:10px;
|
|
|
+ margin-bottom: 10px;
|
|
|
}
|
|
|
:deep() {
|
|
|
.u-cell__body {
|