OptionDialog.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <template>
  2. <el-dialog
  3. :title="isEdit ? '编 辑': '新 增'"
  4. width="45%"
  5. :visible.sync="visible"
  6. :before-close="close"
  7. label-position="right"
  8. :modal-append-to-body="false"
  9. :close-on-press-escape="false"
  10. :close-on-click-modal="false"
  11. >
  12. <el-form ref="ent" :model="ent" :rules="rules" label-width="110px">
  13. <el-form-item label="产品名称" prop="productName">
  14. <el-input v-model="ent.productName" maxlength="30" placeholder="最大输入长度30 超出截断" />
  15. </el-form-item>
  16. <el-form-item label="产品品类" prop="productTypeId">
  17. <el-select
  18. v-model="ent.productTypeId"
  19. filterable
  20. default-first-option
  21. placeholder="请选择"
  22. @change="productType"
  23. >
  24. <el-option
  25. v-for="item in typeList"
  26. :key="item.bsProductTypeId"
  27. :label="item.typeName"
  28. :value="item.bsProductTypeId"
  29. />
  30. </el-select>
  31. <el-button class="ml-10" type="text" @click="typeAdd"><u>新增品类</u></el-button>
  32. <el-tooltip class="item" effect="dark" content="刷新产品品类选择内容" placement="top-start">
  33. <el-button class="ml-10" type="text" icon="el-icon-refresh" @click="refreshRest" />
  34. </el-tooltip>
  35. <!-- <el-input v-model="ent.productTypeId" /> -->
  36. </el-form-item>
  37. <el-form-item label="关联项目" prop="relationProjectId">
  38. <el-select
  39. v-model="ent.relationProjectId"
  40. filterable
  41. default-first-option
  42. placeholder="请选择"
  43. @change="projectChange"
  44. >
  45. <el-option
  46. v-for="item in projectList"
  47. :key="item.bsProjectId"
  48. :label="item.projectName"
  49. :value="item.bsProjectId"
  50. />
  51. </el-select>
  52. <el-button class="ml-10" type="text" @click="projectAdd"><u>新增项目</u></el-button>
  53. <el-tooltip class="item" effect="dark" content="刷新关联项目选择内容" placement="top-start">
  54. <el-button class="ml-10" type="text" icon="el-icon-refresh" @click="refreshRest" />
  55. </el-tooltip>
  56. </el-form-item>
  57. <el-form-item label="产品来源" prop="productSourceId">
  58. <el-select
  59. v-model="ent.productSourceId"
  60. filterable
  61. default-first-option
  62. placeholder="请选择"
  63. @change="sourceChange"
  64. >
  65. <el-option
  66. v-for="item in sourceList"
  67. :key="item.bsProductSourceId"
  68. :label="item.source"
  69. :value="item.bsProductSourceId"
  70. />
  71. </el-select>
  72. <el-button class="ml-10" type="text" @click="sourceAdd"><u>新增来源</u></el-button>
  73. <el-tooltip class="item" effect="dark" content="刷新产品来源选择内容" placement="top-start">
  74. <el-button class="ml-10" type="text" icon="el-icon-refresh" @click="refreshRest" />
  75. </el-tooltip>
  76. </el-form-item>
  77. <el-form-item label="是否启用" prop="isUseing">
  78. <el-select
  79. v-model="ent.isUseing"
  80. filterable
  81. default-first-option
  82. placeholder="请选择"
  83. >
  84. <el-option
  85. v-for="item in isUseingList"
  86. :key="item.value"
  87. :label="item.label"
  88. :value="item.value"
  89. />
  90. </el-select>
  91. </el-form-item>
  92. <el-form-item label="备注" prop="remark">
  93. <el-input v-model="ent.remark" type="textarea" maxlength="100" min="0" placeholder="最大输入长度100 超出截断" />
  94. </el-form-item>
  95. <!-- <el-form-item label="关联项目名称" prop="relationProjectName">
  96. <el-input v-model="ent.relationProjectName" />
  97. </el-form-item> -->
  98. <!-- <el-form-item label="产品类型名称" prop="productTypeName">
  99. <el-input v-model="ent.productTypeName" />
  100. </el-form-item> -->
  101. <!-- <el-form-item label="产品来源名称" prop="productSourceName">
  102. <el-input v-model="ent.productSourceName" />
  103. </el-form-item> -->
  104. <!-- <el-form-item label="产品组id" prop="productGroupId">
  105. <el-input v-model="ent.productGroupId" />
  106. </el-form-item>
  107. <el-form-item label="产品组名称" prop="productGroupName">
  108. <el-input v-model="ent.productGroupName" />
  109. </el-form-item> -->
  110. <!-- <el-form-item label="逻辑删除" prop="deleted">
  111. <el-input v-model="ent.deleted" />
  112. </el-form-item>
  113. <el-form-item label="创建者" prop="createBy">
  114. <el-input v-model="ent.createBy" />
  115. </el-form-item>
  116. <el-form-item label="创建时间" prop="createTime">
  117. <el-input v-model="ent.createTime" />
  118. </el-form-item>
  119. <el-form-item label="更新者" prop="updateBy">
  120. <el-input v-model="ent.updateBy" />
  121. </el-form-item>
  122. <el-form-item label="更新时间" prop="updateTime">
  123. <el-input v-model="ent.updateTime" />
  124. </el-form-item> -->
  125. </el-form>
  126. <span slot="footer" class="dialog-footer">
  127. <el-button round @click="close">取消</el-button>
  128. <el-popconfirm class="ml-10" confirm-button-text="提交" cancel-button-text="取消" icon="el-icon-info" icon-color="red" title="确定提交?" @confirm="submit">
  129. <el-button slot="reference" type="primary" round>确定</el-button>
  130. </el-popconfirm>
  131. </span>
  132. </el-dialog>
  133. </template>
  134. <script>
  135. import {
  136. Add,
  137. Update
  138. } from '@/network/api/basicSetting/product/basicSettingProduct'
  139. import { BasicSettingProductEnt, formRules, isUseingList } from './object'
  140. import { getProjectForProduct } from '@/network/api/basicSetting/project/basicSettingProject'
  141. import { getAllIsUseing } from '@/network/api/basicSetting/product/basicSettingProductType'
  142. export default {
  143. inject: ['loadData', 'showAddProject', 'showAddType', 'showAddSource'],
  144. data() {
  145. return {
  146. ent: new BasicSettingProductEnt(),
  147. rules: formRules,
  148. isEdit: false,
  149. visible: false,
  150. isUseingList: isUseingList,
  151. cityList: [],
  152. typeList: [],
  153. projectList: [],
  154. sourceList: [],
  155. objSoucer: {}
  156. }
  157. },
  158. mounted() {
  159. this.getType()
  160. this.getProject()
  161. },
  162. methods: {
  163. refreshRest() {
  164. this.getType()
  165. this.getProject()
  166. },
  167. activateds() {
  168. this.$message({
  169. message: '激活',
  170. type: 'success'
  171. })
  172. },
  173. projectAdd() {
  174. // this.close()
  175. this.showAddProject()
  176. },
  177. typeAdd() {
  178. // this.close()
  179. this.showAddType()
  180. },
  181. sourceAdd() {
  182. // this.close()
  183. this.showAddSource()
  184. },
  185. productType(val) {
  186. this.typeList.forEach(item => {
  187. if (item.bsProductTypeId === val) {
  188. this.ent.productTypeName = item.typeName
  189. }
  190. })
  191. },
  192. projectChange(val) {
  193. this.sourceList = []
  194. this.ent.productSourceId = undefined
  195. this.ent.productSourceName = undefined
  196. if (this.objSoucer[val] !== undefined) {
  197. this.sourceList = this.objSoucer[val]
  198. }
  199. this.projectList.forEach(item => {
  200. if (item.bsProjectId === val) {
  201. this.ent.relationProjectName = item.projectName
  202. }
  203. })
  204. },
  205. sourceChange(val) {
  206. this.sourceList.forEach(item => {
  207. if (item.bsProductSourceId === val) {
  208. this.ent.productSourceName = item.source
  209. }
  210. })
  211. },
  212. getType() {
  213. getAllIsUseing().then(res => {
  214. if (res.code === 200) {
  215. this.typeList = res.data
  216. }
  217. })
  218. },
  219. getProject() {
  220. getProjectForProduct().then(res => {
  221. if (res.code === 200) {
  222. const data = res.data
  223. if (undefined !== data.PROJECT) {
  224. this.projectList = data.PROJECT
  225. }
  226. if (undefined !== data.SOURCE) {
  227. this.objSoucer = data.SOURCE
  228. }
  229. }
  230. })
  231. },
  232. submit() {
  233. this.$refs.ent.validate((validate) => {
  234. if (validate) {
  235. this.isEdit ? this.updateRow() : this.addRow()
  236. }
  237. })
  238. },
  239. addRow() {
  240. const req = { ...this.ent }
  241. Add(req).then(res => {
  242. if (res.code === 200) {
  243. this.$message({
  244. message: res.msg,
  245. type: 'success'
  246. })
  247. this.loadData()
  248. this.close()
  249. } else {
  250. this.$message({
  251. message: res.msg,
  252. type: 'error'
  253. })
  254. }
  255. })
  256. },
  257. updateRow() {
  258. const req = { ...this.ent }
  259. Update(req).then(res => {
  260. if (res.code === 200) {
  261. this.$message({
  262. message: res.msg,
  263. type: 'success'
  264. })
  265. this.loadData()
  266. this.close()
  267. } else {
  268. this.$message({
  269. message: res.msg,
  270. type: 'error'
  271. })
  272. }
  273. })
  274. },
  275. close() {
  276. this.visible = false
  277. this.$nextTick(() => {
  278. this.$refs.ent.resetFields()
  279. })
  280. },
  281. show(isEdit = false, ent) {
  282. this.getType()
  283. this.getProject()
  284. if (!isEdit) {
  285. ent.isUseing = 'ISUSEING'
  286. }
  287. this.ent = ent
  288. this.isEdit = isEdit
  289. this.visible = true
  290. this.$nextTick(() => {
  291. if (this.isEdit) {
  292. if (this.objSoucer[this.ent.relationProjectId] !== undefined) {
  293. this.sourceList = this.objSoucer[this.ent.relationProjectId]
  294. }
  295. }
  296. })
  297. }
  298. }
  299. }
  300. </script>