Index.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <template>
  2. <!--布局容器-->
  3. <div class="container" style="width: 99%; margin-top: 0px">
  4. <templateTable
  5. :formList="formList"
  6. :searchData.sync="searchData"
  7. :tableConfig="tableConfig"
  8. :data="tableData"
  9. @getList="getList"
  10. :btnGroup="btnGroup"
  11. @handleSearchList="handleSearchList"
  12. :pagination="queryFrom"
  13. >
  14. <!-- <template slot="operate" slot-scope="scope">
  15. <el-button
  16. size="mini"
  17. type="primary"
  18. @click="modifyFun(scope.row)"
  19. >修改</el-button>
  20. <el-button size="mini" type="primary" @click="deleteFun(scope.row)">删除</el-button>
  21. </template> -->
  22. </templateTable>
  23. <el-dialog
  24. v-dialogDrag
  25. :title="dialogTitle"
  26. :visible.sync="dialogVisible"
  27. width="1200px"
  28. @close="closeVisible"
  29. >
  30. <div>
  31. <el-form :model="formData" label-width="180px" :rules="rules" ref="formData" :disabled="disabled">
  32. <el-row>
  33. <el-col :span="8">
  34. <el-form-item label="岗位名称:" prop="postName">
  35. <el-input clearable size="small" placeholder="请输入岗位名称" v-model="formData.postName"></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="8">
  39. <el-form-item label="岗位编码:" prop="postCode">
  40. <el-input clearable size="small" placeholder="请输入岗位编码" v-model="formData.postCode"></el-input>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="8">
  44. <el-form-item label="显示顺序:" prop="postSort">
  45. <el-input-number size="small" v-model="formData.postSort" :min="1" :max="9999" ></el-input-number>
  46. </el-form-item>
  47. </el-col>
  48. <el-col :span="8">
  49. <el-form-item label="状态" prop="status">
  50. <el-select v-model="formData.status" placeholder="请选择状态" size="small" >
  51. <el-option
  52. v-for="item in [{value: '0',
  53. label: '正常'},
  54. {value: '1',
  55. label: '停用'}]"
  56. :key="item.value"
  57. :label="item.label"
  58. :value="item.value">
  59. </el-option>
  60. </el-select>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="8">
  64. <el-form-item label="备注:" prop="remark">
  65. <el-input clearable size="small" placeholder="请输入备注" v-model="formData.remark"></el-input>
  66. </el-form-item>
  67. </el-col>
  68. </el-row>
  69. </el-form>
  70. </div>
  71. <span slot="footer" class="dialog-footer">
  72. <el-button size="small" @click="dialogVisible = false">取 消</el-button>
  73. <el-button size="small" type="primary" @click="comfirmDialog">确 定</el-button>
  74. </span>
  75. </el-dialog>
  76. </div>
  77. </template>
  78. <script>
  79. import templateTable from "../../../components/TemplateTable/index.vue";
  80. export default {
  81. name: "post",
  82. components: { templateTable },
  83. data() {
  84. return {
  85. formList: [
  86. {
  87. label: "岗位名称",
  88. prop: "postName",
  89. type: "input",
  90. },
  91. {
  92. label: "状态",
  93. prop: "status",
  94. type: "select",
  95. options: [
  96. {
  97. value: "1",
  98. label: "停用"
  99. },
  100. {
  101. value: "0",
  102. label: "正常"
  103. }
  104. ]
  105. }
  106. ],
  107. btnGroup:[
  108. {
  109. name:'新增',
  110. click:() => {return this.add()},
  111. }
  112. ],
  113. searchData: {},
  114. tableConfig: {
  115. columns: [
  116. {
  117. prop: "postCode",
  118. label: "岗位编码",
  119. type: "text"
  120. },
  121. {
  122. prop: "postName",
  123. label: "岗位名称",
  124. type: "text"
  125. },
  126. {
  127. prop: "status",
  128. label: "状态",
  129. type: "text"
  130. },
  131. {
  132. prop: "postSort",
  133. label: "显示顺序",
  134. type: "text"
  135. },
  136. {
  137. prop: "remark",
  138. label: "备注",
  139. type: "text"
  140. },
  141. {
  142. prop: "createBy",
  143. label: "创建者",
  144. type: "text"
  145. },
  146. {
  147. prop: "createTime",
  148. label: "创建日期",
  149. type: "text"
  150. },
  151. {
  152. prop: "updateBy",
  153. label: "更新者",
  154. type: "text"
  155. },
  156. {
  157. prop: "updateTime",
  158. label: "更新日期",
  159. type: "text"
  160. },
  161. ],
  162. loading: true,
  163. isPaginationShow: true,
  164. // operationWidth:'200',
  165. optBtns:[
  166. {
  167. type:'text',
  168. label:'查看',
  169. click:(row, index) => {return this.detailFun(row)},
  170. },
  171. {
  172. type:'text',
  173. label:'修改',
  174. click:(row, index) => {return this.modifyFun(row)},
  175. },
  176. {
  177. type:'text',
  178. label:'删除',
  179. click:(row, index) => {return this.deleteFun(row)},
  180. },
  181. ]
  182. },
  183. queryFrom: {
  184. pageNum: 1,
  185. pageSize: 10,
  186. totalSize: 0
  187. },
  188. tableData: [],
  189. loading: false,
  190. formData: {},
  191. dialogTitle:'新增',
  192. dialogVisible: false,
  193. rules: {
  194. postName: [
  195. { required: true, message: '请输入岗位名称', trigger: 'blur' }
  196. ],
  197. postCode: [
  198. { required: true, message: '请输入岗位编码', trigger: 'blur' }
  199. ],
  200. status: [
  201. { required: true, message: '请选择状态', trigger: 'blur' }
  202. ],
  203. postSort: [
  204. { required: true, message: '请输入显示顺序', trigger: 'blur' }
  205. ],
  206. remark: [
  207. { required: true, message: '请输入备注', trigger: 'blur' }
  208. ],
  209. },
  210. disabled:false
  211. };
  212. },
  213. created() {
  214. this.getList();
  215. },
  216. methods: {
  217. // 查询
  218. handleSearchList(data) {
  219. this.getList(data);
  220. },
  221. //列表数据
  222. getList(data) {
  223. this.tableConfig.loading = true;
  224. this.$api.role
  225. .postPage({ ...data, ...this.queryFrom })
  226. .then(res => {
  227. if (res.data) {
  228. res.data.content.forEach(element => {
  229. element.status= element.status =='1'?'停用':'正常'
  230. });
  231. this.tableData = res.data.content;
  232. this.queryFrom.pageNum = res.data.pageNum;
  233. this.queryFrom.pageSize = res.data.pageSize;
  234. this.queryFrom.totalSize = res.data.totalSize;
  235. this.tableConfig.loading = false;
  236. } else {
  237. this.tableConfig.loading = false;
  238. }
  239. });
  240. },
  241. // 删除
  242. deleteFun(row) {
  243. this.$confirm("是否确认删除?")
  244. .then(() => {
  245. this.$api.role.postDelete(row.postId).then(res => {
  246. if (res.code == 200) {
  247. this.$message({
  248. message: "删除成功",
  249. type: "success"
  250. });
  251. this.getList();
  252. }
  253. else{
  254. this.$message.error(res.msg)
  255. }
  256. });
  257. })
  258. .catch(() => {});
  259. },
  260. add(){
  261. this.dialogTitle='新增'
  262. this.dialogVisible=true
  263. this.disabled=false
  264. this.formData={}
  265. },
  266. detailFun(row){
  267. this.dialogTitle='查看'
  268. this.disabled=true
  269. this.viewFun(row)
  270. },
  271. viewFun(row){
  272. this.dialogVisible=true
  273. this.$api.role.postView(row.postId).then(res=>{
  274. if (res.code == 200) {
  275. this.formData=res.data
  276. }
  277. else{
  278. this.$message.error(res.msg)
  279. }
  280. })
  281. },
  282. // 保存页面
  283. comfirmDialog() {
  284. this.$refs.formData.validate((valid) => {
  285. if (valid) {
  286. if(this.dialogTitle=='新增'){
  287. this.$api.role.postAdd(this.formData).then(res=>{
  288. if (res.code == 200) {
  289. this.$message({
  290. message: this.dialogTitle+'成功',
  291. type: "success"
  292. });
  293. this.dialogVisible = false;
  294. this.getList();
  295. }
  296. else{
  297. this.$message.error(res.msg)
  298. }
  299. })
  300. }
  301. else{
  302. let id=this.formData.postId
  303. this.$api.role.postUpdata(id,this.formData).then(res=>{
  304. if (res.code == 200) {
  305. this.$message({
  306. message: this.dialogTitle+'成功',
  307. type: "success"
  308. });
  309. this.dialogVisible = false;
  310. this.getList();
  311. }
  312. else{
  313. this.$message.error(res.msg)
  314. }
  315. })
  316. }
  317. } else {
  318. return false;
  319. }
  320. });
  321. },
  322. // 修改页面
  323. modifyFun(row) {
  324. this.dialogTitle='修改'
  325. this.disabled=false
  326. this.viewFun(row)
  327. },
  328. closeVisible() {
  329. this.dialogVisible = false;
  330. },
  331. tablePageChange(val) {
  332. this.queryFrom.pageSize = val;
  333. this.getList();
  334. },
  335. tableCurrentChange(val) {
  336. this.queryFrom.pageNum = val;
  337. this.getList();
  338. }
  339. }
  340. };
  341. </script>
  342. <style scoped>
  343. </style>