addDialog.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <template>
  2. <div>
  3. <el-dialog
  4. :title="dialogTitle"
  5. @close="addForm = {orgCode:orgCode}"
  6. :visible.sync="dialogFormVisible"
  7. id="dialogStyle"
  8. >
  9. <el-form
  10. :model="addForm"
  11. :rules="rules"
  12. ref="addForm"
  13. label-width="120px"
  14. >
  15. <el-form-item label="产品图标:" prop="proIcons">
  16. <el-upload
  17. class="avatar-uploader"
  18. action="smart-grp-basic/minio/testupload"
  19. :show-file-list="false"
  20. :on-success="handleAvatarSuccess"
  21. >
  22. <img
  23. v-if="addForm.proIcons"
  24. :src="addForm.proIcons"
  25. class="avatar"
  26. />
  27. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  28. </el-upload>
  29. </el-form-item>
  30. <el-form-item label="产品ID:" prop="proCode">
  31. <el-input
  32. style="width: 220px"
  33. v-model.trim="addForm.proCode"
  34. placeholder="请输入"
  35. ></el-input>
  36. </el-form-item>
  37. <el-form-item label="产品名称:" prop="proName">
  38. <el-input
  39. style="width: 220px"
  40. v-model.trim="addForm.proName"
  41. placeholder="请输入"
  42. ></el-input>
  43. </el-form-item>
  44. <el-form-item label="产品分类:" prop="proCategoryCode">
  45. <el-select
  46. v-model="addForm.proCategoryCode"
  47. placeholder="请选择"
  48. ref="selectTree"
  49. >
  50. <el-option
  51. :key="addForm.proCategoryCode"
  52. :value="addForm.proCategoryCode"
  53. :label="addForm.label"
  54. hidden
  55. />
  56. <el-tree
  57. :data="typeLists"
  58. :props="defaultProps"
  59. node-key="id"
  60. accordion
  61. highlight-current
  62. @node-click="handleNodeClick"
  63. />
  64. </el-select>
  65. </el-form-item>
  66. <el-form-item label="所属组织机构:" prop="orgCode">
  67. <el-select v-model="addForm.orgCode" placeholder="请选择">
  68. <el-option
  69. v-for="item in ckLists"
  70. :key="item.orgCode"
  71. :label="item.orgName"
  72. :value="item.orgCode"
  73. >
  74. </el-option>
  75. </el-select>
  76. </el-form-item>
  77. <el-form-item label="协议类型:" prop="protocolType">
  78. <el-select v-model="addForm.protocolType" placeholder="请选择">
  79. <el-option v-for="(item,index) in xyArr" :key="index" :label="item.enumName" :value="item.enumCode"></el-option>
  80. </el-select>
  81. </el-form-item>
  82. <el-form-item label="产品描述:">
  83. <el-input
  84. style="width: 80%"
  85. type="textarea"
  86. v-model.trim="addForm.proDescription"
  87. placeholder="请输入"
  88. ></el-input>
  89. </el-form-item>
  90. </el-form>
  91. <div slot="footer" class="dialog-footer">
  92. <el-button @click="dialogFormVisible = false">取 消</el-button>
  93. <el-button type="primary" @click="submitForm('addForm')"
  94. >确 定</el-button
  95. >
  96. </div>
  97. </el-dialog>
  98. </div>
  99. </template>
  100. <script>
  101. import api from "@/api";
  102. import log from "@/libs/util.log";
  103. export default {
  104. props: {
  105. dialogTitle: "",
  106. },
  107. data() {
  108. return {
  109. defaultProps: {
  110. children: "children",
  111. label: "productCategoryName",
  112. },
  113. orgCode:"",
  114. ckLists: [],
  115. xyArr:[],
  116. typeLists: [],
  117. addForm: {},
  118. dialogFormVisible: false,
  119. rules: {
  120. proCode: [{ required: true, message: "请输入产品ID", trigger: "blur" }],
  121. orgCode: [{ required: true, message: "请选择组织机构", trigger: "blur" }],
  122. proName: [
  123. { required: true, message: "请输入产品名称", trigger: "blur" },
  124. ],
  125. proCategoryCode: [
  126. { required: true, message: "请选择产品分类", trigger: "blur" },
  127. ],
  128. protocolType: [
  129. { required: true, message: "请选择协议类型", trigger: "blur" },
  130. ],
  131. },
  132. };
  133. },
  134. created() {
  135. this.ckList();
  136. //this.orgCode=localStorage.getItem("orgCode");
  137. },
  138. methods: {
  139. handleAvatarSuccess(res, file) {
  140. this.$set(this.addForm,'proIcons',window.location.origin+"/smart-grp-basic/minio/preViewPicture/" + res.data)
  141. // this.addForm.proIcons =
  142. // "http://101.36.160.140:31005/smart-grp-basic/minio/preViewPicture/" + res.data;
  143. // console.log(this.addForm.proIcons);
  144. },
  145. getInfo(row) {
  146. this.addForm = row;
  147. this.addForm.protocolType=this.addForm.protocolType.replace(/\s+/g,"")
  148. // this.addForm = row;
  149. this.addForm.label = row.proCategoryName;
  150. },
  151. handleNodeClick(data) {
  152. console.log(data);
  153. this.$set(this.addForm, "proCategoryCode", data.productCategoryCode);
  154. this.$set(this.addForm, "proCategoryName", data.productCategoryName);
  155. this.$set(this.addForm, "label", data.productCategoryName);
  156. console.log(this.addForm);
  157. // 使 input 失去焦点,并隐藏下拉框
  158. this.$refs.selectTree.blur();
  159. },
  160. //新增或编辑时仓房/仓库下拉选
  161. ckList() {
  162. var data = {
  163. storeTypeCode: 300002,
  164. };
  165. api
  166. .ckList()
  167. .then((res) => {
  168. if (res.code == 200) {
  169. this.ckLists = res.data;
  170. //this.addForm.orgCode=localStorage.getItem("orgCode")
  171. }
  172. })
  173. .catch((err) => {
  174. console.log(err);
  175. });
  176. api
  177. .productCategoryList(localStorage.getItem("orgCode"))
  178. .then((res) => {
  179. if (res.code == 200) {
  180. this.typeLists = res.data;
  181. }
  182. })
  183. .catch((err) => {
  184. console.log(err);
  185. });
  186. var condition = {
  187. enumCode: 120000,
  188. };
  189. condition = JSON.stringify(condition);
  190. var data = {
  191. condition: condition,
  192. };
  193. api
  194. .dataDic(data)
  195. .then((res) => {
  196. if (res.code == 200) {
  197. this.xyArr = res.data[0].children;
  198. }
  199. })
  200. .catch((err) => {
  201. console.log(err);
  202. });
  203. },
  204. //新建产品提交
  205. submitForm(formName) {
  206. this.$refs[formName].validate((valid) => {
  207. console.log(this.addForm);
  208. if (valid) {
  209. let params = JSON.parse(JSON.stringify(this.addForm));
  210. params.label = undefined;
  211. params.proCategoryName = undefined;
  212. if (this.dialogTitle == "新建产品") {
  213. params.id = "";
  214. // params.orgCode=localStorage.getItem("orgCode")
  215. // params.orgName=localStorage.getItem("orgName")
  216. api.productSave(params).then((res) => {
  217. if (res.code == 200) {
  218. this.$message.success("新建成功");
  219. this.$parent.$parent.$parent.getList();
  220. this.dialogFormVisible = false;
  221. }
  222. });
  223. } else {
  224. api.productUpdate(params).then((res) => {
  225. if (res.code == 200) {
  226. this.$message.success("编辑成功");
  227. this.dialogFormVisible = false;
  228. this.$parent.$parent.$parent.getBasic();
  229. }
  230. });
  231. }
  232. } else {
  233. console.log("error submit!!");
  234. return false;
  235. }
  236. });
  237. },
  238. },
  239. };
  240. </script>
  241. <style lang="scss" scoped>
  242. ::v-deep .avatar-uploader .el-upload {
  243. border: 1px dashed #d9d9d9;
  244. border-radius: 6px;
  245. cursor: pointer;
  246. position: relative;
  247. overflow: hidden;
  248. }
  249. .avatar-uploader .el-upload:hover {
  250. border-color: #008775;
  251. }
  252. .avatar-uploader-icon {
  253. font-size: 28px;
  254. color: #8c939d;
  255. width: 100px;
  256. height: 100px;
  257. line-height: 100px;
  258. text-align: center;
  259. }
  260. .avatar {
  261. width: 100px;
  262. height: 100px;
  263. display: block;
  264. }
  265. </style>