FormulaTemplate11.vue 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  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 g-mb20" clearable />
  7. <el-select v-model="searchData.calf_category_id" filterable placeholder="犊牛类型" class="g-mr20" style="width: 180px;" clearable>
  8. <el-option v-for="item in calfTypeList" :key="item.id" :label="item.name" :value="item.id" />
  9. </el-select>
  10. <el-input-number v-model="searchData.min_daily_age" style="width:120px;" :controls="false" placeholder="日龄" />
  11. <span style="margin:0px 8px;">至</span>
  12. <el-input-number v-model="searchData.max_daily_age" style="width:120px;" class="g-mr20" :controls="false" placeholder="日龄" />
  13. <el-button type="primary" @click="form_search">搜索</el-button>
  14. <el-button type="primary" @click="form_clear">重置</el-button>
  15. <el-button type="primary" v-if="isButtonEdit" @click="form_add">添加</el-button>
  16. <!-- <el-button type="primary" @click="form_export">导出</el-button> -->
  17. </div>
  18. <!-- 表格 -->
  19. <el-table key="0" :data="tableList" v-loading="tableLoading" element-loading-text="给我一点时间" border fit>
  20. <el-table-column label="序号" width="50px" align="center">
  21. <template slot-scope="scope">
  22. <span>{{ scope.row.id }}</span>
  23. </template>
  24. </el-table-column>
  25. <el-table-column label="配方名称" min-width="150px" align="center">
  26. <template slot-scope="scope">
  27. <span>{{ scope.row.name }}</span>
  28. </template>
  29. </el-table-column>
  30. <el-table-column label="犊牛类型" min-width="150px" align="center">
  31. <template slot-scope="scope">
  32. <span>{{ scope.row.calf_category_name }}</span>
  33. </template>
  34. </el-table-column>
  35. <el-table-column label="适用日龄" min-width="150px" align="center">
  36. <template slot-scope="scope">
  37. <span>{{ }}</span>
  38. </template>
  39. </el-table-column>
  40. <el-table-column label="配方阶段数" min-width="150px" align="center">
  41. <template slot-scope="scope">
  42. <span>{{ }}</span>
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="公犊增重指标(KG/日)" min-width="150px" align="center">
  46. <template slot-scope="scope">
  47. <span>{{ scope.row.male_calf_daily_weight }}</span>
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="母犊增重指标(KG/日)" min-width="150px" align="center">
  51. <template slot-scope="scope">
  52. <span>{{ scope.row.female_calf_daily_weight }}</span>
  53. </template>
  54. </el-table-column>
  55. <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width" fixed="right">
  56. <template slot-scope="scope">
  57. <!-- 修改按钮 -->
  58. <el-button type="primary" v-if="isButtonEdit" size="mini" icon="el-icon-edit" @click="form_edit(scope.row)">修改</el-button>
  59. <!-- 删除按钮 -->
  60. <el-button type="danger" v-if="isButtonEdit" size="mini" icon="el-icon-delete" @click="form_delete(scope.row)">删除</el-button>
  61. </template>
  62. </el-table-column>
  63. </el-table>
  64. <!-- 分页区域 -->
  65. <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"/>
  66. </el-card>
  67. <!-- 弹窗 新增or修改 -->
  68. <el-dialog :title="addFormTxt[addFormStatus]" :visible.sync="addFormShow" @close="add_dialog_close" width="80%">
  69. <div class="">
  70. <el-form ref="addFormRef" :rules="addFormRules" :model="addForm" label-position="right" label-width="160px" style="width:80%;margin:0 auto 50px">
  71. <el-row :gutter="20">
  72. <el-col :span="12">
  73. <el-form-item label="配方名称:" prop="name">
  74. <el-input v-model="addForm.name" />
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="12">
  78. <el-form-item label="犊牛类型:" prop="calf_category_id">
  79. <el-select v-model="addForm.calf_category_id" filterable placeholder="请选择" class="filter-item" style="width: 100%;" >
  80. <el-option v-for="item in calfTypeList" :key="item.id" :label="item.name" :value="item.id" />
  81. </el-select>
  82. </el-form-item>
  83. </el-col>
  84. </el-row>
  85. <el-row :gutter="20">
  86. <el-col :span="12">
  87. <el-form-item label="公犊增重指标(KG/日):" prop="male_calf_daily_weight">
  88. <el-input v-model="addForm.male_calf_daily_weight" placeholder="建议填写,用以统计牛只成长达标率" />
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="12">
  92. <el-form-item label="母犊增重指标(KG/日):" prop="female_calf_daily_weight">
  93. <el-input v-model="addForm.female_calf_daily_weight" placeholder="建议填写,用以统计牛只成长达标率" />
  94. </el-form-item>
  95. </el-col>
  96. </el-row>
  97. <el-row :gutter="20" >
  98. <el-button type="primary" @click="add_step">增加一个阶段</el-button>
  99. <el-button type="primary" @click="feed_proganmme">智能饲喂方案</el-button>
  100. </el-row>
  101. <el-row>
  102. <!-- 表格 -->
  103. <el-table key="0" ref="tableStep" :data="tableListStep" v-loading="tableLoadingStep" element-loading-text="给我一点时间" border fit>
  104. <el-table-column label="阶段" width="50px" align="center">
  105. <template slot-scope="scope">
  106. <span>{{ scope.row.id }}</span>
  107. </template>
  108. </el-table-column>
  109. <el-table-column label="开始日龄" min-width="150px" align="center">
  110. <template slot-scope="scope">
  111. <span>{{ scope.row.start_daily_age }}</span>
  112. </template>
  113. </el-table-column>
  114. <el-table-column label="结束日龄" min-width="150px" align="center">
  115. <template slot-scope="scope">
  116. <span>{{ scope.row.end_daily_age }}</span>
  117. </template>
  118. </el-table-column>
  119. <el-table-column label="饲料类型" min-width="150px" align="center">
  120. <template slot-scope="scope">
  121. <span>{{ scope.row.forage_name }}</span>
  122. </template>
  123. </el-table-column>
  124. <el-table-column label="日饲喂量(kg)" min-width="150px" align="center">
  125. <template slot-scope="scope">
  126. <span>{{ scope.row.daily_feed_number }}</span>
  127. </template>
  128. </el-table-column>
  129. <el-table-column label="第一班占比(%)" min-width="150px" align="center" >
  130. <template slot-scope="scope">
  131. <span>{{ scope.row.first_class_ratio }}</span>
  132. </template>
  133. </el-table-column>
  134. <el-table-column label="第二班占比(%)" min-width="150px" align="center" v-if="class_num == 2 || class_num == 3 || class_num == 4">
  135. <template slot-scope="scope">
  136. <span>{{ scope.row.second_class_ratio }}</span>
  137. </template>
  138. </el-table-column>
  139. <el-table-column label="第三班占比(%)" min-width="150px" align="center" v-if=" class_num == 3 || class_num == 4">
  140. <template slot-scope="scope">
  141. <span>{{ scope.row.third_class_ratio }}</span>
  142. </template>
  143. </el-table-column>
  144. <el-table-column label="第四班占比(%)" min-width="150px" align="center" v-if=" class_num == 4">
  145. <template slot-scope="scope">
  146. <span>{{ scope.row.fourth_class_ratio }}</span>
  147. </template>
  148. </el-table-column>
  149. <el-table-column label="班次允许误差(kg)" min-width="150px" align="center">
  150. <template slot-scope="scope">
  151. <span>{{ scope.row.allow_class_error }}</span>
  152. </template>
  153. </el-table-column>
  154. <el-table-column label="饲喂温度℃" min-width="150px" align="center">
  155. <template slot-scope="scope">
  156. <span>{{ scope.row.feed_temp }}</span>
  157. </template>
  158. </el-table-column>
  159. <el-table-column label="允许温差℃" min-width="150px" align="center">
  160. <template slot-scope="scope">
  161. <span>{{ scope.row.allow_temp_error }}</span>
  162. </template>
  163. </el-table-column>
  164. <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width" fixed="right">
  165. <template slot-scope="scope">
  166. <!-- 修改按钮 -->
  167. <el-button type="primary" v-if="isButtonEdit" size="mini" icon="el-icon-edit" @click="edit_step(scope.$index, scope.row)">修改</el-button>
  168. <!-- 删除按钮 -->
  169. <el-button type="danger" v-if="isButtonEdit" size="mini" icon="el-icon-delete" @click="delete_step(scope.$index, scope.row)">删除</el-button>
  170. </template>
  171. </el-table-column>
  172. </el-table>
  173. </el-row>
  174. </el-form>
  175. <div slot="footer" class="dialog-footer">
  176. <el-button type="primary" @click="addFormStatus==='create'?add_dialog_save():edit_dialog_save()">确认</el-button>
  177. <el-button @click="addFormShow = false">关闭</el-button>
  178. </div>
  179. </div>
  180. </el-dialog>
  181. <!-- 弹窗 新增or修改 阶段 -->
  182. <el-dialog :title="addFormTxtStep[addFormStatusStep]" :visible.sync="addFormShowStep" @close="add_step_close" width="80%">
  183. <div class="">
  184. <el-form ref="addFormRefStep" :rules="addFormRulesStep" :model="addFormStep" label-position="right" label-width="150px" style="width:80%;margin:0 auto 50px">
  185. <el-row :gutter="20">
  186. <el-col :span="12">
  187. <el-form-item label="阶段:" >
  188. <el-input v-model="addFormStep.id" placeholder="" disabled />
  189. </el-form-item>
  190. </el-col>
  191. </el-row>
  192. <el-row :gutter="20">
  193. <el-col :span="12">
  194. <el-form-item label="开始日龄:" prop="start_daily_age">
  195. <el-input v-model="addFormStep.start_daily_age" placeholder="" />
  196. </el-form-item>
  197. </el-col>
  198. <el-col :span="12">
  199. <el-form-item label="结束日龄:" prop="end_daily_age">
  200. <el-input v-model="addFormStep.end_daily_age" placeholder="" />
  201. </el-form-item>
  202. </el-col>
  203. </el-row>
  204. <el-row :gutter="20">
  205. <el-col :span="12">
  206. <el-form-item label="饲料类型:" prop="forage_id">
  207. <el-select v-model="addFormStep.forage_id" filterable placeholder="请选择" style="width: 100%;" >
  208. <el-option v-for="item in forageList" :key="item.id" :label="item.name" :value="item.id" />
  209. </el-select>
  210. </el-form-item>
  211. </el-col>
  212. <el-col :span="12">
  213. <el-form-item label="日饲喂量(kg):" prop="daily_feed_number">
  214. <el-input v-model="addFormStep.daily_feed_number" placeholder="" />
  215. </el-form-item>
  216. </el-col>
  217. </el-row>
  218. <el-row :gutter="20">
  219. <el-col :span="12">
  220. <el-form-item label="第一班占比(%):" prop="first_class_ratio">
  221. <el-input v-model="addFormStep.first_class_ratio" placeholder="" />
  222. </el-form-item>
  223. </el-col>
  224. <el-col :span="12">
  225. <el-form-item label="第二班占比(%):" prop="second_class_ratio" v-if="class_num == 2 || class_num == 3 || class_num == 4">
  226. <el-input v-model="addFormStep.second_class_ratio" placeholder="" />
  227. </el-form-item>
  228. </el-col>
  229. </el-row>
  230. <el-row :gutter="20">
  231. <el-col :span="12">
  232. <el-form-item label="第三班占比(%):" prop="third_class_ratio" v-if=" class_num == 3 || class_num == 4">
  233. <el-input v-model="addFormStep.third_class_ratio" placeholder="" />
  234. </el-form-item>
  235. </el-col>
  236. <el-col :span="12">
  237. <el-form-item label="第四班占比(%):" prop="fourth_class_ratio" v-if=" class_num == 4">
  238. <el-input v-model="addFormStep.fourth_class_ratio" placeholder="" />
  239. </el-form-item>
  240. </el-col>
  241. </el-row>
  242. <el-row :gutter="20">
  243. <el-col :span="12">
  244. <el-form-item label="饲喂温度℃:" prop="feed_temp">
  245. <el-input v-model="addFormStep.feed_temp" placeholder="" />
  246. </el-form-item>
  247. </el-col>
  248. <el-col :span="12">
  249. <el-form-item label="允许温差℃:" prop="allow_temp_error">
  250. <el-input v-model="addFormStep.allow_temp_error" placeholder="" />
  251. </el-form-item>
  252. </el-col>
  253. </el-row>
  254. <el-row :gutter="20">
  255. <el-col :span="12">
  256. <el-form-item label="班次允许误差(kg):" prop="allow_class_error">
  257. <el-input v-model="addFormStep.allow_class_error" placeholder="" />
  258. </el-form-item>
  259. </el-col>
  260. <el-col :span="12">
  261. </el-col>
  262. </el-row>
  263. </el-form>
  264. <div slot="footer" class="dialog-footer">
  265. <el-button type="primary" @click="addFormStatusStep==='create'?add_step_save():edit_step_save()">确认</el-button>
  266. <el-button @click="addFormShowStep = false">关闭</el-button>
  267. </div>
  268. </div>
  269. </el-dialog>
  270. <!-- 弹窗 智能方案 -->
  271. <el-dialog title="智能方案" :visible.sync="feedFormShow" @close="add_step_close" width="80%">
  272. <div class="">
  273. <el-form ref="feedFormStatusStep" :rules="addFormRulesStep" :model="feedFormStep" label-position="right" label-width="150px" style="width:80%;margin:0 auto 50px">
  274. <el-row :gutter="20" >
  275. <h2> 通过简单设置,系统将根据算法自动生成犊牛整个饲喂阶段的日饲喂量。 </h2>
  276. <h2> 注:只需设置起始、截止以及任意一个中间日龄(中间阶段的日龄可自行添加,添加越多算法越精准,至少设置1个中间日龄的饲喂量) </h2>
  277. </el-row>
  278. <el-row :gutter="20" >
  279. <el-button type="primary" @click="add_step">增加中间日龄</el-button>
  280. </el-row>
  281. <el-row>
  282. <!-- 表格 -->
  283. <el-table key="0" ref="tableStep" :data="tableListStep" v-loading="tableLoadingStep" element-loading-text="给我一点时间" border fit>
  284. <el-table-column label="阶段" width="50px" align="center">
  285. <template slot-scope="scope">
  286. <span>{{ scope.row.id }}</span>
  287. </template>
  288. </el-table-column>
  289. <el-table-column label="开始日龄" min-width="150px" align="center">
  290. <template slot-scope="scope">
  291. <span>{{ scope.row.start_daily_age }}</span>
  292. </template>
  293. </el-table-column>
  294. <el-table-column label="结束日龄" min-width="150px" align="center">
  295. <template slot-scope="scope">
  296. <span>{{ scope.row.end_daily_age }}</span>
  297. </template>
  298. </el-table-column>
  299. <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width" fixed="right">
  300. <template slot-scope="scope">
  301. <!-- 修改按钮 -->
  302. <el-button type="primary" v-if="isButtonEdit" size="mini" icon="el-icon-edit" @click="edit_step(scope.$index, scope.row)">修改</el-button>
  303. <!-- 删除按钮 -->
  304. <el-button type="danger" v-if="isButtonEdit" size="mini" icon="el-icon-delete" @click="delete_step(scope.$index, scope.row)">删除</el-button>
  305. </template>
  306. </el-table-column>
  307. </el-table>
  308. </el-row>
  309. </el-form>
  310. <div slot="footer" class="dialog-footer">
  311. <el-button type="primary" @click="addFormStatusStep==='create'?add_step_save():edit_step_save()">确认</el-button>
  312. <el-button @click="addFormShowStep = false">关闭</el-button>
  313. </div>
  314. </div>
  315. </el-dialog>
  316. </div>
  317. </template>
  318. <script>
  319. import { ajaxDataGet, ajaxDataPost, ajaxDataPut, ajaxDataDelete, checkButtons} from '@/api/common'
  320. import { parseTime, json2excel } from '@/utils/index.js'
  321. export default {
  322. data() {
  323. return {
  324. //接口 - 获取 - 表格
  325. url_get_table:'/api/v1/ops/formula_plan/formula/list',
  326. //接口 - 新增 - 表格
  327. url_add_table:'/api/v1/ops/formula_plan/formula/add',
  328. //接口 - 修改 - 表格
  329. url_edit_table:'/api/v1/ops/formula_plan/formula/update',
  330. //接口 - 删除 - 表格
  331. url_delete_table:'/api/v1/ops/formula_plan/formula',
  332. //接口 - 下拉框 列表
  333. url_get_select1:'/api/v1/ops/calf_feed/enum/list',
  334. //接口 - 下拉框 列表 栏舍组
  335. url_get_select2:'/api/v1/ops/barn_group/list?page=1&page_size=1000',
  336. //按钮权限
  337. isButtonEdit:false,
  338. //获取 - 表格数据 - 参数
  339. searchData:{
  340. calf_code: "",
  341. barn_name: "",
  342. mother_code: "",
  343. calf_category_id:undefined,
  344. genders: undefined,
  345. status: undefined,
  346. min_daily_weight_gain: undefined,
  347. max_daily_weight_gain: undefined,
  348. min_daily_age: undefined,
  349. max_daily_age: undefined,
  350. page: 1, //页码
  351. page_size: 10, //每页数量
  352. total:0, //总页数
  353. pastureId: ""
  354. },
  355. tableLoading: false,
  356. //表格内容
  357. tableList:[
  358. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123',roleList:[2,3] },
  359. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123',roleList:[] },
  360. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  361. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  362. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  363. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  364. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  365. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  366. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  367. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  368. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  369. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  370. ],
  371. //栏舍状态
  372. statusList:[
  373. {id: 1, value: '正常'},
  374. {id: 2, value: '空栏'},
  375. {id: 3, value: '损坏'},
  376. ],
  377. //犊牛类型
  378. calfTypeList:[
  379. ],
  380. //栏舍
  381. cowsheList:[
  382. ],
  383. //饲料
  384. forageList:[
  385. ],
  386. sexList:[
  387. {id: 1, value: '公'},
  388. {id: 2, value: '母'},
  389. ],
  390. addFormShow:false,
  391. addFormStatus: '',
  392. addFormTxt: { edit: '修改', create: '新增' },
  393. addForm:{
  394. name:'',id:'' ,calf_category_id:undefined, male_calf_daily_weight:undefined, female_calf_daily_weight:undefined,
  395. },
  396. addFormRules:{
  397. name: [ { required: true, message: '配方名称必填', trigger: 'blur' }, ],
  398. calf_category_id: [ { required: true, message: '犊牛类型必填', trigger: 'blur' }, ],
  399. },
  400. stepIndex:undefined,
  401. tableLoadingStep: false,
  402. //表格内容
  403. tableListStep:[
  404. ],
  405. addFormShowStep:false,
  406. addFormStatusStep: '',
  407. addFormTxtStep: { edit: '修改', create: '新增' },
  408. addFormStep:{
  409. name:'',id:'' , start_daily_age:undefined,end_daily_age:undefined,forage_id:undefined,forage_name:'',daily_feed_number:undefined,first_class_ratio:undefined,second_class_ratio:undefined,third_class_ratio:undefined,fourth_class_ratio:undefined,allow_class_error:undefined,feed_temp:undefined,feed_temp:undefined,allow_temp_error:undefined,
  410. },
  411. addFormRulesStep:{
  412. // name: [
  413. // { required: true, message: '类型必填', trigger: 'blur' },
  414. // ],
  415. },
  416. feedFormShow:false,
  417. feedFormStatusStep: '',
  418. feedFormTxtStep: { edit: '修改', create: '新增' },
  419. feedFormStep:{
  420. name:'',id:'' , daily_feed_number:undefined,first_class_ratio:undefined,second_class_ratio:undefined,third_class_ratio:undefined,fourth_class_ratio:undefined,allow_class_error:undefined
  421. },
  422. class_num:4
  423. }
  424. },
  425. created(){
  426. //获取按钮权限
  427. const isButtonEdit = checkButtons(this.$store.state.buttonsList, "日龄饲喂模板编辑")
  428. this.isButtonEdit = isButtonEdit
  429. console.log('this.isButtonEdit==========',this.isButtonEdit)
  430. var me = this
  431. //获取下拉框
  432. this.get_select_list1()
  433. //表格 - 初始化
  434. setTimeout(function () {
  435. me.get_table_data()
  436. }, 1000);
  437. // this.get_table_data()
  438. },
  439. methods:{
  440. //获取 下拉框
  441. get_select_list1(){
  442. var me = this
  443. ajaxDataPost('/api/v1/ops/base_setting/calf_type/list?page=1&page_size=1000', {name:"" }).then(e => {
  444. console.log("穿梭框1:",e)
  445. //打印请求成功结果
  446. if(e.data.list == null || e.data.list == undefined ||e.data.list.length == 0 ){
  447. me.calfTypeList = []
  448. } else {
  449. me.calfTypeList = e.data.list
  450. }
  451. })
  452. ajaxDataPost('/api/v1/ops/barn/list?page=1&page_size=1000', {name:"",barn_group_name:"",status:undefined}).then(e => {
  453. console.log("穿梭框1:",e)
  454. //打印请求成功结果
  455. if(e.data.list == null || e.data.list == undefined ||e.data.list.length == 0 ){
  456. me.cowsheList = []
  457. } else {
  458. me.cowsheList = e.data.list
  459. }
  460. })
  461. ajaxDataGet('/api/v1/ops/base_setting/forage/list?page=1&page_size=1000', { }).then(e => {
  462. console.log("饲料下拉框1:",e)
  463. //打印请求成功结果
  464. if(e.data.list == null || e.data.list == undefined ||e.data.list.length == 0 ){
  465. me.forageList = []
  466. } else {
  467. me.forageList = e.data.list
  468. }
  469. })
  470. // 班次数量下拉框
  471. ajaxDataGet('/api/v1/ops/calf_feed/enum/list').then(e => {
  472. console.log(e)
  473. if(e.code === 200){
  474. var class_num = e.data.class_list.length
  475. } else {
  476. var class_num = 4
  477. }
  478. console.log("class_num========",class_num)
  479. me.class_num = class_num
  480. })
  481. },
  482. //获取 表格
  483. get_table_data() {
  484. var me = this
  485. me.tableLoading = true
  486. console.log("searchData======>", me.searchData)
  487. if( me.searchData.calf_category_id == ""){
  488. me.searchData.calf_category_id = undefined
  489. }
  490. var send_url = me.url_get_table + '?page=' + me.searchData.page + '&page_size=' + me.searchData.page_size
  491. ajaxDataPost(send_url, me.searchData).then(e => {
  492. console.log("表格请求结果:",e)
  493. //打印请求成功结果
  494. if(e.code == 200 ){
  495. me.tableList = e.data.list
  496. me.searchData.total = e.data.total; // 总数
  497. me.searchData.page = e.data.page; //页码
  498. me.searchData.page_size = e.data.page_size; //每页数量
  499. } else {
  500. me.$message({ type: 'error', message: '请求表格列表失败!' + e.msg, duration: 2000 })
  501. }
  502. setTimeout(() => {
  503. me.tableLoading = false
  504. }, 100)
  505. })
  506. },
  507. //搜索 查询表格
  508. form_search(){
  509. var me = this
  510. console.log('请求表格列表searchData',me.searchData)
  511. me.get_table_data()
  512. },
  513. //重置 表格
  514. form_clear(){
  515. var me = this
  516. me.searchData.calf_code = ""
  517. me.searchData.barn_name = ""
  518. me.searchData.mother_code = ""
  519. me.searchData.calf_category_id = undefined
  520. me.searchData.genders = undefined
  521. me.searchData.status = undefined
  522. me.searchData.min_daily_weight_gain = undefined
  523. me.searchData.max_daily_weight_gain = undefined
  524. me.searchData.min_daily_age = undefined
  525. me.searchData.max_daily_age = undefined
  526. me.get_table_data()
  527. },
  528. //监听 page_size 改变的事件
  529. change_size_page(item){
  530. console.log(item)
  531. // this.searchData.page_size = item
  532. // this.getUserList()
  533. },
  534. //监听 page 改变的事件
  535. change_current_page(item){
  536. console.log(item)
  537. this.searchData.page = item
  538. this.get_table_data()
  539. },
  540. //清空弹窗表单信息
  541. reset_form(){
  542. this.addForm.name = ''
  543. this.addForm.id = undefined
  544. this.addForm.calf_category_id = undefined
  545. this.addForm.male_calf_daily_weight = undefined
  546. this.addForm.female_calf_daily_weight = undefined
  547. this.addForm.number = ''
  548. this.tableListStep = []
  549. },
  550. //新增
  551. form_add() {
  552. this.reset_form()
  553. this.addFormStatus = 'create'
  554. this.addFormShow = true
  555. this.$nextTick(() => {
  556. this.$refs['addFormRef'].clearValidate()
  557. })
  558. },
  559. //编辑
  560. form_edit(row) {
  561. this.reset_form()
  562. var me = this
  563. console.log('行内容row=========', row)
  564. //编辑行内容赋值
  565. this.addForm = Object.assign({}, row)
  566. if(row.genders == 0){
  567. this.addForm.genders = undefined
  568. }
  569. me.tableListStep = row.formula_stage
  570. this.addFormStatus = 'edit'
  571. this.addFormShow = true
  572. this.$nextTick(() => {
  573. this.$refs['addFormRef'].clearValidate()
  574. })
  575. },
  576. //新增关闭
  577. add_dialog_close(){
  578. //内容重置
  579. this.$refs['addFormRef'].resetFields()
  580. },
  581. //新增 保存
  582. add_dialog_save() {
  583. var me = this
  584. this.$refs['addFormRef'].validate(valid => {
  585. //验证成功
  586. if (valid) {
  587. //发起请求
  588. var send_data = {
  589. "name": me.addForm.name,
  590. "calf_category_id": me.addForm.calf_category_id,
  591. "calf_category_name":'11',
  592. "male_calf_daily_weight": parseFloat(me.addForm.male_calf_daily_weight),
  593. "female_calf_daily_weight": parseFloat(me.addForm.female_calf_daily_weight),
  594. "formula_stage": me.tableListStep
  595. }
  596. console.log("弹窗参数:", send_data)
  597. //关闭弹窗
  598. // me.addFormShow = false
  599. //加载 - 发送新增保存
  600. ajaxDataPost(me.url_add_table, send_data).then(e => {
  601. console.log("新增结果:",e)
  602. //打印请求成功结果
  603. if(e.code == 200 ){
  604. me.$message({ type: 'success', message: '新增成功!' , duration: 2000 })
  605. //关闭弹窗
  606. me.addFormShow = false
  607. me.get_table_data()
  608. } else {
  609. me.$message({ type: 'error', message: '新增失败!' + e.msg, duration: 2000 })
  610. }
  611. })
  612. }
  613. })
  614. },
  615. //编辑 保存
  616. edit_dialog_save(){
  617. var me = this
  618. this.$refs['addFormRef'].validate(valid => {
  619. //验证成功
  620. if (valid) {
  621. //发起请求
  622. var send_data = {
  623. "id": me.addForm.id,
  624. "name": me.addForm.name,
  625. "calf_category_id": me.addForm.calf_category_id,
  626. "calf_category_name":'11',
  627. "male_calf_daily_weight": parseFloat(me.addForm.male_calf_daily_weight),
  628. "female_calf_daily_weight": parseFloat(me.addForm.female_calf_daily_weight),
  629. "formula_stage": me.tableListStep
  630. }
  631. // var name = this.barnGroupList.find(obj => obj.id == me.addForm.barn_group_id).name
  632. // console.log(name)
  633. // 编辑保存
  634. console.log("弹窗参数:", send_data)
  635. //关闭弹窗
  636. // me.addFormShow = false
  637. //加载 - 发送新增保存
  638. ajaxDataPut(me.url_edit_table, send_data).then(e => {
  639. console.log("编辑结果:",e)
  640. //打印请求成功结果
  641. if(e.code == 200 ){
  642. me.$message({ type: 'success', message: '编辑成功!' , duration: 2000 })
  643. //关闭弹窗
  644. me.addFormShow = false
  645. me.get_table_data()
  646. } else {
  647. me.$message({ type: 'error', message: '编辑失败!' + e.msg, duration: 2000 })
  648. }
  649. })
  650. }
  651. })
  652. },
  653. form_delete(row) {
  654. var me = this
  655. me.$confirm('是否删除此条内容?', '提示', {
  656. confirmButtonText: '确定',
  657. cancelButtonText: '取消',
  658. type: 'warning'
  659. }).then(() => {
  660. console.log("删除的ID参数:", row.id)
  661. //加载 - 发送新增保存
  662. ajaxDataDelete(me.url_delete_table + '/' +row.id, {}).then(e => {
  663. console.log("编辑结果:",e)
  664. //打印请求成功结果
  665. if(e.code == 200 ){
  666. me.$message({ type: 'success', message: '删除成功!' });
  667. me.get_table_data()
  668. } else {
  669. me.$message({ type: 'error', message: '删除失败!' + e.msg, duration: 2000 })
  670. }
  671. })
  672. }).catch(() => {
  673. me.$message({
  674. type: 'info',
  675. message: '已取消删除'
  676. });
  677. });
  678. },
  679. //清空弹窗表单信息
  680. reset_step(){
  681. this.addFormStep.name = ''
  682. this.addFormStep.start_daily_age = undefined
  683. this.addFormStep.end_daily_age = undefined
  684. this.addFormStep.forage_id = undefined
  685. this.addFormStep.forage_name=""
  686. this.addFormStep.daily_feed_number = undefined
  687. this.addFormStep.first_class_ratio = undefined
  688. this.addFormStep.second_class_ratio = undefined
  689. this.addFormStep.third_class_ratio = undefined
  690. this.addFormStep.fourth_class_ratio = undefined
  691. this.addFormStep.allow_class_error = undefined
  692. this.addFormStep.feed_temp = undefined
  693. this.addFormStep.allow_temp_error = undefined
  694. },
  695. //新增
  696. add_step() {
  697. this.reset_step()
  698. this.addFormStatusStep = 'create'
  699. this.addFormStep.id = this.tableListStep.length + 1
  700. this.addFormShowStep = true
  701. this.$nextTick(() => {
  702. this.$refs['addFormRefStep'].clearValidate()
  703. })
  704. },
  705. feed_proganmme() {
  706. this.feedFormShow = true
  707. this.$nextTick(() => {
  708. this.$refs['addFormRefStep'].clearValidate()
  709. })
  710. },
  711. //编辑
  712. edit_step(index, row) {
  713. this.stepIndex = index
  714. console.log('行内容row=========', row)
  715. //编辑行内容赋值
  716. this.addFormStep = Object.assign({}, row)
  717. if(row.forage_id == 0){
  718. this.addFormStep.forage_id = undefined
  719. }
  720. this.addFormStatusStep = 'edit'
  721. this.addFormShowStep = true
  722. this.$nextTick(() => {
  723. this.$refs['addFormRefStep'].clearValidate()
  724. })
  725. },
  726. //新增关闭
  727. add_step_close(){
  728. //内容重置
  729. this.$refs['addFormRefStep'].resetFields()
  730. this.reset_step()
  731. this.addFormShowStep = false
  732. },
  733. //新增 保存
  734. add_step_save() {
  735. var me = this
  736. this.$refs['addFormRefStep'].validate(valid => {
  737. //验证成功
  738. if (valid) {
  739. //发起请求
  740. var forage_name = me.forageList.find(obj => obj.id == me.addFormStep.forage_id).name
  741. var send_data = {
  742. "id": me.addFormStep.id,
  743. "name": me.addFormStep.name,
  744. "start_daily_age":me.addFormStep.start_daily_age,
  745. "end_daily_age":me.addFormStep.end_daily_age,
  746. "forage_id": me.addFormStep.forage_id,
  747. "forage_name": forage_name ,
  748. "daily_feed_number":me.addFormStep.daily_feed_number,
  749. "first_class_ratio": me.addFormStep.first_class_ratio,
  750. "second_class_ratio":me.addFormStep.second_class_ratio,
  751. "third_class_ratio": me.addFormStep.third_class_ratio,
  752. "fourth_class_ratio": me.addFormStep.fourth_class_ratio,
  753. "allow_class_error": me.addFormStep.allow_class_error,
  754. "feed_temp": me.addFormStep.feed_temp,
  755. "allow_temp_error": me.addFormStep.allow_temp_error,
  756. }
  757. console.log("弹窗参数:", send_data)
  758. //关闭弹窗
  759. me.addFormShowStep = false
  760. me.tableListStep.push(send_data)
  761. }
  762. })
  763. },
  764. //编辑 保存
  765. edit_step_save(){
  766. var me = this
  767. this.$refs['addFormRefStep'].validate(valid => {
  768. //验证成功
  769. if (valid) {
  770. var forage_name = me.forageList.find(obj => obj.id == me.addFormStep.forage_id).name
  771. //发起请求
  772. var send_data = {
  773. "id": me.addFormStep.id,
  774. "name": me.addFormStep.name,
  775. "start_daily_age":me.addFormStep.start_daily_age,
  776. "end_daily_age":me.addFormStep.end_daily_age,
  777. "forage_id": me.addFormStep.forage_id,
  778. "forage_name": forage_name ,
  779. "daily_feed_number":me.addFormStep.daily_feed_number,
  780. "first_class_ratio": me.addFormStep.first_class_ratio,
  781. "second_class_ratio":me.addFormStep.second_class_ratio,
  782. "third_class_ratio": me.addFormStep.third_class_ratio,
  783. "fourth_class_ratio": me.addFormStep.fourth_class_ratio,
  784. "allow_class_error": me.addFormStep.allow_class_error,
  785. "feed_temp": me.addFormStep.feed_temp,
  786. "allow_temp_error": me.addFormStep.allow_temp_error,
  787. }
  788. // 编辑保存
  789. console.log("弹窗参数:", send_data)
  790. me.addFormShowStep = false
  791. var stepIndex = me.stepIndex
  792. this.$set(me.tableListStep, stepIndex, send_data)
  793. console.log('me.tableListStep============',me.tableListStep)
  794. }
  795. })
  796. },
  797. delete_step(index, row) {
  798. var me = this
  799. me.$confirm('是否删除此条内容?', '提示', {
  800. confirmButtonText: '确定',
  801. cancelButtonText: '取消',
  802. type: 'warning'
  803. }).then(() => {
  804. console.log('点击了 - 删除一个阶段index===',index,'row===',row)
  805. me.tableListStep.splice(index, 1)
  806. //加载 - 发送新增保存
  807. // ajaxDataDelete(me.url_delete_table + '/' +row.id, {}).then(e => {
  808. // console.log("编辑结果:",e)
  809. // //打印请求成功结果
  810. // if(e.code == 200 ){
  811. // me.$message({ type: 'success', message: '删除成功!' });
  812. // me.get_table_data()
  813. // } else {
  814. // me.$message({ type: 'error', message: '删除失败!' + e.msg, duration: 2000 })
  815. // }
  816. // })
  817. }).catch(() => {
  818. me.$message({
  819. type: 'info',
  820. message: '已取消删除'
  821. });
  822. });
  823. },
  824. form_export() {
  825. //获取请求表格数据的参数
  826. //this.download.getdataListParm.parammaps = this.tableObj.getdataListParm.parammaps
  827. //请求表格
  828. // GetDataByName(this.download.getdataListParm).then(response => {
  829. // if (response.data.list !== null) {
  830. // this.download.list = response.data.list
  831. // } else {
  832. // this.download.list = []
  833. // }
  834. // var excelDatas = [
  835. // {
  836. // tHeader: ['表头1', '表头2', '表头3', '表头4',],
  837. // filterVal: ['title1', 'title2', 'title3', 'title4'],
  838. // tableDatas: this.download.list,
  839. // sheetName: 'Sheet1'
  840. // }
  841. // ]
  842. // json2excel(excelDatas, '表格大标题', true, 'xlsx')
  843. // })
  844. var excelDatas = [
  845. {
  846. tHeader: ['表头1', '表头2', '表头3', '表头4',],
  847. filterVal: ['title1', 'title2', 'title3', 'title4'],
  848. tableDatas: [
  849. {title1: "内容1",title2: "内容2",title3: "内容3",title4: "内容4"},
  850. {title1: "内容11",title2: "内容22",title3: "内容32",title4: "内容44"},
  851. {title1: "内容111",title2: "内容222",title3: "内容333",title4: "内容444"},
  852. ],
  853. sheetName: 'Sheet1'
  854. }
  855. ]
  856. json2excel(excelDatas, '表格大标题', true, 'xlsx')
  857. }
  858. }
  859. }
  860. </script>
  861. <!-- 加了scoped,则是仅在此组件里生效 -->
  862. <style scoped>
  863. </style>