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.
488 lines
12 KiB
488 lines
12 KiB
<template> |
|
<view class="content"> |
|
<view class="content_item_box"> |
|
<view class="content_item"> |
|
<view class="view"> |
|
<text style="color: red;">*</text>任务名称 |
|
</view> |
|
<view class="view"> |
|
<radio-group v-if="!isSupervisor" class="radio-group" name="" @change="task($event)"> |
|
<label class="radio" style="margin-right: 20rpx" v-for="(item,key) in data1" :key="item.name"> |
|
<radio color="#317AFF" :value="item.name" /> |
|
<text>{{item.name}}</text> |
|
</label> |
|
</radio-group> |
|
<radio-group v-else class="radio-group" name="" @change="task($event)"> |
|
<label class="radio" style="margin-right: 20rpx" v-for="(item,key) in data2" :key="item.name"> |
|
<radio color="#317AFF" :value="item.name" /> |
|
<text>{{item.name}}</text> |
|
</label> |
|
</radio-group> |
|
</view> |
|
</view> |
|
<view class="content_item"> |
|
<view class="view"> |
|
<text style="color: red;">*</text>单位名称 |
|
</view> |
|
<view class="view" |
|
style="border: 2rpx solid #E4E7EC; height: 60rpx; flex:1;line-height: 60rpx; display:flex;padding: 0 10rpx; margin: 0 30rpx 0 20rpx;" |
|
@tap="indexs()"> |
|
<view v-if="!prams.company.name" class="" |
|
style="flex: 1;color: grey; font-size: 24rpx; margin-left: 10rpx;"> |
|
请选择单位 |
|
</view> |
|
<view v-else class="" style="flex: 1; margin-left: 10rpx;"> |
|
{{prams.company.name}} |
|
</view> |
|
<view class="" style="margin-top: 6rpx;"> |
|
<img src="@/static/task/list.png" alt=""> |
|
</view> |
|
</view> |
|
|
|
</view> |
|
<view class="content_item2" v-if="cid!='首页'"> |
|
<view class="view" style="margin-bottom: 20rpx;"> |
|
<text style="color: red;">*</text><text>协助机构</text> |
|
</view> |
|
|
|
<view class=""> |
|
<view class="" v-for="(item,index) in supervisorList" style="display: flex; margin-bottom: 20rpx;"> |
|
<uni-data-picker class="view" placeholder="请选择协助机构" popup-title="请选择协助机构" :localdata="dataTree" |
|
v-model="item.id" @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened" |
|
@popupclosed="onpopupclosed"> |
|
</uni-data-picker> |
|
<view style="margin-top: 6rpx;" v-if="index == 0" class="" @tap="add()"> |
|
+ |
|
</view> |
|
<view v-else class="" @tap="del(index,item)"> |
|
- |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
|
|
<view class="button"> |
|
<button @tap="apply()">确定</button> |
|
<!-- <button type="default">取消</button> --> |
|
</view> |
|
<view class="taskadd" v-if="index"> |
|
<view class="itembox"> |
|
<view class="item_top"> |
|
<view class=""> |
|
选择单位 |
|
</view> |
|
<view class="" @tap="index=!index"> |
|
x |
|
</view> |
|
</view> |
|
<view class="item_content" v-if="index"> |
|
<Companies v-on:cdata="Company()"></Companies> |
|
</view> |
|
|
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import Companies from "./companies.vue" |
|
export default { |
|
components: { |
|
Companies |
|
}, |
|
props:["cid"], |
|
data() { |
|
return { |
|
classes: '请选择协助机构', |
|
dataTree: [], |
|
|
|
data1: [{ |
|
name: "熟悉演练", |
|
value: 1 |
|
}], |
|
data2: [{ |
|
name: "双随机", |
|
value: 1, |
|
}, { |
|
name: "联络指导", |
|
value: 0 |
|
}], |
|
users: [], |
|
supervisorList: [{ |
|
id: null |
|
}], |
|
og: [], |
|
companies: [], |
|
curry: 0, |
|
|
|
prams: { |
|
task: "", |
|
company: { |
|
name:"", |
|
id:"" |
|
}, |
|
supervisor: [] |
|
}, |
|
companyName: "", |
|
index: false, |
|
selectedYear: 2022, |
|
selectedMonth: 0, |
|
OrganizationId: "", |
|
isSupervisor: false |
|
} |
|
}, |
|
created() { |
|
|
|
let roles = uni.getStorageSync("user").roles |
|
console.log(uni.getStorageSync("user")); |
|
let isSupervisor = roles.find(item => { |
|
return item.name.indexOf('检查') != -1 |
|
}) |
|
isSupervisor ? this.isSupervisor = true : this.isSupervisor = false |
|
|
|
this.OrganizationId = uni.getStorageSync("user").organizationId |
|
// this.getSupervisor() |
|
this.getOg() |
|
this.getUsers() |
|
this.selectedMonth = new Date().getMonth() + 1 |
|
this.selectedYear = new Date().getFullYear() |
|
}, |
|
methods: { |
|
getSupervisor() { |
|
this.$request.get('/api/Users/Inspectors', {}, (data, res) => { |
|
|
|
if (!this.isSupervisor) { |
|
for (let i = 0; i < this.dataTree[0].children.length; i++) { |
|
console.log(this.dataTree[0].children[i]); |
|
for (let k = 0; k < res.length; k++) { |
|
|
|
if (this.dataTree[0].children[i].value == res[k].organizationId) { |
|
this.dataTree[0].children[i].children.push({ |
|
text: res[k].name, |
|
value: res[k].id |
|
}) |
|
} |
|
} |
|
} |
|
for (let i = 0; i < this.dataTree[0].children.length; i++) { |
|
if (this.dataTree[0].children[i].children.length == 0) { |
|
this.dataTree[0].children[i].disable = true |
|
} |
|
} |
|
console.log(res); |
|
} |
|
}) |
|
}, |
|
getOg() { |
|
let p = { |
|
PageNumber: 1, |
|
PageSize: 9999 |
|
} |
|
this.$request.get('/api/Organizations', p, (data, res) => { |
|
this.dataTree = [] |
|
this.og = res.items |
|
for (let i = 0; i < this.og.length; i++) { |
|
if (this.og[i].level == "brigade") { |
|
this.dataTree.push({ |
|
text: this.og[i].name, |
|
value: this.og[i].id, |
|
children: [] |
|
}) |
|
} |
|
|
|
} |
|
for (let i = 0; i < this.og.length; i++) { |
|
for (let k = i + 1; k < this.og.length; k++) { |
|
if (this.og[i].id == this.og[k].parentId && this.og[i].level == "brigade") { |
|
this.dataTree[0].children.push({ |
|
text: this.og[k].name, |
|
value: this.og[k].id, |
|
children: [], |
|
disable: false |
|
}) |
|
} |
|
} |
|
} |
|
// for(let i=0;i<this.dataTree[0].children.length;i++){ |
|
// for (let k=0;i<this.og.length;k++){ |
|
|
|
// } |
|
// } |
|
console.log(this.dataTree); |
|
this.getSupervisor() |
|
|
|
}) |
|
}, |
|
aaa(e) { |
|
this.prams.supervisor = e.detail.value |
|
}, |
|
task(e) { |
|
this.prams.task = e.detail.value |
|
}, |
|
|
|
getUsers() { |
|
|
|
let p = { |
|
OrganizationId: this.OrganizationId, |
|
OrganizationLevel: 'squadron', |
|
ContainsChildren: true, |
|
PageNumber: 1, |
|
PageSize: 9999 |
|
} |
|
this.$request.get('/api/Users', p, (data, res) => { |
|
this.users = res.items |
|
}) |
|
}, |
|
companyname(e) { |
|
this.companyName = this.companies[e.detail.value].companyName |
|
}, |
|
bbb(e) { |
|
this.prams.company = e.id |
|
}, |
|
add() { |
|
this.supervisorList.push({ |
|
id: null |
|
}) |
|
}, |
|
del(index,item) { |
|
console.log(item); |
|
this.supervisorList.splice(index, 1) |
|
|
|
}, |
|
indexs() { |
|
this.index = true |
|
}, |
|
apply() { |
|
this.prams.supervisor=[] |
|
if (!this.prams.task || !this.prams.company) { |
|
return this.$alert.showError("请填写完整") |
|
} |
|
for(let i=0;i<this.supervisorList.length;i++){ |
|
this.prams.supervisor.push(this.supervisorList[i].id) |
|
for (let k=this.supervisorList.length-1;k>i;k--) { |
|
if(this.supervisorList[k].id==this.supervisorList[i].id && i!=k){ |
|
|
|
return this.$alert.showError("协助机构重复") |
|
} |
|
} |
|
} |
|
|
|
if(!this.prams.supervisor.length&&this.cid!="首页"){ |
|
return this.$alert.showError("请填写完整") |
|
} |
|
console.log(this.prams); |
|
let selectedMonth = this.selectedMonth < 10 ? "0" + this.selectedMonth : this.selectedMonth; |
|
let selectedTime = this.selectedYear + '-' + selectedMonth + '-' + '01' |
|
console.log(this.prams, 444); |
|
let b={} |
|
let body = { |
|
month: selectedTime, |
|
taskName: this.prams.task, |
|
taskType: this.prams.task, |
|
companyId: this.prams.company.id, |
|
organizationId: this.OrganizationId, |
|
supervisorIds: this.isSupervisor ? [] : this.prams.supervisor, |
|
assitantOrganizationIds: this.isSupervisor ? this.prams.supervisor : [], |
|
creationType: '申领任务', |
|
approvalStatus: '待处理' |
|
} |
|
let body2 = { |
|
month: selectedTime, |
|
taskName: this.prams.task, |
|
taskType: this.prams.task, |
|
companyId: this.prams.company.id, |
|
organizationId: this.OrganizationId, |
|
supervisorIds: this.isSupervisor ? [uni.getStorageSync("user").id] : [], |
|
assitantOrganizationIds: this.isSupervisor ? [] : [uni.getStorageSync("user").organizationId], |
|
creationType: '自主任务', |
|
approvalStatus: '通过' |
|
} |
|
if(this.cid=="首页"){ |
|
b=body2 |
|
}else{ |
|
b=body |
|
} |
|
// return |
|
this.$request.post('/api/PlanTasks', b, (data, res) => { |
|
console.log(res); |
|
if (res.status == 500) { |
|
this.$alert.showError("该单位已创建任务") |
|
} else { |
|
this.$alert.showError("创建成功") |
|
} |
|
this.$parent.apply(); |
|
}) |
|
}, |
|
Company(data) { |
|
console.log(data); |
|
if (data) { |
|
this.index = false |
|
this.prams.company.name = data.companyName |
|
this.prams.company.id=data.id |
|
} |
|
}, |
|
onnodeclick(e) { |
|
console.log(e); |
|
}, |
|
onpopupopened(e) { |
|
console.log('popupopened'); |
|
}, |
|
onpopupclosed(e) { |
|
console.log('popupclosed'); |
|
}, |
|
onchange(e) { |
|
console.log('onchange:', e); |
|
let a=0 |
|
for (let i=0;i<this.prams.supervisor.length;i++) { |
|
if(this.prams.supervisor[i]==e.detail.value[2].value){ |
|
a++ |
|
} |
|
} |
|
if(!a){ |
|
this.prams.supervisor.push(e.detail.value[2].value) |
|
} |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
.content { |
|
height: 100%; |
|
display: flex; |
|
flex-direction: column; |
|
padding: 0 20rpx; |
|
|
|
.content_item_box { |
|
flex: 1; |
|
overflow: auto; |
|
} |
|
|
|
.taskadd { |
|
width: 100vw; |
|
height: 100vh; |
|
position: fixed; |
|
left: 0; |
|
top: 0; |
|
bottom: 0; |
|
background: rgba(49, 49, 51, 0.2); |
|
z-index: 11; |
|
|
|
.itembox { |
|
// background: #fff; |
|
position: absolute; |
|
top: 40%; |
|
bottom: 180rpx; |
|
left: 0; |
|
width: 100%; |
|
// height: 500rpx; |
|
|
|
.item_top { |
|
height: 60rpx; |
|
background: #F5F7FA; |
|
border-radius: 40rpx 40rpx 0 0; |
|
padding: 10rpx 40rpx 0 40rpx; |
|
display: flex; |
|
|
|
view:nth-child(1) { |
|
flex: 1; |
|
} |
|
} |
|
|
|
.item_content { |
|
background-color: #fff; |
|
height: 100%; |
|
} |
|
} |
|
|
|
.itembox2 { |
|
// background: #fff; |
|
position: absolute; |
|
bottom: 0; |
|
left: 0; |
|
width: 100%; |
|
height: 400rpx; |
|
|
|
.item_top { |
|
height: 60rpx; |
|
background: #F5F7FA; |
|
border-radius: 40rpx 40rpx 0 0; |
|
padding: 10rpx 40rpx 0 40rpx; |
|
display: flex; |
|
|
|
view:nth-child(1) { |
|
flex: 1; |
|
} |
|
} |
|
|
|
.item_content { |
|
background-color: #fff; |
|
height: 100%; |
|
} |
|
} |
|
} |
|
|
|
.content_item { |
|
display: flex; |
|
align-items: center; |
|
padding: 20rpx 0; |
|
|
|
.view { |
|
margin: 0 20rpx; |
|
|
|
img { |
|
width: 40rpx; |
|
height: 40rpx; |
|
} |
|
} |
|
|
|
.input { |
|
flex: 1; |
|
height: 60rpx; |
|
border: 2rpx solid #E4E7EC; |
|
} |
|
} |
|
.content_item2 { |
|
display: flex; |
|
align-items: center; |
|
padding: 20rpx 0; |
|
|
|
.view { |
|
margin: 0 20rpx; |
|
|
|
img { |
|
width: 40rpx; |
|
height: 40rpx; |
|
} |
|
} |
|
|
|
.input { |
|
flex: 1; |
|
height: 60rpx; |
|
border: 2rpx solid #E4E7EC; |
|
} |
|
} |
|
.button { |
|
display: flex; |
|
height: 150rpx; |
|
} |
|
|
|
.checkbox-group, |
|
.radio-group { |
|
flex: 1; |
|
|
|
overflow: auto; |
|
|
|
.checkbox, |
|
.radio { |
|
margin-bottom: 10rpx; |
|
margin-right: 10rpx; |
|
|
|
radio { |
|
transform: scale(0.7); |
|
} |
|
} |
|
} |
|
} |
|
</style>
|
|
|