You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
545 lines
13 KiB
545 lines
13 KiB
<template> |
|
<view class="add"> |
|
<!-- 设备信息 --> |
|
<view class="main"> |
|
<u--form labelPosition="left" labelAlign="center" :model="task" ref="form1" > |
|
<u-form-item label="任务名称" prop="task.name" labelWidth="auto" borderBottom ref="item1" > |
|
<u--input v-model="task.name" border="none" placeholder="请输入任务名称"></u--input> |
|
</u-form-item> |
|
<u-form-item |
|
label="盘点维度" |
|
prop="task.dimension" |
|
borderBottom |
|
@click="showDimension = true; " |
|
labelWidth="auto" |
|
ref="item1" |
|
> |
|
<u--input |
|
v-model="task.dimension" |
|
disabled |
|
disabledColor="#ffffff" |
|
placeholder="请选择盘点维度" |
|
border="none" |
|
></u--input> |
|
<u-icon |
|
slot="right" |
|
name="arrow-right" |
|
></u-icon> |
|
</u-form-item> |
|
|
|
<view v-show="task.dimensionId == 0"> |
|
|
|
<u-form-item |
|
label="盘点部门" |
|
prop="task.dept" |
|
borderBottom |
|
@click="deptMethod" |
|
labelWidth="auto" |
|
ref="item1" |
|
> |
|
<u--input |
|
v-model="task.dept" |
|
disabled |
|
disabledColor="#ffffff" |
|
placeholder="请选择盘点部门" |
|
border="none" |
|
></u--input> |
|
<u-icon |
|
slot="right" |
|
name="arrow-right" |
|
></u-icon> |
|
</u-form-item> |
|
</view> |
|
<view v-show="task.dimensionId == 2"> |
|
<u-form-item |
|
label="盘点人员" |
|
prop="task.user" |
|
borderBottom |
|
@click="userMethod" |
|
labelWidth="auto" |
|
ref="item1" |
|
> |
|
<u--input |
|
v-model="task.user" |
|
disabled |
|
disabledColor="#ffffff" |
|
placeholder="请选择盘点人员" |
|
border="none" |
|
></u--input> |
|
<u-icon |
|
slot="right" |
|
name="arrow-right" |
|
></u-icon> |
|
</u-form-item> |
|
</view> |
|
<u-form-item label="截止日期" prop="task.lastTime" |
|
labelWidth="auto" @click="datePickShow = true; " borderBottom ref="item1" > |
|
<u--input |
|
v-model="task.lastTime" |
|
disabled |
|
disabledColor="#ffffff" |
|
placeholder="请选择截止日期" |
|
border="none" |
|
></u--input> |
|
<u-icon |
|
slot="right" |
|
name="arrow-right" |
|
></u-icon> |
|
<u-datetime-picker |
|
:show="datePickShow" |
|
v-model="pickerTime" |
|
mode="date" |
|
:closeOnClickOverlay="true" |
|
@close="datePickShow = false" |
|
@cancel="datePickShow = false" |
|
@confirm="dateConfirm" |
|
></u-datetime-picker> |
|
</u-form-item> |
|
<u-form-item label="任务照片" prop="task.photo" labelWidth="auto" borderBottom ref="item1" > |
|
<u-upload |
|
:fileList="fileList1" |
|
@afterRead="afterRead" |
|
@delete="deletePic" |
|
name="1" |
|
multiple |
|
:maxCount="1" |
|
:previewFullImage="true" |
|
></u-upload> |
|
</u-form-item> |
|
<u-form-item label="任务说明" prop="task.remark" labelWidth="auto" borderBottom ref="item1" > |
|
<u--textarea v-model="task.remark" placeholder="请输入任务说明" ></u--textarea> |
|
</u-form-item> |
|
|
|
<u-form-item |
|
label="盘点管理员" |
|
prop="task.pdManage" |
|
borderBottom |
|
@click="showPdManage = true; " |
|
labelWidth="auto" |
|
ref="item1" |
|
> |
|
<u--input |
|
v-model="task.pdManage" |
|
disabled |
|
disabledColor="#ffffff" |
|
placeholder="请选择盘点管理员" |
|
border="none" |
|
></u--input> |
|
<u-icon |
|
slot="right" |
|
name="arrow-right" |
|
></u-icon> |
|
</u-form-item> |
|
<!-- <u-form-item label="盘点管理员" labelWidth="auto" borderBottom ref="item1" > |
|
{{pdManage}} |
|
</u-form-item> --> |
|
</u--form> |
|
<u-action-sheet |
|
:show="showPdManage" |
|
:actions="pdManageActions" |
|
title="请选择盘点管理员" |
|
@close="showPdManage = false" |
|
@select="pdManageSelect" |
|
> |
|
</u-action-sheet> |
|
<u-action-sheet |
|
:show="showDimension" |
|
:actions="dimensionActions" |
|
title="请选择盘点维度" |
|
@close="showDimension = false" |
|
@select="dimensionSelect" |
|
> |
|
</u-action-sheet> |
|
<qianziyu-select |
|
:show="showDept" |
|
type="checkbox" |
|
popupTitle="选择部门" |
|
name="name" |
|
:dataLists="deptActions" |
|
placeholder="输入名称搜索" |
|
@cancel="showDept=false" |
|
@search="" |
|
@submit="deptSelect" |
|
> |
|
</qianziyu-select> |
|
<qianziyu-select |
|
:show="showUser" |
|
type="checkbox" |
|
popupTitle="选择人员" |
|
name="name" |
|
:dataLists="userActions" |
|
placeholder="输入名称搜索" |
|
@cancel="showUser=false" |
|
@search="" |
|
@submit="userSelect" |
|
> |
|
</qianziyu-select> |
|
</view> |
|
|
|
<view class="submit" > |
|
<u-button type="primary" @click="submit" text="提 交"></u-button> |
|
</view> |
|
<view class="submit" > |
|
<u-button type="primary" text="结 束" @click="toEnd"></u-button> |
|
</view> |
|
|
|
|
|
|
|
<view > |
|
<u-modal @confirm="end" @cancel="endClose" showCancelButton="true" :show="endShow">确定结束[{{task.name}}]任务的发布?</u-modal> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
// import qianziyu-select from "@/commponents/qianziyu-select/qianziyu-select.vue" |
|
export default { |
|
|
|
data() { |
|
return { |
|
show: true, |
|
task: { |
|
publishId: null, |
|
name:'', |
|
dimension:'', |
|
dimensionId: null, |
|
dept:'', |
|
deptId:null, |
|
office:'', |
|
officeId: null, |
|
user:'', |
|
userPeopleId: null, |
|
lastTime: '', |
|
remark:'', |
|
picUrl:'', |
|
deptIds:[], |
|
userPeopleIds:[], |
|
pdManage: '', |
|
pdManageId: null |
|
}, |
|
pickerTime: Number(new Date()), |
|
datePickShow: false, |
|
showDimension: false, |
|
dimensionActions: [ |
|
{ |
|
name: '部门', |
|
value: 0 |
|
}, |
|
// { |
|
// name: '科室', |
|
// value: 1 |
|
// }, |
|
{ |
|
name: '人员', |
|
value: 2 |
|
} |
|
], |
|
showDept: false, |
|
deptActions: [ |
|
], |
|
showOffice: false, |
|
officeActions: [ |
|
], |
|
showUser: false, |
|
userActions: [ |
|
], |
|
showPdManage: false, |
|
pdManageActions: [ |
|
], |
|
fileList1:[], |
|
endShow: false |
|
} |
|
}, |
|
|
|
onLoad: function(options){ |
|
let data = JSON.parse(options.publish); |
|
this.task.publishId = data.id; |
|
this.task.name = data.name; |
|
this.task.lastTime = data.enableTime; |
|
|
|
this.getPdManage(); |
|
this.getDept(); |
|
this.getUsers(); |
|
}, |
|
|
|
created() { |
|
}, |
|
filters: { |
|
}, |
|
|
|
methods: { |
|
// 1.1扫码 |
|
scan() { |
|
var that = this; |
|
uni.scanCode({ |
|
success: function(res) { |
|
console.log(res.result); |
|
that.getdeviceinfo(res.result) |
|
} |
|
}) |
|
}, |
|
async getdeviceinfo(id) { |
|
const { data:res } = await this.$http('/getdeviceinfo', { |
|
id: id |
|
}); |
|
if(res.code) return |
|
console.log(res.data) |
|
this.show=true; |
|
}, |
|
async getDept() { |
|
const { data:res } = await this.$http('/deptListPublish', {publishId: this.task.publishId}); |
|
if(res.code) return |
|
this.deptActions = []; |
|
for (var i = 0; i < res.data.length; i++) { |
|
this.deptActions.push({ |
|
name: res.data[i].deptName, |
|
value: res.data[i].id |
|
}) |
|
} |
|
}, |
|
async getUsers() { |
|
const { data:res } = await this.$http('/peopleListPublish', {publishId: this.task.publishId}); |
|
if(res.code) return |
|
this.userActions = []; |
|
for (var i = 0; i < res.data.length; i++) { |
|
this.userActions.push({ |
|
// name: res.data[i].deptName+" - "+res.data[i].ksName+" - "+res.data[i].nickName, |
|
name: res.data[i].deptName+" - "+res.data[i].nickName, |
|
value: res.data[i].id |
|
}) |
|
} |
|
}, |
|
async getPdManage() { |
|
const { data:res } = await this.$http('/getPdManage', {}); |
|
if(res.code) return |
|
this.pdManageActions = []; |
|
for (var i = 0; i < res.data.length; i++) { |
|
this.pdManageActions.push({ |
|
name: res.data[i].nickName, |
|
value: res.data[i].id |
|
}) |
|
} |
|
}, |
|
reset(){ |
|
this.task.name = ''; |
|
this.task.dimension=''; |
|
this.task.dimensionId=null; |
|
this.task.remark=''; |
|
this.task.picUrl=''; |
|
this.fileList1=[]; |
|
this.resetSecondSelect(); |
|
}, |
|
resetSecondSelect(){ |
|
this.task.dept=''; |
|
this.task.deptId=null; |
|
this.task.office=''; |
|
this.task.officeId= null; |
|
this.task.user=''; |
|
this.task.userPeopleId= null; |
|
this.task.deptIds = []; |
|
this.task.userPeopleIds = []; |
|
}, |
|
dimensionSelect(e) { |
|
this.task.dimension = e.name |
|
this.task.dimensionId = e.value |
|
this.$refs.form1.validateField('task.dimension') |
|
this.resetSecondSelect(); |
|
}, |
|
deptMethod(){ |
|
this.showDept = true; |
|
}, |
|
officeMethod(){ |
|
this.showOffice = true; |
|
}, |
|
userMethod(){ |
|
this.showUser = true; |
|
}, |
|
deptSelect(e) { |
|
// this.task.dept = e.name |
|
// this.task.deptId = e.value |
|
// this.$refs.form1.validateField('task.dept') |
|
var nameArr = [];var valueArr = []; |
|
for (var i = 0; i < e.length; i++) { |
|
nameArr.push(e[i].name); |
|
valueArr.push(e[i].value); |
|
} |
|
this.task.dept = nameArr.join(",") |
|
this.task.deptIds = valueArr; |
|
this.showDept = false; |
|
}, |
|
userSelect(e) { |
|
// this.task.user = e.name |
|
// this.task.userPeopleId = e.value |
|
// this.$refs.form1.validateField('task.user') |
|
var nameArr = [];var valueArr = []; |
|
for (var i = 0; i < e.length; i++) { |
|
nameArr.push(e[i].name); |
|
valueArr.push(e[i].value); |
|
} |
|
this.task.user = nameArr.join(",") |
|
this.task.userPeopleIds = valueArr; |
|
this.showUser = false; |
|
}, |
|
pdManageSelect(e){ |
|
this.task.pdManage = e.name |
|
this.task.pdManageId = e.value |
|
this.$refs.form1.validateField('task.pdManage') |
|
}, |
|
submit(){ |
|
let flag = true; |
|
if(this.task.dimensionId==null || this.task.name==null || this.task.name=='' ){ |
|
flag = false; |
|
} |
|
if(this.task.dimensionId == 0 && !this.task.deptIds){ |
|
flag = false; |
|
} |
|
if(this.task.dimensionId == 2 && !this.task.userPeopleIds){ |
|
flag = false; |
|
} |
|
// if(this.fileList1.length == 0){ |
|
// flag = false; |
|
// } |
|
if(!flag) return uni.showToast({ |
|
title: '请补充任务内容', |
|
icon: 'error' |
|
}) |
|
|
|
if(this.fileList1.length > 0){ |
|
console.log(this.fileList1) |
|
let url = []; |
|
for (var i = 0; i < this.fileList1.length; i++) { |
|
url.push(this.fileList1[i].url) |
|
} |
|
this.task.picUrl = url.join(","); |
|
} |
|
this.addTask(); |
|
|
|
}, |
|
async addTask(){ |
|
const { data:res } = await this.$http('/addTask', this.task); |
|
if(res.code == 0){ |
|
uni.showToast({ |
|
title: '提交成功', |
|
icon: 'success' |
|
}); |
|
this.reset(); |
|
} |
|
|
|
}, |
|
// 删除图片 |
|
deletePic(event) { |
|
this[`fileList${event.name}`].splice(event.index, 1) |
|
}, |
|
// 新增图片 |
|
async afterRead(event) { |
|
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式 |
|
let lists = [].concat(event.file) |
|
let fileListLen = this[`fileList${event.name}`].length |
|
lists.map((item) => { |
|
this[`fileList${event.name}`].push({ |
|
...item, |
|
status: 'uploading', |
|
message: '上传中' |
|
}) |
|
}) |
|
for (let i = 0; i < lists.length; i++) { |
|
const result = await this.uploadFilePromise(lists[i].url) |
|
let item = this[`fileList${event.name}`][fileListLen] |
|
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, { |
|
status: 'success', |
|
message: '', |
|
url: result |
|
})) |
|
fileListLen++ |
|
} |
|
}, |
|
uploadFilePromise(url) { |
|
return new Promise((resolve, reject) => { |
|
const token = uni.getStorageSync("token"); |
|
let a = uni.uploadFile({ |
|
url: this.BASE_URL+'/upload', // 仅为示例,非真实的接口地址 |
|
filePath: url, |
|
name: 'file', |
|
header: { |
|
"Authorization":"Bearer " + token, |
|
}, |
|
formData: { |
|
user: 'test' |
|
}, |
|
success: (res) => { |
|
setTimeout(() => { |
|
let data = JSON.parse(res.data) |
|
console.log(data) |
|
resolve(data.fileName) |
|
}, 1000) |
|
} |
|
}); |
|
}) |
|
}, |
|
dateConfirm(e){ |
|
const timeFormat = uni.$u.timeFormat |
|
console.log(timeFormat(e.value, 'yyyy-mm-dd')) |
|
this.datePickShow = false; |
|
this.task.lastTime = timeFormat(e.value, 'yyyy-mm-dd'); |
|
}, |
|
endClose() { |
|
this.endShow = false |
|
}, |
|
toEnd(){ |
|
this.endShow = true |
|
}, |
|
async end(){ |
|
const { data:res } = await this.$http('/endAdd', {publishId: this.task.publishId}); |
|
if(res.code) return |
|
uni.navigateBack({ delta: 1 }); |
|
// uni.redirectTo({ |
|
// url:'add_list' |
|
// }) |
|
uni.showToast({ |
|
title: "执行成功", |
|
icon: 'success' |
|
}) |
|
this.endShow = false |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
|
|
.submit{ |
|
margin: 1vh 2.667vw; |
|
} |
|
.add { |
|
background: #f6f6f6; |
|
padding: 2.667vw; |
|
height: 100vh; |
|
.main { |
|
background: #ffffff; |
|
margin-bottom: 2.667vw; |
|
padding: 2vw; |
|
border-radius: 8px; |
|
|
|
.u-form-item__body__right{ |
|
padding-left: 20vw; |
|
} |
|
.u-button{ |
|
border: none !important; |
|
padding: 0 !important; |
|
justify-content: flex-start; |
|
} |
|
} |
|
} |
|
.u-popup{ |
|
.title{ |
|
margin: 1vh 0 0 0; |
|
text-align: center; |
|
} |
|
.u-button{ |
|
justify-content: center !important; |
|
} |
|
.u-checkbox{ |
|
margin-bottom: 16px; |
|
} |
|
} |
|
</style> |