Bläddra i källkod

去除冗余代码 完成防疫管理模块

linan 4 år sedan
förälder
incheckning
aefef3128f

+ 12 - 2
src/api/antiepidemic.js

@@ -12,6 +12,16 @@ export const reqDelImmuneProce = (id) => ajax("post", "/farm-huyang/vprocedure/d
 /* 免疫计划  ImmunePlan*/
 export const reqImmunePlanList = (data) => ajax("post", "/farm-huyang/vplan/list", data)
 
-export const reqAddOrUpdateImmunePlan = (data) => ajax("post", "/farm-huyang/vplan/addOrUpdate", data)
+export const reqAddOrUpdateImmunePlan = (data) => ajax("post", "/farm-huyang/vplan/add", data)
 
-export const reqDelImmunePlan = (id) => ajax("post", "/farm-huyang/vplan/delete", {id})
+export const reqAdjustImmunePlan = (data) => ajax("post", "/farm-huyang/vplan/adjust", data)
+
+
+/* 免疫记录  ImmuneLog*/
+export const reqImmuneLogList = (data) => ajax("post", "/farm-huyang/pregnancy/list", data)
+
+
+/* 疾病登记  Illness*/
+export const reqIllnessList = (data) => ajax("post", "/farm-huyang/disease/list", data)
+
+export const reqAddOrUpdateIllness = (data) => ajax("post", "/farm-huyang/disease/add", data)

+ 29 - 2
src/api/material.js

@@ -1,6 +1,33 @@
 import { ajax } from "../sdk/ajax";
+// 物料管理
 
+/* 基础信息  BasicsInfo*/
+export const reqBasicsInfoList = (data) => ajax("post", "/farm-huyang/materiel/list", data)
+
+export const reqAddOrUpdateBasicsInfo = (data) => ajax("post", "/farm-huyang/materiel/addOrUpdate", data)
+
+export const reqDelBasicsInfo = (id) => ajax("post", "/farm-huyang/materiel/delete", {id})
+
+
+/* 物料库存  Store*/
+export const reqStoreList = (data) => ajax("post", "/farm-huyang/stock/list", data)
+
+export const reqAddStore = (data) => ajax("post", "/farm-huyang/stock/add", data)
+
+
+/* 物料入库  MInStore*/
+export const reqMInStoreList = (data) => ajax("post", "/farm-huyang/stockIn/list", data)
+
+export const reqAddMInStore = (data) => ajax("post", "/farm-huyang/stockIn/add", data)
+
+export const reqDelMInStore = (id) => ajax("post", "/farm-huyang/stockIn/delete", {id})
+
+
+/* 物料出库  MOutStore*/
+export const reqMOutStoreList = (data) => ajax("post", "/farm-huyang/stockOut/list", data)
+
+export const reqAddMOutStore = (data) => ajax("post", "/farm-huyang/stockOut/add", data)
+
+export const reqDelMOutStore = (id) => ajax("post", "/farm-huyang/stockOut/delete", {id})
 
-/* 登录 */
-export const reqLogin = (data) => ajax("post", "/core/auth/login", data)
 

+ 3 - 3
src/sdk/ajax.js

@@ -21,6 +21,9 @@ export const ajax = function (type = "post", url, params) {
                 method: type,
                 url: serverAddress + url,
                 params,
+                paramsSerializer: function(params) {
+                    return Qs.stringify(params, {arrayFormat: 'brackets'})
+                },
                 headers: {
                     'Content-Type': 'application/x-www-form-urlencoded',
                     'x-auth-token': token
@@ -43,9 +46,6 @@ export const ajax = function (type = "post", url, params) {
                 method: type,
                 url: serverAddress + url,
                 params,
-                paramsSerializer: function(params) {
-                    return Qs.stringify(params, {arrayFormat: 'brackets'})
-                },
                 headers: {
                     'Content-Type': 'application/x-www-form-urlencoded',
                     'x-auth-token': token

+ 16 - 1
src/store/index.js

@@ -3,6 +3,7 @@ import Vuex from 'vuex'
 // [ seedSheedSource, seedSheedLevel, seedSheedStatus ]
 import publicType from './publicType.js' // 公共的类型 
 import { reqWorkerList, reqBuildList } from "@/api/fileInfo.js";
+import { reqBasicsInfoList} from "@/api/material.js";
 
 Vue.use(Vuex)
 
@@ -11,7 +12,8 @@ export default new Vuex.Store({
 	state: {
 		token: localStorage.getItem("token"),
 		workerList: [{id:1}], // 员工列表 (加{id:1} 是为了防止刷新时报错,因为设置默认值时用到过)
-		areaList: [{id:1}],
+		areaList: [{id:1}],  // 栋舍列表
+		drugBasicsList: [{id:1}],  // 基础药品列表
 		...publicType
 	},
 	getters: {},
@@ -22,6 +24,9 @@ export default new Vuex.Store({
 		},
 		setAreaList(state, areaList) {
 			state.areaList = areaList
+		},
+		setDrugBasicsList(state, drugBasicsList) {
+			state.drugBasicsList = drugBasicsList
 		}
 	},
 	actions: {
@@ -44,6 +49,16 @@ export default new Vuex.Store({
 			}).then(res => {
 				commit('setAreaList', res.content)
 			})
+		},
+		/* 获取基础药品列表 登录后再 home时调用了*/
+		getDrugBasicsList({ commit }) {
+			reqBasicsInfoList({
+				searchStr: '',
+				pageSize: 1000,
+				pageNum: 1
+			}).then(res => {
+				commit('setDrugBasicsList', res.content)
+			})
 		}
 	}
 })

+ 26 - 1
src/store/publicType.js

@@ -63,10 +63,35 @@ const sheepType = [
     { label: "种母羊", value: 2 },
     { label: "种公羊", value: 1 }
 ]
+
+// 治疗状态
+const cureStatus = [
+    { label: "未治疗", value: 1 },
+    { label: "治疗中", value: 2 },
+    { label: "已治愈", value: 3 }
+]
+
+// 药品有效期单位
+const periodOfValidityUnit = [
+    { label: "天", value: 1 },
+    { label: "月", value: 2 },
+    { label: "年", value: 3 }
+]
+
+// 药品状态(基础信息)
+const drugStatus = [
+    { label: "禁用", value: 0 },
+    { label: "可用", value: 1 }
+]
 /* workerList 员工列表  动态获取了 在home.vue中获取了 */
 /* areaList 栋舍信息  动态获取了 在home.vue中获取了 */
+/* drugBasicsList 基础药品列表   动态获取了 在home.vue中获取了 */
 
-export default { seedSheedSource, seedSheedLevel, seedSheedStatus, seedColor, seedDensity, fetationStatus, estrusStatus, vaccineStyle, sheepType }
+export default {
+    seedSheedSource, seedSheedLevel, seedSheedStatus, seedColor, seedDensity,
+    fetationStatus, estrusStatus, vaccineStyle, sheepType, cureStatus, periodOfValidityUnit
+    , drugStatus
+}
 
 
 

+ 2 - 0
src/views/Home/Home.vue

@@ -120,6 +120,8 @@ export default {
         this.$store.dispatch('getWorkerList')
         // 获取栋舍列表 给后面下拉选择器使用
         this.$store.dispatch('getAreaList')
+        // 获取基础药品列表 给后面下拉选择器使用
+        this.$store.dispatch('getDrugBasicsList')
     },
     methods: {
         // 收取菜单按钮

+ 1 - 1
src/views/Home/mencCofig.js

@@ -110,7 +110,7 @@ export const menuData = [
                 routerName: "immuneLog"
             },
             {
-                optionName: '疾病记',
+                optionName: '疾病记',
                 index: '2-4',
                 routerName: "illnessLog"
             },

+ 192 - 109
src/views/antiepidemic/illnessLog.vue

@@ -1,67 +1,82 @@
 <template>
-    <!-- 静态  疾病登记  illnessLog-->
-    <div class="illnessLog">
+    <div class="Illness">
         <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">疾病登记</h2>
         <header id="header">
-            
-            <el-row type="flex">
+            <el-row type="flex" :gutter="20">
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1区" value="11"></el-option>
-                        <el-option label="2区" value="22"></el-option>
-                    </el-select>
+                    <el-input v-model="search.searchStr" placeholder="请输入"></el-input>
                 </el-col>
-                <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1舍" value="13"></el-option>
-                        <el-option label="2舍" value="24"></el-option>
-                    </el-select>
+                <el-col :span="5.5">
+                    <el-date-picker
+                        v-model="search.beginTime"
+                        type="date"
+                        value-format="yyyy-MM-dd 00:00:00"
+                        placeholder="开始日期"
+                    ></el-date-picker>
+                    —
+                    <el-date-picker
+                        v-model="search.endTime"
+                        type="date"
+                        value-format="yyyy-MM-dd 00:00:00"
+                        placeholder="结束日期"
+                    ></el-date-picker>
                 </el-col>
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="可用" value="15"></el-option>
-                        <el-option label="可用" value="26"></el-option>
+                    <el-select v-model="search.status" placeholder="请选择">
+                        <el-option label="全部" value></el-option>
+                        <el-option
+                            v-for="item in $store.state['cureStatus']"
+                            :key="item.value"
+                            :label="item.label"
+                            :value="item.value"
+                        ></el-option>
                     </el-select>
                 </el-col>
                 <el-col :span="4">
-                    <el-button type="primary">查找</el-button>
+                    <el-button type="primary" @click="getIllnessList">查找</el-button>
                 </el-col>
                 <el-col :span="4">
-                    <el-button type="primary">新增</el-button>
+                    <el-button type="primary" @click="add">新增</el-button>
                 </el-col>
             </el-row>
         </header>
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
-                    @selection-change="handleSelectionChange"
                 >
-                    <el-table-column type="selection" width="55"></el-table-column>
-                    <el-table-column prop="a" label="屠宰批次"></el-table-column>
-                    <el-table-column prop="b" label="产品名称"></el-table-column>
-                    <el-table-column prop="c" label="排酸时间"></el-table-column>
-                    <el-table-column prop="d" label="排酸前重量"></el-table-column>
-                    <el-table-column prop="e" label="排酸后重量"></el-table-column>
-                    <el-table-column prop="f" label="排酸损耗"></el-table-column>
-                    <el-table-column prop="g" label="负责人员"></el-table-column>
-                    <!-- <el-table-column label="操作" width="150">
-                        <template slot-scope="scope">
-                            <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
-                            <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
-                                <el-button slot="reference" type="text" size="small">删除</el-button>
-                            </el-popconfirm>
+                    <el-table-column prop="id" label="序号"></el-table-column>
+                    <el-table-column prop="sheepId" label="羊只编码"></el-table-column>
+                    <el-table-column prop="regTime" label="登记时间" width="180"></el-table-column>
+                    <el-table-column prop="disease" label="所患疾病"></el-table-column>
+                    <el-table-column prop="ifIsolation" label="是否隔离">
+                        <template v-slot="scope">
+                            <span v-if="scope.row['ifIsolation'] == 0">否</span>
+                            <span v-else-if="scope.row['ifIsolation'] == 1">是</span>
+                            <span v-else>{{ifIsolation}}</span>
                         </template>
-                    </el-table-column> -->
+                    </el-table-column>
+                    <el-table-column prop="medicineName" label="治疗药物"></el-table-column>
+                    <el-table-column label="登记人">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['workerList']" :key="item.value">
+                                <span
+                                    v-if="item.id == scope.row['opeUser']"
+                                >{{ `${item.name}(${item.position})` }}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="当前状态">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['cureStatus']" :key="item.value">
+                                <span v-if="item.value == scope.row['status']">{{ item.label }}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="remark" label="备注"></el-table-column>
                 </el-table>
-                <div style="margin-top: 20px">
-                    <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button>
-                    <el-button @click="toggleSelection()">取消选择</el-button>
-                    <el-button @click="inStore">入待宰栏</el-button>
-                </div>
 
                 <el-row type="flex" justify="end">
                     <el-col :span="8" class="pagination">
@@ -69,97 +84,165 @@
                             @current-change="pageChange"
                             background
                             layout="prev, pager, next"
-                            :page-count="10"
+                            :page-count="Number(totalPages)"
                         ></el-pagination>
                     </el-col>
                 </el-row>
             </article>
         </section>
+
+        <el-dialog title="新增/编辑" :visible.sync="isShow" width="40%">
+            <el-row type="flex">
+                <el-col :span="20">
+                    <el-form ref="addIllness" :model="formData" :rules="rules" label-width="140px">
+                        <el-form-item label="羊只编码">
+                            <el-input v-model="formData.sheepId"></el-input>
+                        </el-form-item>
+                        <el-form-item label="登记时间">
+                            <el-date-picker
+                                v-model="formData.regTime"
+                                type="date"
+                                value-format="yyyy-MM-dd 00:00:00"
+                                placeholder="选择日期"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="所患疾病">
+                            <el-input v-model="formData.disease"></el-input>
+                        </el-form-item>
+                        <el-form-item label="是否隔离">
+                            <el-radio-group v-model="formData.ifIsolation">
+                                <el-radio :label="0">否</el-radio>
+                                <el-radio :label="1">是</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                        <el-form-item label="治疗药物">
+                            <el-select v-model="formData.medicineId" filterable placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['drugBasicsList']"
+                                    :key="item.id"
+                                    :label="`${item.name}`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="登记人">
+                            <el-select v-model="formData.opeUser" placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['workerList']"
+                                    :key="item.id"
+                                    :label="`${item.name}(${item.position})`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="当前状态">
+                            <el-select v-model="formData.status" placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['cureStatus']"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="备注">
+                            <el-input type="textarea" v-model="formData.remark"></el-input>
+                        </el-form-item>
+
+                        <el-form-item>
+                            <el-button @click="isShow=false">取 消</el-button>
+                            <el-button type="primary" @click="submitForm('addIllness')">保 存</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-dialog>
     </div>
 </template>
 
 <script>
+import { reqIllnessList, reqAddOrUpdateIllness } from "@/api/antiepidemic.js";
 
-const pageSize = 10
-const tableData = [
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "带骨羊前腿",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                
-                
-            ]
+const pageSize = 10;
+const rules = {};
 
 export default {
+    name: "Illness",
     data() {
         return {
-            value: "",
-            multipleSelection: [],
-            page: 1,
-            tableData
+            search: {
+                searchStr: "",
+                beginTime: "",
+                endTime: "",
+                status: null
+            },
+            pageNum: 1,
+            tableData: [],
+            totalPages: 0,
+            isShow: false,
+            formData: {
+                sheepId: "192",
+                regTime: this.$moment().format("YYYY-MM-DD HH:mm:ss"),
+                disease: "羔羊大肠杆菌病",
+                ifIsolation: 0,
+                medicineId: null,
+                opeUser: this.$store.state["workerList"][0].id,
+                status: this.$store.state["cureStatus"][0].value,
+                remark: "备注"
+            },
+            isAdd: false,
+            rules
         };
     },
-    created() {},
+    created() {
+        // 疾病登记列表
+        this.getIllnessList();
+    },
     methods: {
-        toggleSelection(rows) {
-            if (rows) {
-                rows.forEach(row => {
-                    this.$refs.multipleTable.toggleRowSelection(row);
+        submitForm(formName) {
+            this.$refs[formName].validate(valid => {
+                if (valid) {
+                    reqAddOrUpdateIllness(this.formData)
+                        .then(res => {
+                            // 疾病登记列表
+                            this.getIllnessList();
+                            this.$message.success("成功!");
+                            // this.isShow = false
+                        })
+                        .catch(err => {
+                            console.log(err);
+                            this.$message.error("失败!");
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
+        // 疾病登记列表
+        getIllnessList() {
+            reqIllnessList({
+                pageSize,
+                pageNum: this.pageNum,
+                ...this.search
+            })
+                .then(res => {
+                    this.tableData = res.content;
+                    this.totalPages = res.totalPages;
+                })
+                .catch(err => {
+                    console.log(err);
                 });
-            } else {
-                this.$refs.multipleTable.clearSelection();
-            }
         },
-        // 入待宰栏
-        inStore() {},
-        handleSelectionChange(val) {
-            this.multipleSelection = val;
+        add() {
+            this.isShow = true;
+            // 有id是update 没id是add
+            delete this.formData.id;
         },
-        edit(row) {},
-        del(row) {},
         pageChange(p) {
             console.log(p);
+            this.pageNum = p;
+            // 疾病登记列表
+            this.getIllnessList();
         }
     }
 };

+ 94 - 109
src/views/antiepidemic/immuneLog.vue

@@ -1,64 +1,70 @@
 <template>
-    <!-- 静态  免疫记录  immuneLog-->
-    <div class="immuneLog">
+    <div class="ImmuneLog">
         <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">免疫记录</h2>
-
         <header id="header">
-            <el-row type="flex">
+            <el-row type="flex" :gutter="20">
                 <el-col :span="4">
-                    <el-input v-model="value" placeholder="请选择"></el-input>
+                    <el-input v-model="search" placeholder="请选择"></el-input>
                 </el-col>
-                <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1舍" value="13"></el-option>
-                        <el-option label="2舍" value="24"></el-option>
-                    </el-select>
+                <el-col :span="10">
+                    <el-button type="primary" @click="getImmuneLogList">查找</el-button>
                 </el-col>
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="可用" value="15"></el-option>
-                        <el-option label="可用" value="26"></el-option>
+                    <el-select v-model="formData.vaccineStyle" @change="S_change" placeholder="请选择">
+                        <el-option
+                            v-for="item in $store.state['vaccineStyle']"
+                            :key="item.value"
+                            :label="item.label"
+                            :value="item.value"
+                        ></el-option>
                     </el-select>
                 </el-col>
                 <el-col :span="4">
-                    <el-button type="primary">查找</el-button>
-                </el-col>
-                <el-col :span="4">
-                    <el-button type="primary">新增</el-button>
+                    <el-button-group>
+                        <el-button
+                            v-for="item in $store.state['sheepType']"
+                            :key="item.value"
+                            :type="target==item.value?'primary':''"
+                            @click="onTargetType(item.value)"
+                        >{{ item.label }}</el-button>
+                    </el-button-group>
                 </el-col>
             </el-row>
         </header>
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
-                    @selection-change="handleSelectionChange"
                 >
-                    <el-table-column type="selection" width="55"></el-table-column>
-                    <el-table-column prop="a" label="屠宰批次"></el-table-column>
-                    <el-table-column prop="b" label="产品名称"></el-table-column>
-                    <el-table-column prop="c" label="排酸时间"></el-table-column>
-                    <el-table-column prop="d" label="排酸前重量"></el-table-column>
-                    <el-table-column prop="e" label="排酸后重量"></el-table-column>
-                    <el-table-column prop="f" label="排酸损耗"></el-table-column>
-                    <el-table-column prop="g" label="负责人员"></el-table-column>
-                    <!-- <el-table-column label="操作" width="150">
-                        <template slot-scope="scope">
-                            <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
-                            <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
-                                <el-button slot="reference" type="text" size="small">删除</el-button>
-                            </el-popconfirm>
+                    <el-table-column prop="id" label="序号" width="80"></el-table-column>
+                    <el-table-column prop="vaccineDate" label="免疫日期"></el-table-column>
+                    <el-table-column prop="batch" label="批次号"></el-table-column>
+                    <el-table-column prop="medicineName" label="疫苗名称"></el-table-column>
+                    <el-table-column prop="medicineFactory" label="生产厂家"></el-table-column>
+                    <el-table-column prop="sheepDay" label="免疫羊只日龄"></el-table-column>
+                    <el-table-column label="免疫类型">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['vaccineStyle']" :key="item.value">
+                                <span
+                                    v-if="item.value == scope.row['vaccineStyle']"
+                                >{{ item.label }}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="number" label="免疫数量"></el-table-column>
+                    <el-table-column prop="method" label="免疫方法"></el-table-column>
+                    <el-table-column label="操作人">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['workerList']" :key="item.value">
+                                <span v-if="item.id == scope.row['opeUser']">{{ `${item.name}(${item.position})` }}</span>
+                            </div>
                         </template>
-                    </el-table-column> -->
+                    </el-table-column>
+                    <el-table-column prop="remark" label="备注"></el-table-column>
+                    <el-table-column prop="target" label="免疫对象"></el-table-column>
                 </el-table>
-                <div style="margin-top: 20px">
-                    <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button>
-                    <el-button @click="toggleSelection()">取消选择</el-button>
-                    <el-button @click="inStore">入待宰栏</el-button>
-                </div>
 
                 <el-row type="flex" justify="end">
                     <el-col :span="8" class="pagination">
@@ -66,97 +72,76 @@
                             @current-change="pageChange"
                             background
                             layout="prev, pager, next"
-                            :page-count="10"
+                            :page-count="Number(totalPages)"
                         ></el-pagination>
                     </el-col>
                 </el-row>
             </article>
         </section>
+
     </div>
 </template>
 
 <script>
+import { reqImmuneLogList } from "@/api/antiepidemic.js";
 
-const pageSize = 10
-const tableData = [
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "带骨羊前腿",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                
-                
-            ]
+const pageSize = 10;
+const rules = {};
 
 export default {
+    name: "ImmuneLog",
     data() {
         return {
-            value: "",
-            multipleSelection: [],
-            page: 1,
-            tableData
+            search: "",
+            pageNum: 1,
+            tableData: [],
+            totalPages: 0,
+            target: this.$store.state["sheepType"][0].value,  // 按钮绑定的
+            sheepTypeArr: [this.$store.state["sheepType"][1].value],
+            formData: {
+                vaccineStyle: this.$store.state["vaccineStyle"][1].value
+            },
+            isAdd: false,
+            rules
         };
     },
-    created() {},
+    created() {
+        // 免疫程序列表
+        this.getImmuneLogList();
+    },
     methods: {
-        toggleSelection(rows) {
-            if (rows) {
-                rows.forEach(row => {
-                    this.$refs.multipleTable.toggleRowSelection(row);
-                });
-            } else {
-                this.$refs.multipleTable.clearSelection();
-            }
+        // 点击按钮组
+        onTargetType(target) {
+            this.target = target;
+            this.sheepTypeArr = [target];
+            this.getImmuneLogList();
         },
-        // 入待宰栏
-        inStore() {},
-        handleSelectionChange(val) {
-            this.multipleSelection = val;
+        // 下拉选择框改变
+        S_change() {
+            this.getImmuneLogList();
+        },
+        // 免疫程序列表
+        getImmuneLogList() {
+            reqImmuneLogList({
+                searchStr: this.search,
+                pageSize,
+                pageNum: this.pageNum,
+                vaccineStyle: this.formData.vaccineStyle,
+                target: this.target
+            })
+                .then(res => {
+                    this.tableData = res.content;
+                    this.totalPages = res.totalPages;
+                })
+                .catch(err => {
+                    console.log(err);
+                });
         },
-        edit(row) {},
-        del(row) {},
         pageChange(p) {
             console.log(p);
+            this.pageNum = p;
+            // 免疫程序列表
+            this.getImmuneLogList();
         }
     }
 };

+ 142 - 62
src/views/antiepidemic/immunePlan.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="ImmunePlan">
-        <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">免疫程序</h2>
+        <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">免疫计划</h2>
         <header id="header">
             <el-row type="flex" :gutter="20">
                 <el-col :span="4">
@@ -17,7 +17,7 @@
                         <el-button
                             v-for="item in $store.state['sheepType']"
                             :key="item.value"
-                            :type="targetType==item.value?'primary':''"
+                            :type="target==item.value?'primary':''"
                             @click="onTargetType(item.value)"
                         >{{ item.label }}</el-button>
                     </el-button-group>
@@ -27,7 +27,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
@@ -35,7 +34,7 @@
                     <el-table-column prop="id" label="序号" width="80"></el-table-column>
                     <el-table-column prop="batchNo" label="批次号"></el-table-column>
                     <el-table-column prop="performTime" label="执行时间"></el-table-column>
-                    <el-table-column prop="number" label="免疫数量"></el-table-column>
+                    <el-table-column prop="number" label="免疫数量(只)"></el-table-column>
                     <el-table-column prop="medicineName" label="使用药物名"></el-table-column>
                     <el-table-column prop="method" label="使用方法"></el-table-column>
                     <el-table-column label="操作人">
@@ -50,10 +49,10 @@
                     <el-table-column prop="remark" label="备注"></el-table-column>
                     <el-table-column label="操作" width="150">
                         <template slot-scope="scope">
-                            <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
-                            <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
+                            <el-button @click="onTimeChange(scope.row)" type="text" size="small">时间变更</el-button>
+                            <!-- <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
                                 <el-button slot="reference" type="text" size="small">删除</el-button>
-                            </el-popconfirm>
+                            </el-popconfirm> -->
                         </template>
                     </el-table-column>
                 </el-table>
@@ -81,43 +80,56 @@
                         label-width="140px"
                     >
                         <el-form-item label="羊类型">
-                            <el-checkbox-group v-model="formData.sheepType">
+                            <el-checkbox-group v-model="sheepTypeArr">
                                 <el-checkbox
                                     v-for="item in $store.state['sheepType']"
                                     :key="item.value"
                                     :label="item.value"
                                 >{{ item.label }}</el-checkbox>
                             </el-checkbox-group>
-                            <!-- <el-checkbox-group v-model="formData.sheepType">
-                                <el-checkbox label="复选框 A"></el-checkbox>
-                                <el-checkbox label="复选框 B"></el-checkbox>
-                                <el-checkbox label="复选框 C"></el-checkbox>
-                                <el-checkbox label="禁用" disabled></el-checkbox>
-                                <el-checkbox label="选中且禁用" disabled></el-checkbox>
-                            </el-checkbox-group> -->
                         </el-form-item>
 
-                        <el-form-item label="目标羊编号">
-                            <el-input v-model="formData.target"></el-input>
+                        <el-form-item label="批次号">
+                            <el-input v-model="formData.batchNo"></el-input>
                         </el-form-item>
 
-                        <el-form-item label="免疫时间">
-                            <el-input v-model="formData.vaccineTime"></el-input>
+                        <el-form-item label="执行时间">
+                            <el-date-picker
+                                v-model="formData.performTime"
+                                type="date"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="选择日期"
+                            ></el-date-picker>
                         </el-form-item>
 
-                        <el-form-item label="免疫剂量及单位">
-                            <el-row type="flex" :gutter="20">
-                                <el-col :span="10">
-                                    <el-input v-model="formData.vaccineDosage"></el-input>
-                                </el-col>
-                                <el-col :span="10">
-                                    <el-input v-model="formData.unit"></el-input>
-                                </el-col>
-                            </el-row>
+                        <el-form-item label="免疫数量(只)">
+                            <el-input v-model="formData.number"></el-input>
                         </el-form-item>
 
-                        <el-form-item label="注射部位">
-                            <el-input v-model="formData.bodyPart"></el-input>
+                        <el-form-item label="使用药物">
+                            <el-select v-model="formData.medicineId" filterable placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['drugBasicsList']"
+                                    :key="item.id"
+                                    :label="`${item.name}`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+
+                        <el-form-item label="使用方法">
+                            <el-input v-model="formData.method"></el-input>
+                        </el-form-item>
+
+                        <el-form-item label="操作人">
+                            <el-select v-model="formData.opeUser" placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['workerList']"
+                                    :key="item.id"
+                                    :label="`${item.name}(${item.position})`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
                         </el-form-item>
 
                         <el-form-item label="备注">
@@ -132,6 +144,35 @@
                 </el-col>
             </el-row>
         </el-dialog>
+
+        <el-dialog title="时间变更" :visible.sync="isShowTime" width="40%">
+            <el-row type="flex">
+                <el-col :span="20">
+                    <el-form
+                        ref="timeChange"
+                        :model="formData"
+                        :rules="rules"
+                        label-width="140px"
+                    >
+                        <el-form-item label="执行时间">
+                            <el-date-picker
+                                v-model="formData.performTime"
+                                type="date"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="选择日期"
+                            ></el-date-picker>
+                        </el-form-item>
+
+                        <el-form-item>
+                            <el-button @click="isShowTime=false">取 消</el-button>
+                            <el-button type="primary" @click="submitFormTimeChange('timeChange')">保 存</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-dialog>
+
+
     </div>
 </template>
 
@@ -139,7 +180,7 @@
 import {
     reqImmunePlanList,
     reqAddOrUpdateImmunePlan,
-    reqDelImmunePlan
+    reqAdjustImmunePlan
 } from "@/api/antiepidemic.js";
 
 const pageSize = 10;
@@ -151,22 +192,23 @@ export default {
         return {
             search: "",
             pageNum: 1,
-            targetType: this.$store.state["sheepType"][2].value,
             tableData: [],
             totalPages: 0,
             isShow: false,
+            isShowTime: false,
+            target: this.$store.state["sheepType"][2].value,  // 按钮绑定的
+            sheepTypeArr: [this.$store.state["sheepType"][1].value],
             formData: {
-                sheepType: this.$store.state["sheepType"][0].value,
-                target: "1244",
-                vaccineName: "山羊口疮弱毒细胞冻干苗",
-                disease: "山羊口疮",
-                vaccineTime: "怀孕母羊分娩前20-30天和10-20天各注射1次",
-                vaccineDosage: "2",
-                unit: "ml",
-                bodyPart: "注射部位",
-                remark: "备注",
-                target: "482"
+                target: this.$store.state["sheepType"][0].value,
+                batchNo: "1922",
+                performTime: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
+                number: "200",
+                medicineId: 1,
+                method: "羊皮下注射",
+                opeUser: this.$store.state['workerList'][0].id,
+                remark: "备注"
             },
+            timeForm: {},
             isAdd: false,
             rules
         };
@@ -179,6 +221,11 @@ export default {
         submitForm(formName) {
             this.$refs[formName].validate(valid => {
                 if (valid) {
+                    this.formData.target = this.sheepTypeArr.reduce(
+                        (total, num) => {
+                            return total + num;
+                        }
+                    );
                     reqAddOrUpdateImmunePlan(this.formData)
                         .then(res => {
                             // 免疫程序列表
@@ -195,9 +242,29 @@ export default {
                 }
             });
         },
+        submitFormTimeChange(formName) {
+            this.$refs[formName].validate(valid => {
+                if (valid) {
+                    reqAdjustImmunePlan(this.timeForm)
+                        .then(res => {
+                            // 免疫程序列表
+                            this.getImmunePlanList();
+                            this.$message.success("时间变更成功!");
+                            // this.isShow = false
+                        })
+                        .catch(err => {
+                            console.log(err);
+                            this.$message.error("时间变更失败!");
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
         // 点击按钮组
-        onTargetType(targetType) {
-            this.targetType = targetType;
+        onTargetType(target) {
+            this.target = target;
+            this.sheepTypeArr = [target];
             this.getImmunePlanList();
         },
         // 下拉选择框改变
@@ -210,7 +277,7 @@ export default {
                 searchStr: this.search,
                 pageSize,
                 pageNum: this.pageNum,
-                target: this.targetType
+                target: this.target
             })
                 .then(res => {
                     this.tableData = res.content;
@@ -222,30 +289,43 @@ export default {
         },
         add() {
             this.isShow = true;
+            this.formData.target = this.target
+            this.sheepTypeArr = [this.target];
             // 有id是update 没id是add
             delete this.formData.id;
         },
+        onTimeChange(row) {
+            this.timeForm.id = row.id
+            this.timeForm.targetDate = row.performTime
+            this.isShowTime = true
+        },
         edit(row) {
+            // 数据回填 
+            console.log(row.target);
             this.formData = row;
+            this.$store.state["sheepType"].forEach(item => {
+                    if((row.target & item.value) == item.value) this.sheepTypeArr.push(item.value)
+                }
+            );
             this.isShow = true;
         },
-        del(row) {
-            reqDelImmunePlan(row.id)
-                .then(res => {
-                    // 免疫程序列表
-                    this.getImmunePlanList();
-                    if (res.code == "success") {
-                        this.$message.success(res.msg);
-                    }
-                    if (res.errCode == "delete failed") {
-                        this.$message.error(res.errMsg);
-                    }
-                })
-                .catch(err => {
-                    console.log(err);
-                    this.$message.error("删除失败!");
-                });
-        },
+        // del(row) {
+        //     reqDelImmunePlan(row.id)
+        //         .then(res => {
+        //             // 免疫程序列表
+        //             this.getImmunePlanList();
+        //             if (res.code == "success") {
+        //                 this.$message.success(res.msg);
+        //             }
+        //             if (res.errCode == "delete failed") {
+        //                 this.$message.error(res.errMsg);
+        //             }
+        //         })
+        //         .catch(err => {
+        //             console.log(err);
+        //             this.$message.error("删除失败!");
+        //         });
+        // },
         pageChange(p) {
             console.log(p);
             this.pageNum = p;

+ 13 - 17
src/views/antiepidemic/immuneProce.vue

@@ -27,7 +27,7 @@
                         <el-button
                             v-for="item in $store.state['sheepType']"
                             :key="item.value"
-                            :type="formData.target==item.value?'primary':''"
+                            :type="target==item.value?'primary':''"
                             @click="onTargetType(item.value)"
                         >{{ item.label }}</el-button>
                     </el-button-group>
@@ -37,7 +37,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
@@ -57,7 +56,7 @@
                     </el-table-column>
                     <el-table-column label="免疫剂量">
                         <template v-slot="scope">
-                            <div>{{ scope.row.vaccineDosage + scope.row.unit}}</div>
+                            <div>{{ scope.row['vaccineDosage'] + scope.row['unit']}}</div>
                         </template>
                     </el-table-column>
                     <el-table-column prop="bodyPart" label="注射部位"></el-table-column>
@@ -105,7 +104,7 @@
                         </el-form-item>
 
                         <el-form-item label="羊类型">
-                            <el-checkbox-group v-model="formData.sheepTypeArr">
+                            <el-checkbox-group v-model="sheepTypeArr">
                                 <el-checkbox
                                     v-for="item in $store.state['sheepType']"
                                     :key="item.value"
@@ -114,10 +113,6 @@
                             </el-checkbox-group>
                         </el-form-item>
 
-                        <el-form-item label="目标羊编号">
-                            <el-input v-model="formData.target"></el-input>
-                        </el-form-item>
-
                         <el-form-item label="免疫时间">
                             <el-input v-model="formData.vaccineTime"></el-input>
                         </el-form-item>
@@ -171,9 +166,10 @@ export default {
             tableData: [],
             totalPages: 0,
             isShow: false,
+            target: this.$store.state["sheepType"][0].value,  // 按钮绑定的
+            sheepTypeArr: [this.$store.state["sheepType"][1].value],
             formData: {
                 vaccineStyle: this.$store.state["vaccineStyle"][1].value,
-                sheepTypeArr: [this.$store.state["vaccineStyle"][1].value],
                 target: this.$store.state["sheepType"][0].value,
                 vaccineName: "山羊口疮弱毒细胞冻干苗",
                 disease: "山羊口疮",
@@ -195,12 +191,11 @@ export default {
         submitForm(formName) {
             this.$refs[formName].validate(valid => {
                 if (valid) {
-                    this.formData.sheepType = this.formData.sheepTypeArr.reduce(
+                    this.formData.target = this.sheepTypeArr.reduce(
                         (total, num) => {
                             return total + num;
                         }
                     );
-                    console.log(this.formData.sheepType);
                     reqAddOrUpdateImmuneProce(this.formData)
                         .then(res => {
                             // 免疫程序列表
@@ -219,8 +214,8 @@ export default {
         },
         // 点击按钮组
         onTargetType(target) {
-            this.formData.target = target;
-            this.formData.sheepTypeArr = [target];
+            this.target = target;
+            this.sheepTypeArr = [target];
             this.getImmuneProceList();
         },
         // 下拉选择框改变
@@ -234,7 +229,7 @@ export default {
                 pageSize,
                 pageNum: this.pageNum,
                 vaccineStyle: this.formData.vaccineStyle,
-                target: this.formData.target
+                target: this.target
             })
                 .then(res => {
                     this.tableData = res.content;
@@ -246,6 +241,8 @@ export default {
         },
         add() {
             this.isShow = true;
+            this.formData.target = this.target
+            this.sheepTypeArr = [this.target];
             // 有id是update 没id是add
             delete this.formData.id;
         },
@@ -253,11 +250,10 @@ export default {
             // 数据回填 
             console.log(row.target);
             this.formData = row;
-            let temp = this.$store.state["sheepType"].map(item => {
-                    if((row.target & item.value) == item.value) return item.value
+            this.$store.state["sheepType"].forEach(item => {
+                    if((row.target & item.value) == item.value) this.sheepTypeArr.push(item.value)
                 }
             );
-            this.formData.sheepTypeArr = temp;
             this.isShow = true;
         },
         del(row) {

+ 2 - 3
src/views/breed/collectSeedLog.vue

@@ -4,7 +4,7 @@
         <header id="header">
             <el-row type="flex" :gutter="20">
                 <el-col :span="4">
-                    <el-input v-model="search" placeholder="请选择"></el-input>
+                    <el-input v-model="search" placeholder="请输入"></el-input>
                 </el-col>
                 <el-col :span="4">
                     <el-button type="primary" @click="getSemenList">查找</el-button>
@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
@@ -58,7 +57,7 @@
                         </template>
                     </el-table-column>
                     <el-table-column label="操作" width="150">
-                        <template slot-scope="scope">
+                        <template v-slot="scope">
                             <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
                             <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
                                 <el-button slot="reference" type="text" size="small">删除</el-button>

+ 0 - 1
src/views/breed/matingLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/matingSuccLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/offFieldLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/parturitionLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/pregnancyTestLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/seedSheepFile.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/shiftFieldLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/breed/weaningLog.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/fileInfo/areaInfo.vue

@@ -18,7 +18,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 0 - 1
src/views/fileInfo/workerInfo.vue

@@ -17,7 +17,6 @@
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"

+ 253 - 8
src/views/material/basicsInfo.vue

@@ -1,30 +1,275 @@
 <template>
-    <div class="basicsInfo">
+    <div class="BasicsInfoInfo">
         <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">基础信息</h2>
-
         <header id="header">
-            
-           
+            <el-row type="flex" :gutter="20">
+                <el-col :span="4">
+                    <el-input v-model="search" placeholder="请输入"></el-input>
+                </el-col>
+                <el-col :span="4">
+                    <el-button type="primary" @click="getBasicsInfoList">查找</el-button>
+                </el-col>
+                <el-col :span="4">
+                    <el-button type="primary" @click="add">新增</el-button>
+                </el-col>
+            </el-row>
         </header>
+        <section>
+            <article class="table">
+                <el-table
+                    :data="tableData"
+                    tooltip-effect="dark"
+                    style="width: 100%"
+                >
+                    <el-table-column type="expand">
+                        <template v-slot="props">
+                            <span :style="{fontWeight: 600}">注意事项:</span>
+                            <span>{{ props.row['note'] }}</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="id" label="序号" width="60"></el-table-column>
+                    <el-table-column prop="name" label="名称"></el-table-column>
+                    <el-table-column prop="specifications" label="规格" width="60"></el-table-column>
+                    <el-table-column label="有效期限" width="100">
+                        <template v-slot="scope">
+                            <div>{{ scope.row['periodOfValidity'] + CPeriodOfValidityUnit(scope.row['unit'])}}</div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="usageIntro" label="用法"></el-table-column>
+                    <el-table-column prop="safeThreshold" label="安全库存">
+                        <template v-slot="scope">
+                            <div>{{ scope.row['safeThreshold'] + scope.row['specifications']}}</div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="factory" label="厂家"></el-table-column>
+                    <el-table-column prop="img" label="图片"></el-table-column>
+                    <el-table-column prop="status" label="状态">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['drugStatus']" :key="item.value">
+                                <span v-if="item.value == scope.row['status']">{{ item.label }}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="150">
+                        <template v-slot="scope">
+                            <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
+                            <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
+                                <el-button slot="reference" type="text" size="small">删除</el-button>
+                            </el-popconfirm>
+                        </template>
+                    </el-table-column>
+                </el-table>
+
+                <el-row type="flex" justify="end">
+                    <el-col :span="8" class="pagination">
+                        <el-pagination
+                            @current-change="pageChange"
+                            background
+                            layout="prev, pager, next"
+                            :page-count="Number(totalPages)"
+                        ></el-pagination>
+                    </el-col>
+                </el-row>
+            </article>
+        </section>
+
+        <el-dialog title="新增" :visible.sync="isShow" width="40%">
+            <el-row type="flex">
+                <el-col :span="20">
+                    <el-form
+                        ref="addBasicsInfo"
+                        :model="formData"
+                        :rules="rules"
+                        label-width="140px"
+                    >
+                        <el-form-item label="名称">
+                            <el-input v-model="formData.name"></el-input>
+                        </el-form-item>
+                        <el-form-item label="有效期/单位">
+                            <el-row type="flex" :gutter="20">
+                                <el-col :span="10">
+                                    <el-input v-model.number="formData.periodOfValidity"></el-input>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-select v-model="formData.unit" placeholder="请选择">
+                                        <el-option
+                                            v-for="item in $store.state['periodOfValidityUnit']"
+                                            :key="item.value"
+                                            :label="item.label"
+                                            :value="item.value"
+                                        ></el-option>
+                                    </el-select>
+                                </el-col>
+                            </el-row>
+                        </el-form-item>
+                        <el-form-item label="库存/规格">
+                            <el-row type="flex" :gutter="20">
+                                <el-col :span="10">
+                                    <el-input v-model.number="formData.safeThreshold"></el-input>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-input v-model="formData.specifications"></el-input>
+                                </el-col>
+                            </el-row>
+                        </el-form-item>
+                        <el-form-item label="用法">
+                            <el-input v-model="formData.usageIntro"></el-input>
+                        </el-form-item>
+                        <el-form-item label="厂家">
+                            <el-input v-model="formData.factory"></el-input>
+                        </el-form-item>
+                        <el-form-item label="注意事项">
+                            <el-input type="textarea" autosize v-model="formData.note"></el-input>
+                        </el-form-item>
+                        <el-form-item label="图片地址">
+                            <el-input v-model="formData.img"></el-input>
+                        </el-form-item>
+                        <el-form-item label="状态">
+                            <el-radio-group v-model="formData.density">
+                                <el-radio
+                                    v-for="item in $store.state['drugStatus']"
+                                    :key="item.value"
+                                    :label="item.value"
+                                >{{ item.label }}</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button @click="isShow=false">取 消</el-button>
+                            <el-button type="primary" @click="submitForm('addBasicsInfo')">保 存</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-dialog>
     </div>
 </template>
 
 <script>
+import {
+    reqBasicsInfoList,
+    reqAddOrUpdateBasicsInfo,
+    reqDelBasicsInfo
+} from "@/api/material.js";
 
+const pageSize = 10;
+const rules = {};
 
 export default {
+    name: "BasicsInfoInfo",
     data() {
         return {
-           
+            search: "",
+            pageNum: 1,
+            tableData: [],
+            totalPages: 0,
+            isShow: false,
+            formData: {
+                name: "玉米赤霉醇",
+                periodOfValidity: 360,
+                unit: this.$store.state["periodOfValidityUnit"][0].value,
+                safeThreshold: 150,
+                specifications: "盒",
+                usageIntro: "内服",
+                factory: "xx药厂",
+                note: "",
+                img: "2.jpg",
+                density: this.$store.state["drugStatus"][1].value
+            },
+            isAdd: false,
+            rules
         };
     },
-    created() {},
+    created() {
+        // 基础信息列表
+        this.getBasicsInfoList();
+    },
+    computed: {},
     methods: {
-        
+        submitForm(formName) {
+            this.$refs[formName].validate(valid => {
+                if (valid) {
+                    reqAddOrUpdateBasicsInfo(this.formData)
+                        .then(res => {
+                            // 基础信息列表
+                            this.getBasicsInfoList();
+                            // 获取基础药品列表 给后面下拉选择器使用
+                            this.$store.dispatch("getDrugBasicsList");
+                            this.$message.success("成功!");
+                            // this.isShow = false
+                        })
+                        .catch(err => {
+                            console.log(err);
+                            this.$message.error("失败!");
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
+        // 基础信息列表
+        getBasicsInfoList() {
+            reqBasicsInfoList({
+                searchStr: this.search,
+                pageSize,
+                pageNum: this.pageNum
+            })
+                .then(res => {
+                    this.tableData = res.content;
+                    this.totalPages = res.totalPages;
+                })
+                .catch(err => {
+                    console.log(err);
+                });
+        },
+        add() {
+            this.isShow = true;
+            // 有id是update 没id是add
+            delete this.formData.id;
+        },
+        edit(row) {
+            this.formData = row;
+            this.isShow = true;
+        },
+        del(row) {
+            reqDelBasicsInfo(row.id)
+                .then(res => {
+                    // 基础信息列表
+                    this.getBasicsInfoList();
+                    if (res.code == "success") {
+                        this.$message.success(res.msg);
+                    }
+                    if (res.errCode == "delete failed") {
+                        this.$message.error(res.errMsg);
+                    }
+                })
+                .catch(err => {
+                    console.log(err);
+                    this.$message.error("删除失败!");
+                });
+        },
+        pageChange(p) {
+            console.log(p);
+            this.pageNum = p;
+            // 基础信息列表
+            this.getBasicsInfoList();
+        },
+        CPeriodOfValidityUnit(v) {
+            let res = this.$store.state["periodOfValidityUnit"].find(
+                item => item.value == v
+            );
+            return res.label;
+        }
     }
 };
 </script>
 
 <style lang="scss" scoped>
-
+#header {
+    margin-bottom: 15px;
+}
+.table {
+    .pagination {
+        margin-top: 20px;
+    }
+}
 </style>

+ 178 - 109
src/views/material/materialInStore.vue

@@ -1,67 +1,53 @@
 <template>
-    <div class="materialInStore">
+    <div class="MInStore">
         <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">物料入库</h2>
-
         <header id="header">
-            
-            <el-row type="flex">
+            <el-row type="flex" :gutter="20">
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1区" value="11"></el-option>
-                        <el-option label="2区" value="22"></el-option>
-                    </el-select>
+                    <el-input v-model="search" placeholder="请输入"></el-input>
                 </el-col>
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1舍" value="13"></el-option>
-                        <el-option label="2舍" value="24"></el-option>
-                    </el-select>
+                    <el-button type="primary" @click="getMInStoreList">查找</el-button>
                 </el-col>
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="可用" value="15"></el-option>
-                        <el-option label="可用" value="26"></el-option>
-                    </el-select>
-                </el-col>
-                <el-col :span="4">
-                    <el-button type="primary">查找</el-button>
-                </el-col>
-                <el-col :span="4">
-                    <el-button type="primary">新增</el-button>
+                    <el-button type="primary" @click="add">新增</el-button>
                 </el-col>
             </el-row>
         </header>
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
-                    @selection-change="handleSelectionChange"
                 >
-                    <el-table-column type="selection" width="55"></el-table-column>
-                    <el-table-column prop="a" label="屠宰批次"></el-table-column>
-                    <el-table-column prop="b" label="产品名称"></el-table-column>
-                    <el-table-column prop="c" label="排酸时间"></el-table-column>
-                    <el-table-column prop="d" label="排酸前重量"></el-table-column>
-                    <el-table-column prop="e" label="排酸后重量"></el-table-column>
-                    <el-table-column prop="f" label="排酸损耗"></el-table-column>
-                    <el-table-column prop="g" label="负责人员"></el-table-column>
-                    <!-- <el-table-column label="操作" width="150">
-                        <template slot-scope="scope">
+                    <el-table-column prop="id" label="序号" width="60"></el-table-column>
+                    <el-table-column prop="inTime" label="入库日期"></el-table-column>
+                    <el-table-column prop="medicineName" label="药品名"></el-table-column>
+                    <el-table-column prop="factory" label="生产厂家"></el-table-column>
+                    <el-table-column prop="batchNumber" label="生产批号"></el-table-column>
+                    <el-table-column prop="source" label="来源"></el-table-column>
+                    <el-table-column label="数量">
+                        <template v-slot="scope">
+                            <div>{{ scope.row['number'] + scope.row['specifications']}}</div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="购买人">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['workerList']" :key="item.value">
+                                <span v-if="item.id == scope.row['buyer']">{{ `${item.name}(${item.position})` }}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="150">
+                        <template v-slot="scope">
                             <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
                             <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
                                 <el-button slot="reference" type="text" size="small">删除</el-button>
                             </el-popconfirm>
                         </template>
-                    </el-table-column> -->
+                    </el-table-column>
                 </el-table>
-                <div style="margin-top: 20px">
-                    <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button>
-                    <el-button @click="toggleSelection()">取消选择</el-button>
-                    <el-button @click="inStore">入待宰栏</el-button>
-                </div>
 
                 <el-row type="flex" justify="end">
                     <el-col :span="8" class="pagination">
@@ -69,97 +55,180 @@
                             @current-change="pageChange"
                             background
                             layout="prev, pager, next"
-                            :page-count="10"
+                            :page-count="Number(totalPages)"
                         ></el-pagination>
                     </el-col>
                 </el-row>
             </article>
         </section>
+
+        <el-dialog title="新增" :visible.sync="isShow" width="40%">
+            <el-row type="flex">
+                <el-col :span="20">
+                    <el-form
+                        ref="addMInStore"
+                        :model="formData"
+                        :rules="rules"
+                        label-width="140px"
+                    >
+                        <el-form-item label="入库日期">
+                            <el-date-picker
+                                v-model="formData.inTime"
+                                type="date"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="默认当前时间"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="药品">
+                            <el-select v-model="formData.medicineId" filterable placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['drugBasicsList']"
+                                    :key="item.id"
+                                    :label="`${item.name}`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="生产批号">
+                            <el-input v-model="formData.batchNumber"></el-input>
+                        </el-form-item>
+                        <el-form-item label="来源">
+                            <el-input v-model="formData.source"></el-input>
+                        </el-form-item>
+                        <el-form-item label="数量">
+                            <el-input v-model.number="formData.number"></el-input>
+                        </el-form-item>
+                        <el-form-item label="购买人">
+                            <el-select v-model="formData.buyer" filterable placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['workerList']"
+                                    :key="item.id"
+                                    :label="`${item.name}(${item.position})`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button @click="isShow=false">取 消</el-button>
+                            <el-button type="primary" @click="submitForm('addMInStore')">保 存</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-dialog>
     </div>
 </template>
 
 <script>
+import {
+    reqMInStoreList,
+    reqAddMInStore,
+    reqDelMInStore
+} from "@/api/material.js";
 
-const pageSize = 10
-const tableData = [
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "带骨羊前腿",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                
-                
-            ]
+const pageSize = 10;
+const rules = {};
 
 export default {
+    name: "MInStore",
     data() {
         return {
-            value: "",
-            multipleSelection: [],
-            page: 1,
-            tableData
+            search: "",
+            pageNum: 1,
+            tableData: [],
+            totalPages: 0,
+            isShow: false,
+            formData: {
+                inTime: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
+                medicineId: null,
+                batchNumber: '129656560',
+                source: "xx药厂",
+                number: 120,
+                buyer: null
+            },
+            isAdd: false,
+            rules
         };
     },
-    created() {},
+    created() {
+        // 基础信息列表
+        this.getMInStoreList();
+    },
+    computed: {},
     methods: {
-        toggleSelection(rows) {
-            if (rows) {
-                rows.forEach(row => {
-                    this.$refs.multipleTable.toggleRowSelection(row);
+        submitForm(formName) {
+            this.$refs[formName].validate(valid => {
+                if (valid) {
+                    reqAddMInStore(this.formData)
+                        .then(res => {
+                            // 基础信息列表
+                            this.getMInStoreList();
+                            // 获取基础药品列表 给后面下拉选择器使用
+                            this.$store.dispatch("getDrugBasicsList");
+                            this.$message.success("成功!");
+                            // this.isShow = false
+                        })
+                        .catch(err => {
+                            console.log(err);
+                            this.$message.error("失败!");
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
+        // 基础信息列表
+        getMInStoreList() {
+            reqMInStoreList({
+                searchStr: this.search,
+                pageSize,
+                pageNum: this.pageNum
+            })
+                .then(res => {
+                    this.tableData = res.content;
+                    this.totalPages = res.totalPages;
+                })
+                .catch(err => {
+                    console.log(err);
                 });
-            } else {
-                this.$refs.multipleTable.clearSelection();
-            }
         },
-        // 入待宰栏
-        inStore() {},
-        handleSelectionChange(val) {
-            this.multipleSelection = val;
+        add() {
+            this.isShow = true;
+            // 有id是update 没id是add
+            delete this.formData.id;
+        },
+        edit(row) {
+            this.formData = row;
+            this.isShow = true;
+        },
+        del(row) {
+            reqDelMInStore(row.id)
+                .then(res => {
+                    // 基础信息列表
+                    this.getMInStoreList();
+                    if (res.code == "success") {
+                        this.$message.success(res.msg);
+                    }
+                    if (res.errCode == "delete failed") {
+                        this.$message.error(res.errMsg);
+                    }
+                })
+                .catch(err => {
+                    console.log(err);
+                    this.$message.error("删除失败!");
+                });
         },
-        edit(row) {},
-        del(row) {},
         pageChange(p) {
             console.log(p);
+            this.pageNum = p;
+            // 基础信息列表
+            this.getMInStoreList();
+        },
+        CPeriodOfValidityUnit(v) {
+            let res = this.$store.state["periodOfValidityUnit"].find(
+                item => item.value == v
+            );
+            return res.label;
         }
     }
 };

+ 178 - 109
src/views/material/materialOutStore.vue

@@ -1,67 +1,53 @@
 <template>
-    <div class="materialOutStore">
+    <div class="MOutStore">
         <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">物料出库</h2>
-
         <header id="header">
-            
-            <el-row type="flex">
+            <el-row type="flex" :gutter="20">
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1区" value="11"></el-option>
-                        <el-option label="2区" value="22"></el-option>
-                    </el-select>
+                    <el-input v-model="search" placeholder="请输入"></el-input>
                 </el-col>
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1舍" value="13"></el-option>
-                        <el-option label="2舍" value="24"></el-option>
-                    </el-select>
+                    <el-button type="primary" @click="getMOutStoreList">查找</el-button>
                 </el-col>
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="可用" value="15"></el-option>
-                        <el-option label="可用" value="26"></el-option>
-                    </el-select>
-                </el-col>
-                <el-col :span="4">
-                    <el-button type="primary">查找</el-button>
-                </el-col>
-                <el-col :span="4">
-                    <el-button type="primary">新增</el-button>
+                    <el-button type="primary" @click="add">新增</el-button>
                 </el-col>
             </el-row>
         </header>
         <section>
             <article class="table">
                 <el-table
-                    ref="multipleTable"
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
-                    @selection-change="handleSelectionChange"
                 >
-                    <el-table-column type="selection" width="55"></el-table-column>
-                    <el-table-column prop="a" label="屠宰批次"></el-table-column>
-                    <el-table-column prop="b" label="产品名称"></el-table-column>
-                    <el-table-column prop="c" label="排酸时间"></el-table-column>
-                    <el-table-column prop="d" label="排酸前重量"></el-table-column>
-                    <el-table-column prop="e" label="排酸后重量"></el-table-column>
-                    <el-table-column prop="f" label="排酸损耗"></el-table-column>
-                    <el-table-column prop="g" label="负责人员"></el-table-column>
-                    <!-- <el-table-column label="操作" width="150">
-                        <template slot-scope="scope">
+                    <el-table-column prop="id" label="序号" width="60"></el-table-column>
+                    <el-table-column prop="inTime" label="入库日期"></el-table-column>
+                    <el-table-column prop="medicineName" label="药品名"></el-table-column>
+                    <el-table-column prop="factory" label="生产厂家"></el-table-column>
+                    <el-table-column prop="batchNumber" label="生产批号"></el-table-column>
+                    <el-table-column prop="source" label="来源"></el-table-column>
+                    <el-table-column label="数量">
+                        <template v-slot="scope">
+                            <div>{{ scope.row['number'] + scope.row['specifications']}}</div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="购买人">
+                        <template v-slot="scope">
+                            <div v-for="item in $store.state['workerList']" :key="item.value">
+                                <span v-if="item.id == scope.row['buyer']">{{ `${item.name}(${item.position})` }}</span>
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="150">
+                        <template v-slot="scope">
                             <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
                             <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
                                 <el-button slot="reference" type="text" size="small">删除</el-button>
                             </el-popconfirm>
                         </template>
-                    </el-table-column> -->
+                    </el-table-column>
                 </el-table>
-                <div style="margin-top: 20px">
-                    <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button>
-                    <el-button @click="toggleSelection()">取消选择</el-button>
-                    <el-button @click="inStore">入待宰栏</el-button>
-                </div>
 
                 <el-row type="flex" justify="end">
                     <el-col :span="8" class="pagination">
@@ -69,97 +55,180 @@
                             @current-change="pageChange"
                             background
                             layout="prev, pager, next"
-                            :page-count="10"
+                            :page-count="Number(totalPages)"
                         ></el-pagination>
                     </el-col>
                 </el-row>
             </article>
         </section>
+
+        <el-dialog title="新增" :visible.sync="isShow" width="40%">
+            <el-row type="flex">
+                <el-col :span="20">
+                    <el-form
+                        ref="addMOutStore"
+                        :model="formData"
+                        :rules="rules"
+                        label-width="140px"
+                    >
+                        <el-form-item label="入库日期">
+                            <el-date-picker
+                                v-model="formData.inTime"
+                                type="date"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="默认当前时间"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="药品">
+                            <el-select v-model="formData.medicineId" filterable placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['drugBasicsList']"
+                                    :key="item.id"
+                                    :label="`${item.name}`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="生产批号">
+                            <el-input v-model="formData.batchNumber"></el-input>
+                        </el-form-item>
+                        <el-form-item label="来源">
+                            <el-input v-model="formData.source"></el-input>
+                        </el-form-item>
+                        <el-form-item label="数量">
+                            <el-input v-model.number="formData.number"></el-input>
+                        </el-form-item>
+                        <el-form-item label="购买人">
+                            <el-select v-model="formData.buyer" filterable placeholder="请选择">
+                                <el-option
+                                    v-for="item in $store.state['workerList']"
+                                    :key="item.id"
+                                    :label="`${item.name}(${item.position})`"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button @click="isShow=false">取 消</el-button>
+                            <el-button type="primary" @click="submitForm('addMOutStore')">保 存</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-dialog>
     </div>
 </template>
 
 <script>
+import {
+    reqMOutStoreList,
+    reqAddMOutStore,
+    reqDelMOutStore
+} from "@/api/material.js";
 
-const pageSize = 10
-const tableData = [
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "带骨羊前腿",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                
-                
-            ]
+const pageSize = 10;
+const rules = {};
 
 export default {
+    name: "MOutStore",
     data() {
         return {
-            value: "",
-            multipleSelection: [],
-            page: 1,
-            tableData
+            search: "",
+            pageNum: 1,
+            tableData: [],
+            totalPages: 0,
+            isShow: false,
+            formData: {
+                inTime: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
+                medicineId: null,
+                batchNumber: '129656560',
+                source: "xx药厂",
+                number: 120,
+                buyer: null
+            },
+            isAdd: false,
+            rules
         };
     },
-    created() {},
+    created() {
+        // 基础信息列表
+        this.getMOutStoreList();
+    },
+    computed: {},
     methods: {
-        toggleSelection(rows) {
-            if (rows) {
-                rows.forEach(row => {
-                    this.$refs.multipleTable.toggleRowSelection(row);
+        submitForm(formName) {
+            this.$refs[formName].validate(valid => {
+                if (valid) {
+                    reqAddMOutStore(this.formData)
+                        .then(res => {
+                            // 基础信息列表
+                            this.getMOutStoreList();
+                            // 获取基础药品列表 给后面下拉选择器使用
+                            this.$store.dispatch("getDrugBasicsList");
+                            this.$message.success("成功!");
+                            // this.isShow = false
+                        })
+                        .catch(err => {
+                            console.log(err);
+                            this.$message.error("失败!");
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
+        // 基础信息列表
+        getMOutStoreList() {
+            reqMOutStoreList({
+                searchStr: this.search,
+                pageSize,
+                pageNum: this.pageNum
+            })
+                .then(res => {
+                    this.tableData = res.content;
+                    this.totalPages = res.totalPages;
+                })
+                .catch(err => {
+                    console.log(err);
                 });
-            } else {
-                this.$refs.multipleTable.clearSelection();
-            }
         },
-        // 入待宰栏
-        inStore() {},
-        handleSelectionChange(val) {
-            this.multipleSelection = val;
+        add() {
+            this.isShow = true;
+            // 有id是update 没id是add
+            delete this.formData.id;
+        },
+        edit(row) {
+            this.formData = row;
+            this.isShow = true;
+        },
+        del(row) {
+            reqDelMOutStore(row.id)
+                .then(res => {
+                    // 基础信息列表
+                    this.getMOutStoreList();
+                    if (res.code == "success") {
+                        this.$message.success(res.msg);
+                    }
+                    if (res.errCode == "delete failed") {
+                        this.$message.error(res.errMsg);
+                    }
+                })
+                .catch(err => {
+                    console.log(err);
+                    this.$message.error("删除失败!");
+                });
         },
-        edit(row) {},
-        del(row) {},
         pageChange(p) {
             console.log(p);
+            this.pageNum = p;
+            // 基础信息列表
+            this.getMOutStoreList();
+        },
+        CPeriodOfValidityUnit(v) {
+            let res = this.$store.state["periodOfValidityUnit"].find(
+                item => item.value == v
+            );
+            return res.label;
         }
     }
 };

+ 123 - 113
src/views/material/storeList.vue

@@ -1,33 +1,16 @@
 <template>
-    <div class="storeList">
+    <div class="Store">
         <h2 style="margin-bottom: 20px;padding-bottom:7px;border-bottom:2px solid #ddd">库存盘点</h2>
-
         <header id="header">
-            
-            <el-row type="flex">
-                <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1区" value="11"></el-option>
-                        <el-option label="2区" value="22"></el-option>
-                    </el-select>
-                </el-col>
-                <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="1舍" value="13"></el-option>
-                        <el-option label="2舍" value="24"></el-option>
-                    </el-select>
-                </el-col>
+            <el-row type="flex" :gutter="20">
                 <el-col :span="4">
-                    <el-select v-model="value" placeholder="请选择">
-                        <el-option label="可用" value="15"></el-option>
-                        <el-option label="可用" value="26"></el-option>
-                    </el-select>
+                    <el-input v-model="search" placeholder="请输入"></el-input>
                 </el-col>
                 <el-col :span="4">
-                    <el-button type="primary">查找</el-button>
+                    <el-button type="primary" @click="getStoreList">查找</el-button>
                 </el-col>
                 <el-col :span="4">
-                    <el-button type="primary">新增</el-button>
+                    <el-button type="primary" @click="add">新增</el-button>
                 </el-col>
             </el-row>
         </header>
@@ -38,30 +21,19 @@
                     :data="tableData"
                     tooltip-effect="dark"
                     style="width: 100%"
-                    @selection-change="handleSelectionChange"
                 >
-                    <el-table-column type="selection" width="55"></el-table-column>
-                    <el-table-column prop="a" label="屠宰批次"></el-table-column>
-                    <el-table-column prop="b" label="产品名称"></el-table-column>
-                    <el-table-column prop="c" label="排酸时间"></el-table-column>
-                    <el-table-column prop="d" label="排酸前重量"></el-table-column>
-                    <el-table-column prop="e" label="排酸后重量"></el-table-column>
-                    <el-table-column prop="f" label="排酸损耗"></el-table-column>
-                    <el-table-column prop="g" label="负责人员"></el-table-column>
-                    <!-- <el-table-column label="操作" width="150">
-                        <template slot-scope="scope">
-                            <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
-                            <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
-                                <el-button slot="reference" type="text" size="small">删除</el-button>
-                            </el-popconfirm>
-                        </template>
-                    </el-table-column> -->
+                    <el-table-column prop="id" label="序号"></el-table-column>
+                    <el-table-column prop="inTime" label="入库日期"></el-table-column>
+                    <el-table-column prop="medicineName" label="药品名称"></el-table-column>
+                    <el-table-column prop="specifications" label="规格"></el-table-column>
+                    <el-table-column prop="factory" label="生产厂家"></el-table-column>
+                    <el-table-column prop="mfd" label="生产日期"></el-table-column>
+                    <el-table-column prop="source" label="来源(经销商)"></el-table-column>
+                    <el-table-column prop="number" label="库存数量"></el-table-column>
+                    <el-table-column prop="periodOfValidity" label="质保期"></el-table-column>
+                    <el-table-column prop="unit" label="质保期单位"></el-table-column>
+                    <el-table-column prop="price" label="价格(元)"></el-table-column>
                 </el-table>
-                <div style="margin-top: 20px">
-                    <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button>
-                    <el-button @click="toggleSelection()">取消选择</el-button>
-                    <el-button @click="inStore">入待宰栏</el-button>
-                </div>
 
                 <el-row type="flex" justify="end">
                     <el-col :span="8" class="pagination">
@@ -69,97 +41,135 @@
                             @current-change="pageChange"
                             background
                             layout="prev, pager, next"
-                            :page-count="10"
+                            :page-count="Number(totalPages)"
                         ></el-pagination>
                     </el-col>
                 </el-row>
             </article>
         </section>
+
+        <el-dialog title="新增" :visible.sync="isShow" width="40%">
+            <el-row type="flex">
+                <el-col :span="20">
+                    <el-form ref="addStore" :model="formData" :rules="rules" label-width="140px">
+                        <el-form-item label="入库日期">
+                            <el-date-picker
+                                v-model="formData.inTime"
+                                type="date"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="选择日期"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="药品id">
+                            <el-input v-model="formData.medicineId"></el-input>
+                        </el-form-item>
+                        <el-form-item label="生产日期">
+                            <el-date-picker
+                                v-model="formData.mfd"
+                                type="date"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                placeholder="选择日期"
+                            ></el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="来源(经销商)">
+                            <el-input v-model="formData.source"></el-input>
+                        </el-form-item>
+                        <el-form-item label="库存数量">
+                            <el-input v-model.number="formData.number"></el-input>
+                        </el-form-item>
+                        <el-form-item label="价格">
+                            <el-input v-model.number="formData.price"></el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button @click="isShow=false">取 消</el-button>
+                            <el-button type="primary" @click="submitForm('addStore')">保 存</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-dialog>
     </div>
 </template>
 
 <script>
+import {
+    reqStoreList,
+    reqAddStore
+} from "@/api/material.js";
 
-const pageSize = 10
-const tableData = [
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "带骨羊前腿",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "胴体",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                {
-                    a: "15463",
-                    b: "羔羊肉卷",
-                    c: "2020-07-14",
-                    d: "49kg",
-                    e: "48kg",
-                    f: "1.6%",
-                    g: "张小刚",
-                },
-                
-                
-            ]
+const pageSize = 10;
+const rules = {};
 
 export default {
+    name: "Store",
     data() {
         return {
-            value: "",
-            multipleSelection: [],
-            page: 1,
-            tableData
+            search: "",
+            pageNum: 1,
+            tableData: [],
+            totalPages: 0,
+            isShow: false,
+            formData: {
+                inTime: this.$moment().format('YYYY-MM-DD 00:00:00'),
+                medicineId: "12",
+                mfd: this.$moment().format('YYYY-MM-DD 00:00:00'),
+                source: "兽药经销商",
+                number: 168,
+                price: 8.5
+            },
+            isAdd: false,
+            rules
         };
     },
-    created() {},
+    created() {
+        // 库存盘点列表
+        this.getStoreList();
+    },
     methods: {
-        toggleSelection(rows) {
-            if (rows) {
-                rows.forEach(row => {
-                    this.$refs.multipleTable.toggleRowSelection(row);
+        submitForm(formName) {
+            this.$refs[formName].validate(valid => {
+                if (valid) {
+                    reqAddStore(this.formData)
+                        .then(res => {
+                            // 库存盘点列表
+                            this.getStoreList();
+                            this.$message.success("成功!");
+                            // this.isShow = false
+                        })
+                        .catch(err => {
+                            console.log(err);
+                            this.$message.error("失败!");
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
+        // 库存盘点列表
+        getStoreList() {
+            reqStoreList({
+                searchStr: this.search,
+                pageSize,
+                pageNum: this.pageNum
+            })
+                .then(res => {
+                    this.tableData = res.content;
+                    this.totalPages = res.totalPages;
+                })
+                .catch(err => {
+                    console.log(err);
                 });
-            } else {
-                this.$refs.multipleTable.clearSelection();
-            }
         },
-        // 入待宰栏
-        inStore() {},
-        handleSelectionChange(val) {
-            this.multipleSelection = val;
+        add() {
+            this.isShow = true;
+            // 有id是update 没id是add
+            delete this.formData.id;
         },
-        edit(row) {},
-        del(row) {},
         pageChange(p) {
             console.log(p);
+            this.pageNum = p;
+            // 库存盘点列表
+            this.getStoreList();
         }
     }
 };