Commit dde19e69 by zhuxiaomei

维护人员地点

parent c55e1d4c
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "vue-cli-service serve --mode development", "serve": "vue-cli-service serve --mode development",
"devtest": "vue-cli-service serve --mode devtest",
"build": "vue-cli-service build --mode production", "build": "vue-cli-service build --mode production",
"pertest": "vue-cli-service build --mode pertest", "pertest": "vue-cli-service build --mode pertest",
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
......
...@@ -14,6 +14,7 @@ export default { ...@@ -14,6 +14,7 @@ export default {
add:data=>http.post('/drs/v1/sampling_plan/', data).then(res=>res), add:data=>http.post('/drs/v1/sampling_plan/', data).then(res=>res),
addPlan:data=>http.post('/drs/v1/sampling_plan/add_plan', data).then(res=>res),
edit:data=>http.put('/drs/v1/sampling_plan/' + data.id, data.obj).then(res=>res), edit:data=>http.put('/drs/v1/sampling_plan/' + data.id, data.obj).then(res=>res),
deleteByIds:ids=>http.delete('/drs/v1/sampling_plan/?ids=' + ids).then(res=>res), deleteByIds:ids=>http.delete('/drs/v1/sampling_plan/?ids=' + ids).then(res=>res),
...@@ -26,4 +27,6 @@ export default { ...@@ -26,4 +27,6 @@ export default {
samplerPage:data=>http.post('/drs/v1/sampling_plan/search_plan_sampler', data).then(res=>res), samplerPage:data=>http.post('/drs/v1/sampling_plan/search_plan_sampler', data).then(res=>res),
saveSampler:data=>http.post('/drs/v1/sampling_plan/save_plan_sampler', data).then(res=>res), saveSampler:data=>http.post('/drs/v1/sampling_plan/save_plan_sampler', data).then(res=>res),
deletePlanSampler:data=>http.post('/drs/v1/sampling_plan/delete_plan_sampler', data).then(res=>res), deletePlanSampler:data=>http.post('/drs/v1/sampling_plan/delete_plan_sampler', data).then(res=>res),
saveSubmitPlan:data=>http.post('/drs/v1/sampling_plan/save_submit_plan', data).then(res=>res),
getSamplerPlace:data=>http.post('/drs/v1/sampling_plan/search_selected_sampler_place', data).then(res=>res),
} }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div> <div>
<img src="@/assets/home/plan.png"></div> <img src="@/assets/home/plan.png"></div>
<div> <div>
<div class="title">抽样计划执行双随机</div> <div class="title">我创建的抽样计划</div>
<!--todo 每个模块的数量--> <!--todo 每个模块的数量-->
<div class="num">3</div> <div class="num">3</div>
</div> </div>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<div class="box-img"> <div class="box-img">
<img src="@/assets/home/task.png"></div> <img src="@/assets/home/task.png"></div>
<div class="cont"> <div class="cont">
<div class="title">我的任务</div> <div class="title">我的双随机任务</div>
<div class="num">4</div> <div class="num">4</div>
</div> </div>
</div> </div>
......
<template>
<div>
<van-field label="人员" center>
<template #input>
<Tag v-for="(item,index) in userList" :key="item.id" :name="index" closable @on-close="_userHandleClose">
{{ item.name }}
</Tag>
<van-button size="small" type="default" @click="_userAdd">添加</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="_locHandleClose">
{{ item.name }}
</Tag>
<van-button size="small" type="default" @click="_locAdd">手动添加</van-button>
<van-button size="small" type="default" @click="_locSearch" style="margin-left: 10px">搜索选择</van-button>
</template>
</van-field>
<van-popup v-model="showUserSelect">
<SamplerLab @cancel="showUserSelect=false" @on-change="_selectUserChange"
ref="userSelect"></SamplerLab>
</van-popup>
<van-popup v-model="showLocAdd">
<customer-navBar-layout style="width: 100vw;height:100vh">
<template #navBar>
<van-nav-bar
title="添加地点"
left-arrow
@click-left="showLocAdd=false"
></van-nav-bar>
</template>
<template #content>
<div class="layout-cont pop-page-cont">
<LocAdd @on-change="_addLocChange" ref="locAdd"></LocAdd>
</div>
</template>
</customer-navBar-layout>
</van-popup>
<van-popup v-model="showLocSelect">
<customer-navBar-layout style="width: 100vw;height:100vh">
<template #navBar>
<van-nav-bar
title="选择地点"
left-arrow
@click-left="showLocSelect=false"
></van-nav-bar>
</template>
<template #content>
<div class="layout-cont pop-page-cont">
<SelectLoc @on-change="_selectLocChange" ref="locSelect"></SelectLoc>
</div>
</template>
</customer-navBar-layout>
</van-popup>
<div class="bottom-btn" style="position: fixed;bottom: 0">
<van-button type="info" block @click="_create">随机生成</van-button>
</div>
</div>
</template>
<script>
import {samplingPlace, samplingPlan} from "../../api";
import SamplerLab from './sampler/SamplerLab'
import LocAdd from './loc/LocAdd'
import SelectLoc from './loc/SelectLoc'
export default {
components: {
SamplerLab,
LocAdd,
SelectLoc,
},
data() {
return {
planId: '',
userList: [],
locList: [],
showUserSelect: false,
showLocAdd: false,
showLocSelect: false,
}
},
mounted() {
this.planId = this.$route.query.planId
this._getUserList()
this._getLocList()
},
methods: {
_getUserList: async function () {
const page = await samplingPlan.samplerPage({page: 1, rows: 1000, planId: this.planId})
this.userList = page ? page.records : []
},
_getLocList: async function () {
const page = await samplingPlace.page({page: 1, rows: 1000, planId: this.planId})
this.locList = page ? page.records : []
},
_userAdd() {
this.showUserSelect = true
this.$nextTick(function () {
this.$refs.userSelect._open(this.planId)
})
},
_locAdd() {
this.showLocAdd = true
this.$nextTick(function () {
this.$refs.locAdd._open(this.planId)
})
},
_locSearch() {
this.showLocSelect = true
this.$nextTick(function () {
this.$refs.locSelect._open(this.planId)
})
},
_selectUserChange() {
this.showUserSelect = false
this._getUserList()
},
_addLocChange() {
this.showLocAdd = false
this._getLocList()
},
_selectLocChange() {
this.showLocSelect = false
this._getLocList()
},
_userHandleClose: async function (event, index) {
const result = await samplingPlan.deletePlanSampler({samplerId: this.userList[index].id, planId: this.planId})
if (result) {
this.userList.splice(index, 1);
}
},
_locHandleClose: async function (event, index) {
const result = await samplingPlace.deleteByIds(this.locList[index].id)
if (result) {
this.locList.splice(index, 1);
}
},
_create() {
this.$router.push({path:'/sampling_plan/random_create',query:{planId:this.planId}})
},
}
}
</script>
<style scoped>
.pop-page-cont > div {
width: 100%;
height: 100%;
}
</style>
<template>
<div>
<van-form @submit="onSubmit">
<van-field
v-model="formObj.name"
name="name"
label="计划名称"
placeholder="计划名称"
:rules="[{ required: true, message: '请填写计划名称'}]"
></van-field>
<van-field
v-model="formObj.planDate"
name="monitorDate"
label="计划日期"
placeholder="计划日期"
@click="_selectDate('formObj.planDate')"
></van-field>
<van-field
v-model="formObj.issuingUnit"
name="issuingUnit"
label="任务下达单位"
placeholder="任务下达单位"
></van-field>
<van-field
v-model="formObj.taskSource"
name="taskSource"
label="任务来源"
placeholder="任务来源"
></van-field>
<van-field
type="textarea"
v-model="formObj.product"
name="product"
label="产品"
placeholder="产品"
></van-field>
<van-field
v-model="formObj.standard"
name="standard"
label="抽查依据标准"
placeholder="抽查依据标准"
></van-field>
<van-field
v-model="formObj.finishDate"
name="finishDate"
label="完成时间"
placeholder="完成时间"
@click="_selectDate('formObj.finishDate')"
></van-field>
<van-field
type="number"
v-model="formObj.samplingQuantity"
name="samplingQuantity"
label="抽样数量"
placeholder="抽样数量"
></van-field>
<van-field
type="number"
v-model="formObj.testCost"
name="testCost"
label="检测费用"
placeholder="检测费用"
></van-field>
<van-field
v-model="formObj.announcementNo"
name="announcementNo"
label="公告号"
placeholder="公告号"
></van-field>
<van-field
v-model="formObj.announcementDate"
name="announcementDate"
label="公告日期"
placeholder="公告日期"
@click="_selectDate('formObj.announcementDate')"
></van-field>
<van-field
type="textarea"
v-model="formObj.remark"
name="remark"
label="备注"
placeholder="备注"
></van-field>
<div style="margin: 16px;">
<van-button round block type="info" native-type="submit">
保存
</van-button>
</div>
</van-form>
<van-popup v-model="showDatePicker" position="bottom"
:safe-area-inset-bottom="true"
:close-on-popstate="true">
<van-datetime-picker
type="date"
v-model="currentDate"
@confirm="_dateConfirm"
@cancel="showDatePicker = false"
></van-datetime-picker>
</van-popup>
</div>
</template>
<script>
import {samplingPlan} from '../../api'
export default {
name: "SamplingPlanAdd",
data() {
return {
showDatePicker: false,
currentDate: new Date(),
selectDateType: '',
id: '',
formObj: {
name: '',
planDate: '',
issuingUnit: '',
taskSource: '',
product: '',
standard: '',
finishDate: '',
samplingQuantity: '',
testCost: 0,
announcementNo: '',
announcementDate: '',
remark: ''
}
}
},
mounted() {
this._open()
},
methods: {
_open() {
if (this.$route.query.id) {//编辑
this.id = this.$route.query.id
this._getData()
} else {
this.id = ''
}
},
_getData: async function () {
let result = await samplingPlan.getById(this.id)
if (result) {
for (let key in this.formObj) {
if (result[key]) {
if (key === 'planDate'||key === 'finishDate'||key === 'announcementDate') {
this.formObj[key] = this.$dateformat(result[key], 'yyyy-mm-dd')
} else {
this.formObj[key] = result[key]
}
}
}
}
},
onSubmit(res) {
if (this.id) {
this._editSave(this.$serializeForm(res))
} else {
this._addSave(this.$serializeForm(res))
}
},
_editSave: async function (res) {
let result = await samplingPlan.edit({id: this.id, obj: res})
if (result) {
this.$toast('编辑成功!')
this.$router.go(-1)
}
},
_addSave: async function (res) {
let result = await samplingPlan.add(res)
if (result) {
this.$toast('添加成功!')
this.$router.go(-1)
}
},
_selectDate(type) {
this.selectDateType = type
this.showDatePicker = true
},
_dateConfirm(date) {
switch (this.selectDateType) {
case 'formObj.planDate':
this.formObj.planDate = this.$dateformat(date, 'yyyy-mm-dd')
break
case 'formObj.finishDate':
this.formObj.finishDate = this.$dateformat(date, 'yyyy-mm-dd')
break
case 'formObj.announcementDate':
this.formObj.announcementDate = this.$dateformat(date, 'yyyy-mm-dd')
break
}
this.showDatePicker = false
},
}
}
</script>
<style scoped>
</style>
...@@ -28,6 +28,9 @@ ...@@ -28,6 +28,9 @@
</template> </template>
<script> <script>
/**
* 抽样任务-人员双随机-手动添加
*/
import {sampler, samplingPlan} from '../../../api' import {sampler, samplingPlan} from '../../../api'
export default { export default {
......
import SamplingPlan from '@/page/sampling-plan/SamplingPlan.vue' import SamplingPlan from '@/page/sampling-plan/SamplingPlan.vue'
import SamplingPlanAdd from '@/page/sampling-plan/SamplingPlanAdd.vue' import Maintain from '@/page/sampling-plan/Maintain.vue'
import RandomCreate from '@/page/sampling-plan/RandomCreate.vue'
import SamplingPlanAdd from '@/page/sampling-plan/add/SamplingPlanAdd.vue'
import SamplerChecked from '@/page/sampling-plan/sampler/SamplerChecked.vue' // import SamplerChecked from '@/page/sampling-plan/sampler/SamplerChecked.vue'
import SelectSampler from '@/page/sampling-plan/sampler/SelectSampler.vue' import SelectSampler from '@/page/sampling-plan/sampler/SelectSampler.vue'
import CreateSampler from '@/page/sampling-plan/sampler/CreateSampler.vue' // import CreateSampler from '@/page/sampling-plan/sampler/CreateSampler.vue'
import LocChecked from '@/page/sampling-plan/loc/LocChecked.vue' import LocChecked from '@/page/sampling-plan/loc/LocChecked.vue'
import SelectLoc from '@/page/sampling-plan/loc/SelectLoc.vue' // import SelectLoc from '@/page/sampling-plan/loc/SelectLoc.vue'
import CreateLoc from '@/page/sampling-plan/loc/CreateLoc.vue' // import CreateLoc from '@/page/sampling-plan/loc/CreateLoc.vue'
import LocAdd from '@/page/sampling-plan/loc/LocAdd.vue' // import LocAdd from '@/page/sampling-plan/loc/LocAdd.vue'
import File from '@/page/sampling-plan/file/File.vue' import File from '@/page/sampling-plan/file/File.vue'
import FileDownLoad from '@/page/sampling-plan/file/FileDownLoad.vue' import FileDownLoad from '@/page/sampling-plan/file/FileDownLoad.vue'
...@@ -16,16 +18,18 @@ import FileUpload from '@/page/sampling-plan/file/FileUpload.vue' ...@@ -16,16 +18,18 @@ import FileUpload from '@/page/sampling-plan/file/FileUpload.vue'
export default [ export default [
{path: 'sampling_plan', component: SamplingPlan, meta: {title: '抽样计划', hideNavBar: true}}, {path: 'sampling_plan', component: SamplingPlan, meta: {title: '抽样计划', hideNavBar: true}},
{path: 'maintain', component: Maintain, meta: {title: '维护人员、地点'}},
{path: 'random_create', component: RandomCreate, meta: {title: '随机生成'}},
{path: 'sampling_plan_add', component: SamplingPlanAdd, meta: {customerNavBarTitle: true}}, {path: 'sampling_plan_add', component: SamplingPlanAdd, meta: {customerNavBarTitle: true}},
{path: 'sampler_checked', component: SamplerChecked, meta: {title: '管理抽样人员'}}, // {path: 'sampler_checked', component: SamplerChecked, meta: {title: '管理抽样人员'}},
{path: 'select_sampler', component: SelectSampler, meta: {title: '选择抽样人员'}}, {path: 'select_sampler', component: SelectSampler, meta: {title: '选择抽样人员'}},
{path: 'create_sampler', component: CreateSampler, meta: {title: '生成抽样人员'}}, // {path: 'create_sampler', component: CreateSampler, meta: {title: '生成抽样人员'}},
{path: 'loc_checked', component: LocChecked, meta: {title: '管理抽样地点'}}, {path: 'loc_checked', component: LocChecked, meta: {title: '管理抽样地点'}},
{path: 'select_loc', component: SelectLoc, meta: {title: '选择抽样地点'}}, // {path: 'select_loc', component: SelectLoc, meta: {title: '选择抽样地点'}},
{path: 'create_loc', component: CreateLoc, meta: {title: '生成抽样地点'}}, // {path: 'create_loc', component: CreateLoc, meta: {title: '生成抽样地点'}},
{path: 'loc_add', component: LocAdd, meta: {title: '添加地点'}}, // {path: 'loc_add', component: LocAdd, meta: {title: '添加地点'}},
{path: 'file', component: File, meta: {title: '附件'}}, {path: 'file', component: File, meta: {title: '附件'}},
{path: 'file_upload', component: FileUpload, meta: {title: '添加附件'}}, {path: 'file_upload', component: FileUpload, meta: {title: '添加附件'}},
......
...@@ -287,3 +287,8 @@ html, body, #app, .main-content-con { ...@@ -287,3 +287,8 @@ html, body, #app, .main-content-con {
color: @text-color-white; color: @text-color-white;
} }
} }
.van-field__control--custom{
flex-wrap: wrap;
}
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