Browse Source

优化;项目、任务

master
小久哥 3 years ago
parent
commit
a2e613c102
  1. 87
      src/views/farm/project/index.vue
  2. 176
      src/views/farm/task/index.vue

87
src/views/farm/project/index.vue

@ -108,17 +108,26 @@
<el-form-item label="项目内容" prop="content"> <el-form-item label="项目内容" prop="content">
<editor v-model="form.content" :min-height="192"/> <editor v-model="form.content" :min-height="192"/>
</el-form-item> </el-form-item>
<el-form-item label="区域选择" prop="selectAreasList">
<el-select v-model="selectAreasList" multiple placeholder="请选择"> <!-- <el-form-item label="区域选择" prop="assemAreaList">
<el-option <el-cascader
v-for="item in areasList" :options="assemAreaList"
:key="item.id" :props="props"
:label="item.name" clearable
:value="item.id"> ref="chooseA"
{{item.name}} @change="changeArea"
v-model="form.areas">
</el-cascader>
</el-form-item> -->
<el-form-item label="区域选择" prop="selectAreasList">
<el-select v-model="form.areas" multiple placeholder="请选择">
<el-option v-for="item in areasList" :key="item.id" :label="item.name" :value="item.id"> {{item.name}}
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="作物选择" prop="cropId"> <el-form-item label="作物选择" prop="cropId">
<el-select v-model="form.cropId" placeholder="请选择"> <el-select v-model="form.cropId" placeholder="请选择">
<el-option v-for="item in cropList" :key="item.id" :label="item.name" :value="item.id"> {{item.name}} <el-option v-for="item in cropList" :key="item.id" :label="item.name" :value="item.id"> {{item.name}}
@ -135,10 +144,10 @@
<imageUpload v-model="form.images"/> <imageUpload v-model="form.images"/>
</el-form-item> </el-form-item>
<el-form-item label="项目开始时间" prop="planStartTime"> <el-form-item label="项目开始时间" prop="planStartTime">
<el-date-picker clearable v-model="form.planStartTime" type="date" value-format="timestamp" placeholder="选择" /> <el-date-picker clearable v-model="form.planStartTime" type="datetime" value-format="timestamp" placeholder="选择" />
</el-form-item> </el-form-item>
<el-form-item label="项目结束时间" prop="planEndTime"> <el-form-item label="项目结束时间" prop="planEndTime">
<el-date-picker clearable v-model="form.planEndTime" type="date" value-format="timestamp" placeholder="选择" /> <el-date-picker clearable v-model="form.planEndTime" type="datetime" value-format="timestamp" placeholder="选择" />
</el-form-item> </el-form-item>
<el-form-item label="优先级" prop="weight"> <el-form-item label="优先级" prop="weight">
<el-input v-model="form.weight" placeholder="请输入数字(1第一优先,99最后优先)" /> <el-input v-model="form.weight" placeholder="请输入数字(1第一优先,99最后优先)" />
@ -156,7 +165,6 @@
import { createProject, updateProject, deleteProject, getProject, getProjectPage, exportProjectExcel, getProjectSearchPage } from "@/api/farm/project"; import { createProject, updateProject, deleteProject, getProject, getProjectPage, exportProjectExcel, getProjectSearchPage } from "@/api/farm/project";
import ImageUpload from '@/components/ImageUpload'; import ImageUpload from '@/components/ImageUpload';
import Editor from '@/components/Editor'; import Editor from '@/components/Editor';
// import { getResourcePage } from "@/api/farm/resource";
import { getAreaPage} from "@/api/farm/area"; import { getAreaPage} from "@/api/farm/area";
import { getCropPage} from "@/api/farm/crop"; import { getCropPage} from "@/api/farm/crop";
import { getCpUserPage} from "@/api/system/cpUser" import { getCpUserPage} from "@/api/system/cpUser"
@ -213,7 +221,13 @@ export default {
planEndTime: [{ required: true, message: "不能为空", trigger: "blur" }], planEndTime: [{ required: true, message: "不能为空", trigger: "blur" }],
weight: [{ required: true, message: "不能为空", trigger: "blur" }], weight: [{ required: true, message: "不能为空", trigger: "blur" }],
}, },
props: { multiple: true },
areasList:[], areasList:[],
assemAreaList:[],
areasParentList:[],
areasSonList:[],
selectAreasList:[], selectAreasList:[],
cropList:[], cropList:[],
membersList:[], membersList:[],
@ -222,7 +236,6 @@ export default {
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
@ -237,7 +250,8 @@ export default {
getAreasList(){ getAreasList(){
getAreaPage({ getAreaPage({
pageNo: 1, pageNo: 1,
pageSize: 100 pageSize: 100,
parentId: 0
}).then(res =>{ }).then(res =>{
this.areasList = res.data.list; this.areasList = res.data.list;
}) })
@ -255,7 +269,7 @@ export default {
this.getAreasList(); this.getAreasList();
this.getCropList(); this.getCropList();
this.getCpUserList(); this.getCpUserList();
this.assemArea();
this.loading = true; this.loading = true;
// //
let params = {...this.queryParams}; let params = {...this.queryParams};
@ -265,16 +279,13 @@ export default {
// //
getProjectPage(params).then(response => { getProjectPage(params).then(response => {
response.data.list.forEach(element => { response.data.list.forEach(element => {
element.areas = JSON.parse(element.areas); element.areas = JSON.parse(element.areas);
let areasName = ''; let areaName = "";
element.areas.forEach((inn) =>{ element.areas.forEach(a=>{
this.areasList.forEach((ar) =>{ this.areasList.filter(t=>t.id == a)[0].name;
if(inn == ar.id){ areaName += this.areasList.filter(t=>t.id == a)[0].name +"、\n";
areasName += (ar.name + "、\n"); })
} element.areas = areaName;
})
})
element.areas = areasName;
element.members = JSON.parse(element.members); element.members = JSON.parse(element.members);
if(element.members != null){ if(element.members != null){
@ -291,7 +302,6 @@ export default {
}); });
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
@ -363,11 +373,13 @@ export default {
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.getCpUserList(); this.getCpUserList();
this.assemArea();
this.open = true; this.open = true;
this.title = "添加农场项目"; this.title = "添加农场项目";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.assemArea();
this.reset(); this.reset();
const id = row.id; const id = row.id;
getProject(id).then(response => { getProject(id).then(response => {
@ -386,12 +398,13 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
console.log("提交信息",this.form);
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (!valid) { if (!valid) {
return; return;
} }
this.form.areas = JSON.stringify(this.selectAreasList);
this.form.members = JSON.stringify(this.selectMembersList); this.form.members = JSON.stringify(this.selectMembersList);
this.form.areas = JSON.stringify(this.form.areas);
// //
if (this.form.id != null) { if (this.form.id != null) {
@ -439,7 +452,29 @@ export default {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
},
assemArea(){
let parentLsit = this.areasList.filter(t => t.parentId == 0);
let sonList = this.areasList.filter(s => s.parentId != 0);
let firstList = [];
parentLsit.forEach(p => {
this.areasParentList.push(p);
let secondList = [];
sonList.forEach(s => {
if (p.id == s.parentId) {
this.areasSonList.push(s);
secondList.push({value:s.id, label:s.name});
}
})
firstList.push({value: p.id, label:p.name, children: secondList})
})
this.assemAreaList = firstList;
},
changeArea(){
} }
} }
}; };

176
src/views/farm/task/index.vue

@ -58,6 +58,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="执行人" align="center" prop="executorPerson"/> <el-table-column label="执行人" align="center" prop="executorPerson"/>
<el-table-column label="区域" align="center" prop="areas" width="180"/>
<el-table-column label="作物名" align="center" prop="cropName" > <el-table-column label="作物名" align="center" prop="cropName" >
<template slot-scope="scope"> <template slot-scope="scope">
@ -122,7 +123,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目选择" prop="projectId"> <el-form-item label="项目选择" prop="projectId">
<el-select v-model="form.projectId" placeholder="请选择"> <el-select v-model="form.projectId" placeholder="请选择" @change="changeProject">
<el-option <el-option
v-for="item in projectList" v-for="item in projectList"
:key="item.id" :key="item.id"
@ -157,6 +158,16 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="区域选择" prop="assemAreaList">
<el-cascader
:options="assemAreaList"
:props="props"
clearable
ref="chooseA"
v-model="form.areas">
</el-cascader>
</el-form-item>
<el-form-item label="作物选择" prop="cropId"> <el-form-item label="作物选择" prop="cropId">
<el-select v-model="form.cropId" placeholder="请选择"> <el-select v-model="form.cropId" placeholder="请选择">
<el-option <el-option
@ -197,19 +208,44 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<div v-for="(item,index) in resourceTypeList" :key="index"> <el-form-item label="资源选择" prop="resources">
<el-form-item label="资源选择">
<el-cascader <el-cascader
:options="twoList" :options="twoList"
:props="props" :props="props"
collapse-tags
clearable clearable
ref="chooseR"
@change="changeResources"
v-model="form.resources"> v-model="form.resources">
</el-cascader> </el-cascader>
<el-button @click="addR(index)">添加</el-button> </el-form-item>
<el-button @click="delR(index)">删除</el-button>
</el-form-item> <!-- <el-form-item label="填写数量" prop="resources">
<div v-for="(item, index) of resourceNumberList" :v-model="item.id" :key="index" >
<el-col>
<span>{{item.pValue}}/{{item.value}}</span>
</el-col>
<el-col :span="8">
<el-input placeholder="请输入数量" />
</el-col>
</div> </div>
</el-form-item> -->
<el-form ref="form" :model="formR" :rules="rules" label-width="80px">
<el-form-item label="填写数量" prop="resources">
<el-col >
<span v-for="(item, index) of resourceNumberList" :key="index">
{{item.pValue}}/{{item.value}}
</span>
</el-col>
<el-col :span="8">
<el-input v-for="(item, index) of resourceNumberList" v-model="item.id" :key="index" placeholder="请输入数量" />
</el-col>
</el-form-item>
</el-form>
<el-form-item label="工时" prop="workingHours"> <el-form-item label="工时" prop="workingHours">
<el-input v-model="form.workingHours" placeholder="请输入工时" /> <el-input v-model="form.workingHours" placeholder="请输入工时" />
@ -244,8 +280,10 @@ import { getResourcePage } from "@/api/farm/resource";
import { getProjectPage} from "@/api/farm/project"; import { getProjectPage} from "@/api/farm/project";
import { getCropPage} from "@/api/farm/crop"; import { getCropPage} from "@/api/farm/crop";
import { getResourceTypePage} from "@/api/farm/resourceType"; import { getResourceTypePage} from "@/api/farm/resourceType";
import { getTaskCatePage} from "@/api/farm/taskCate" import { getTaskCatePage} from "@/api/farm/taskCate";
import { getCpUserPage} from "@/api/system/cpUser" import { getCpUserPage} from "@/api/system/cpUser";
import { getAreaPage} from "@/api/farm/area";
import { values } from 'min-dash'; import { values } from 'min-dash';
export default { export default {
@ -308,23 +346,25 @@ export default {
cropList:[], cropList:[],
resourceTypeList:[], resourceTypeList:[],
selectResourceTypeList:[], resourceNumberList:[],
twoList:[], twoList:[],
props: { multiple: true }, props: { multiple: true },
selectRList:[],
cpUserList:[], cpUserList:[],
selectExecutorPerson:[],
executorPerson:[], executorPerson:[],
taskCateAllList:[], // taskCateAllList:[], //
taskCateList:[], // taskCateList:[], //
selectTaskCateList: [],//
cateOneList:[], cateOneList:[],
cateTwoList:[], cateTwoList:[],
formR:{},
areasList:[],
assemAreaList:[],
areasParentList:[],
areasSonList:[],
}; };
}, },
@ -335,8 +375,17 @@ export default {
this.getCpUserList(); this.getCpUserList();
this.getCropList(); this.getCropList();
this.getTaskCateList(); this.getTaskCateList();
this.getAreasList();
}, },
methods: { methods: {
getAreasList(){
getAreaPage({
pageNo: 1,
pageSize: 100
}).then(res =>{
this.areasList = res.data.list;
})
},
getTaskCateList(){ getTaskCateList(){
getTaskCatePage({ getTaskCatePage({
pageNo: 1, pageNo: 1,
@ -406,6 +455,7 @@ export default {
/** 查询任务列表 */ /** 查询任务列表 */
getList() { getList() {
this.loading = true; this.loading = true;
// this.assemArea();
// //
let params = {...this.queryParams}; let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangePlanStartTime, 'planStartTime'); this.addBeginAndEndTime(params, this.dateRangePlanStartTime, 'planStartTime');
@ -448,6 +498,16 @@ export default {
}) })
element.executorPerson = executorName; element.executorPerson = executorName;
if (element.areas != null) {
element.areas = JSON.parse(element.areas);
let areaName = "";
element.areas.forEach(item =>{
let p = this.areasList.filter(t => t.id == item[0])[0].name;
let s = this.areasList.filter(t => t.id == item[1])[0].name;
areaName += p +"/" + s +"、\n";
})
element.areas = areaName;
}
}); });
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
@ -531,12 +591,18 @@ export default {
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.twoRescoure(); this.twoRescoure();
this.assemArea();
this.resourceNumberList = [];
this.open = true; this.open = true;
this.title = "添加农场任务"; this.title = "添加农场任务";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
this.assemArea();
const id = row.id; const id = row.id;
getTask(id).then(response => { getTask(id).then(response => {
this.form = response.data; this.form = response.data;
@ -551,9 +617,14 @@ export default {
this.form.images = imagesArr; this.form.images = imagesArr;
} }
let executorArr = JSON.parse(response.data.executorPerson); let executorArr = JSON.parse(response.data.executorPerson);
this.form.executorPerson = executorArr; this.form.executorPerson = executorArr;
this.executorPerson = executorArr; this.executorPerson = executorArr;
let areasArray = JSON.parse(response.data.areas);
this.form.areas = areasArray;
this.open = true; this.open = true;
this.title = "修改农场任务"; this.title = "修改农场任务";
}); });
@ -568,6 +639,7 @@ export default {
//json //json
this.form.resources = JSON.stringify(this.selectResourceList); this.form.resources = JSON.stringify(this.selectResourceList);
this.form.executorPerson = JSON.stringify(this.executorPerson); this.form.executorPerson = JSON.stringify(this.executorPerson);
this.form.areas = JSON.stringify(this.form.areas);
//json //json
let im = this.form.images; let im = this.form.images;
this.form.images = JSON.stringify(""); this.form.images = JSON.stringify("");
@ -589,6 +661,7 @@ export default {
// //
createTask(this.form).then(response => { createTask(this.form).then(response => {
this.form.executorPerson = JSON.stringify(this.form.executorPerson); this.form.executorPerson = JSON.stringify(this.form.executorPerson);
this.form.members = JSON.stringify(this.form.members);
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
@ -636,23 +709,68 @@ export default {
}) })
this.twoList = firstList; this.twoList = firstList;
}, },
addR(row){ changeCateOne(row){
console.log("添加", row); this.cateTwoList = this.taskCateAllList.filter(t => t.parentId == row);
},
changeResources(row){
let selectROW = this.$refs['chooseR'].getCheckedNodes();
if (row.length == 0) {
this.resourceNumberList = [];
return ;
}
if (selectROW.filter(t=>t.hasChildren).length == 0) {
//0
this.resourceNumberList = [];
}
selectROW.forEach(item =>{
if(!item.hasChildren){
//
let obj = {
pId: item.parent.data.value,
pValue: item.parent.data.label,
id:item.data.value,
value: item.data.label
};
var index = this.resourceNumberList.findIndex(item => item.id === obj.id);
if(index == -1){
this.resourceNumberList.push(obj);
}
}
})
}, },
delR(row){ assemArea(){
console.log("删除", row); let parentLsit = this.areasList.filter(t => t.parentId == 0);
let sonList = this.areasList.filter(s => s.parentId != 0);
let firstList = [];
parentLsit.forEach(p => {
this.areasParentList.push(p);
let secondList = [];
sonList.forEach(s => {
if (p.id == s.parentId) {
this.areasSonList.push(s);
secondList.push({value:s.id, label:s.name});
}
})
firstList.push({value: p.id, label:p.name, children: secondList})
})
this.assemAreaList = firstList;
}, },
changeTaskCate(row){ changeProject(row){
let selectArr = row; this.form.areas = null;
this.taskCateAllList.forEach(item =>{ this.assemArea();
selectArr.forEach(id =>{ let projectArea = JSON.parse(this.projectList.filter(project => project.id == row)[0].areas);
if(item.value == id){ let filterArr = [];
this.assemAreaList.forEach(t=>{
projectArea.forEach(a=>{
if (a == t.value) {
filterArr.push(t);
} }
}) })
}) })
}, this.assemAreaList = filterArr;
changeCateOne(row){
this.cateTwoList = this.taskCateAllList.filter(t => t.parentId == row);
} }
} }
}; };

Loading…
Cancel
Save