index.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="activeName" >
  4. <el-tab-pane label="客户管理配置" name="sysConfig">
  5. <el-form ref="sysConfig" :model="sysConfig" label-width="120px">
  6. <el-form-item label="公海回收规则">
  7. <el-row>
  8. <el-input-number v-model="sysConfig.visitLimt" :min="0" :max="100" ></el-input-number>
  9. </el-row>
  10. <el-row>
  11. <span class="tip">认领后N天自动回收</span>
  12. </el-row>
  13. </el-form-item>
  14. <div class="line"></div>
  15. <div style="float:right;margin-right:20px">
  16. <el-button type="primary" @click="onSubmit1">提交</el-button>
  17. </div>
  18. </el-form>
  19. </el-tab-pane>
  20. <el-tab-pane label="企微客服配置" name="qwkfConfig">
  21. <el-form ref="qwkfConfig" :model="qwkfConfig" label-width="120px">
  22. <el-form-item label="企业CoripID">
  23. <el-input v-model="qwkfConfig.corpId" style="width:400px" ></el-input>
  24. </el-form-item>
  25. <el-form-item label="Secret">
  26. <el-input v-model="qwkfConfig.secret" style="width:400px" ></el-input>
  27. </el-form-item>
  28. <el-form-item label="Token">
  29. <el-input v-model="qwkfConfig.token" style="width:400px" ></el-input>
  30. </el-form-item>
  31. <el-form-item label="EncodingAESKey">
  32. <el-input v-model="qwkfConfig.encodingAESKey" style="width:400px" ></el-input>
  33. </el-form-item>
  34. <el-form-item label="回调地接">
  35. <el-input disabled v-model="qwkfConfig.notifyUrl" style="width:600px" ></el-input>
  36. </el-form-item>
  37. <div class="line"></div>
  38. <div style="float:right;margin-right:20px">
  39. <el-button type="primary" @click="onSubmit3">提交</el-button>
  40. </div>
  41. </el-form>
  42. </el-tab-pane>
  43. <el-tab-pane label="客户字段配置" name="customerExt">
  44. <el-row :gutter="10" class="mb8" style="margin:0px 0px 10px;">
  45. <el-col :span="1.5">
  46. <el-button
  47. type="primary"
  48. icon="el-icon-plus"
  49. size="mini"
  50. @click="handleCustomerExtAdd"
  51. >新增</el-button>
  52. </el-col>
  53. </el-row>
  54. <el-table border :data="customerExtList" >
  55. <el-table-column label="ID" align="center" prop="extId" />
  56. <el-table-column label="字段名称" align="center" prop="name" />
  57. <el-table-column label="状态" align="center" prop="status">
  58. <template slot-scope="scope">
  59. <el-tag prop="status" v-for="(item, index) in statusOptions" v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="排序号" align="center" prop="sort" />
  63. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  64. <template slot-scope="scope">
  65. <el-button
  66. size="mini"
  67. type="text"
  68. icon="el-icon-edit"
  69. @click="handleCustomerExtUpdate(scope.row)"
  70. >修改</el-button>
  71. <el-button
  72. size="mini"
  73. type="text"
  74. icon="el-icon-delete"
  75. @click="handleCustomerExtDelete(scope.row)"
  76. >删除</el-button>
  77. </template>
  78. </el-table-column>
  79. </el-table>
  80. <div class="line"></div>
  81. <div style="float:right;margin-right:20px">
  82. <el-button type="primary" @click="onSubmit2">提交</el-button>
  83. </div>
  84. </el-tab-pane>
  85. <el-tab-pane label="红包商户配置" name="redPacketConfig" >
  86. <el-form ref="redPacketConfig" :model="redPacketConfig" label-width="150px">
  87. <el-form-item label="红包接口类型" prop="isNew">
  88. <el-radio-group v-model="redPacketConfig.isNew">
  89. <el-radio label="0">商家转账到零钱(旧)</el-radio>
  90. <el-radio label="1">商家转账(新)</el-radio>
  91. </el-radio-group>
  92. </el-form-item>
  93. <el-form-item label="公众号appid" prop="appId">
  94. <el-input v-model="redPacketConfig.appId" label="请输入appId"></el-input>
  95. </el-form-item>
  96. <el-form-item label="小程序appid" prop="appId">
  97. <el-input v-model="redPacketConfig.miniappId" label="请输入appId"></el-input>
  98. </el-form-item>
  99. <el-form-item label="商户号" prop="mchId">
  100. <el-input v-model="redPacketConfig.mchId" label="请输入mchId"></el-input>
  101. </el-form-item>
  102. <el-form-item label="商户密钥" prop="mchKey">
  103. <el-input v-model="redPacketConfig.mchKey" label="mchKey"></el-input>
  104. </el-form-item>
  105. <el-form-item label="p12证书路径" prop="keyPath">
  106. <el-input v-model="redPacketConfig.keyPath" label="请输入keyPath"></el-input>
  107. </el-form-item>
  108. <el-form-item label="apiV3密钥" prop="apiV3Key">
  109. <el-input v-model="redPacketConfig.apiV3Key" label="请输入apiV3Key"></el-input>
  110. </el-form-item>
  111. <el-form-item label="公钥ID" prop="publicKeyId">
  112. <el-input v-model="redPacketConfig.publicKeyId" label="请输入公钥ID"></el-input>
  113. </el-form-item>
  114. <el-form-item label="公钥证书" prop="publicKeyPath">
  115. <el-input v-model="redPacketConfig.publicKeyPath" label="请输入publicKeyPath"></el-input>
  116. </el-form-item>
  117. <el-form-item label="key路径" prop="privateKeyPath">
  118. <el-input v-model="redPacketConfig.privateKeyPath" label="请输入"></el-input>
  119. </el-form-item>
  120. <el-form-item label="cert路径" prop="privateCertPath">
  121. <el-input v-model="redPacketConfig.privateCertPath" label="请输入"></el-input>
  122. </el-form-item>
  123. <el-form-item label="回调地址" prop="notifyUrl">
  124. <el-input v-model="redPacketConfig.notifyUrl" label="请输入"></el-input>
  125. </el-form-item>
  126. <div style="float:right;margin-right:20px">
  127. <el-button type="primary" @click="onSubmit4">提交</el-button>
  128. </div>
  129. </el-form>
  130. </el-tab-pane>
  131. <el-tab-pane label="配置销售会员审核" name="companyUserConfig">
  132. <el-form ref="companyUserConfig" label-width="140px">
  133. <el-form-item label="会员是否默认黑名单">
  134. <el-row>
  135. <el-switch v-model="userIsDefaultBlack"></el-switch>
  136. </el-row>
  137. </el-form-item>
  138. <div style="float:right;margin-right:20px">
  139. <el-button type="primary" @click="onSubmit5">提交</el-button>
  140. </div>
  141. </el-form>
  142. </el-tab-pane>
  143. </el-tabs>
  144. <el-dialog :title="customerExt.title" :visible.sync="customerExt.open" width="500px" append-to-body>
  145. <el-form ref="customerExtForm" :model="customerExtForm" :rules="customerExtRules" label-width="80px">
  146. <el-form-item label="字段名称" prop="name">
  147. <el-input v-model="customerExtForm.name" placeholder="请输入字段名称" />
  148. </el-form-item>
  149. <el-form-item label="状态">
  150. <el-radio-group v-model="customerExtForm.status">
  151. <el-radio label="1" >正常</el-radio>
  152. <el-radio label="0">禁用</el-radio>
  153. </el-radio-group>
  154. </el-form-item>
  155. <el-form-item label="排序号" prop="sort">
  156. <el-input-number v-model="customerExtForm.sort" :min="1" placeholder="请输入排序号" />
  157. </el-form-item>
  158. </el-form>
  159. <div slot="footer" class="dialog-footer">
  160. <el-button type="primary" @click="submitCustomerExtForm">确 定</el-button>
  161. <el-button @click="customerExt.open=false">取 消</el-button>
  162. </div>
  163. </el-dialog>
  164. </div>
  165. </template>
  166. <script>
  167. import { getCompanyInfo } from "@/api/company/company";
  168. import { getConfigKey,updateConfig, configUserCheck } from "@/api/company/companyConfig";
  169. import { listCustomerExt, getCustomerExt, delCustomerExt, addCustomerExt, updateCustomerExt } from "@/api/crm/customerExt";
  170. export default {
  171. name: "config",
  172. data() {
  173. return {
  174. company:null,
  175. statusOptions:[],
  176. customerExt:{
  177. open:false,
  178. title:"扩展字段"
  179. },
  180. customerExtForm:{
  181. name:"",
  182. status:"1",
  183. sort:"1",
  184. },
  185. customerExtRules:{
  186. },
  187. customerExtList: [],
  188. activeName: 'sysConfig',
  189. customerConfig:{
  190. rlLimit: 1,
  191. txLimit: 1,
  192. hsLimit: 1
  193. },
  194. sysConfig:{
  195. tel:"18900000000",
  196. noticeType:1,
  197. visitLimt:0,
  198. contractLimt:0
  199. },
  200. sysConfigForm:{},
  201. customerConfigForm:{},
  202. qwkfConfig:{
  203. },
  204. qwConfig:{
  205. },
  206. redPacketConfig:{},
  207. redPacketConfigForm:{},
  208. qwConfigForm:{},
  209. qwkfConfigForm:{},
  210. companyUserConfig: {},
  211. userIsDefaultBlack: false,
  212. };
  213. },
  214. created() {
  215. this.getCompanyInfo();
  216. this.getConfigKey("sys:config");
  217. this.getConfigKey("qw:config");
  218. this.getConfigKey("customer:config");
  219. this.getConfigKey("redPacket:config");
  220. this.getConfigKey("companyUser:config");
  221. this.getDicts("sys_company_status").then((response) => {
  222. this.statusOptions = response.data;
  223. });
  224. this.getCustomerExt()
  225. },
  226. mounted() {
  227. },
  228. methods: {
  229. getCompanyInfo(){
  230. getCompanyInfo().then(response => {
  231. this.company = response.data;
  232. });
  233. },
  234. /** 新增按钮操作 */
  235. handleCustomerExtAdd() {
  236. this.customerExt.open = true;
  237. this.customerExt.title = "添加客户字段";
  238. this.customerExtForm={
  239. name:"",
  240. status:"1",
  241. sort:"1",
  242. }
  243. },
  244. /** 修改按钮操作 */
  245. handleCustomerExtUpdate(row) {
  246. const extId = row.extId
  247. getCustomerExt(extId).then(response => {
  248. this.customerExtForm = response.data;
  249. this.customerExt.open = true;
  250. this.customerExtForm.status = response.data.status.toString();
  251. this.customerExt.title = "修改客户字段";
  252. });
  253. },
  254. /** 提交按钮 */
  255. submitCustomerExtForm() {
  256. this.$refs["customerExtForm"].validate(valid => {
  257. if (valid) {
  258. if (this.customerExtForm.extId != null) {
  259. updateCustomerExt(this.customerExtForm).then(response => {
  260. if (response.code === 200) {
  261. this.getCustomerExt("修改成功");
  262. this.customerExt.open = false;
  263. this.getList();
  264. }
  265. });
  266. } else {
  267. addCustomerExt(this.customerExtForm).then(response => {
  268. if (response.code === 200) {
  269. this.msgSuccess("新增成功");
  270. this.customerExt.open = false;
  271. this.getCustomerExt();
  272. }
  273. });
  274. }
  275. }
  276. });
  277. },
  278. /** 删除按钮操作 */
  279. handleCustomerExtDelete(row) {
  280. const extIds = row.extId || this.ids;
  281. this.$confirm('是否确认删除客户字段扩展编号为"' + extIds + '"的数据项?', "警告", {
  282. confirmButtonText: "确定",
  283. cancelButtonText: "取消",
  284. type: "warning"
  285. }).then(function() {
  286. return delCustomerExt(extIds);
  287. }).then(() => {
  288. this.getCustomerExt();
  289. this.msgSuccess("删除成功");
  290. }).catch(function() {});
  291. },
  292. getCustomerExt() {
  293. var data={}
  294. listCustomerExt(data).then(response => {
  295. this.customerExtList = response.data;
  296. });
  297. },
  298. getConfigKey(key){
  299. getConfigKey(key).then((response) => {
  300. if(key=="sys:config"){
  301. this.sysConfigForm=response.data;
  302. if(response.data.configValue!=null){
  303. this.sysConfig=JSON.parse(response.data.configValue);
  304. }
  305. }
  306. else if(key=="qw:config"){
  307. this.qwkfConfigForm=response.data;
  308. if(response.data.configValue!=null){
  309. this.qwkfConfig=JSON.parse(response.data.configValue);
  310. this.qwkfConfig.notifyUrl="http://kf.qw.ifeiyu100.com/app/common/weixinkfAuth/"+this.company.companyId;
  311. }
  312. }
  313. else if(key=="customer:config"){
  314. this.customerConfigForm=response.data;
  315. if(response.data.configValue!=null){
  316. this.customerConfig=JSON.parse(response.data.configValue);
  317. }
  318. }else if(key=="redPacket:config"){
  319. this.redPacketConfigForm=response.data;
  320. if(response.data.configValue!=null){
  321. this.redPacketConfig=JSON.parse(response.data.configValue);
  322. }
  323. }else if (key=="companyUser:config"){
  324. console.log(response.data)
  325. this.companyUserConfig=response.data;
  326. if(response.data.configValue != null){
  327. this.userIsDefaultBlack = JSON.parse(response.data.configValue);
  328. }
  329. }
  330. });
  331. },
  332. onSubmit1() {
  333. this.sysConfigForm.configValue=JSON.stringify(this.sysConfig);
  334. updateConfig(this.sysConfigForm).then(response => {
  335. if (response.code === 200) {
  336. this.msgSuccess("修改成功");
  337. this.getConfigKey("sys:config");
  338. }
  339. });
  340. },
  341. onSubmit2() {
  342. this.customerConfigForm.configValue=JSON.stringify(this.customerConfig);
  343. updateConfig(this.customerConfigForm).then(response => {
  344. if (response.code === 200) {
  345. this.msgSuccess("修改成功");
  346. this.getConfigKey("customer:config");
  347. }
  348. });
  349. },
  350. onSubmit3() {
  351. this.qwkfConfigForm.configValue=JSON.stringify(this.qwkfConfig);
  352. updateConfig(this.qwkfConfigForm).then(response => {
  353. if (response.code === 200) {
  354. this.msgSuccess("修改成功");
  355. this.getConfigKey("sys:config");
  356. }
  357. });
  358. },
  359. onSubmit4() {
  360. this.redPacketConfigForm.configValue=JSON.stringify(this.redPacketConfig);
  361. updateConfig(this.redPacketConfigForm).then(response => {
  362. if (response.code === 200) {
  363. this.msgSuccess("修改成功");
  364. this.getConfigKey("redPacket:config");
  365. }
  366. });
  367. },
  368. onSubmit5() {
  369. this.companyUserConfig.configValue=JSON.stringify(this.userIsDefaultBlack);
  370. console.log(this.companyUserConfig)
  371. console.log(this.userIsDefaultBlack)
  372. configUserCheck({userIsDefaultBlack: this.userIsDefaultBlack}).then(response => {
  373. if (response.code === 200) {
  374. this.msgSuccess("修改成功");
  375. this.getConfigKey("companyUser:config");
  376. }
  377. });
  378. },
  379. }
  380. };
  381. </script>
  382. <style scoped lang="scss">
  383. .tip{
  384. color:indianred;
  385. }
  386. .line{
  387. margin: 10px 0;
  388. background-color:gainsboro;
  389. height:1px;
  390. }
  391. .el-row {
  392. margin-bottom: 0px;
  393. &:last-child {
  394. margin-bottom: 0;
  395. }
  396. }
  397. </style>