branchSetting.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <template>
  2. <div class='m-container'>
  3. <h2>
  4. <div class="squrt"></div>分部设置
  5. </h2>
  6. <div class="m-core">
  7. <div @click="onBranchOperation('create')"
  8. class='newBand'>添加</div>
  9. <!-- 列表 -->
  10. <div class="tableWrap">
  11. <el-table :data='tableList'
  12. :header-cell-style="{background:'#EDEEF0',color:'#444'}">
  13. <el-table-column align='center'
  14. prop="name"
  15. label="分部名称">
  16. </el-table-column>
  17. <el-table-column align='center'
  18. prop="areaName"
  19. label="城市">
  20. </el-table-column>
  21. <el-table-column align='center'
  22. prop="address"
  23. label="分部地址">
  24. </el-table-column>
  25. <el-table-column align='center'
  26. label="成立时间">
  27. <template slot-scope="scope">
  28. {{ scope.row.registerDate | formatTimer }}
  29. </template>
  30. </el-table-column>
  31. <el-table-column align='center'
  32. label="操作">
  33. <template slot-scope="scope">
  34. <el-button @click="onBranchOperation('update', scope.row)"
  35. type="text">修改</el-button>
  36. </template>
  37. </el-table-column>
  38. </el-table>
  39. <pagination :total="pageInfo.total"
  40. :page.sync="pageInfo.page"
  41. :limit.sync="pageInfo.limit"
  42. :page-sizes="pageInfo.page_size"
  43. @pagination="getList" />
  44. </div>
  45. </div>
  46. <el-dialog :title="formTitle[formActionTitle]"
  47. :visible.sync="branchStatus"
  48. @close="onFormClose('ruleForm')"
  49. width="500px">
  50. <el-form :model="form"
  51. :rules="rules"
  52. ref="ruleForm">
  53. <el-form-item label="分部名称"
  54. prop="name"
  55. :label-width="formLabelWidth">
  56. <el-input v-model="form.name"
  57. autocomplete="off"></el-input>
  58. </el-form-item>
  59. <el-form-item label="城市"
  60. required
  61. :label-width="formLabelWidth">
  62. <el-col :span="12">
  63. <el-form-item prop="province">
  64. <el-select v-model="form.province"
  65. @change="onChangeProvince">
  66. <el-option v-for="item in provinceList"
  67. :key="item.value"
  68. :label="item.label"
  69. :value="item.value"></el-option>
  70. </el-select>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="12">
  74. <el-form-item prop="city">
  75. <el-select v-model="form.city">
  76. <el-option v-for="item in cityList"
  77. :key="item.value"
  78. :label="item.label"
  79. :value="item.value"></el-option>
  80. </el-select>
  81. </el-form-item>
  82. </el-col>
  83. </el-form-item>
  84. <el-form-item label="分部地址"
  85. prop="address"
  86. :label-width="formLabelWidth">
  87. <el-input v-model="form.address"
  88. autocomplete="off"></el-input>
  89. </el-form-item>
  90. <el-form-item label="成立时间"
  91. prop="registerDate"
  92. :label-width="formLabelWidth">
  93. <el-date-picker v-model="form.registerDate"
  94. type="date"
  95. value-format="yyyy-MM-dd"
  96. placeholder="选择日期"></el-date-picker>
  97. </el-form-item>
  98. </el-form>
  99. <span slot="footer"
  100. class="dialog-footer">
  101. <el-button @click="branchStatus = false">取 消</el-button>
  102. <el-button @click="onBranchSubmit('ruleForm')"
  103. type="primary">确 定</el-button>
  104. </span>
  105. </el-dialog>
  106. </div>
  107. </template>
  108. <script>
  109. import pagination from '@/components/Pagination/index'
  110. import { branchQueryPage, areaQueryChild, branchAdd, branchUpdate, getParentArea } from '@/api/specialSetting'
  111. import store from '@/store'
  112. export default {
  113. components: { pagination },
  114. name: 'adminManager',
  115. data () {
  116. return {
  117. tableList: [],
  118. pageInfo: {
  119. // 分页规则
  120. limit: 10, // 限制显示条数
  121. page: 1, // 当前页
  122. total: 0, // 总条数
  123. page_size: [10, 20, 40, 50] // 选择限制显示条数
  124. },
  125. organId: null,
  126. formActionTitle: 'create',
  127. formTitle: {
  128. create: '添加分部',
  129. update: '修改分部'
  130. },
  131. formLabelWidth: '100px',
  132. branchStatus: false,
  133. provinceList: [], // 省列表
  134. cityList: [], // 市列表
  135. form: {
  136. name: null,
  137. province: null,
  138. city: null,
  139. address: null,
  140. registerDate: null
  141. },
  142. rules: {
  143. name: [{ required: true, message: '请输入分部名称', trigger: 'blur' }],
  144. province: [{ required: true, message: '请选择省', trigger: 'change' }],
  145. city: [{ required: true, message: '请选择市', trigger: 'change' }],
  146. address: [{ required: true, message: '请输入分部地址', trigger: 'blur' }],
  147. registerDate: [{ required: true, message: '请选择成立时间', trigger: 'change' }]
  148. }
  149. }
  150. },
  151. mounted () {
  152. this.getList()
  153. this.getAreaList()
  154. },
  155. methods: {
  156. onBranchSubmit (formName) {
  157. this.$refs[formName].validate(valid => {
  158. if (!valid) return
  159. this.form.areaId = this.form.city
  160. if (this.formActionTitle == 'create') {
  161. if (this.form.id) { // 判断有没有Id,如果有则删除
  162. delete this.form.id
  163. }
  164. branchAdd(this.form).then(res => {
  165. this.messageTips('添加', res)
  166. })
  167. } else if (this.formActionTitle == 'update') {
  168. branchUpdate(this.form).then(res => {
  169. this.messageTips('修改', res)
  170. })
  171. }
  172. })
  173. },
  174. messageTips (title, res) {
  175. if (res.code == 200) {
  176. this.$message.success(title + '成功')
  177. this.branchStatus = false
  178. this.getList()
  179. } else {
  180. this.$message.error(res.msg)
  181. }
  182. },
  183. getList () {
  184. branchQueryPage({
  185. rows: this.pageInfo.limit,
  186. page: this.pageInfo.page
  187. }).then(res => {
  188. if (res.code == 200 && res.data) {
  189. this.tableList = res.data.rows
  190. this.pageInfo.total = res.data.total
  191. }
  192. })
  193. },
  194. onFormClose (formName) { // 关闭弹窗重置验证
  195. this.$refs[formName].resetFields()
  196. },
  197. getAreaList (parentId, callback) {
  198. parentId = parentId ? parentId : 0
  199. areaQueryChild({ parentId: parentId }).then(res => {
  200. if (res.code == 200 && res.data) {
  201. let tempData = []
  202. res.data.forEach(item => {
  203. tempData.push({
  204. label: item.name,
  205. value: item.id
  206. })
  207. })
  208. if (parentId) {
  209. this.cityList = tempData
  210. } else {
  211. this.provinceList = tempData
  212. }
  213. if (callback && typeof callback == 'function') {
  214. callback()
  215. }
  216. }
  217. })
  218. },
  219. onChangeProvince (val) {
  220. this.form.city = null
  221. this.getAreaList(val)
  222. },
  223. onBranchOperation (type, row) { // 修改分部信息
  224. this.formActionTitle = type
  225. this.branchStatus = true
  226. if (type == 'update') {
  227. getParentArea({ id: row.areaId }).then(res => {
  228. if (res.code == 200 && res.data) {
  229. this.getAreaList(res.data.id, () => {
  230. this.form = {
  231. id: row.id,
  232. name: row.name,
  233. province: res.data.id,
  234. city: row.areaId,
  235. address: row.address,
  236. registerDate: row.registerDate
  237. }
  238. })
  239. }
  240. })
  241. }
  242. }
  243. }
  244. }
  245. </script>
  246. <style lang="scss" scoped>
  247. .el-button--primary {
  248. background: #14928a;
  249. border-color: #14928a;
  250. color: #fff;
  251. &:hover,
  252. &:active,
  253. &:focus {
  254. background: #14928a;
  255. border-color: #14928a;
  256. color: #fff;
  257. }
  258. }
  259. .el-date-editor.el-input {
  260. width: 100% !important;
  261. }
  262. .el-select {
  263. width: 98% !important;
  264. }
  265. </style>