index.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. <template>
  2. <div id="deliveryAddressList">
  3. <div v-if="isList">
  4. <el-form class="search_area" label-width="120px">
  5. <el-row :gutter="10">
  6. <el-col :span="1.5">
  7. <el-form-item label="仓库属性">
  8. <el-select clearable v-model="queryParams.warehouseProperty" size="mini" style="width: 200px">
  9. <el-option v-for="dict in dict.type.sys_warehouse_attribute" :key="dict.value" :label="dict.label" :value="dict.value">
  10. </el-option>
  11. </el-select>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="1.5">
  15. <el-form-item label="仓库档案名称">
  16. <el-select clearable size="mini" v-model="queryParams.warehouseName" @focus="chooseRefer('WAREHOUSE_PARAM', true, '仓库档案名称')" style="width: 200px">
  17. <el-option v-for="item in houseOptions" :key="item.id" :label="item.name" :value="item.name" />
  18. </el-select>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="1.5">
  22. <el-form-item label="收货仓库编码">
  23. <el-input
  24. v-model="queryParams.code"
  25. size="mini"
  26. clearable
  27. style="width: 200px"
  28. />
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="1.5">
  32. <el-form-item label="收货仓库名称">
  33. <el-input
  34. v-model="queryParams.name"
  35. size="mini"
  36. clearable
  37. style="width: 200px"
  38. />
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="1.5">
  42. <el-form-item label="" label-width="20px">
  43. <el-button type="primary" size="mini" icon="el-icon-search" plain @click="searchList">搜索</el-button>
  44. <el-button size="mini" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
  45. </el-form-item>
  46. </el-col>
  47. </el-row>
  48. <CollapseTransition>
  49. <div v-show="expanded">
  50. <el-row :gutter="10">
  51. <el-col :span="1.5">
  52. <el-form-item label="物料分类">
  53. <el-select
  54. v-model="queryParams.materialClassifyName"
  55. size="mini"
  56. clearable
  57. @focus="chooseTreeRefer('MATERIALCLASSIFY_PARAM', false, '物料分类')"
  58. style="width: 200px"
  59. >
  60. <el-option v-for="item in classOptions" :key="item.id" :label="item.name" :value="item.name" />
  61. </el-select>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="1.5">
  65. <el-form-item label="详细地址">
  66. <el-input
  67. v-model="queryParams.address"
  68. size="mini"
  69. placeholder=""
  70. clearable
  71. style="width: 200px"
  72. />
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="1.5">
  76. <el-form-item label="联系人">
  77. <el-select clearable size="mini" v-model="queryParams.contactsName" clearable @focus="chooseRefer('CONTACTS_PARAM', true, '联系人')" style="width: 200px">
  78. <el-option v-for="item in contactsOptions" :key="item.id" :label="item.name" :value="item.name" />
  79. </el-select>
  80. </el-form-item>
  81. </el-col>
  82. <el-col :span="1.5">
  83. <el-form-item label="联系人电话">
  84. <el-input
  85. v-model="queryParams.contactsPhone"
  86. size="mini"
  87. clearable
  88. style="width: 200px"
  89. />
  90. </el-form-item>
  91. </el-col>
  92. </el-row>
  93. <el-row :gutter="10">
  94. <el-col :span="1.5">
  95. <el-form-item label="备注">
  96. <el-input
  97. v-model="queryParams.remark"
  98. size="mini"
  99. clearable
  100. style="width: 200px"
  101. />
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="1.5">
  105. <el-form-item label="同步状态">
  106. <el-select v-model="queryParams.sendStatus" size="mini" style="width: 200px" clearable>
  107. <el-option
  108. v-for="item in options2"
  109. :key="item.value"
  110. :label="item.label"
  111. :value="item.value">
  112. </el-option>
  113. </el-select>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="1.5">
  117. <el-form-item label="启用">
  118. <el-select v-model="queryParams.status" size="mini" style="width: 200px" clearable>
  119. <el-option
  120. v-for="item in options"
  121. :key="item.value"
  122. :label="item.label"
  123. :value="item.value">
  124. </el-option>
  125. </el-select>
  126. </el-form-item>
  127. </el-col>
  128. </el-row>
  129. </div>
  130. </CollapseTransition>
  131. </el-form>
  132. <el-divider class="lines"><i style="cursor: pointer;" :class="expanded?'el-icon-arrow-up':'el-icon-arrow-down'" @click="drop"></i></el-divider>
  133. <el-card>
  134. <div class="btn_grooup">
  135. <el-button type="primary" size="mini" @click="addAddress">新增</el-button>
  136. <el-dropdown size="mini" @command="handleCommand">
  137. <el-button size="mini" type="primary" style="margin-left: 10px;">
  138. 导入<i class="el-icon-arrow-down el-icon--right"></i>
  139. </el-button>
  140. <el-dropdown-menu slot="dropdown">
  141. <el-dropdown-item command="数据导入">数据导入</el-dropdown-item>
  142. <el-dropdown-item command="模板下载">模板下载</el-dropdown-item>
  143. </el-dropdown-menu>
  144. </el-dropdown>
  145. <el-dropdown size="mini" @command="handleCommand">
  146. <el-button size="mini" type="primary" style="margin: 0 10px;">
  147. 导出<i class="el-icon-arrow-down el-icon--right"></i>
  148. </el-button>
  149. <el-dropdown-menu slot="dropdown">
  150. <el-dropdown-item command="Excel导出">Excel导出</el-dropdown-item>
  151. <el-dropdown-item command="导出明细">导出明细</el-dropdown-item>
  152. </el-dropdown-menu>
  153. </el-dropdown>
  154. <el-button type="primary" size="mini">启用</el-button>
  155. <el-button type="primary" size="mini">停用</el-button>
  156. <el-button type="primary" size="mini">同步NC</el-button>
  157. <el-button type="primary" size="mini">删除</el-button>
  158. </div>
  159. <el-table
  160. :data="tableList"
  161. fit
  162. max-height="480"
  163. style="font-size: 12px;"
  164. @selection-change="handleSelectionChange"
  165. >
  166. <el-table-column show-overflow-tooltip type="selection" width="55" />
  167. <el-table-column show-overflow-tooltip label="仓库属性" align="center" prop="warehouseProperty"/>
  168. <el-table-column show-overflow-tooltip label="仓库档案名称" align="center" width="200" prop="warehouseCode"/>
  169. <el-table-column show-overflow-tooltip label="收货仓库编码" align="center" prop="code" />
  170. <el-table-column show-overflow-tooltip label="收货仓库名称" align="center" width="150" prop="name"/>
  171. <el-table-column show-overflow-tooltip label="详细地址" align="center" width="150" prop="address"/>
  172. <el-table-column show-overflow-tooltip label="物料分类" align="center" width="150" prop="materialClassifyName" />
  173. <el-table-column show-overflow-tooltip label="联系人" align="center" width="150" prop="contactsName" />
  174. <el-table-column show-overflow-tooltip label="联系人电话" align="center" prop="contactsPhone" />
  175. <el-table-column show-overflow-tooltip label="NC档案ID" align="center" width="150" prop="createTime" />
  176. <el-table-column show-overflow-tooltip label="备注" align="center" width="120" prop="remark" />
  177. <el-table-column show-overflow-tooltip label="创建人" align="center" width="150" prop="createByName" />
  178. <el-table-column show-overflow-tooltip label="创建时间" align="center" width="150" prop="createTime" />
  179. <el-table-column show-overflow-tooltip label="修改人" align="center" width="150" prop="updateByName" />
  180. <el-table-column show-overflow-tooltip label="修改时间" align="center" width="150" prop="updateTime" />
  181. <el-table-column show-overflow-tooltip label="同步状态" align="center" width="150" prop="sendStatus" />
  182. <el-table-column show-overflow-tooltip label="启用" align="center" width="150" prop="status" />
  183. <el-table-column
  184. fixed="right"
  185. label="操作"
  186. align="center"
  187. width="150"
  188. >
  189. <template slot-scope="scope">
  190. <el-button type="text" size="mini" @click="check(scope.row)">查看</el-button>
  191. <el-button type="text" size="mini" @click="edit(scope.row)">编辑</el-button>
  192. <el-button type="text" size="mini" @click="deleteids(scope.row)">删除</el-button>
  193. </template>
  194. </el-table-column>
  195. </el-table>
  196. <el-pagination
  197. background
  198. @size-change="handleSizeChange"
  199. @current-change="handleCurrentChange"
  200. :current-page="queryParams.pageNum"
  201. :page-sizes="[10, 15, 20]"
  202. :page-size="100"
  203. layout="total, sizes, prev, pager, next, jumper"
  204. :total=total>
  205. </el-pagination>
  206. </el-card>
  207. </div>
  208. <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="getList"/>
  209. <Refers ref="refer" @doSubmit="selectionsToInput" :single="true"/>
  210. <TreeRefers ref="tree" @doSubmit="selectionsToInput2" :single="true"/>
  211. </div>
  212. </template>
  213. <script>
  214. import Add from './add.vue'
  215. import CollapseTransition from '@/components/MyCollapse/collapse.vue'
  216. import {getAddressList, delAddress} from '@/api/purchase/deliveryAddress.js'
  217. import Refers from '@/components/Refers/refers.vue'
  218. import TreeRefers from '@/components/Refers/treeRefer.vue'
  219. export default {
  220. name: 'deliveryAddress',
  221. dicts: ['sys_warehouse_attribute'],
  222. components: {
  223. Add,
  224. CollapseTransition,
  225. Refers,
  226. TreeRefers
  227. },
  228. data() {
  229. return {
  230. expanded: false,
  231. // 页面配置
  232. isList: true,
  233. // 页面状态
  234. page: '',
  235. // 搜索框参数
  236. queryParams: {
  237. code: '',
  238. name: '',
  239. warehouse: '',
  240. warehouseName: '',
  241. warehouseCode: '',
  242. warehouseProperty: '',
  243. address: '',
  244. contacts: '',
  245. contactsName: '',
  246. contactsPhone: '',
  247. materialClassify: '',
  248. materialClassifyName: '',
  249. status: '',
  250. sendStatus: '',
  251. remark: '',
  252. pageNum: 1,
  253. pageSize: 10
  254. },
  255. options: [{
  256. value: 'Y', label: '是',
  257. }, {
  258. value: 'N', label: '否'
  259. }],
  260. options2: [{
  261. value: 'Y', label: '已同步',
  262. }, {
  263. value: 'N', label: '未同步'
  264. }],
  265. referCondition: {
  266. type: '',
  267. isPage: true,
  268. title: ''
  269. },
  270. houseOptions: [],
  271. classOptions: [],
  272. contactsOptions: [],
  273. tableList: [],
  274. total: 0,
  275. rowDetail: {},
  276. disable: false
  277. }
  278. },
  279. created() {
  280. this.getList(this.queryParams)
  281. },
  282. methods: {
  283. getList(params){
  284. getAddressList(params).then(res => {
  285. if (res.code === 200) {
  286. this.tableList = res.rows
  287. this.total = res.total
  288. }
  289. })
  290. },
  291. searchList() {
  292. this.getList(this.queryParams)
  293. },
  294. resetList() {
  295. this.queryParams = {
  296. code: '',
  297. name: '',
  298. warehouse: '',
  299. warehouseName: '',
  300. warehouseCode: '',
  301. warehouseProperty: '',
  302. address: '',
  303. contacts: '',
  304. contactsName: '',
  305. contactsPhone: '',
  306. materialClassify: '',
  307. materialClassifyName: '',
  308. status: '',
  309. sendStatus: '',
  310. remark: '',
  311. pageNum: 1,
  312. pageSize: 10
  313. }
  314. this.getList(this.queryParams)
  315. },
  316. handleSelectionChange() {},
  317. handleCommand(command) {
  318. alert(command)
  319. },
  320. addAddress() {
  321. this.isList = false
  322. this.page = 'add'
  323. this.disable = false
  324. },
  325. check(row) {
  326. this.isList = false
  327. this.page = 'check'
  328. this.rowDetail = row
  329. this.disable = true
  330. },
  331. edit(row) {
  332. this.isList = false
  333. this.page = 'edit'
  334. this.rowDetail = row
  335. this.disable = false
  336. },
  337. deleteids(row) {
  338. console.log('row', row)
  339. this.$modal.confirm('确认信息').then(() => {
  340. delAddress(row.id).then(res => {
  341. if (res.code === 200) {
  342. this.$modal.msgSuccess("删除成功");
  343. this.getList(this.queryParams)
  344. }
  345. })
  346. }).catch(() => {})
  347. },
  348. handleSizeChange(val) {
  349. console.log(`每页 ${val} 条`);
  350. this.queryParams.pageSize = val
  351. this.getList(this.queryParams)
  352. },
  353. handleCurrentChange(val) {
  354. console.log(`当前页: ${val}`);
  355. this.queryParams.pageNum = val
  356. this.getList(this.queryParams)
  357. },
  358. drop() {
  359. this.expanded = !this.expanded
  360. },
  361. chooseRefer(type, isPage, title) {
  362. this.referCondition.type = type
  363. this.referCondition.isPage = isPage
  364. this.referCondition.title = title
  365. this.$refs.refer.init(this.referCondition)
  366. },
  367. selectionsToInput(selection) {
  368. if (this.referCondition.type == 'WAREHOUSE_PARAM') {
  369. this.houseOptions = selection
  370. // this.queryParams.warehouse = selection[0].id
  371. this.queryParams.warehouseName = selection[0].name
  372. }
  373. if (this.referCondition.type == 'CONTACTS_PARAM') {
  374. this.contactsOptions = selection
  375. // this.queryParams.contacts = selection[0].code
  376. this.queryParams.contactsName = selection[0].name
  377. }
  378. },
  379. chooseTreeRefer(type, isPage, title) {
  380. this.referCondition.type = type
  381. this.referCondition.isPage = isPage
  382. this.referCondition.title = title
  383. this.$refs.tree.init(this.referCondition)
  384. },
  385. selectionsToInput2(selection) {
  386. this.classOptions.push(selection)
  387. // this.queryParams.materialClassify = selection.id
  388. this.queryParams.materialClassifyName = selection.name
  389. },
  390. }
  391. }
  392. </script>
  393. <style lang="scss" scoped>
  394. #deliveryAddressList {
  395. height: calc(100vh - 84px);
  396. padding: 12px;
  397. box-sizing: border-box;
  398. overflow-y: scroll;
  399. }
  400. .btn_grooup {
  401. margin-bottom: 10px;
  402. display: flex;
  403. justify-content: flex-end;
  404. }
  405. .lines {
  406. margin-top: 0;
  407. }
  408. .el-pagination {
  409. margin-top: 10px;
  410. text-align: right;
  411. }
  412. </style>