CowCowShed.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. <template>
  2. <div>
  3. <el-card class="box-card">
  4. <!-- 搜索区域 -->
  5. <div class="search-bx1">
  6. <el-input v-model="searchData.name" placeholder="栏舍名称" style="width: 180px;" class="g-mr20" clearable />
  7. <el-input v-model="searchData.barn_group_name" placeholder="栏舍组" style="width: 180px;" class="g-mr20" clearable />
  8. <el-select v-model="searchData.status" filterable placeholder="栏舍状态" class="g-mr20" style="width: 180px;" clearable>
  9. <el-option v-for="item in statusList" :key="item.id" :label="item.value" :value="item.id" />
  10. </el-select>
  11. <!-- <el-select v-model="searchData.barn_group_id" filterable placeholder="犊牛状态" class="g-mr20" style="width: 180px;" clearable>
  12. <el-option v-for="item in barnGroupList" :key="item.id" :label="item.value" :value="item.id" />
  13. </el-select> -->
  14. <el-button type="primary" @click="form_search">搜索</el-button>
  15. <el-button type="primary" @click="form_clear">重置</el-button>
  16. <el-button type="primary" v-if="isButtonEdit" @click="form_add">添加</el-button>
  17. <!-- <el-button type="primary" @click="form_export">导出</el-button> -->
  18. </div>
  19. <!-- 表格 -->
  20. <el-table key="0" :data="tableList" v-loading="tableLoading" element-loading-text="给我一点时间" border fit>
  21. <el-table-column label="序号" width="50px" align="center">
  22. <template slot-scope="scope">
  23. <span>{{ scope.row.id }}</span>
  24. </template>
  25. </el-table-column>
  26. <el-table-column label="栏舍名称" min-width="150px" align="center">
  27. <template slot-scope="scope">
  28. <span>{{ scope.row.name }}</span>
  29. </template>
  30. </el-table-column>
  31. <el-table-column label="栏舍组" min-width="150px" align="center">
  32. <template slot-scope="scope">
  33. <span>{{ scope.row.barn_group_name }}</span>
  34. </template>
  35. </el-table-column>
  36. <el-table-column label="身份卡ID" min-width="150px" align="center">
  37. <template slot-scope="scope">
  38. <span>{{ scope.row.number }}</span>
  39. </template>
  40. </el-table-column>
  41. <el-table-column label="栏舍状态" min-width="150px" align="center">
  42. <template slot-scope="scope">
  43. <span>{{ scope.row.status }}</span>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="犊牛状态" min-width="150px" align="center">
  47. <template slot-scope="scope">
  48. <span>{{ scope.row.number }}</span>
  49. </template>
  50. </el-table-column>
  51. <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width" fixed="right">
  52. <template slot-scope="scope">
  53. <!-- 修改按钮 -->
  54. <el-button type="primary" v-if="isButtonEdit" size="mini" icon="el-icon-edit" @click="form_edit(scope.row)">修改</el-button>
  55. <!-- 删除按钮 -->
  56. <el-button type="danger" v-if="isButtonEdit" size="mini" icon="el-icon-delete" @click="form_delete(scope.row)">删除</el-button>
  57. </template>
  58. </el-table-column>
  59. </el-table>
  60. <!-- 分页区域 -->
  61. <el-pagination @size-change="change_size_page" @current-change="change_current_page" :current-page="searchData.page" :page-sizes="[1,5,10,20,30,50]" :page-size="searchData.page_size" layout="total, prev, pager, next" :total="searchData.total"/>
  62. </el-card>
  63. <!-- 弹窗 新增or修改 -->
  64. <el-dialog :title="addFormTxt[addFormStatus]" :visible.sync="addFormShow" @close="add_dialog_close" width="50%">
  65. <div class="">
  66. <el-form ref="addFormRef" :rules="addFormRules" :model="addForm" label-position="right" label-width="100px" style="width:50%;margin:0 auto 50px">
  67. <el-form-item label="身份卡ID:" prop="number">
  68. <el-input v-model="addForm.number" placeholder="用于加奶枪识别牛只信息及饲喂量" ></el-input>
  69. </el-form-item>
  70. <el-form-item label="类型名称:" prop="name">
  71. <el-input v-model="addForm.name" ></el-input>
  72. </el-form-item>
  73. <el-form-item label="栏舍组:" prop="barn_group_id">
  74. <el-select v-model="addForm.barn_group_id" filterable placeholder="请选择" class="filter-item" style="width: 100%;" >
  75. <el-option v-for="item in barnGroupList" :key="item.id" :label="item.name" :value="item.id" />
  76. </el-select>
  77. </el-form-item>
  78. </el-form>
  79. <div slot="footer" class="dialog-footer">
  80. <el-button type="primary" @click="addFormStatus==='create'?add_dialog_save():edit_dialog_save()">确认</el-button>
  81. <el-button @click="addFormShow = false">关闭</el-button>
  82. </div>
  83. </div>
  84. </el-dialog>
  85. </div>
  86. </template>
  87. <script>
  88. import { ajaxDataGet, ajaxDataPost, ajaxDataPut, ajaxDataDelete, checkButtons} from '@/api/common'
  89. import { parseTime, json2excel } from '@/utils/index.js'
  90. export default {
  91. data() {
  92. return {
  93. //接口 - 获取 - 表格
  94. url_get_table:'/api/v1/ops/barn/list',
  95. //接口 - 新增 - 表格
  96. url_add_table:'/api/v1/ops/barn/add',
  97. //接口 - 修改 - 表格
  98. url_edit_table:'/api/v1/ops/barn/update',
  99. //接口 - 删除 - 表格
  100. url_delete_table:'/api/v1/ops/barn/delete',
  101. //接口 - 下拉框 列表
  102. url_get_select1:'/api/v1/ops/calf_feed/enum/list',
  103. //接口 - 下拉框 列表 栏舍组
  104. url_get_select2:'/api/v1/ops/barn_group/list?page=1&page_size=1000',
  105. //按钮权限
  106. isButtonEdit:false,
  107. //获取 - 表格数据 - 参数
  108. searchData:{
  109. name: "",
  110. barn_group_name: "",
  111. status: undefined,
  112. page: 1, //页码
  113. page_size: 10, //每页数量
  114. total:0, //总页数
  115. pastureId: ""
  116. },
  117. tableLoading: false,
  118. //表格内容
  119. tableList:[
  120. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123',roleList:[2,3] },
  121. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123',roleList:[] },
  122. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  123. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  124. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  125. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  126. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  127. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  128. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  129. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  130. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  131. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  132. ],
  133. //栏舍状态
  134. statusList:[
  135. {id: 1, value: '正常'},
  136. {id: 2, value: '空栏'},
  137. {id: 3, value: '损坏'},
  138. ],
  139. //栏舍组下拉
  140. barnGroupList:[
  141. ],
  142. addFormShow:false,
  143. addFormStatus: '',
  144. addFormTxt: { edit: '修改', create: '新增' },
  145. addForm:{
  146. number:undefined,name:'',barn_group_id:undefined,id:''
  147. },
  148. addFormRules:{
  149. number: [ { required: true, message: '身份卡ID必填', trigger: 'blur' }, ],
  150. name: [ { required: true, message: '类型名称必填', trigger: 'blur' }, ],
  151. barn_group_id: [ { required: true, message: '栏舍组必填', trigger: 'blur' }, ],
  152. },
  153. }
  154. },
  155. created(){
  156. //获取按钮权限
  157. const isButtonEdit = checkButtons(this.$store.state.buttonsList, "牛只栏舍编辑")
  158. this.isButtonEdit = isButtonEdit
  159. console.log('this.isButtonEdit==========',this.isButtonEdit)
  160. //获取下拉框
  161. this.get_select_list1()
  162. //表格 - 初始化
  163. this.get_table_data()
  164. },
  165. methods:{
  166. //获取 下拉框
  167. get_select_list1(){
  168. var me = this
  169. ajaxDataPost(me.url_get_select2, { name: ""}).then(e => {
  170. console.log("栏舍组下拉框:",e)
  171. if(e.data.list == null || e.data.list == undefined ||e.data.list.length == 0 ){
  172. me.barnGroupList = []
  173. } else {
  174. me.barnGroupList = e.data.list
  175. }
  176. })
  177. // ajaxDataGet('/authdata/pasture', { "page": 1, "page_size": 1000}).then(e => {
  178. // console.log("牧场下拉框1:",e)
  179. // //打印请求成功结果
  180. // if(e.data == null || e.data == undefined ||e.data.length == 0 ){
  181. // me.pastureList = []
  182. // } else {
  183. // me.pastureList = e.data
  184. // }
  185. // })
  186. },
  187. //获取 表格
  188. get_table_data() {
  189. var me = this
  190. me.tableLoading = true
  191. console.log("searchData======>", me.searchData)
  192. if( me.searchData.status == ""){
  193. me.searchData.status = undefined
  194. }
  195. var send_url = me.url_get_table + '?page=' + me.searchData.page + '&page_size=' + me.searchData.page_size
  196. ajaxDataPost(send_url, me.searchData).then(e => {
  197. console.log("表格请求结果:",e)
  198. //打印请求成功结果
  199. if(e.code == 200 ){
  200. me.tableList = e.data.list
  201. me.searchData.total = e.data.total; // 总数
  202. me.searchData.page = e.data.page; //页码
  203. me.searchData.page_size = e.data.page_size; //每页数量
  204. } else {
  205. me.$message({ type: 'error', message: '请求表格列表失败!' + e.msg, duration: 2000 })
  206. }
  207. setTimeout(() => {
  208. me.tableLoading = false
  209. }, 100)
  210. })
  211. },
  212. //搜索 查询表格
  213. form_search(){
  214. var me = this
  215. console.log('请求表格列表searchData',me.searchData)
  216. me.get_table_data()
  217. },
  218. //重置 表格
  219. form_clear(){
  220. var me = this
  221. me.searchData.name = ""
  222. me.searchData.name = ""
  223. me.searchData.barn_group_name = undefined
  224. me.searchData.page = 1
  225. me.searchData.page_size = 10
  226. me.get_table_data()
  227. },
  228. //监听 page_size 改变的事件
  229. change_size_page(item){
  230. console.log(item)
  231. // this.searchData.page_size = item
  232. // this.getUserList()
  233. },
  234. //监听 page 改变的事件
  235. change_current_page(item){
  236. console.log(item)
  237. this.searchData.page = item
  238. this.get_table_data()
  239. },
  240. //清空弹窗表单信息
  241. reset_form(){
  242. this.addForm.name = ''
  243. this.addForm.id = undefined
  244. this.addForm.barn_group_id = undefined
  245. this.addForm.number = ''
  246. },
  247. //新增
  248. form_add() {
  249. this.reset_form()
  250. this.addFormStatus = 'create'
  251. this.addFormShow = true
  252. this.$nextTick(() => {
  253. this.$refs['addFormRef'].clearValidate()
  254. })
  255. },
  256. //编辑
  257. form_edit(row) {
  258. this.reset_form()
  259. console.log('行内容row=========', row)
  260. //编辑行内容赋值
  261. this.addForm = Object.assign({}, row)
  262. this.addFormStatus = 'edit'
  263. this.addFormShow = true
  264. this.$nextTick(() => {
  265. this.$refs['addFormRef'].clearValidate()
  266. })
  267. },
  268. //新增关闭
  269. add_dialog_close(){
  270. //内容重置
  271. this.$refs['addFormRef'].resetFields()
  272. },
  273. //新增 保存
  274. add_dialog_save() {
  275. var me = this
  276. this.$refs['addFormRef'].validate(valid => {
  277. //验证成功
  278. if (valid) {
  279. //发起请求
  280. var send_data = {
  281. "name": me.addForm.name,
  282. "barn_group_id": me.addForm.barn_group_id,
  283. "number": me.addForm.number,
  284. }
  285. console.log("弹窗参数:", send_data)
  286. //关闭弹窗
  287. // me.addFormShow = false
  288. //加载 - 发送新增保存
  289. ajaxDataPost(me.url_add_table, send_data).then(e => {
  290. console.log("新增结果:",e)
  291. //打印请求成功结果
  292. if(e.code == 200 ){
  293. me.$message({ type: 'success', message: '新增成功!' , duration: 2000 })
  294. //关闭弹窗
  295. me.addFormShow = false
  296. me.get_table_data()
  297. } else {
  298. me.$message({ type: 'error', message: '新增失败!' + e.msg, duration: 2000 })
  299. }
  300. })
  301. }
  302. })
  303. },
  304. //编辑 保存
  305. edit_dialog_save(){
  306. var me = this
  307. this.$refs['addFormRef'].validate(valid => {
  308. //验证成功
  309. if (valid) {
  310. //发起请求
  311. var send_data = {
  312. "id": me.addForm.id,
  313. "name": me.addForm.name,
  314. "barn_group_id": me.addForm.barn_group_id,
  315. "number": me.addForm.number,
  316. }
  317. // var name = this.barnGroupList.find(obj => obj.id == me.addForm.barn_group_id).name
  318. // console.log(name)
  319. // 编辑保存
  320. console.log("弹窗参数:", send_data)
  321. //关闭弹窗
  322. // me.addFormShow = false
  323. //加载 - 发送新增保存
  324. ajaxDataPut(me.url_edit_table, send_data).then(e => {
  325. console.log("编辑结果:",e)
  326. //打印请求成功结果
  327. if(e.code == 200 ){
  328. me.$message({ type: 'success', message: '编辑成功!' , duration: 2000 })
  329. //关闭弹窗
  330. me.addFormShow = false
  331. me.get_table_data()
  332. } else {
  333. me.$message({ type: 'error', message: '编辑失败!' + e.msg, duration: 2000 })
  334. }
  335. })
  336. }
  337. })
  338. },
  339. form_delete(row) {
  340. var me = this
  341. me.$confirm('是否删除此条内容?', '提示', {
  342. confirmButtonText: '确定',
  343. cancelButtonText: '取消',
  344. type: 'warning'
  345. }).then(() => {
  346. console.log("删除的ID参数:", row.id)
  347. //加载 - 发送新增保存
  348. ajaxDataDelete(me.url_delete_table + '/' +row.id, {}).then(e => {
  349. console.log("编辑结果:",e)
  350. //打印请求成功结果
  351. if(e.code == 200 ){
  352. me.$message({ type: 'success', message: '删除成功!' });
  353. me.get_table_data()
  354. } else {
  355. me.$message({ type: 'error', message: '删除失败!' + e.msg, duration: 2000 })
  356. }
  357. })
  358. }).catch(() => {
  359. me.$message({
  360. type: 'info',
  361. message: '已取消删除'
  362. });
  363. });
  364. },
  365. form_export() {
  366. //获取请求表格数据的参数
  367. //this.download.getdataListParm.parammaps = this.tableObj.getdataListParm.parammaps
  368. //请求表格
  369. // GetDataByName(this.download.getdataListParm).then(response => {
  370. // if (response.data.list !== null) {
  371. // this.download.list = response.data.list
  372. // } else {
  373. // this.download.list = []
  374. // }
  375. // var excelDatas = [
  376. // {
  377. // tHeader: ['表头1', '表头2', '表头3', '表头4',],
  378. // filterVal: ['title1', 'title2', 'title3', 'title4'],
  379. // tableDatas: this.download.list,
  380. // sheetName: 'Sheet1'
  381. // }
  382. // ]
  383. // json2excel(excelDatas, '表格大标题', true, 'xlsx')
  384. // })
  385. var excelDatas = [
  386. {
  387. tHeader: ['表头1', '表头2', '表头3', '表头4',],
  388. filterVal: ['title1', 'title2', 'title3', 'title4'],
  389. tableDatas: [
  390. {title1: "内容1",title2: "内容2",title3: "内容3",title4: "内容4"},
  391. {title1: "内容11",title2: "内容22",title3: "内容32",title4: "内容44"},
  392. {title1: "内容111",title2: "内容222",title3: "内容333",title4: "内容444"},
  393. ],
  394. sheetName: 'Sheet1'
  395. }
  396. ]
  397. json2excel(excelDatas, '表格大标题', true, 'xlsx')
  398. }
  399. }
  400. }
  401. </script>
  402. <!-- 加了scoped,则是仅在此组件里生效 -->
  403. <style scoped>
  404. </style>