|
@@ -0,0 +1,423 @@
|
|
|
+<template>
|
|
|
+ <div class="bunit">
|
|
|
+ <el-form
|
|
|
+ :inline="true"
|
|
|
+ :model="dataForm"
|
|
|
+ @keyup.enter.native="getDataList()">
|
|
|
+ <el-form-item>
|
|
|
+ <el-input
|
|
|
+ v-model="dataForm.key"
|
|
|
+ placeholder="关键字"
|
|
|
+ clearable>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button @click="getDataList()">查询</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button v-if="isAuth('sys:role:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button v-if="isAuth('sys:role:delete')" type="danger" @click="deleteHandle()" :disabled="selectionDataList.length <= 0">批量删除</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-table
|
|
|
+ :data="dataList"
|
|
|
+ @selection-change="selectionChangeHandle"
|
|
|
+ v-loading="dataListLoading"
|
|
|
+ style="width: 100%">
|
|
|
+ <el-table-column
|
|
|
+ type="selection"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ width="50">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="number"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="栏期编号">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="phNumber"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="所属猪舍">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="所属牧场">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ fixed="right"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button v-if="isAuth('sys:user:update')" type="success" size="mini" @click="addOrUpdateHandle(scope.row)">修改</el-button>
|
|
|
+ <el-button v-if="isAuth('sys:user:delete')" type="danger" size="mini" @click="deleteHandle(scope.row.id)">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-dialog
|
|
|
+ :title="!form.id ? '新增' : '修改'"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :visible.sync="visible"
|
|
|
+ @close="cancel">
|
|
|
+ <el-form :model="form" ref="form" @keyup.enter.native="formSubmit()" label-width="80px">
|
|
|
+ <el-form-item label="所属牧场">
|
|
|
+ <el-select v-model="form.pastureId" placeholder="请选择所属牧场" @change="getPasture">
|
|
|
+ <el-option
|
|
|
+ v-for="item in pastureList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="所属猪舍">
|
|
|
+ <el-select v-model="form.pigstyId" placeholder="请选择所属猪舍" @change="getPigsty">
|
|
|
+ <el-option
|
|
|
+ v-for="item in phSelectedList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.number"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单元序号">
|
|
|
+ <el-input v-model="form.number" placeholder="请输入栏期编号"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="cancel">取消</el-button>
|
|
|
+ <el-button type="primary" @click="formSubmit()">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ dataForm: {
|
|
|
+ key: ''
|
|
|
+ },
|
|
|
+ dataList: [
|
|
|
+ {
|
|
|
+ id: '',
|
|
|
+ number: '',
|
|
|
+ phNumber: '',
|
|
|
+ name: '',
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ pageIndex: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ totalPage: 0,
|
|
|
+ dataListLoading: false,
|
|
|
+ selectionDataList: [],
|
|
|
+ visible: false,
|
|
|
+ form: {
|
|
|
+ id: '',
|
|
|
+ number: '',
|
|
|
+ pastureId: '',
|
|
|
+ pigstyId: ''
|
|
|
+ },
|
|
|
+ pastureList: [], // 牧场list
|
|
|
+ pighouseList: [], // 猪舍list
|
|
|
+ phSelectedList: [] // 选择过牧场后的猪舍list
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted () {
|
|
|
+ this.getDataList()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 获取数据列表
|
|
|
+ getDataList () {
|
|
|
+ this.dataListLoading = true
|
|
|
+ this.$http({
|
|
|
+ url: this.$http.adornUrl('/management/period/list'),
|
|
|
+ method: 'post',
|
|
|
+ params: this.$http.adornParams({
|
|
|
+ page: 1,
|
|
|
+ limit: 10,
|
|
|
+ keywords: this.dataForm.key
|
|
|
+ })
|
|
|
+ }).then(async ({ data }) => {
|
|
|
+ // 获取所有牧场
|
|
|
+ let pastureResult = await this.$http({
|
|
|
+ url: this.$http.adornUrl('/management/pasture/findAll'),
|
|
|
+ method: 'post'
|
|
|
+ })
|
|
|
+ pastureResult.data.all && (this.pastureList = pastureResult.data.all)
|
|
|
+ // 获取所有猪舍
|
|
|
+ let pighouseResult = await this.$http({
|
|
|
+ url: this.$http.adornUrl('/management/pigsty/findAll'),
|
|
|
+ method: 'post'
|
|
|
+ })
|
|
|
+ pighouseResult.data.all && (this.pighouseList = pighouseResult.data.all)
|
|
|
+ if (data && data.code === 0) {
|
|
|
+ this.dataList = data.page.list
|
|
|
+ this.totalPage = data.page.totalCount
|
|
|
+ // 牧场对应
|
|
|
+ this.dataList.forEach(item => {
|
|
|
+ for (let pasture of this.pastureList) {
|
|
|
+ if (item.pastureId === pasture.id) {
|
|
|
+ item.name = pasture.name
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 猪舍对应
|
|
|
+ this.dataList.forEach(item => {
|
|
|
+ for (let pighouse of this.pighouseList) {
|
|
|
+ if (item.pigstyId === pighouse.id) {
|
|
|
+ item.phNumber = pighouse.number
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.phSelectedList = this.pighouseList
|
|
|
+ } else {
|
|
|
+ this.dataList = []
|
|
|
+ this.totalPage = 0
|
|
|
+ }
|
|
|
+ this.dataListLoading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 每页数
|
|
|
+ sizeChangeHandle (val) {
|
|
|
+ this.pageSize = val
|
|
|
+ this.pageIndex = 1
|
|
|
+ this.getDataList()
|
|
|
+ },
|
|
|
+ // 当前页
|
|
|
+ currentChangeHandle (val) {
|
|
|
+ this.pageIndex = val
|
|
|
+ this.getDataList()
|
|
|
+ },
|
|
|
+ // 获取到了牧场 → 限制猪舍
|
|
|
+ getPasture (val) {
|
|
|
+ this.phSelectedList = []
|
|
|
+ this.pighouseList.forEach(item => {
|
|
|
+ if (item.pastureId === val) {
|
|
|
+ this.phSelectedList.push(item)
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 如果已有选中的猪舍,且该猪舍不属于该牧场,则清空猪舍选择
|
|
|
+ let i;
|
|
|
+ for (i = 0; i < this.phSelectedList.length; i++) {
|
|
|
+ let item = this.phSelectedList[i];
|
|
|
+ if (item.id === this.form.pigstyId) {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (i === this.phSelectedList.length) {
|
|
|
+ this.form.pigstyId = ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 获取到猪舍
|
|
|
+ getPigsty (val) {
|
|
|
+ // → 反向确定牧场
|
|
|
+ for (let item of this.pighouseList) {
|
|
|
+ if (item.id === val) {
|
|
|
+ this.form.pastureId = item.pastureId
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // → 先获取猪舍,没有确定牧场的情况下,限制猪舍
|
|
|
+ this.phSelectedList = []
|
|
|
+ this.pighouseList.forEach(item => {
|
|
|
+ if (item.pastureId === this.form.pastureId) {
|
|
|
+ this.phSelectedList.push(item)
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 新增 or 修改单元
|
|
|
+ addOrUpdateHandle (row) {
|
|
|
+ // 显示牧场新增 or 修改面板
|
|
|
+ this.visible = true
|
|
|
+ if (row) {
|
|
|
+ this.form = row
|
|
|
+ console.log(row);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 选择n个牧场
|
|
|
+ selectionChangeHandle (val) {
|
|
|
+ this.selectionDataList = []
|
|
|
+ val.forEach(item => {
|
|
|
+ this.selectionDataList.push(item.id)
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 删除n个牧场
|
|
|
+ deleteHandle (id) {
|
|
|
+ this.$confirm(`确定删除栏期?`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ // 删除操作
|
|
|
+ if (id) {
|
|
|
+ this.selectionDataList.push(id)
|
|
|
+ }
|
|
|
+ if (this.selectionDataList.length <= 0) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.$http({
|
|
|
+ url: this.$http.adornUrl('/management/period/delete'),
|
|
|
+ method: 'post',
|
|
|
+ data: this.$http.adornData(this.selectionDataList, false)
|
|
|
+ }).then(result => {
|
|
|
+ console.log(result);
|
|
|
+ if (result.data.code === 0) {
|
|
|
+ this.resetForm()
|
|
|
+ this.$message({
|
|
|
+ message: '成功删除栏期',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error('删除栏期失败');
|
|
|
+ }
|
|
|
+ this.selectionDataList = []
|
|
|
+ })
|
|
|
+ }).catch(() => {})
|
|
|
+ },
|
|
|
+ formSubmit () {
|
|
|
+ if (this.form.id) {
|
|
|
+ /** 修改 */
|
|
|
+ // 输入是否完整
|
|
|
+ if (!this.confirmComplete()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 输入是否合法
|
|
|
+ if (!this.confirmInput()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 进行修改操作
|
|
|
+ this.$http({
|
|
|
+ url: this.$http.adornUrl('/management/period/update'),
|
|
|
+ method: 'post',
|
|
|
+ data: this.$http.adornData({
|
|
|
+ id: this.form.id,
|
|
|
+ number: this.form.number,
|
|
|
+ pastureId: this.form.pastureId,
|
|
|
+ pigstyId: this.form.pigstyId
|
|
|
+ })
|
|
|
+ }).then(result => {
|
|
|
+ if (result.data.code === 0) {
|
|
|
+ this.resetForm();
|
|
|
+ this.visible = false;
|
|
|
+ this.$message({
|
|
|
+ message: '成功修改栏期信息',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error('修改栏期信息失败');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ /** 新增 */
|
|
|
+ // 输入是否完整
|
|
|
+ if (!this.confirmComplete(1)) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 输入是否合法
|
|
|
+ if (!this.confirmInput()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 进行新增操作
|
|
|
+ this.$http({
|
|
|
+ url: this.$http.adornUrl('/management/period/save'),
|
|
|
+ method: 'post',
|
|
|
+ data: this.$http.adornData({
|
|
|
+ number: this.form.number,
|
|
|
+ pastureId: this.form.pastureId,
|
|
|
+ pigstyId: this.form.pigstyId
|
|
|
+ })
|
|
|
+ }).then(result => {
|
|
|
+ if (result.data.code === 0) {
|
|
|
+ this.resetForm();
|
|
|
+ this.visible = false;
|
|
|
+ this.$message({
|
|
|
+ message: '成功添加栏期',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1000
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error('添加失败');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 清空form
|
|
|
+ resetForm () {
|
|
|
+ for (let i in this.form) {
|
|
|
+ this.form[i] = ''
|
|
|
+ }
|
|
|
+ this.getDataList()
|
|
|
+ },
|
|
|
+ // 取消
|
|
|
+ cancel () {
|
|
|
+ this.visible = false
|
|
|
+ this.resetForm()
|
|
|
+ },
|
|
|
+ // 校验输入是否完整
|
|
|
+ validComplete (val) {
|
|
|
+ val && (delete this.form.id, delete this.form.deleted, delete this.form.gmtCreate, delete this.form.gmtModified, delete this.form.name, delete this.form.phNumber)
|
|
|
+ console.log(this.form);
|
|
|
+ for (let i in this.form) {
|
|
|
+ if (!this.form[i].toString()) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ // 如不完整,则提示
|
|
|
+ confirmComplete (val) {
|
|
|
+ if (this.validComplete(val)) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ this.$confirm(`请输入完整`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ console.log('牧场输入不完整')
|
|
|
+ }).catch(() => {})
|
|
|
+ return false
|
|
|
+ },
|
|
|
+ // 校验输入是否合法,此处只校验单元序号
|
|
|
+ validInput () {
|
|
|
+ // 只允许中文、英文、数字、-、_的输入,取反
|
|
|
+ const reg = /[^\a-\z\A-\Z0-9\u4E00-\u9FA5\_\-]/g
|
|
|
+ if (reg.test(this.form.number)) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ // 如不合法,则提示
|
|
|
+ confirmInput () {
|
|
|
+ if (this.validInput()) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ this.$confirm(`只允许输入中英文、数字、-与_`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ console.log('单元序号输入不合法')
|
|
|
+ }).catch(() => {})
|
|
|
+ return false
|
|
|
+ },
|
|
|
+ getchange (val) {
|
|
|
+ console.log(val);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+</style>
|