plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300 lines
8.7 KiB

1 year ago
  1. <script>
  2. import {queryLaborClass, updateLaborClass} from "../../../api/base/laborClass";
  3. export default {
  4. name: "laborClass",
  5. props:{
  6. height:{
  7. type: [Number,String],
  8. default: '78vh'
  9. }
  10. },
  11. data(){
  12. return{
  13. dataList:[],
  14. queryLoading:false,
  15. laborClass:{
  16. },
  17. queryParams:{
  18. levelId:'',
  19. levelDesc:'',
  20. active:'',
  21. },
  22. no:1,
  23. size:50,
  24. total:0,
  25. saveLoading:false,
  26. saveVisible:false,
  27. rules:{
  28. currentLevelCost:[{required: true,message: '人工等级成本不能为空',trigger: ['change','blur']}]
  29. },
  30. columns:[
  31. {
  32. userId: this.$store.state.user.name,
  33. functionId: 100001010,
  34. serialNumber: '100001010Table1LevelId',
  35. tableId: '100001010Table1',
  36. tableName: '人员等级信息表',
  37. columnProp: 'levelId',
  38. headerAlign: 'center',
  39. align: 'left',
  40. columnLabel: '人员等级编码',
  41. columnHidden: false,
  42. columnImage: false,
  43. columnSortable: false,
  44. sortLv: 0,
  45. status: true,
  46. fixed: '',
  47. columnWidth: 140
  48. },
  49. {
  50. userId: this.$store.state.user.name,
  51. functionId: 100001010,
  52. serialNumber: '100001010Table1LevelDesc',
  53. tableId: '100001010Table1',
  54. tableName: '人员等级信息表',
  55. columnProp: 'levelDesc',
  56. headerAlign: 'center',
  57. align: 'left',
  58. columnLabel: '人员等级描述',
  59. columnHidden: false,
  60. columnImage: false,
  61. columnSortable: false,
  62. sortLv: 0,
  63. status: true,
  64. fixed: '',
  65. columnWidth: 180
  66. },
  67. {
  68. userId: this.$store.state.user.name,
  69. functionId: 100001010,
  70. serialNumber: '100001010Table1CurrentLevelCost',
  71. tableId: '100001010Table1',
  72. tableName: '人员等级信息表',
  73. columnProp: 'currentLevelCost',
  74. headerAlign: 'center',
  75. align: 'right',
  76. columnLabel: '人员等级成本',
  77. columnHidden: false,
  78. columnImage: false,
  79. columnSortable: false,
  80. sortLv: 0,
  81. status: true,
  82. fixed: '',
  83. columnWidth: 100
  84. },
  85. {
  86. userId: this.$store.state.user.name,
  87. functionId: 100001010,
  88. serialNumber: '100001010Table1Active',
  89. tableId: '100001010Table1',
  90. tableName: '人员等级信息表',
  91. columnProp: 'active',
  92. headerAlign: 'center',
  93. align: 'center',
  94. columnLabel: '是否在用',
  95. columnHidden: false,
  96. columnImage: false,
  97. columnSortable: false,
  98. sortLv: 0,
  99. status: true,
  100. fixed: '',
  101. columnWidth: 80
  102. },
  103. ],
  104. }
  105. },
  106. methods:{
  107. handleQuery(){
  108. let params = {
  109. ...this.queryParams,
  110. site:this.$store.state.user.site,
  111. no:this.no,
  112. size:this.size
  113. }
  114. this.queryLoading = true;
  115. queryLaborClass(params).then(({data})=>{
  116. if (data && data.code === 0){
  117. this.dataList = data.rows;
  118. this.total = data.total;
  119. }else {
  120. this.$message.error(data.msg)
  121. }
  122. this.queryLoading = false;
  123. }).catch(err=>{
  124. this.$message.error(err);
  125. this.queryLoading = false;
  126. })
  127. },
  128. handleUpdate(row){
  129. this.laborClass = {
  130. ...row
  131. }
  132. this.saveVisible = true;
  133. },
  134. handleSizeChange(val){
  135. this.size = val;
  136. this.handleQuery();
  137. },
  138. handlePageChange(val){
  139. this.no = val;
  140. this.handleQuery();
  141. },
  142. handleUpdateLaborClass(){
  143. this.$refs.saveForm.validate((valid,obj) => {
  144. if (valid){
  145. let params = {
  146. ...this.laborClass,
  147. }
  148. this.saveLoading = true;
  149. updateLaborClass(params).then(({data})=>{
  150. if (data && data.code === 0){
  151. this.saveVisible = false;
  152. this.$message.success(data.msg)
  153. this.handleQuery();
  154. }else {
  155. this.$message.warning(data.msg)
  156. }
  157. this.saveLoading = false;
  158. }).catch((error)=>{
  159. this.$message.error(error)
  160. this.saveLoading = false;
  161. })
  162. }else {
  163. let i = 1;
  164. for (let key in obj){
  165. this.$message.warning(obj[key][0].message)
  166. if (i === 1){
  167. return
  168. }
  169. i++;
  170. }
  171. }
  172. })
  173. }
  174. },
  175. watch:{
  176. queryLoading(newVal,oldVal){
  177. if (newVal){
  178. setTimeout(()=>{
  179. this.queryLoading = false;
  180. },5000)
  181. }
  182. },
  183. saveLoading(newVal,oldVal){
  184. if (newVal){
  185. setTimeout(()=>{
  186. this.saveLoading = false;
  187. },5000)
  188. }
  189. }
  190. },
  191. created() {
  192. this.handleQuery();
  193. }
  194. }
  195. </script>
  196. <template>
  197. <div>
  198. <el-form :model="queryParams" label-position="top" style="width: 1000px">
  199. <el-row :gutter="10">
  200. <el-col :span="4">
  201. <el-form-item label="人员等级编码">
  202. <el-input v-model="queryParams.levelId"></el-input>
  203. </el-form-item>
  204. </el-col>
  205. <el-col :span="4">
  206. <el-form-item label="人员等级描述">
  207. <el-input v-model="queryParams.levelDesc"></el-input>
  208. </el-form-item>
  209. </el-col>
  210. <el-col :span="3">
  211. <el-form-item label="是否在用">
  212. <el-select v-model="queryParams.active" style="width: 100%">
  213. <el-option label="全部" value=""></el-option>
  214. <el-option label="Y" value="Y"></el-option>
  215. <el-option label="N" value="N"></el-option>
  216. </el-select>
  217. </el-form-item>
  218. </el-col>
  219. <el-col :span="4">
  220. <el-form-item label=" ">
  221. <el-button type="primary" @click="handleQuery">查询</el-button>
  222. </el-form-item>
  223. </el-col>
  224. </el-row>
  225. </el-form>
  226. <el-table :data="dataList" v-loading="queryLoading" border :height="height">
  227. <el-table-column
  228. v-for="(item,index) in columns" :key="index"
  229. :sortable="item.columnSortable"
  230. :prop="item.columnProp"
  231. :header-align="item.headerAlign"
  232. :show-overflow-tooltip="item.showOverflowTooltip"
  233. :align="item.align"
  234. :fixed="item.fixed===''?false:item.fixed"
  235. :min-width="item.columnWidth"
  236. :label="item.columnLabel">
  237. <template slot-scope="scope">
  238. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  239. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  240. </template>
  241. </el-table-column>
  242. <el-table-column label="操作" align="center">
  243. <template slot-scope="{row,$index}">
  244. <a @click="handleUpdate(row)">编辑</a>
  245. </template>
  246. </el-table-column>
  247. </el-table>
  248. <el-pagination @size-change="handleSizeChange"
  249. @current-change="handlePageChange"
  250. :current-page="no"
  251. :page-sizes="[50, 100, 200, 500]"
  252. :page-size="size"
  253. :total="total"
  254. layout="total,sizes, prev, pager, next, jumper">
  255. </el-pagination>
  256. <el-dialog v-drag title="人员等级" :visible.sync="saveVisible" width="400px" :close-on-click-modal="false">
  257. <el-form :model="laborClass" ref="saveForm" label-position="top" :rules="rules">
  258. <el-row :gutter="10">
  259. <el-col :span="12">
  260. <el-form-item label="人员等级编码">
  261. <el-input v-model="laborClass.levelId" disabled></el-input>
  262. </el-form-item>
  263. </el-col>
  264. <el-col :span="12">
  265. <el-form-item label="人员等级描述">
  266. <el-input v-model="laborClass.levelDesc" disabled></el-input>
  267. </el-form-item>
  268. </el-col>
  269. <el-col :span="12">
  270. <el-form-item label="人员等级成本" prop="currentLevelCost" :show-message="false">
  271. <el-input-number v-model="laborClass.currentLevelCost" :min="0" :controls="false"></el-input-number>
  272. </el-form-item>
  273. </el-col>
  274. <el-col :span="12">
  275. <el-form-item label="是否在用">
  276. <el-select v-model="laborClass.active" style="width: 100%" disabled>
  277. <el-option label="Y" value="Y"></el-option>
  278. <el-option label="N" value="N"></el-option>
  279. </el-select>
  280. </el-form-item>
  281. </el-col>
  282. </el-row>
  283. </el-form>
  284. <div slot="footer" class="dialog-footer">
  285. <el-button type="primary" :loading="saveLoading" @click="handleUpdateLaborClass"> </el-button>
  286. <el-button @click="saveVisible = false"> </el-button>
  287. </div>
  288. </el-dialog>
  289. </div>
  290. </template>
  291. <style scoped>
  292. </style>