Commit c55e1d4c by zhuxiaomei

维护人员地点

parent 8e1e6a81
<template>
<div>
<div class="layout-cont-btn">
<van-form>
<van-field
v-model="count"
name="count"
type="digit"
required center
label="人员随机数量"
placeholder="请输入人员随机数量"
:rules="[{ required: true, message: '' }]">
<template #button>
<van-button size="small" type="info" @click="_create">生成</van-button>
</template>
</van-field>
<van-field label="人员" center>
<template #input>
<Tag v-for="(item,index) in userList" :key="item.id" :name="index" closable @on-close="_handleClose">
{{ item.name }}
</Tag>
<van-button size="small" type="default" @click="_add">添加</van-button>
</template>
</van-field>
</van-form>
<van-form>
<van-field
v-model="locCount"
name="count"
type="digit"
required center
label="地点随机数量"
placeholder="请输入地点随机数量"
:rules="[{ required: true, message: '' }]">
<template #button>
<van-button size="small" type="info" @click="_locCreate">生成</van-button>
</template>
</van-field>
<van-field label="地点" center>
<template #input>
<Tag v-for="(item,index) in locList" :key="item.id" :name="index" closable @on-close="_handleLocClose">
{{ item.name }}
</Tag>
<van-button size="small" type="default" @click="_addLoc">添加</van-button>
</template>
</van-field>
</van-form>
</div>
<van-popup v-model="showAllSelect">
<SelectSamplerChecked @cancel="showAllSelect=false" @on-change="_selectChange"
ref="select"></SelectSamplerChecked>
</van-popup>
<van-popup v-model="showSelect">
<SelectLocChecked @cancel="showSelect=false" @on-change="_selectLocChange" ref="selectLoc"></SelectLocChecked>
</van-popup>
<div class="bottom-btn" style="position: fixed;bottom: 0">
<van-button type="info" block @click="_save">保存</van-button>
</div>
</div>
</template>
<script>
import {samplingPlan} from '../../api'
import SelectSamplerChecked from './sampler/SelectSamplerChecked'
import SelectLocChecked from './add/loc/SelectLocChecked'
export default {
name: "CreateSampler",
components: {
SelectSamplerChecked,
SelectLocChecked
},
data() {
return {
showAllSelect: false,
planId: '',
count: '',
userList: [],
showSelect: false,
locCount: '',
locList: []
}
},
mounted() {
this.planId = this.$route.query.planId
this._getInfo()
},
methods: {
_getInfo: async function () {
const result = await samplingPlan.getSamplerPlace({planId: this.planId})
if (result) {
this.userList = result.samplers
this.locList = result.places;
}
},
_create: async function () {
if (this.count) {
let result = await samplingPlan.generateSampler({count: this.count, planId: this.planId})
if (result) {
this.$toast('生成成功!')
this.userList = result
}
} else {
this.$toast("请输入随机数量")
}
},
_handleClose(event, index) {
this.userList.splice(index, 1);
},
_add() {
this.showAllSelect = true
this.$nextTick(function () {
this.$refs.select._open(this.planId)
})
},
_selectChange(res) {
this.showAllSelect = false
this.userList = [...res, ...this.userList]
},
_save: async function () {
if (this.userList.length === 0) {
this.$toast('请生成人员!')
} else if (this.locList.length === 0) {
this.$toast('请生成地点!')
} else {
let result = await samplingPlan.saveSamplerRandom({
planId: this.planId,
samplerIds: this.userList.map(item => item.id).join(',')
})
let resultLoc = await samplingPlan.savePlace({
planId: this.planId,
placeIds: this.locList.map(item => item.id).join(',')
})
if (result && resultLoc) {
this.$toast('保存成功!')
this.$router.go(-2)
}
}
},
_locCreate: async function () {
if (this.locCount) {
let result = await samplingPlan.generatePlace({count: this.locCount, planId: this.planId})
if (result) {
this.$toast('生成成功!')
this.locList = result
}
} else {
this.$toast("请输入随机数量")
}
},
_handleLocClose(event, name) {
const index = this.locList.indexOf(name);
this.locList.splice(index, 1);
},
_addLoc() {
this.showSelect = true
this.$nextTick(function () {
this.$refs.selectLoc._open(this.planId)
})
},
_selectLocChange(res) {
this.showSelect = false
this.locList = [...res, ...this.locList]
},
_back() {
this.$emit('back')
},
_submit: async function () {
if (this.userList.length === 0) {
this.$toast('请生成人员!')
} else if (this.locList.length === 0) {
this.$toast('请生成地点!')
} else {
let result = await samplingPlan.saveSubmitPlan({
planId: this.planId,
samplerIds: this.userList.map(item => item.id).join(','),
placeIds: this.locList.map(item => item.id).join(',')
})
if (result) {
this.$toast('操作成功!')
this.$router.go(-1)
}
}
}
}
}
</script>
<style scoped>
</style>
......@@ -70,7 +70,6 @@ import LocAdd from './loc/LocAdd'
import SelectLoc from './loc/SelectLoc'
export default {
name: "Maintain",
components: {
SamplerLab,
LocAdd,
......
......@@ -98,7 +98,7 @@
</van-form>
</div>
<div v-else-if="active===1" style="height: calc(100% - 63px)">
<MaintainComponent ref="maintain" @back="active--" @next="_nextTab3"></MaintainComponent>
<AddMaintain ref="maintain" @back="active--" @next="_nextTab3"></AddMaintain>
</div>
<div v-else-if="active===2" style="height: calc(100% - 63px)">
<TaskRequirements ref="task" @next="_saveCreate" @back="active--"></TaskRequirements>
......@@ -119,13 +119,13 @@
<script>
import {samplingPlan} from '../../../api'
import TaskRequirements from './TaskRequirements'
import MaintainComponent from './MaintainComponent'
import AddMaintain from './AddMaintain'
export default {
name: "SamplingPlanAdd",
components: {
TaskRequirements,
MaintainComponent,
AddMaintain,
},
data() {
return {
......
......@@ -31,8 +31,8 @@
name="count"
type="digit"
required center
label="随机数量"
placeholder="请输入随机数量"
label="地点随机数量"
placeholder="请输入地点随机数量"
:rules="[{ required: true, message: '' }]">
<template #button>
<van-button size="small" type="info" @click="_locCreate">生成</van-button>
......
......@@ -35,7 +35,7 @@
<script>
import {samplingPlan} from '../../../api'
import SelectLocChecked from './SelectLocChecked'
import SelectLocChecked from '../add/loc/SelectLocChecked'
export default {
name: "CreateLoc",
......
......@@ -37,9 +37,9 @@
</template>
<script>
import {samplingPlace} from '../../../api'
import {samplingPlace} from '../../../api'
export default {
export default {
name: "LocAdd",
data() {
return {
......@@ -52,26 +52,30 @@
planId: ''
}
},
mounted() {
this.planId = this.$route.query.planId
},
// mounted() {
// this.planId = this.$route.query.planId
// },
methods: {
_save(){
_open(planId) {
this.planId = planId
this.formObj = this.$resetFields(this.formObj)
},
_save() {
this.$refs.form.submit()
},
onSubmit(){
onSubmit() {
this._saveOk()
},
_saveOk: async function () {
_saveOk:async function() {
let obj = {...this.formObj, ...{planId: this.planId}}
let result = await samplingPlace.add(this.$serializeForm(obj))
if (result) {
this.$toast('操作成功!')
this.$router.go(-1)
}
this.$emit('on-change')
}
}
}
}
</script>
<style scoped>
......
......@@ -35,11 +35,11 @@
<van-checkbox-group v-model="checkListValue" ref="checkboxGroup">
<div class="result-item" v-for="(item,index) in resultList" :key="index" @click="_tapItem(item)">
<div>
<van-checkbox :name="item" shape="square">名称:{{item.name}}</van-checkbox>
<van-checkbox :name="item" shape="square">名称:{{ item.name }}</van-checkbox>
</div>
<div>地址:{{item.address}}</div>
<div>经度:{{item.longitude}}</div>
<div>纬度:{{item.latitude}}</div>
<div>地址:{{ item.address }}</div>
<div>经度:{{ item.longitude }}</div>
<div>纬度:{{ item.latitude }}</div>
</div>
</van-checkbox-group>
</div>
......@@ -52,10 +52,10 @@
</template>
<script>
import {samplingPlace} from '../../../api'
import {samplingPlace} from '../../../api'
let that = {}
export default {
let that = {}
export default {
data() {
return {
map: {},
......@@ -80,8 +80,7 @@
}
},
mounted() {
this.planId = this.$route.query.planId
this._open()
this._open(this.$route.query.planId)
},
methods: {
_tapItem(item) {
......@@ -113,10 +112,12 @@
let result = await samplingPlace.savePlaces(data)
if (result) {
this.$toast('操作成功')
this.$router.go(-1)
this.$emit('on-change')
}
},
_open() {
_open(planId) {
this.planId = planId
that = this
this.isSearch = false
this.map = new AMap.Map('areaContainer', {
......@@ -303,12 +304,12 @@
}
},
}
}
}
</script>
<style scoped lang="less">
#areaPanel {
#areaPanel {
position: fixed;
background-color: white;
max-height: 90%;
......@@ -316,9 +317,9 @@
top: 10px;
right: 10px;
width: 280px;
}
}
select {
select {
position: relative;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
......@@ -336,28 +337,28 @@
-webkit-appearance: none;
-moz-appearance: none;
appearance: none
}
}
select:not(:last-child) {
select:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0
}
}
select:not(:first-child) {
select:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0
}
}
select:focus {
select:focus {
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 .1rem rgba(128, 189, 255, .1)
}
}
select:focus::-ms-value {
select:focus::-ms-value {
color: #495057;
background-color: #fff
}
}
</style>
<template>
<customer-navBar-layout style="width: 100vw;height:100vh">
<template #navBar>
<van-nav-bar
title="选择人员"
left-arrow
@click-left="_cancel"
></van-nav-bar>
</template>
<template #content>
<search-bar label="地点" @search="_search"></search-bar>
<div class="layout-cont-s layout-cont-s-btn">
<van-pull-refresh v-model="refreshing" @refresh="_refresh">
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="_load">
<van-checkbox-group v-model="checkListValue" ref="checkboxGroup">
<van-swipe-cell v-for="item in resultList" :key="item.name">
<div class="result-item" @click="_tapItem(item)">
<van-checkbox :name="item" shape="square"></van-checkbox>
<div>姓名:{{ item.name }}</div>
<div>电话:{{ item.tel }}</div>
<div>所属部门:{{ item.department }}</div>
</div>
</van-swipe-cell>
</van-checkbox-group>
</van-list>
</van-pull-refresh>
</div>
<div class="bottom-btn">
<van-button type="info" block @click="_add">添加</van-button>
</div>
</template>
</customer-navBar-layout>
</template>
<script>
/**
* 人员大库的操作
*/
import {sampler,samplingPlan} from '../../../api'
export default {
data() {
return {
resultList: [],
page: 1,
rows: 10,
refreshing: false,//刷新中...
loading: false,//加载中...
finished: false,//没有更多数据
checkListValue: [],
planId: ''
}
},
methods: {
_open(planId) {
this.checkListValue = []
this.planId = planId
this._refresh()
},
_search(value) {
this.key = value
this._refresh()
},
_refresh() {
this.page = 1
this._getData()
},
_searchParams() {
let data = {
page: this.page,
rows: this.rows,
name: this.key,
};
return this.$serializeForm(data)
},
_getData: async function () {
let result = await sampler.page(this._searchParams())
this.resultList = [...(this.page === 1 ? [] : this.resultList), ...result.records]
this.refreshing = false
this.loading = false
if (this.resultList.length === result.total) {
this.finished = true
}
},
_load() {
this.page = this.page + 1;
this._getData()
},
_tapItem(item) {
if (this.checkListValue.indexOf(item) === -1) {
this.checkListValue.push(item);
} else {
this.checkListValue.splice(this.checkListValue.indexOf(item), 1);
}
},
_add: async function () {
if (this.checkListValue.length === 0) {
this.$toast('请至少选择一条数据!')
} else {
const data = {
planId: this.planId,
samplerIds: this.checkListValue.map(item=>item.id).join(',')
}
const result = await samplingPlan.saveSampler(data)
if (result) {
this.$emit('on-change')
}
}
},
_cancel() {
this.$emit('cancel')
}
}
}
</script>
<style scoped>
</style>
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