index.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <template>
  2. <el-container>
  3. <el-main>
  4. <el-card>
  5. <el-container>
  6. <el-header height="120">
  7. <el-form
  8. ref="searchForm"
  9. :model="dataQuery"
  10. :size="size"
  11. label-position="left"
  12. label-width="80px"
  13. >
  14. <el-row :gutter="20">
  15. <el-col :span="12">
  16. <el-form-item
  17. label="名称:"
  18. prop="name"
  19. class="notice-input"
  20. label-width="60px"
  21. >
  22. <el-input
  23. v-model="dataQuery.name"
  24. placeholder="请输入名称"
  25. clearable
  26. style="width: 60%"
  27. />
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="12" style="text-align: right">
  31. <el-form-item>
  32. <el-button type="primary" icon="el-icon-search" :size="size" @click="search">查询</el-button>
  33. <el-button icon="el-icon-refresh" :size="size" @click="resetFields">重置</el-button>
  34. <!-- -->
  35. </el-form-item>
  36. </el-col>
  37. </el-row>
  38. <el-row>
  39. <el-button
  40. type="primary"
  41. icon="el-icon-plus"
  42. :size="size"
  43. @click="create"
  44. >新建人员信息模板
  45. </el-button>
  46. <!--<el-button :size="size" @click="deleteBatch">回收站</el-button>-->
  47. </el-row>
  48. </el-form>
  49. </el-header>
  50. <el-main>
  51. <sheet
  52. ref="qtable"
  53. :api="this.$api.system.FindUserTemplatePage"
  54. :columns="tableColumns"
  55. :data-query="dataQuery"
  56. :operates="operates"
  57. :float-type="'right'"
  58. :select-type="'selection'"
  59. />
  60. </el-main>
  61. </el-container>
  62. </el-card>
  63. </el-main>
  64. <el-dialog
  65. :title="dialogStatus==='create'?'新建用户':'编辑用户'"
  66. :visible.sync="dialogVisible"
  67. width="40%"
  68. @close="Emptydata"
  69. >
  70. <el-form
  71. ref="temp"
  72. :size="size"
  73. :rules="rules"
  74. :model="temp"
  75. label-width="85px"
  76. >
  77. <el-form-item label="模板名称:" prop="name">
  78. <el-input v-model="temp.name" placeholder="请输入名称" />
  79. </el-form-item>
  80. <el-form-item label="模板类型:" prop="type">
  81. <el-select v-model.number="temp.type" style="width: 100%" placeholder="请选择角色">
  82. <el-option
  83. v-for="item in options"
  84. :key="item.id"
  85. :label="item.name"
  86. :value="item.id"
  87. />
  88. </el-select>
  89. </el-form-item>
  90. <el-form-item label="是否默认:" prop="type">
  91. <option-set
  92. :value.sync="temp.default"
  93. placeholder="是否默认"
  94. code="defalut"
  95. />
  96. <!--<el-select v-model="temp.default" style="width: 100%" placeholder="是否默认">-->
  97. <!--<el-option-->
  98. <!--v-for="item in defaultOpts"-->
  99. <!--:key="item.value"-->
  100. <!--:label="item.name"-->
  101. <!--:value="item.value"-->
  102. <!--/>-->
  103. <!--</el-select>-->
  104. </el-form-item>
  105. </el-form>
  106. <footer slot="footer" class="dialog-footer">
  107. <el-button :size="size" @click="dialogVisible = false">取 消</el-button>
  108. <el-button :size="size" type="primary" @click="dialogStatus==='create'?createData():updateData()">确 定
  109. </el-button>
  110. </footer>
  111. </el-dialog>
  112. </el-container>
  113. </template>
  114. <script>
  115. import { mapGetters } from 'vuex'
  116. import Sheet from '@/components/Sheet'
  117. import OptionSet from '@/components/OptionSet'
  118. export default {
  119. name: 'User',
  120. components: {
  121. OptionSet,
  122. Sheet
  123. },
  124. data() {
  125. return {
  126. defaultOpts: [
  127. { name: '否', value: 0 },
  128. { name: '是', value: 1 }
  129. ],
  130. tableColumns: [
  131. { prop: 'name', label: '模板名称', align: 'center', minWidth: 150, maxWidth: 180 },
  132. { prop: 'default', label: '是否默认', align: 'center', minWidth: 150, maxWidth: 180, formatter: 'defalut' }
  133. ],
  134. operates: {
  135. list: [
  136. { label: '明细', show: true, type: 'text', method: (row) => { this.detail(row) } },
  137. { label: '编辑', show: true, type: 'text', method: (row) => { this.edit(row) } },
  138. { label: '删除', show: true, type: 'text', method: (row) => { this.deleteData(row) } }
  139. ],
  140. width: 230,
  141. fixed: 'right'
  142. },
  143. dataQuery: {
  144. page: 1,
  145. size: 10,
  146. name: ''
  147. },
  148. options: [
  149. {
  150. name: '固定模块',
  151. id: 0
  152. },
  153. {
  154. name: '自定义模板',
  155. id: 2
  156. },
  157. {
  158. name: '动态模板',
  159. id: 1
  160. }
  161. ],
  162. rules: {
  163. name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
  164. // login_id: [{ required: true, message: '请输入账号', trigger: 'blur' }],
  165. type: [{ required: true, message: '请选择模板类型', trigger: 'change' }]
  166. },
  167. temp: {
  168. id: '',
  169. type: 0,
  170. name: '',
  171. default: 0
  172. },
  173. dataLoading: false,
  174. dialogStatus: '',
  175. dialogVisible: false
  176. }
  177. },
  178. computed: {
  179. // tempRoleChange: {
  180. // get: function() {
  181. // if (this.temp.user_role === '' || this.temp.user_role === undefined) {
  182. // return []
  183. // }
  184. // return this.temp.user_role.split(',')
  185. // },
  186. // set: function(newValue) {
  187. // this.temp.user_role = newValue.join(',')
  188. // }
  189. // },
  190. ...mapGetters([
  191. 'size',
  192. 'minMainHeight'
  193. ])
  194. },
  195. watch: {
  196. // user_role: function(newData, oldData) {
  197. // debugger
  198. // this.temp.user_role = newData
  199. // }
  200. },
  201. created() {
  202. // this.getOrgs()
  203. // this.getRoles()
  204. },
  205. methods: {
  206. detail(row) {
  207. this.$router.push({ path: 'templ_detail?temp_id=' + row.id + '&temp_name=' + row.name })
  208. },
  209. // 新建数据
  210. createData() {
  211. this.$refs['temp'].validate((valid) => {
  212. if (valid) {
  213. // var data = JSON.stringify(this.temp)
  214. // this.temp.type = toString(this.temp.type)
  215. debugger
  216. this.$api.system.AddUserTemplate(this.temp).then(res => {
  217. this.dialogVisible = false
  218. if (res.code === 200) {
  219. this.$message({
  220. message: '创建成功',
  221. type: 'success'
  222. })
  223. this.$refs.qtable.getData()
  224. } else {
  225. this.$message({
  226. message: '创建失败',
  227. type: 'error'
  228. })
  229. }
  230. })
  231. }
  232. })
  233. },
  234. Emptydata() {
  235. this.$refs['temp'].resetFields()
  236. },
  237. // 更新数据
  238. updateData() {
  239. this.$refs['temp'].validate((valid) => {
  240. if (valid) {
  241. // this.temp.type = parseInt(this.temp.type)
  242. this.$api.system.UpdateUserTemplate(this.temp).then(res => {
  243. if (res.code === 200) {
  244. this.dialogVisible = false
  245. this.$message({
  246. message: '修改成功',
  247. type: 'success'
  248. })
  249. this.$refs.qtable.getData()
  250. } else {
  251. this.dialogVisible = false
  252. this.$message({
  253. message: '修改失败',
  254. type: 'error'
  255. })
  256. }
  257. })
  258. }
  259. })
  260. },
  261. // 删除数据
  262. deleteData(row) {
  263. this.$confirm('确认删除这个用户吗?', '提示', {
  264. type: 'warning'
  265. }).then(() => {
  266. // const data = [row.id]
  267. this.$api.system.DelUserTemplate([{ id: row.id }]).then(res => {
  268. if (res.code === 200) {
  269. this.$refs.qtable.getData()
  270. this.$message({
  271. message: '删除成功',
  272. type: 'success'
  273. })
  274. } else {
  275. this.$message({
  276. message: '删除失败',
  277. type: 'error'
  278. })
  279. }
  280. })
  281. }).catch(() => {
  282. })
  283. },
  284. // 批量删除
  285. deleteBatch() {
  286. const ids = []
  287. this.$refs.qtable.multipleSelection.forEach(row => {
  288. ids.push({ id: row.id })
  289. })
  290. this.$confirm('确认批量删除选中数据吗?', '提示', {
  291. type: 'warning'
  292. }).then(() => {
  293. this.$api.user.del(ids).then(res => {
  294. if (res.code === 200) {
  295. this.$refs.qtable.getData()
  296. this.$message({
  297. message: '删除成功',
  298. type: 'success'
  299. })
  300. } else {
  301. this.$message({
  302. message: '删除失败',
  303. type: 'error'
  304. })
  305. }
  306. })
  307. }).catch(() => {
  308. })
  309. },
  310. // 查询
  311. search() {
  312. this.$refs.qtable.getData()
  313. },
  314. // 重置
  315. resetFields() {
  316. this.$refs['searchForm'].resetFields()
  317. this.$refs.qtable.getData()
  318. },
  319. // 弹出框关闭触发
  320. dialogClose() {
  321. this.$refs['dataForm'].resetFields()
  322. },
  323. // 点击新建按钮
  324. create() {
  325. this.dialogStatus = 'create'
  326. this.dialogVisible = true
  327. this.$nextTick(() => {
  328. this.$refs['temp'].clearValidate()
  329. })
  330. },
  331. // 点击修改按钮
  332. edit(row) {
  333. this.dialogStatus = 'update'
  334. this.dialogVisible = true
  335. this.$nextTick(() => {
  336. this.$refs['temp'].clearValidate()
  337. // this.temp.create_time = ''
  338. // copyObject(row, this.temp)
  339. this.temp = Object.assign({}, row)
  340. })
  341. }
  342. }
  343. }
  344. </script>
  345. <style scoped lang="scss">
  346. </style>